diff options
author | Daniel Stenberg <daniel@haxx.se> | 2004-02-16 13:14:55 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2004-02-16 13:14:55 +0000 |
commit | 39926181ea02fa391c7c4b7c27a13de199ca8170 (patch) | |
tree | cc0882522763f330356b49bcaa8ac9ef50e2fcc8 /lib | |
parent | 8415b4a2714b9092c9bb6b2622a2fab60e6cc594 (diff) |
Fix verbosconnect() when ipv6-enabled to not assume that conn->serv_addr
is a valid pointer, but instead always depend on the passed-in dns pointer.
This happens to be NULL when the connection is re-used...
Diffstat (limited to 'lib')
-rw-r--r-- | lib/url.c | 36 |
1 files changed, 23 insertions, 13 deletions
@@ -1849,26 +1849,36 @@ static void verboseconnect(struct connectdata *conn, /* Figure out the ip-number and display the first host name it shows: */ #ifdef ENABLE_IPV6 - (void)dns; /* not used in the IPv6 enabled version */ { char hbuf[NI_MAXHOST]; #ifdef NI_WITHSCOPEID - const int niflags = NI_NUMERICHOST | NI_WITHSCOPEID; +#define NIFLAGS NI_NUMERICHOST | NI_WITHSCOPEID #else - const int niflags = NI_NUMERICHOST; +#define NIFLAGS NI_NUMERICHOST #endif - struct addrinfo *ai = conn->serv_addr; - - if (getnameinfo(ai->ai_addr, ai->ai_addrlen, hbuf, sizeof(hbuf), NULL, 0, - niflags)) { - snprintf(hbuf, sizeof(hbuf), "?"); + if(dns) { + struct addrinfo *ai = dns->addr; + + /* Lookup the name of the given address. This should probably be remade + to use the DNS cache instead, as the host name is most likely cached + already. */ + if (getnameinfo(ai->ai_addr, ai->ai_addrlen, hbuf, sizeof(hbuf), NULL, 0, + NIFLAGS)) { + snprintf(hbuf, sizeof(hbuf), "unknown"); + } + else { + if (ai->ai_canonname) { + infof(data, "Connected to %s (%s) port %d\n", ai->ai_canonname, hbuf, + conn->port); + return; + } + } } - if (ai->ai_canonname) { - infof(data, "Connected to %s (%s) port %d\n", ai->ai_canonname, hbuf, - conn->port); - } else { - infof(data, "Connected to %s port %d\n", hbuf, conn->port); + else { + snprintf(hbuf, sizeof(hbuf), "same host"); } + + infof(data, "Connected to %s port %d\n", hbuf, conn->port); } #else { |