From 1632d45e85e188302b8f3d5270b0a0aba5fe46ba Mon Sep 17 00:00:00 2001 From: Mark Spencer <markster@digium.com> Date: Thu, 18 Nov 2004 04:26:22 +0000 Subject: [PATCH] Fix little SIP header continuation issue git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@4290 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channels/chan_sip.c | 41 ++++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 276d3ba602..ef2c9d9449 100755 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -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; -- GitLab