X-Git-Url: http://sjero.net/git/?p=wget;a=blobdiff_plain;f=src%2Fftp.c;h=e02c018b8478daa89ccaa8af299f54b0123ef66e;hp=1b78fd333f9bfe7159599de469e1e2c6bf31b90e;hb=cb4003403509b46d2f6ef6936baf969906ff1430;hpb=e59a7ee8ac8a7e31a52ade02cfdb54d341e2bec1 diff --git a/src/ftp.c b/src/ftp.c index 1b78fd33..e02c018b 100644 --- a/src/ftp.c +++ b/src/ftp.c @@ -119,9 +119,8 @@ getftp (struct url *u, long *len, long restval, ccon *con) FILE *fp; char *user, *passwd, *respline; char *tms, *tmrate; - unsigned char pasv_addr[6]; int cmd = con->cmd; - int passive_mode_open = 0; + int pasv_mode_open = 0; long expected_bytes = 0L; assert (con != NULL); @@ -489,9 +488,11 @@ Error in server response, closing control connection.\n")); { if (opt.ftp_pasv > 0) { + ip_address passive_addr; + unsigned short passive_port; if (!opt.server_response) logputs (LOG_VERBOSE, "==> PASV ... "); - err = ftp_pasv (&con->rbuf, pasv_addr); + err = ftp_pasv (&con->rbuf, &passive_addr, &passive_port); /* FTPRERR, WRITEFAILED, FTPNOPASV, FTPINVPASV */ switch (err) { @@ -525,32 +526,28 @@ Error in server response, closing control connection.\n")); default: abort (); break; - } + } /* switch(err) */ if (err==FTPOK) { - unsigned short tport; - - tport = (pasv_addr[4] << 8) + pasv_addr[5]; - dtsock = connect_to_one (pasv_addr, tport, 1); - + dtsock = connect_to_one (&passive_addr, passive_port, 1); if (dtsock < 0) { int save_errno = errno; CLOSE (csock); rbuf_uninitialize (&con->rbuf); logprintf (LOG_VERBOSE, _("couldn't connect to %s:%hu: %s\n"), - pretty_print_address (pasv_addr), tport, + pretty_print_address (&passive_addr), passive_port, strerror (save_errno)); return save_errno == ECONNREFUSED ? CONREFUSED : CONERROR; } - passive_mode_open = 1; /* Flag to avoid accept port */ + pasv_mode_open = 1; /* Flag to avoid accept port */ if (!opt.server_response) logputs (LOG_VERBOSE, _("done. ")); } /* err==FTP_OK */ } - if (!passive_mode_open) /* Try to use a port command if PASV failed */ + if (!pasv_mode_open) /* Try to use a port command if PASV failed */ { if (!opt.server_response) logputs (LOG_VERBOSE, "==> PORT ... "); @@ -782,7 +779,7 @@ Error in server response, closing control connection.\n")); if (!(cmd & (DO_LIST | DO_RETR))) return RETRFINISHED; - if (!passive_mode_open) /* we are not using pasive mode so we need + if (!pasv_mode_open) /* we are not using pasive mode so we need to accept */ { /* Open the data transmission socket by calling acceptport(). */