diff --git a/lib/http.c b/lib/http.c index fce6c7ccb8..d0f044bf3c 100644 --- a/lib/http.c +++ b/lib/http.c @@ -4391,19 +4391,16 @@ static CURLcode http_parse_headers(struct Curl_easy *data, if(data->state.leading_unfold) { /* immediately after an unfold, keep only a single whitespace */ - const size_t iblen = blen; while(consumed && ISBLANK(buf[0])) { consumed--; buf++; blen--; } if(consumed) { - if(iblen > blen) { - /* take one step back */ - consumed++; - buf--; - blen++; - } + /* insert a single space */ + result = curlx_dyn_addn(&data->state.headerb, " ", 1); + if(result) + return result; data->state.leading_unfold = FALSE; /* done now */ } } diff --git a/tests/data/test1274 b/tests/data/test1274 index 2f40b5d69d..0cac3b0519 100644 --- a/tests/data/test1274 +++ b/tests/data/test1274 @@ -16,6 +16,9 @@ Date: Tue, 09 Nov 2010 14:49:00 GMT%CR Server: test-server/%CR fake%CR folded%CR +Tabs: tab-instead/%TAB%CR +%TABonly%CR +%TAB mixed%CR Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT%CR ETag: "21025-dc7-39462498"%CR Content-Length: 6%CR @@ -52,6 +55,7 @@ Accept: */* HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/ fake folded +Tabs: tab-instead/ only mixed Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Content-Length: 6 diff --git a/tests/data/test1940 b/tests/data/test1940 index 597adf851b..e8f7d44e95 100644 --- a/tests/data/test1940 +++ b/tests/data/test1940 @@ -17,6 +17,9 @@ Fold: is folding a%repeat[5 x ]% line Content-Length: 0 +Test:%TAB +%TAB%SP +%TABword Set-Cookie: onecookie=data; Set-Cookie: secondcookie=2data; Set-Cookie: cookie3=data3; @@ -62,6 +65,7 @@ http://%HOSTIP:%HTTPPORT/%TESTNUMBER Fold == is folding a line Blank ==%SP Blank2 ==%SP + Test == word diff --git a/tests/libtest/lib1940.c b/tests/libtest/lib1940.c index 66aa63b46b..a9114216a1 100644 --- a/tests/libtest/lib1940.c +++ b/tests/libtest/lib1940.c @@ -44,6 +44,7 @@ static void t1940_showem(CURL *curl, int header_request, unsigned int type) "fold", "blank", "Blank2", + "Test", NULL };