Jon Turner pointed out that doing -P [hostname] with curl (built ipv4-only)
authorDaniel Stenberg <daniel@haxx.se>
Thu, 19 Jan 2006 22:02:46 +0000 (22:02 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 19 Jan 2006 22:02:46 +0000 (22:02 +0000)
didn't work.

CHANGES
RELEASE-NOTES
lib/ftp.c

diff --git a/CHANGES b/CHANGES
index 9a6d470b0767c0f87e1dc8108e0cddf756ee965d..d2e35cd642d9a3dee76ec0a254b6d2fe97644374 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,10 @@
 
                                   Changelog
 
+Daniel (19 January 2006)
+- Jon Turner pointed out that doing -P [hostname] with curl (built ipv4-only)
+  didn't work.
+
 Daniel (18 January 2006)
 - As reported in bug #1408742 (http://curl.haxx.se/bug/view.cgi?id=1408742),
   the configure script complained about a missing "missing" script if you ran
index 7ced46c7cbda7e526e3e717d4d7421d5f1693ce3..11485e8d21c6e4b882dd6efa49b0ac050649d4f2 100644 (file)
@@ -18,6 +18,7 @@ This release includes the following changes:
 
 This release includes the following bugfixes:
 
+ o -P [hostname] with ipv6-disabled curl
  o libcurl.m4 was updated
  o configure no longer warns if the current path contains a space
  o test suite kill race condition
@@ -43,6 +44,6 @@ advice from friends like these:
 
  Dov Murik, Jean Jacques Drouin, Andres Garcia, Yang Tse, Gisle Vanem, Dan
  Fandrich, Alexander Lazic, Michael Jahn, Andrew Benham, Bryan Henderson,
- David Shaw
+ David Shaw, Jon Turner
  
         Thanks! (and sorry if I forgot to mention someone)
index 7f52127c49052448686e27c54118916550f20760..2361c89ec65847e411a84d67baef62570dbd1581 100644 (file)
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -1011,6 +1011,8 @@ static CURLcode ftp_state_use_port(struct connectdata *conn,
   bool sa_filled_in = FALSE;
   Curl_addrinfo *addr = NULL;
   unsigned short ip[4];
+  bool freeaddr = TRUE;
+
   (void)fcmd; /* not used in the IPv4 code */
   if(data->set.ftpport) {
     in_addr_t in;
@@ -1030,7 +1032,7 @@ static CURLcode ftp_state_use_port(struct connectdata *conn,
       else if(strlen(data->set.ftpport)> 1) {
         /* might be a host name! */
         struct Curl_dns_entry *h=NULL;
-        int rc = Curl_resolv(conn, myhost, 0, &h);
+        int rc = Curl_resolv(conn, data->set.ftpport, 0, &h);
         if(rc == CURLRESOLV_PENDING)
           /* BLOCKING */
           rc = Curl_wait_for_resolv(conn, &h);
@@ -1039,7 +1041,13 @@ static CURLcode ftp_state_use_port(struct connectdata *conn,
           /* when we return from this function, we can forget about this entry
              so we can unlock it now already */
           Curl_resolv_unlock(data, h);
+
+          freeaddr = FALSE; /* make sure we don't free 'addr' in this function
+                               since it points to a DNS cache entry! */
         } /* (h) */
+        else {
+          infof(data, "Failed to resolve host name %s\n", data->set.ftpport);
+        }
       } /* strlen */
     } /* CURL_INADDR_NONE */
   } /* data->set.ftpport */
@@ -1132,7 +1140,8 @@ static CURLcode ftp_state_use_port(struct connectdata *conn,
   else
     return CURLE_FTP_PORT_FAILED;
 
-  Curl_freeaddrinfo(addr);
+  if(freeaddr)
+    Curl_freeaddrinfo(addr);
 
   ftp->count1 = PORT;