mirror of
https://github.com/moparisthebest/curl
synced 2024-12-21 23:58:49 -05: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
8
CHANGES
8
CHANGES
@ -6,6 +6,14 @@
|
||||
|
||||
Changelog
|
||||
|
||||
Daniel (29 November 2004)
|
||||
- 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.
|
||||
|
||||
Daniel (26 November 2004)
|
||||
- As reported in Mandrake's bug tracker bug 12289
|
||||
(http://qa.mandrakesoft.com/show_bug.cgi?id=12289), curl would print a
|
||||
|
@ -21,7 +21,7 @@
|
||||
.\" * $Id$
|
||||
.\" **************************************************************************
|
||||
.\"
|
||||
.TH curl_easy_setopt 3 "21 Nov 2004" "libcurl 7.12.3" "libcurl Manual"
|
||||
.TH curl_easy_setopt 3 "29 Nov 2004" "libcurl 7.12.3" "libcurl Manual"
|
||||
.SH NAME
|
||||
curl_easy_setopt - set options for a curl easy handle
|
||||
.SH SYNOPSIS
|
||||
@ -706,11 +706,15 @@ LPRT) command when doing active FTP downloads (which is enabled by
|
||||
\fICURLOPT_FTPPORT\fP). Using EPRT means that it will first attempt to use
|
||||
EPRT and then LPRT before using PORT, but if you pass FALSE (zero) to this
|
||||
option, it will not try using EPRT or LPRT, only plain PORT. (Added in 7.10.5)
|
||||
|
||||
If the server is an IPv6 host, this option will have no effect as of 7.12.3.
|
||||
.IP CURLOPT_FTP_USE_EPSV
|
||||
Pass a long. If the value is non-zero, it tells curl to use the EPSV command
|
||||
when doing passive FTP downloads (which it always does by default). Using EPSV
|
||||
means that it will first attempt to use EPSV before using PASV, but if you
|
||||
pass FALSE (zero) to this option, it will not try using EPSV, only plain PASV.
|
||||
|
||||
If the server is an IPv6 host, this option will have no effect as of 7.12.3.
|
||||
.IP CURLOPT_FTP_CREATE_MISSING_DIRS
|
||||
Pass a long. If the value is non-zero, curl will attempt to create any remote
|
||||
directory that it fails to CWD into. CWD is the command that changes working
|
||||
|
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…
Reference in New Issue
Block a user