Commit 30eac137 authored by Jeff Trawick's avatar Jeff Trawick
Browse files

backport this from 2.1-dev:

  Small fix to allow reverse proxying to an ftp server. Previously
  an attempt to do this would try and connect to 0.0.0.0, regardless
  of the server specified.

PR:            24922
Submitted by:  Pascal Terjan <pterjan@linuxfr.org>
Reviewed by:   minfrin, nd, jim, trawick

(note: this commit includes minor style-only repairs to the
original patch; see r1.144 of proxy_ftp.c)


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/APACHE_2_0_BRANCH@104149 13f79535-47bb-0310-9956-ffa450edef68
parent 3f46d427
Loading
Loading
Loading
Loading
+5 −0
Changes for CHANGES: 5 added lines, 0 removed lines.
Original line number Diff line number Diff line
Changes with Apache 2.0.51
  *) Small fix to allow reverse proxying to an ftp server. Previously
     an attempt to do this would try and connect to 0.0.0.0, regardless
     of the server specified. PR 24922
     [Pascal Terjan <pterjan@linuxfr.org>]
  *) Add the NOTICE file to the rpm spec file in compliance with the
     Apache v2.0 license. [Graham Leggett]
 
+1 −8
Changes for STATUS: 1 added line, 8 removed lines.
Original line number Diff line number Diff line
APACHE 2.0 STATUS:                                              -*-text-*-
Last modified at [$Date: 2004/07/02 17:42:54 $]
Last modified at [$Date: 2004/07/03 12:48:00 $]

Release:

@@ -128,13 +128,6 @@ PATCHES TO BACKPORT FROM 2.1
       docs/manual/mod/mod_ldap.xml r1.12
       +1 minfrin, bnicholes, trawick

    *) Small fix to allow reverse proxying to an ftp server. Previously
       an attempt to do this would try and connect to 0.0.0.0, regardless
       of the server specified.
         modules/proxy/proxy_ftp.c r1.143
       PR 24922 [Pascal Terjan <pterjan@linuxfr.org>]
       +1: minfrin, nd, jim

    *) Prevent Win32 pool corruption at startup
         server/mpm/winnt/child.c: r1.36 
       +1: ake, trawick, nd, stoddard
+16 −4
Changes for modules/proxy/proxy_ftp.c: 16 added lines, 4 removed lines.
Original line number Diff line number Diff line
@@ -754,6 +754,7 @@ int ap_proxy_ftp_handler(request_rec *r, proxy_server_conf *conf,
    char buffer[MAX_STRING_LEN];
    char *ftpmessage = NULL;
    char *path, *strp, *type_suffix, *cwd = NULL;
    apr_uri_t uri; 
    char *user = NULL;
/*    char *account = NULL; how to supply an account in a URL? */
    const char *password = NULL;
@@ -808,13 +809,24 @@ int ap_proxy_ftp_handler(request_rec *r, proxy_server_conf *conf,
    if (r->method_number != M_GET)
        return HTTP_NOT_IMPLEMENTED;


    /* We break the URL into host, port, path-search */
    if (r->parsed_uri.hostname == NULL) {
        if (APR_SUCCESS != apr_uri_parse(p, url, &uri)) {
            return ap_proxyerror(r, HTTP_BAD_REQUEST,
                apr_psprintf(p, "URI cannot be parsed: %s", url));
        }
        connectname = uri.hostname;
        connectport = uri.port;
        path = apr_pstrdup(p, uri.path);
    }
    else {
        connectname = r->parsed_uri.hostname;
    connectport = (r->parsed_uri.port != 0)
        ? r->parsed_uri.port
        : apr_uri_port_of_scheme("ftp");
        connectport = r->parsed_uri.port;
        path = apr_pstrdup(p, r->parsed_uri.path);
    }
    if (connectport == 0) {
        connectport = apr_uri_port_of_scheme("ftp");
    }
    path = (path != NULL && path[0] != '\0') ? &path[1] : "";

    type_suffix = strchr(path, ';');