1
0
mirror of https://github.com/moparisthebest/wget synced 2024-07-03 16:38:41 -04:00

Fix compile error when IPv6 is disabled

* src/ftp-basic.c: The code for the new FTPS functionality was unintentionally
inside a #ifdef IPV6 block. Move the code around so that it is defined even when
IPV6 isn't used
This commit is contained in:
Darshit Shah 2015-11-17 00:16:25 +01:00
parent 08ece891b5
commit 2cfcadf5e6

View File

@ -429,6 +429,65 @@ ip_address_to_eprt_repr (const ip_address *addr, int port, char *buf,
buf[buflen - 1] = '\0'; buf[buflen - 1] = '\0';
} }
/* Bind a port and send the appropriate PORT command to the FTP
server. Use acceptport after RETR, to get the socket of data
connection. */
uerr_t
ftp_eprt (int csock, int *local_sock)
{
uerr_t err;
char *request, *respline;
ip_address addr;
int nwritten;
int port;
/* Must contain the argument of EPRT (of the form |af|addr|port|).
* 4 chars for the | separators, INET6_ADDRSTRLEN chars for addr
* 1 char for af (1-2) and 5 chars for port (0-65535) */
char bytes[4 + INET6_ADDRSTRLEN + 1 + 5 + 1];
/* Get the address of this side of the connection. */
if (!socket_ip_address (csock, &addr, ENDPOINT_LOCAL))
return FTPSYSERR;
/* Setting port to 0 lets the system choose a free port. */
port = 0;
/* Bind the port. */
*local_sock = bind_local (&addr, &port);
if (*local_sock < 0)
return FTPSYSERR;
/* Construct the argument of EPRT (of the form |af|addr|port|). */
ip_address_to_eprt_repr (&addr, port, bytes, sizeof (bytes));
/* Send PORT request. */
request = ftp_request ("EPRT", bytes);
nwritten = fd_write (csock, request, strlen (request), -1);
if (nwritten < 0)
{
xfree (request);
fd_close (*local_sock);
return WRITEFAILED;
}
xfree (request);
/* Get appropriate response. */
err = ftp_response (csock, &respline);
if (err != FTPOK)
{
fd_close (*local_sock);
return err;
}
if (*respline != '2')
{
xfree (respline);
fd_close (*local_sock);
return FTPPORTERR;
}
xfree (respline);
return FTPOK;
}
#endif
#ifdef HAVE_SSL #ifdef HAVE_SSL
/* /*
* The following three functions defined into this #ifdef block * The following three functions defined into this #ifdef block
@ -542,65 +601,6 @@ bail:
} }
#endif /* HAVE_SSL */ #endif /* HAVE_SSL */
/* Bind a port and send the appropriate PORT command to the FTP
server. Use acceptport after RETR, to get the socket of data
connection. */
uerr_t
ftp_eprt (int csock, int *local_sock)
{
uerr_t err;
char *request, *respline;
ip_address addr;
int nwritten;
int port;
/* Must contain the argument of EPRT (of the form |af|addr|port|).
* 4 chars for the | separators, INET6_ADDRSTRLEN chars for addr
* 1 char for af (1-2) and 5 chars for port (0-65535) */
char bytes[4 + INET6_ADDRSTRLEN + 1 + 5 + 1];
/* Get the address of this side of the connection. */
if (!socket_ip_address (csock, &addr, ENDPOINT_LOCAL))
return FTPSYSERR;
/* Setting port to 0 lets the system choose a free port. */
port = 0;
/* Bind the port. */
*local_sock = bind_local (&addr, &port);
if (*local_sock < 0)
return FTPSYSERR;
/* Construct the argument of EPRT (of the form |af|addr|port|). */
ip_address_to_eprt_repr (&addr, port, bytes, sizeof (bytes));
/* Send PORT request. */
request = ftp_request ("EPRT", bytes);
nwritten = fd_write (csock, request, strlen (request), -1);
if (nwritten < 0)
{
xfree (request);
fd_close (*local_sock);
return WRITEFAILED;
}
xfree (request);
/* Get appropriate response. */
err = ftp_response (csock, &respline);
if (err != FTPOK)
{
fd_close (*local_sock);
return err;
}
if (*respline != '2')
{
xfree (respline);
fd_close (*local_sock);
return FTPPORTERR;
}
xfree (respline);
return FTPOK;
}
#endif
/* Similar to ftp_port, but uses `PASV' to initiate the passive FTP /* Similar to ftp_port, but uses `PASV' to initiate the passive FTP
transfer. Reads the response from server and parses it. Reads the transfer. Reads the response from server and parses it. Reads the
host and port addresses and returns them. */ host and port addresses and returns them. */