[Devel] openser -- problems with multiple headers of the same
type?
Bogdan-Andrei Iancu
bogdan at voice-system.ro
Thu Mar 2 17:11:56 CET 2006
Hi Daniel,
I just committed on CVS a solution to this problem. If you could test it
more intensively, I will appreciate it ;)
regards,
bogdan
Bogdan-Andrei Iancu wrote:
> Hi Daniel,
>
> I haven't double check the RFC to see if multiple hdrs are allowed for
> ALLOW or SUPPORTED hdr.
> But if it so, the solution will be to extend the structure that stores
> the parsed body to allow the chaining of this hdr (in the same way as
> for Contact hdr): the msg->allow points to the first hdr; the parsed
> structure contains also a pointer to the next ALLOW hdr and so on.
>
> the parsed structure will also contain the combined masks from all the
> ALLOW hdrs - to avoid getting through the list each time you need the
> allow mask.
>
> regards,
> bogdan
>
> Daniel Hsueh wrote:
>
>> 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?
>>
>
>
> _______________________________________________
> Devel mailing list
> Devel at openser.org
> http://openser.org/cgi-bin/mailman/listinfo/devel
>
More information about the Devel
mailing list