diff options
| author | Daniel Stenberg <daniel@haxx.se> | 2007-09-15 21:14:12 +0000 | 
|---|---|---|
| committer | Daniel Stenberg <daniel@haxx.se> | 2007-09-15 21:14:12 +0000 | 
| commit | e04151ed76a04613221d8a6ef6079645ee230844 (patch) | |
| tree | 8628dbf2a0673bb2a2e41b1f4eaee0f8ff5deb60 | |
| parent | cdb25524241578da488755674f7bacee316dd078 (diff) | |
Michal Marek made libcurl automatically append ";type=<a|i>" when using HTTP
proxies for FTP urls.
| -rw-r--r-- | CHANGES | 7 | ||||
| -rw-r--r-- | RELEASE-NOTES | 4 | ||||
| -rw-r--r-- | lib/http.c | 21 | ||||
| -rw-r--r-- | tests/data/test208 | 2 | ||||
| -rw-r--r-- | tests/data/test79 | 2 | 
5 files changed, 31 insertions, 5 deletions
| @@ -6,6 +6,13 @@                                    Changelog +Daniel S (15 September 2007) +- Michal Marek made libcurl automatically append ";type=<a|i>" when using HTTP +  proxies for FTP urls. + +- Günter Knauf fixed LDAP builds in the Windows makefiles and fixed LDAPv3 +  support on Windows. +  Dan F (13 September 2007)  - Added LDAPS, SCP and SFTP to curl-config --protocols. Removed and    fixed some AC_SUBST configure entries. diff --git a/RELEASE-NOTES b/RELEASE-NOTES index be3e7aff6..1fbc6f12f 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -11,7 +11,7 @@ Curl and libcurl 7.17.1  This release includes the following changes: - o  + o automatically append ";type=<a|i>" when using HTTP proxies for FTP urls  This release includes the following bugfixes: @@ -32,6 +32,6 @@ New curl mirrors:  This release would not have looked like this without help, code, reports and  advice from friends like these: - Dan Fandrich + Dan Fandrich, Michal Marek          Thanks! (and sorry if I forgot to mention someone) diff --git a/lib/http.c b/lib/http.c index 2938c37ca..090aad3d2 100644 --- a/lib/http.c +++ b/lib/http.c @@ -1740,6 +1740,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)    CURLcode result=CURLE_OK;    struct HTTP *http;    char *ppath = data->reqdata.path; +  char ftp_typecode[sizeof(";type=?")] = "";    char *host = conn->host.name;    const char *te = ""; /* transfer-encoding */    char *ptr; @@ -1950,6 +1951,23 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)        }      }      ppath = data->change.url; +    /* when doing ftp, append ;type=<a|i> if not present */ +    if (checkprefix("ftp://", ppath) || checkprefix("ftps://", ppath)) { +      char *p = strstr(ppath, ";type="); +      if (p && p[6] && p[7] == 0) { +        switch (toupper(p[6])) { +        case 'A': +        case 'D': +        case 'I': +          break; +        default: +          p = NULL; +        } +      } +      if (!p) +        snprintf(ftp_typecode, sizeof(ftp_typecode), ";type=%c", +                 data->set.prefer_ascii ? 'a' : 'i'); +    }    }    if(HTTPREQ_POST_FORM == httpreq) {      /* we must build the whole darned post sequence first, so that we have @@ -2093,7 +2111,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)      result =        add_bufferf(req_buffer,                    "%s " /* GET/HEAD/POST/PUT */ -                  "%s HTTP/%s\r\n" /* path + HTTP version */ +                  "%s%s HTTP/%s\r\n" /* path + HTTP version */                    "%s" /* proxyuserpwd */                    "%s" /* userpwd */                    "%s" /* range */ @@ -2108,6 +2126,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)                  request,                  ppath, +                ftp_typecode,                  httpstring,                  conn->allocptr.proxyuserpwd?                  conn->allocptr.proxyuserpwd:"", diff --git a/tests/data/test208 b/tests/data/test208 index eac3d5572..4fc485801 100644 --- a/tests/data/test208 +++ b/tests/data/test208 @@ -44,7 +44,7 @@ the  ^User-Agent:.*  </strip>  <protocol> -PUT ftp://daniel:mysecret@host.com/we/want/208 HTTP/1.1
 +PUT ftp://daniel:mysecret@host.com/we/want/208;type=i HTTP/1.1
  Authorization: Basic ZGFuaWVsOm15c2VjcmV0
  Host: host.com:21
  Pragma: no-cache
 diff --git a/tests/data/test79 b/tests/data/test79 index 49299379c..7c6ed1ee5 100644 --- a/tests/data/test79 +++ b/tests/data/test79 @@ -45,7 +45,7 @@ ftp://%HOSTIP:%HTTPPORT/we/want/that/page/79 -x %HOSTIP:%HTTPPORT  ^User-Agent:.*  </strip>  <protocol> -GET ftp://%HOSTIP:%HTTPPORT/we/want/that/page/79 HTTP/1.1
 +GET ftp://%HOSTIP:%HTTPPORT/we/want/that/page/79;type=i HTTP/1.1
  Host: %HOSTIP:%HTTPPORT
  Pragma: no-cache
  Accept: */*
 | 
