]> sjero.net Git - wget/commitdiff
[svn] Fix FTP PASV output.
authorhniksic <devnull@localhost>
Tue, 27 Nov 2001 12:49:13 +0000 (04:49 -0800)
committerhniksic <devnull@localhost>
Tue, 27 Nov 2001 12:49:13 +0000 (04:49 -0800)
Published in <sxslmgsfkgj.fsf@florida.arsdigita.de>.

src/ChangeLog
src/connect.c
src/connect.h
src/ftp.c

index 04267dae2b6afdb600627a770e038a5725f90b07..5b1943687ab5a05ba5e3f7a297ee1fe61d08c9b7 100644 (file)
@@ -1,3 +1,9 @@
+2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * ftp.c (getftp): Improve output after sending PASV.  Don't
+       attempt to "look up" the IP address we already know; call
+       connect_to_one directly.
+
 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
 
        * progress.c: Change the default progress implementation to "bar".
index 619fd41753e722841f27608d2678ea953cdbdd28..c90c214d2c49ee55cb17af43385ffc0f258ade55 100644 (file)
@@ -75,8 +75,8 @@ set_connection_host_name (const char *host)
 }
 
 /* Connect to a remote host whose address has been resolved. */
-static int
-connect_to_one (unsigned char *addr, unsigned short port, int silent)
+int
+connect_to_one (const unsigned char *addr, unsigned short port, int silent)
 {
   struct sockaddr_in sock_name;
   int sock, save_errno;
index 1c378ddb95d96f14568afcd0918a423d38fb85e9..e96748028b9ad21e07e6efe0a7d7bf0cb5a881f3 100644 (file)
@@ -24,6 +24,7 @@ struct address_list;
 
 /* Function declarations */
 
+int connect_to_one PARAMS ((const unsigned char *, unsigned short, int));
 int connect_to_many PARAMS ((struct address_list *, unsigned short, int));
 void set_connection_host_name PARAMS ((const char *));
 
index 012eacd74aca99b9561601dba47aae39e2661c8a..c1c46ec9f773459dea16db5404e92b926a56efa7 100644 (file)
--- a/src/ftp.c
+++ b/src/ftp.c
@@ -493,9 +493,6 @@ Error in server response, closing control connection.\n"));
     {
       if (opt.ftp_pasv > 0)
        {
-         char thost[256];
-         unsigned short tport;
-
          if (!opt.server_response)
            logputs (LOG_VERBOSE, "==> PASV ... ");
          err = ftp_pasv (&con->rbuf, pasv_addr);
@@ -535,31 +532,23 @@ Error in server response, closing control connection.\n"));
            }
          if (err==FTPOK)
            {
-             struct address_list *al;
+             unsigned short tport;
 
-             sprintf (thost, "%d.%d.%d.%d",
-                      pasv_addr[0], pasv_addr[1], pasv_addr[2], pasv_addr[3]);
              tport = (pasv_addr[4] << 8) + pasv_addr[5];
-
-             al = lookup_host (thost, 0);
-             if (!al)
-               {
-                 CLOSE (csock);
-                 rbuf_uninitialize (&con->rbuf);
-                 return HOSTERR;
-               }
-             dtsock = connect_to_many (al, tport, 0);
-             address_list_release (al);
+             dtsock = connect_to_one (pasv_addr, tport, 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,
+                            strerror (save_errno));
                  return save_errno == ECONNREFUSED ? CONREFUSED : CONERROR;
                }
 
-             passive_mode_open= 1;  /* Flag to avoid accept port */
+             passive_mode_open = 1;  /* Flag to avoid accept port */
              if (!opt.server_response)
                logputs (LOG_VERBOSE, _("done.    "));
            } /* err==FTP_OK */