[Asterisk-Users] SIP register problem

Cyrille Demaret cyrille at easynet.be
Wed Nov 17 03:55:32 MST 2004


Hi,

Thank you, it's working now!

Do you think that this patch will be included in the next cvs versions?

Sincerely,

Cyrille Demaret

----- Original Message -----
From: "Karl Brose" <khb at brose.com>
To: "Asterisk Users Mailing List - Non-Commercial Discussion"
<asterisk-users at lists.digium.com>
Sent: Tuesday, November 16, 2004 8:29 PM
Subject: Re: [Asterisk-Users] SIP register problem


>
> Just checked the RFC,  and it does say that a tab is acceptable.
>
>    SIP header field values can be folded onto multiple lines if the
>    continuation line begins with a space or horizontal tab.  All linear
>    white space, including folding, has the same semantics as SP.  A
>    recipient MAY replace any linear white space with a single SP before
>    interpreting the field value or forwarding the message downstream.
>    This is intended to behave exactly as HTTP/1.1 as described in RFC
>    2616 [8].  The SWS construct is used when linear white space is
>    optional, generally between tokens and separators.
>
>       LWS  =  [*WSP CRLF] 1*WSP ; linear whitespace
>       SWS  =  [LWS] ; sep whitespace
>
> This means that Asterisk is broken.
> Please try the patch attached to this e-mail
>
> filename is lws2sws.patch.txt
>
> Just in case, here is how to:
> copy the patch to your Asterisk source code channels directory:
> (assuming that /usr/src/asterisk is your base)
>
> cp lws2sws.patch.txt /usr/src/asterisk/channel
> cd /usr/src/asterisk/channels
> It would be safer to make a backup copy of chan_sip.c before patching.
> patch chan_sip.c <lws2sws.patch.txt
> cd ..
> then recompile asterisk and install the new chan_sip.so file
> test with pedantic=yes
> unless you removed the if clause
>
>
>
>
>
>
>
>
>


----------------------------------------------------------------------------
----


> --- chan_sip.c 2004-11-16 14:14:42.000000000 -0500
> +++ chan_sip.c_lws 2004-11-16 14:18:44.000000000 -0500
> @@ -2499,33 +2499,32 @@
>   }
>   /* Check for end-of-line */
>   if (msgbuf[h] == '\n') {
> - /* Check for end-of-message */
> + /* Check for end-of-message */
>   if (h + 1 == len)
> - break;
> - /* Check for a continuation line */
> - if (msgbuf[h + 1] == ' ') {
> - /* Merge continuation line */
> - h++;
> + break;
> + /* Check for a continuation line */
> + if (msgbuf[h + 1] == ' ' || msgbuf[h + 1] == '\t') {
> + /* Merge continuation line */
> + h++;
> + continue;
> + }
> + /* Propagate LF and start new line */
> + msgbuf[t++] = msgbuf[h++];
> + lws = 0;
>   continue;
>   }
> - /* Propagate LF and start new line */
> - msgbuf[t++] = msgbuf[h++];
> - lws = 0;
> - continue;
> - }
> -
> - if (msgbuf[h] == ' ' || msgbuf[h] == '\t') {
> - if (lws) {
> - h++;
> + if (msgbuf[h] == ' ' || msgbuf[h] == '\t') {
> + if (lws) {
> + h++;
> + continue;
> + }
> + msgbuf[t++] = msgbuf[h++];
> + lws = 1;
>   continue;
>   }
>   msgbuf[t++] = msgbuf[h++];
> - lws = 1;
> - continue;
> - }
> - msgbuf[t++] = msgbuf[h++];
> - if (lws)
> - lws = 0;
> + if (lws)
> + lws = 0;
>   }
>   msgbuf[t] = '\0';
>   return t;
>


----------------------------------------------------------------------------
----


> _______________________________________________
> Asterisk-Users mailing list
> Asterisk-Users at lists.digium.com
> http://lists.digium.com/mailman/listinfo/asterisk-users
> To UNSUBSCRIBE or update options visit:
>    http://lists.digium.com/mailman/listinfo/asterisk-users




More information about the asterisk-users mailing list