Hi, when my UA received an in-dialog NOTIFY, the DUM replied 406, please see attached log.
It's seems the 406 is send from Dialog::dispatch(const SipMessage& msg):
case NOTIFY:
{
ClientSubscription* client = findMatchingClientSub(request);
if (client)
{
client->dispatch(request);
}
else
{
BaseCreator* creator = mDialogSet.getCreator();
if (creator && (creator->getLastRequest()->header(h_RequestLine).method() == SUBSCRIBE ||
creator->getLastRequest()->header(h_RequestLine).method() == REFER))
{
DebugLog (<< "Making subscription (from creator) request: " << *creator->getLastRequest());
ClientSubscription* sub = makeClientSubscription(*creator->getLastRequest());
mClientSubscriptions.push_back(sub);
sub->dispatch(request);
}
else
{
if (mInviteSession != 0 && (!msg.exists(h_Event) || msg.header(h_Event).value() == "refer") &&
mDum.getClientSubscriptionHandler("refer")!=0)
{
DebugLog (<< "Making subscription from NOTIFY: " << msg);
ClientSubscription* sub = makeClientSubscription(msg);
mClientSubscriptions.push_back(sub);
ClientSubscriptionHandle client = sub->getHandle();
mDum.mInviteSessionHandler->onReferAccepted(mInviteSession->getSessionHandle(), client, msg);
sub->dispatch(request);
}
else
{
SharedPtr<SipMessage> response(new SipMessage);
makeResponse(*response, msg, 406);
send(response);
}
}
}
}
break;
I have been added the events in my UA:
void UserAgent::setDefaultEvents()
{
Data customEvent("refer");
mDum->addClientSubscriptionHandler(customEvent, this);
customEvent = "talk";
mDum->addClientSubscriptionHandler(customEvent, this);
mDum->addServerSubscriptionHandler(customEvent, this);
customEvent = "hold";
mDum->addClientSubscriptionHandler(customEvent, this);
mDum->addServerSubscriptionHandler(customEvent, this);
customEvent = "conference";
mDum->addClientSubscriptionHandler(customEvent, this);
mDum->addServerSubscriptionHandler(customEvent, this);
customEvent = "presence";
mDum->addClientSubscriptionHandler(customEvent, this);
mDum->addServerSubscriptionHandler(customEvent, this);
mDum->addClientPublicationHandler(customEvent, this);
Data messageSummaryEvent("message-summary");
mDum->addClientSubscriptionHandler(messageSummaryEvent, this);
}
How can I fix it ?
Thanks!