mirror of https://github.com/moparisthebest/curl
CURLOPT_FTP_USE_EPSV can now be set to FALSE to prevent libcurl from
attempting to use EPSV before the standard PASV.
This commit is contained in:
parent
cfdcf5c933
commit
332eb7651a
14
lib/ftp.c
14
lib/ftp.c
|
@ -812,7 +812,7 @@ ftp_pasv_verbose(struct connectdata *conn,
|
||||||
#ifdef HAVE_INET_NTOA_R
|
#ifdef HAVE_INET_NTOA_R
|
||||||
char ntoa_buf[64];
|
char ntoa_buf[64];
|
||||||
#endif
|
#endif
|
||||||
char hostent_buf[8192];
|
char hostent_buf[9000];
|
||||||
|
|
||||||
#if defined(HAVE_INET_ADDR)
|
#if defined(HAVE_INET_ADDR)
|
||||||
in_addr_t address;
|
in_addr_t address;
|
||||||
|
@ -824,12 +824,19 @@ ftp_pasv_verbose(struct connectdata *conn,
|
||||||
# ifdef HAVE_GETHOSTBYADDR_R
|
# ifdef HAVE_GETHOSTBYADDR_R
|
||||||
|
|
||||||
# ifdef HAVE_GETHOSTBYADDR_R_5
|
# ifdef HAVE_GETHOSTBYADDR_R_5
|
||||||
/* AIX, Digital Unix style:
|
/* AIX, Digital Unix (OSF1, Tru64) style:
|
||||||
extern int gethostbyaddr_r(char *addr, size_t len, int type,
|
extern int gethostbyaddr_r(char *addr, size_t len, int type,
|
||||||
struct hostent *htent, struct hostent_data *ht_data); */
|
struct hostent *htent, struct hostent_data *ht_data); */
|
||||||
|
|
||||||
/* Fred Noz helped me try this out, now it at least compiles! */
|
/* Fred Noz helped me try this out, now it at least compiles! */
|
||||||
|
|
||||||
|
/* Bjorn Reese (November 28 2001):
|
||||||
|
The Tru64 man page on gethostbyaddr_r() says that
|
||||||
|
the hostent struct must be filled with zeroes before the call to
|
||||||
|
gethostbyaddr_r(). */
|
||||||
|
|
||||||
|
memset(hostent_buf, 0, sizeof(struct hostent));
|
||||||
|
|
||||||
if(gethostbyaddr_r((char *) &address,
|
if(gethostbyaddr_r((char *) &address,
|
||||||
sizeof(address), AF_INET,
|
sizeof(address), AF_INET,
|
||||||
(struct hostent *)hostent_buf,
|
(struct hostent *)hostent_buf,
|
||||||
|
@ -1297,7 +1304,8 @@ CURLcode ftp_use_pasv(struct connectdata *conn)
|
||||||
char newhost[48];
|
char newhost[48];
|
||||||
char *newhostp=NULL;
|
char *newhostp=NULL;
|
||||||
|
|
||||||
for (modeoff = 0; mode[modeoff]; modeoff++) {
|
for (modeoff = (data->set.ftp_use_epsv?0:1);
|
||||||
|
mode[modeoff]; modeoff++) {
|
||||||
result = Curl_ftpsendf(conn, mode[modeoff]);
|
result = Curl_ftpsendf(conn, mode[modeoff]);
|
||||||
if(result)
|
if(result)
|
||||||
return result;
|
return result;
|
||||||
|
|
|
@ -245,6 +245,7 @@ CURLcode Curl_open(struct SessionHandle **curl)
|
||||||
data->state.current_speed = -1; /* init to negative == impossible */
|
data->state.current_speed = -1; /* init to negative == impossible */
|
||||||
|
|
||||||
data->set.httpreq = HTTPREQ_GET; /* Default HTTP request */
|
data->set.httpreq = HTTPREQ_GET; /* Default HTTP request */
|
||||||
|
data->set.ftp_use_epsv = TRUE; /* FTP defaults to EPSV operations */
|
||||||
|
|
||||||
/* make libcurl quiet by default: */
|
/* make libcurl quiet by default: */
|
||||||
data->set.hide_progress = TRUE; /* CURLOPT_NOPROGRESS changes these */
|
data->set.hide_progress = TRUE; /* CURLOPT_NOPROGRESS changes these */
|
||||||
|
@ -523,6 +524,11 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option, ...)
|
||||||
data->set.ftpport = va_arg(param, char *);
|
data->set.ftpport = va_arg(param, char *);
|
||||||
data->set.ftp_use_port = data->set.ftpport?1:0;
|
data->set.ftp_use_port = data->set.ftpport?1:0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case CURLOPT_FTP_USE_EPSV:
|
||||||
|
data->set.ftp_use_epsv = va_arg(param, long)?TRUE:FALSE;
|
||||||
|
break;
|
||||||
|
|
||||||
case CURLOPT_HTTPHEADER:
|
case CURLOPT_HTTPHEADER:
|
||||||
/*
|
/*
|
||||||
* Set a list with HTTP headers to use (or replace internals with)
|
* Set a list with HTTP headers to use (or replace internals with)
|
||||||
|
|
|
@ -567,6 +567,7 @@ struct UserDefined {
|
||||||
bool reuse_forbid; /* forbidden to be reused, close after use */
|
bool reuse_forbid; /* forbidden to be reused, close after use */
|
||||||
bool reuse_fresh; /* do not re-use an existing connection */
|
bool reuse_fresh; /* do not re-use an existing connection */
|
||||||
bool expect100header; /* TRUE if we added Expect: 100-continue */
|
bool expect100header; /* TRUE if we added Expect: 100-continue */
|
||||||
|
bool ftp_use_epsv; /* if EPSV is to be attempted or not */
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue