From: Daniel Stenberg Date: Mon, 16 Feb 2004 13:14:55 +0000 (+0000) Subject: Fix verbosconnect() when ipv6-enabled to not assume that conn->serv_addr X-Git-Tag: upstream/7.37.1~13473 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=39926181ea02fa391c7c4b7c27a13de199ca8170;p=platform%2Fupstream%2Fcurl.git 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... --- diff --git a/lib/url.c b/lib/url.c index 188263b..aa15ec0 100644 --- a/lib/url.c +++ b/lib/url.c @@ -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 {