diff options
author | Daniel Stenberg <daniel@haxx.se> | 2009-04-17 12:48:24 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2009-04-17 12:48:24 +0000 |
commit | 30f7a2ff20deea9b9950c54ec17c7ea9f7c77866 (patch) | |
tree | 2294afb155b8851350d464f44bae8b43918e6f71 | |
parent | f6b55fae7971f63d5e02efad9d97d3b04f417f63 (diff) |
- Pramod Sharma reported and tracked down a bug when doing FTP over a HTTP
proxy. libcurl would then wrongly close the connection after each
request. In his case it had the weird side-effect that it killed NTLM auth
for the proxy causing an inifinite loop!
I added test case 1098 to verify this fix. The test case does however not
properly verify that the transfers are done persistently - as I couldn't
think of a clever way to achieve it right now - but you need to read the
stderr output after a test run to see that it truly did the right thing.
-rw-r--r-- | CHANGES | 11 | ||||
-rw-r--r-- | lib/ftp.c | 7 | ||||
-rw-r--r-- | tests/data/Makefile.am | 3 | ||||
-rw-r--r-- | tests/data/test1098 | 73 |
4 files changed, 92 insertions, 2 deletions
@@ -6,6 +6,17 @@ Changelog +Daniel Stenberg (17 Apr 2009) +- Pramod Sharma reported and tracked down a bug when doing FTP over a HTTP + proxy. libcurl would then wrongly close the connection after each + request. In his case it had the weird side-effect that it killed NTLM auth + for the proxy causing an inifinite loop! + + I added test case 1098 to verify this fix. The test case does however not + properly verify that the transfers are done persistently - as I couldn't + think of a clever way to achieve it right now - but you need to read the + stderr output after a test run to see that it truly did the right thing. + Daniel Stenberg (13 Apr 2009) - bug report #2727981 (http://curl.haxx.se/bug/view.cgi?id=2727981) by Martin Storsjö pointed out how setting CURLOPT_NOBODY to 0 could be downright @@ -4146,7 +4146,12 @@ static CURLcode ftp_setup_connection(struct connectdata * conn) return CURLE_UNSUPPORTED_PROTOCOL; #endif } - + /* + * We explicitly mark this connection as persistent here as we're doing + * FTP over HTTP and thus we accidentally avoid setting this value + * otherwise. + */ + conn->bits.close = FALSE; #else failf(data, "FTP over http proxy requires HTTP support built-in!"); return CURLE_UNSUPPORTED_PROTOCOL; diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am index 37c8b2051..d7068871e 100644 --- a/tests/data/Makefile.am +++ b/tests/data/Makefile.am @@ -60,7 +60,8 @@ EXTRA_DIST = test1 test108 test117 test127 test20 test27 test34 test46 \ test1072 test1073 test1074 test1075 test1076 test1077 test1078 test1079 \ test1080 test1081 test1082 test1083 test1084 test1085 test633 test634 \ test635 test636 test637 test558 test559 test1086 test1087 test1088 \ - test1089 test1090 test1091 test1092 test1093 test1094 test1095 test1096 + test1089 test1090 test1091 test1092 test1093 test1094 test1095 test1096 \ + test1097 test560 test561 test1098 filecheck: @mkdir test-place; \ diff --git a/tests/data/test1098 b/tests/data/test1098 new file mode 100644 index 000000000..b5c45cbc9 --- /dev/null +++ b/tests/data/test1098 @@ -0,0 +1,73 @@ +<testcase> +<info> +<keywords> +FTP +HTTP proxy +CURLOPT_PROXY +</keywords> +</info> + +# +# Server-side +<reply> +<data nocheck="yes"> +HTTP/1.1 200 OK +Date: Thu, 09 Nov 2010 14:49:00 GMT +Content-Length: 6 + +hello +</data> + +</reply> + +# +# Client-side +<client> +<server> +http +</server> +<features> +http +ftp +</features> + <name> +FTP RETR twice over proxy confirming persistent connection + </name> + + <command> +ftp://ftp-site/moo/1098 ftp://ftp-site/moo/1098 --proxy http://%HOSTIP:%HTTPPORT +</command> +</client> + +# +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol> +GET ftp://ftp-site/moo/1098 HTTP/1.1
+Host: ftp-site:21
+Accept: */*
+Proxy-Connection: Keep-Alive
+
+GET ftp://ftp-site/moo/1098 HTTP/1.1
+Host: ftp-site:21
+Accept: */*
+Proxy-Connection: Keep-Alive
+
+</protocol> +<stdout mode="text"> +HTTP/1.1 200 OK +Date: Thu, 09 Nov 2010 14:49:00 GMT +Content-Length: 6 + +hello +HTTP/1.1 200 OK +Date: Thu, 09 Nov 2010 14:49:00 GMT +Content-Length: 6 + +hello +</stdout> +</verify> +</testcase> |