Fix little SIP header continuation issue
authorMark Spencer <markster@digium.com>
Thu, 18 Nov 2004 04:26:22 +0000 (04:26 +0000)
committerMark Spencer <markster@digium.com>
Thu, 18 Nov 2004 04:26:22 +0000 (04:26 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@4290 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c

index 276d3ba..ef2c9d9 100755 (executable)
@@ -2517,33 +2517,32 @@ static int lws2sws(char *msgbuf, int len)
                } 
                /* 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;