[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