[Devel] openser -- problems with multiple headers of the same type?

Daniel Hsueh dhsueh at somanetworks.com
Tue Feb 14 19:26:36 CET 2006


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:dhsueh at somanetworks.com
SOMA Networks                           tel:+1-416-348-1631




More information about the Devel mailing list