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...
This commit is contained in:
26
lib/url.c
26
lib/url.c
@@ -1849,27 +1849,37 @@ static void verboseconnect(struct connectdata *conn,
|
|||||||
|
|
||||||
/* Figure out the ip-number and display the first host name it shows: */
|
/* Figure out the ip-number and display the first host name it shows: */
|
||||||
#ifdef ENABLE_IPV6
|
#ifdef ENABLE_IPV6
|
||||||
(void)dns; /* not used in the IPv6 enabled version */
|
|
||||||
{
|
{
|
||||||
char hbuf[NI_MAXHOST];
|
char hbuf[NI_MAXHOST];
|
||||||
#ifdef NI_WITHSCOPEID
|
#ifdef NI_WITHSCOPEID
|
||||||
const int niflags = NI_NUMERICHOST | NI_WITHSCOPEID;
|
#define NIFLAGS NI_NUMERICHOST | NI_WITHSCOPEID
|
||||||
#else
|
#else
|
||||||
const int niflags = NI_NUMERICHOST;
|
#define NIFLAGS NI_NUMERICHOST
|
||||||
#endif
|
#endif
|
||||||
struct addrinfo *ai = conn->serv_addr;
|
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,
|
if (getnameinfo(ai->ai_addr, ai->ai_addrlen, hbuf, sizeof(hbuf), NULL, 0,
|
||||||
niflags)) {
|
NIFLAGS)) {
|
||||||
snprintf(hbuf, sizeof(hbuf), "?");
|
snprintf(hbuf, sizeof(hbuf), "unknown");
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
if (ai->ai_canonname) {
|
if (ai->ai_canonname) {
|
||||||
infof(data, "Connected to %s (%s) port %d\n", ai->ai_canonname, hbuf,
|
infof(data, "Connected to %s (%s) port %d\n", ai->ai_canonname, hbuf,
|
||||||
conn->port);
|
conn->port);
|
||||||
} else {
|
return;
|
||||||
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
|
#else
|
||||||
{
|
{
|
||||||
Curl_addrinfo *hostaddr=dns?dns->addr:NULL;
|
Curl_addrinfo *hostaddr=dns?dns->addr:NULL;
|
||||||
|
Reference in New Issue
Block a user