diff options
-rw-r--r-- | lib/http.c | 8 | ||||
-rw-r--r-- | tests/data/test4 | 10 |
2 files changed, 15 insertions, 3 deletions
diff --git a/lib/http.c b/lib/http.c index ea3e8af35..38227eb6c 100644 --- a/lib/http.c +++ b/lib/http.c @@ -1626,12 +1626,12 @@ CURLcode Curl_add_custom_headers(struct connectdata *conn, else if(conn->bits.authneg && /* while doing auth neg, don't allow the custom length since we will force length zero then */ - checkprefix("Content-Length", headers->data)) + checkprefix("Content-Length:", headers->data)) ; else if(conn->allocptr.te && /* when asking for Transfer-Encoding, don't pass on a custom Connection: */ - checkprefix("Connection", headers->data)) + checkprefix("Connection:", headers->data)) ; else if((conn->httpversion == 20) && checkprefix("Transfer-Encoding:", headers->data)) @@ -1664,6 +1664,10 @@ CURLcode Curl_add_custom_headers(struct connectdata *conn, *ptr = ':'; result = Curl_add_bufferf(req_buffer, "%s\r\n", headers->data); + + /* restore the previous value */ + *ptr = ';'; + if(result) return result; } diff --git a/tests/data/test4 b/tests/data/test4 index df69d3274..542347db5 100644 --- a/tests/data/test4 +++ b/tests/data/test4 @@ -30,7 +30,7 @@ http Replaced internal and added custom HTTP headers </name> <command> - -H "extra-header: here" -H "Accept: replaced" -H "X-Custom-Header;" -H "X-Test: foo; " -H "X-Test:" -H "X-Test2: foo;" -H "X-Test3: " -H "X-Test4; " -H "X-Test5;ignored" http://%HOSTIP:%HTTPPORT/4 + -H "extra-header: here" -H "Accept: replaced" -H "X-Custom-Header;" -H "X-Test: foo; " -H "X-Test:" -H "X-Test2: foo;" -H "X-Test3: " -H "X-Test4; " -H "X-Test5;ignored" http://%HOSTIP:%HTTPPORT/4 http://%HOSTIP:%HTTPPORT/4 </command> </client> @@ -49,6 +49,14 @@ X-Custom-Header: X-Test: foo;
X-Test2: foo;
+GET /4 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+extra-header: here
+Accept: replaced
+X-Custom-Header:
+X-Test: foo;
+X-Test2: foo;
+
</protocol> </verify> </testcase> |