Commit e04151ed authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

Michal Marek made libcurl automatically append ";type=<a|i>" when using HTTP

proxies for FTP urls.
parent cdb25524
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -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.
+2 −2
Original line number Diff line number Diff line
@@ -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)
+20 −1
Original line number Diff line number Diff line
@@ -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:"",
+1 −1
Original line number Diff line number Diff line
@@ -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
+1 −1
Original line number Diff line number Diff line
@@ -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: */*