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
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;
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; \
--- /dev/null
+<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\r
+Host: ftp-site:21\r
+Accept: */*\r
+Proxy-Connection: Keep-Alive\r
+\r
+GET ftp://ftp-site/moo/1098 HTTP/1.1\r
+Host: ftp-site:21\r
+Accept: */*\r
+Proxy-Connection: Keep-Alive\r
+\r
+</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>