Hello,

I've noticed this problem while coding a module, and I'm wondering if it's a known problem or not:

Some parts of openser code assume that there will only be one instance of a certain header whereas the values can be actually spread across multiple headers on multiple lines.

For example, the "Allow:" header is usually seen with all the method names on one line:
  Allow: ACK, BYE, CANCEL, INFO, INVITE, NOTIFY, OPTIONS, SUBSCRIBE

but the following is legal as well:
  Allow: ACK, BYE
  Allow: CANCEL, INFO, INVITE
  [junk in between]
  Allow: NOTIFY, OPTIONS, SUBSCRIBE

Other headers that can be split up like this include Supported, Proxy-Require.

It isn't difficult to parse_headers(HDR_EOH_F) and then run through the (struct sip_msg *)p->headers linked list to find all instances of the header you want, but there already exists code that assumes that there will be only one instance (e.g., parse_allow, get_allow_methods, any of the named struct hdr_field members of struct sip_msg).

Yes?

--
Daniel Hsueh                 mailto:[EMAIL PROTECTED]
SOMA Networks                           tel:+1-416-348-1631


_______________________________________________
Devel mailing list
[email protected]
http://openser.org/cgi-bin/mailman/listinfo/devel

Reply via email to