diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/ftp.c | 16 | 
1 files changed, 13 insertions, 3 deletions
| @@ -1543,8 +1543,13 @@ static CURLcode ftp_state_pasv_resp(struct connectdata *conn,          if(ptr) {            newport = num; -          /* use the same IP we are already connected to */ -          snprintf(newhost, NEWHOST_BUFSIZE, "%s", conn->ip_addr_str); +          if (conn->bits.tunnel_proxy) +            /* proxy tunnel -> use other host info because ip_addr_str is the +               proxy address not the ftp host */ +            snprintf(newhost, sizeof(newhost), "%s", conn->host.name); +          else +            /* use the same IP we are already connected to */ +            snprintf(newhost, NEWHOST_BUFSIZE, "%s", conn->ip_addr_str);          }        }        else @@ -1590,7 +1595,12 @@ static CURLcode ftp_state_pasv_resp(struct connectdata *conn,        infof(data, "Skips %d.%d.%d.%d for data connection, uses %s instead\n",              ip[0], ip[1], ip[2], ip[3],              conn->ip_addr_str); -      snprintf(newhost, sizeof(newhost), "%s", conn->ip_addr_str); +      if (conn->bits.tunnel_proxy) +        /* proxy tunnel -> use other host info because ip_addr_str is the +           proxy address not the ftp host */ +        snprintf(newhost, sizeof(newhost), "%s", conn->host.name); +      else +        snprintf(newhost, sizeof(newhost), "%s", conn->ip_addr_str);      }      else        snprintf(newhost, sizeof(newhost), | 
