< Previous by Date | Date Index | Next by Date > |
Thread Index | Next in Thread > |
So we have an interop issue with another SIP stack relating to that stack sending multiple "Accept" headers. Resiprocate is bouncing the BYE message with a 406 Not Acceptable error.
The brief snippet from a pcap shows Accept being listed in this exact order.
Accept: application/sdp,application/media_control+xml\r\n
Accept: application/presentation_token_control+xml\r\n
The same set of headers is allowed in the initial INVITE.
I believe what is happening is that DialogUsageManager::validateAccept(const SipMessage& request) isn't properly searching multiple Accept header lines and it's falling into this block of code
// If no Accept header then application/sdp should be assumed for certain methods
else if(method == INVITE ||
method == OPTIONS ||
method == PRACK ||
method == UPDATE)
{
if (getMasterProfile()->isMimeTypeSupported(request.header(h_RequestLine).method(), Mime("application", "sdp")))
{
return true;
}
}
But in this case, BYE is not an option, so it bounces the message.
A very simple fix would be to add BYE to that list, but are multiple Accept headers legal? If so, then the logic higher up in validateAccept needs to be changed to search more than just the last header line.
Which is the right approach?
Aron Rosenberg
Logitech Inc, (SightSpeed Group)