Loading CHANGES +5 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,11 @@ Changelog Daniel (29 January 2007) - Michael Wallner reported that when doing a CONNECT with a custom User-Agent header, you got _two_ User-Agent headers in the CONNECT request...! Added test case 287 to verify the fix. Daniel (28 January 2007) - curl_easy_reset() now resets the CA bundle path correctly. Loading RELEASE-NOTES +1 −1 Original line number Diff line number Diff line Loading @@ -80,6 +80,6 @@ advice from friends like these: Stefan Krause, Sebastien Willemijns, Alexey Simak, Brendan Jurd, Robson Braga Araujo, David McCreedy, Robert Foreman, Nathanael Nerode, Victor Snezhko, Linus Nielsen Feltzing, Toby Peterson, Dan Fandrich, Armel Asselin Armel Asselin, Michael Wallner, Guenter Knauf Thanks! (and sorry if I forgot to mention someone) lib/http.c +8 −3 Original line number Diff line number Diff line Loading @@ -1101,6 +1101,8 @@ Curl_compareheader(char *headerline, /* line to check */ * like any ordinary HTTP request, and not specially crafted like this. This * function only remains here like this for now since the rewrite is a bit too * much work to do at the moment. * * This function is BLOCKING which is nasty for all multi interface using apps. */ CURLcode Curl_proxyCONNECT(struct connectdata *conn, Loading Loading @@ -1160,15 +1162,18 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn, if(CURLE_OK == result) { char *host=(char *)""; const char *proxyconn=""; const char *useragent=""; if(!checkheaders(data, "Host:")) { host = aprintf("Host: %s\r\n", host_port); if(!host) result = CURLE_OUT_OF_MEMORY; } if(!checkheaders(data, "Proxy-Connection:")) { if(!checkheaders(data, "Proxy-Connection:")) proxyconn = "Proxy-Connection: Keep-Alive\r\n"; } if(!checkheaders(data, "User-Agent:") && data->set.useragent) useragent = conn->allocptr.uagent; if(CURLE_OK == result) { /* Send the connect request to the proxy */ Loading @@ -1184,7 +1189,7 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn, host, conn->allocptr.proxyuserpwd? conn->allocptr.proxyuserpwd:"", data->set.useragent?conn->allocptr.uagent:"", useragent, proxyconn); if(CURLE_OK == result) Loading tests/data/Makefile.am +1 −1 Original line number Diff line number Diff line Loading @@ -37,4 +37,4 @@ EXTRA_DIST = test1 test108 test117 test127 test20 test27 test34 test46 \ test274 test275 test524 test525 test276 test277 test526 test527 test528 \ test530 DISABLED test278 test279 test531 test280 test529 test532 test533 \ test534 test535 test281 test537 test282 test283 test284 test538 test285 \ test286 test307 test308 test286 test307 test308 test287 tests/data/test287 0 → 100644 +45 −0 Original line number Diff line number Diff line <testcase> # Server-side <reply> # this is returned first since we get no proxy-auth <data nocheck="1"> HTTP/1.1 405 Method Not Allowed swsclose And you should ignore this data. </data> </reply> # Client-side <client> <server> http </server> <name> HTTP proxy CONNECT with custom User-Agent header </name> <command> http://test.remote.server.com:287/path/287 -H "User-Agent: looser/2007" --proxy http://%HOSTIP:%HTTPPORT --proxytunnel </command> </client> # Verify data after the test has been "shot" <verify> <protocol> CONNECT test.remote.server.com:287 HTTP/1.0 Host: test.remote.server.com:287 Proxy-Connection: Keep-Alive User-Agent: looser/2007 </protocol> # CURLE_RECV_ERROR <errorcode> 56 </errorcode> <stdout> HTTP/1.1 405 Method Not Allowed swsclose </stdout> </verify> </testcase> Loading
CHANGES +5 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,11 @@ Changelog Daniel (29 January 2007) - Michael Wallner reported that when doing a CONNECT with a custom User-Agent header, you got _two_ User-Agent headers in the CONNECT request...! Added test case 287 to verify the fix. Daniel (28 January 2007) - curl_easy_reset() now resets the CA bundle path correctly. Loading
RELEASE-NOTES +1 −1 Original line number Diff line number Diff line Loading @@ -80,6 +80,6 @@ advice from friends like these: Stefan Krause, Sebastien Willemijns, Alexey Simak, Brendan Jurd, Robson Braga Araujo, David McCreedy, Robert Foreman, Nathanael Nerode, Victor Snezhko, Linus Nielsen Feltzing, Toby Peterson, Dan Fandrich, Armel Asselin Armel Asselin, Michael Wallner, Guenter Knauf Thanks! (and sorry if I forgot to mention someone)
lib/http.c +8 −3 Original line number Diff line number Diff line Loading @@ -1101,6 +1101,8 @@ Curl_compareheader(char *headerline, /* line to check */ * like any ordinary HTTP request, and not specially crafted like this. This * function only remains here like this for now since the rewrite is a bit too * much work to do at the moment. * * This function is BLOCKING which is nasty for all multi interface using apps. */ CURLcode Curl_proxyCONNECT(struct connectdata *conn, Loading Loading @@ -1160,15 +1162,18 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn, if(CURLE_OK == result) { char *host=(char *)""; const char *proxyconn=""; const char *useragent=""; if(!checkheaders(data, "Host:")) { host = aprintf("Host: %s\r\n", host_port); if(!host) result = CURLE_OUT_OF_MEMORY; } if(!checkheaders(data, "Proxy-Connection:")) { if(!checkheaders(data, "Proxy-Connection:")) proxyconn = "Proxy-Connection: Keep-Alive\r\n"; } if(!checkheaders(data, "User-Agent:") && data->set.useragent) useragent = conn->allocptr.uagent; if(CURLE_OK == result) { /* Send the connect request to the proxy */ Loading @@ -1184,7 +1189,7 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn, host, conn->allocptr.proxyuserpwd? conn->allocptr.proxyuserpwd:"", data->set.useragent?conn->allocptr.uagent:"", useragent, proxyconn); if(CURLE_OK == result) Loading
tests/data/Makefile.am +1 −1 Original line number Diff line number Diff line Loading @@ -37,4 +37,4 @@ EXTRA_DIST = test1 test108 test117 test127 test20 test27 test34 test46 \ test274 test275 test524 test525 test276 test277 test526 test527 test528 \ test530 DISABLED test278 test279 test531 test280 test529 test532 test533 \ test534 test535 test281 test537 test282 test283 test284 test538 test285 \ test286 test307 test308 test286 test307 test308 test287
tests/data/test287 0 → 100644 +45 −0 Original line number Diff line number Diff line <testcase> # Server-side <reply> # this is returned first since we get no proxy-auth <data nocheck="1"> HTTP/1.1 405 Method Not Allowed swsclose And you should ignore this data. </data> </reply> # Client-side <client> <server> http </server> <name> HTTP proxy CONNECT with custom User-Agent header </name> <command> http://test.remote.server.com:287/path/287 -H "User-Agent: looser/2007" --proxy http://%HOSTIP:%HTTPPORT --proxytunnel </command> </client> # Verify data after the test has been "shot" <verify> <protocol> CONNECT test.remote.server.com:287 HTTP/1.0 Host: test.remote.server.com:287 Proxy-Connection: Keep-Alive User-Agent: looser/2007 </protocol> # CURLE_RECV_ERROR <errorcode> 56 </errorcode> <stdout> HTTP/1.1 405 Method Not Allowed swsclose </stdout> </verify> </testcase>