mirror of
https://github.com/curl/curl.git
synced 2026-04-11 12:01:42 +08:00
http: fix for unfolding line starting with TAB
It should still insert a (single) space when unfolding Follow-up to9941e7c95bfollowing up to67ae101666. Updated test 1274 and 1940 accordingly. Closes #20029
This commit is contained in:
parent
481f11d96f
commit
6c7bc9871f
11
lib/http.c
11
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 */
|
||||
}
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
</stdout>
|
||||
</verify>
|
||||
</testcase>
|
||||
|
||||
@ -44,6 +44,7 @@ static void t1940_showem(CURL *curl, int header_request, unsigned int type)
|
||||
"fold",
|
||||
"blank",
|
||||
"Blank2",
|
||||
"Test",
|
||||
NULL
|
||||
};
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user