]> granicus.if.org Git - curl/commitdiff
Markus Koetter provided a patch to avoid getnameinfo() usage which broke a couple...
authorGunter Knauf <gk@gknw.de>
Sat, 4 Jul 2009 01:04:23 +0000 (01:04 +0000)
committerGunter Knauf <gk@gknw.de>
Sat, 4 Jul 2009 01:04:23 +0000 (01:04 +0000)
CHANGES
lib/ftp.c

diff --git a/CHANGES b/CHANGES
index 4eb548a49f131ec039d64f87cd97275761766961..36c7d7c51cd046534273bc0d481965a0db81af01 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,10 @@
 
                                   Changelog
 
+Guenter Knauf (4 Jul 2009)
+- Markus Koetter provided a patch to avoid getnameinfo() usage which broke a
+  couple of both IPv4 and IPv6 autobuilds.
+
 Daniel Stenberg (29 Jun 2009)
 - Markus Koetter made CURLOPT_FTPPORT (and curl's -P/--ftpport) support a port
   range if given colon-separated after the host name/address part. Like
index 59fc1157a759a85d73cecffed2757b66c51d00ce..4c9bcd01142015b1cce15de24e60dcdf2f585d88 100644 (file)
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -1000,22 +1000,23 @@ static CURLcode ftp_state_use_port(struct connectdata *conn,
        the IP from the control connection */
 
     sslen = sizeof(ss);
-    if(getsockname(conn->sock[FIRSTSOCKET], (struct sockaddr *)&ss, &sslen)) {
+    if(getsockname(conn->sock[FIRSTSOCKET], sa, &sslen)) {
       failf(data, "getsockname() failed: %s",
           Curl_strerror(conn, SOCKERRNO) );
       if (addr)
         free(addr);
       return CURLE_FTP_PORT_FAILED;
     }
-
-    sslen = sizeof(ss);
-    rc = getnameinfo((struct sockaddr *)&ss, sslen, hbuf, sizeof(hbuf), NULL,
-                     0, NIFLAGS);
-    if(rc) {
-      failf(data, "getnameinfo() returned %d", rc);
-      if (addr)
-        free(addr);
-      return CURLE_FTP_PORT_FAILED;
+    switch(sa->sa_family)
+    {
+#ifdef ENABLE_IPV6
+      case AF_INET6:
+        Curl_inet_ntop(sa->sa_family, &sa6->sin6_addr, hbuf, sizeof(hbuf));
+        break;
+#endif
+      default:
+        Curl_inet_ntop(sa->sa_family, &sa4->sin_addr, hbuf, sizeof(hbuf));
+        break;
     }
     host = hbuf; /* use this host name */
   }