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.
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)
* 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,
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 */
host,
conn->allocptr.proxyuserpwd?
conn->allocptr.proxyuserpwd:"",
- data->set.useragent?conn->allocptr.uagent:"",
+ useragent,
proxyconn);
if(CURLE_OK == result)
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
--- /dev/null
+<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\r
+\r
+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\r
+Host: test.remote.server.com:287\r
+Proxy-Connection: Keep-Alive\r
+User-Agent: looser/2007\r
+\r
+</protocol>
+# CURLE_RECV_ERROR
+<errorcode>
+56
+</errorcode>
+<stdout>
+HTTP/1.1 405 Method Not Allowed swsclose\r
+\r
+</stdout>
+</verify>
+</testcase>