[reSIProcate] Bug with Multiple Accept headers

aron_rosenberg at logitech.com aron_rosenberg at logitech.com
Thu May 20 13:19:13 CDT 2010


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)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.resiprocate.org/pipermail/resiprocate-devel/attachments/20100520/e0928ac8/attachment.htm>


More information about the resiprocate-devel mailing list