1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-23 16:48:49 -05:00

http: pass correct header size to debug callback for chunked post

... when the chunked framing was added, the size of the "body part" of
the data was calculated wrongly so the debug callback would get told a
header chunk a few bytes too big that would also contain the first few
bytes of the request body.

Reported-by: Dirk Wetter
Ref: #6144
Closes #6147
This commit is contained in:
Daniel Stenberg 2020-10-30 11:29:22 +01:00
parent 1144886f38
commit 584ccb5ef2
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2

View File

@ -2873,20 +2873,24 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
}
else {
if(postsize) {
char chunk[16];
/* Append the POST data chunky-style */
result = Curl_dyn_addf(&req, "%x\r\n", (int)postsize);
msnprintf(chunk, sizeof(chunk), "%x\r\n", (int)postsize);
result = Curl_dyn_add(&req, chunk);
if(!result) {
included_body = postsize + strlen(chunk);
result = Curl_dyn_addn(&req, data->set.postfields,
(size_t)postsize);
if(!result)
result = Curl_dyn_add(&req, "\r\n");
included_body = postsize + 2;
included_body += 2;
}
}
if(!result)
if(!result) {
result = Curl_dyn_add(&req, "\x30\x0d\x0a\x0d\x0a");
/* 0 CR LF CR LF */
included_body += 5;
/* 0 CR LF CR LF */
included_body += 5;
}
}
if(result)
return result;