- 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.
This commit is contained in:
parent
ddace02efe
commit
abdbd3100f
5
CHANGES
5
CHANGES
@ -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.
|
||||
|
||||
|
@ -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)
|
||||
|
11
lib/http.c
11
lib/http.c
@ -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,
|
||||
@ -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 */
|
||||
@ -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)
|
||||
|
@ -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
|
||||
|
45
tests/data/test287
Normal file
45
tests/data/test287
Normal file
@ -0,0 +1,45 @@
|
||||
<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…
Reference in New Issue
Block a user