mirror of
https://github.com/curl/curl.git
synced 2026-08-03 07:20:28 +03:00
As reported in Mandrake's bug tracker bug 12285
(http://qa.mandrakesoft.com/show_bug.cgi?id=12285), when connecting to an IPv6 host with FTP, --disable-epsv (or --disable-eprt) effectively disables the ability to transfer a file. Now, when connected to an FTP server with IPv6, these FTP commands can't be disabled even if asked to with the available libcurl options.
This commit is contained in:
parent
c073625fb9
commit
0966ddafaa
3 changed files with 32 additions and 1 deletions
19
lib/ftp.c
19
lib/ftp.c
|
|
@ -1184,6 +1184,16 @@ CURLcode ftp_use_port(struct connectdata *conn)
|
|||
return CURLE_FTP_PORT_FAILED;
|
||||
}
|
||||
|
||||
#ifdef PF_INET6
|
||||
if(!conn->bits.ftp_use_eprt &&
|
||||
(conn->ip_addr->ai_family == PF_INET6)) {
|
||||
/* EPRT is disabled but we are connected to a IPv6 host, so we ignore the
|
||||
request! */
|
||||
conn->bits.ftp_use_eprt = TRUE;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
for (fcmd = EPRT; fcmd != DONE; fcmd++) {
|
||||
int lprtaf, eprtaf;
|
||||
int alen=0, plen=0;
|
||||
|
|
@ -1512,6 +1522,15 @@ CURLcode ftp_use_pasv(struct connectdata *conn,
|
|||
char newhost[48];
|
||||
char *newhostp=NULL;
|
||||
|
||||
#ifdef PF_INET6
|
||||
if(!conn->bits.ftp_use_epsv &&
|
||||
(conn->ip_addr->ai_family == PF_INET6)) {
|
||||
/* EPSV is disabled but we are connected to a IPv6 host, so we ignore the
|
||||
request! */
|
||||
conn->bits.ftp_use_epsv = TRUE;
|
||||
}
|
||||
#endif
|
||||
|
||||
for (modeoff = (conn->bits.ftp_use_epsv?0:1);
|
||||
mode[modeoff]; modeoff++) {
|
||||
result = Curl_ftpsendf(conn, "%s", mode[modeoff]);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue