diff --git a/lib/easy.c b/lib/easy.c index b128180d8d85561f26c0b68f20563e8a7269e271..a068604b472e22a33d006a3696ece163a682ab91 100644 --- a/lib/easy.c +++ b/lib/easy.c @@ -238,7 +238,7 @@ CURLcode curl_easy_perform(CURL *curl) data->hostcache = Curl_global_host_cache_get(); } else { - data->hostcache = Curl_hash_alloc(7, Curl_freeaddrinfo); + data->hostcache = Curl_hash_alloc(7, Curl_freednsinfo); } } diff --git a/lib/hostip.c b/lib/hostip.c index ecefef1f7da7d03cf7c7557a7ad79757578d8c42..bc0f4d9799f2f94da298cfce12f4e115f43d4bcd 100644 --- a/lib/hostip.c +++ b/lib/hostip.c @@ -88,7 +88,7 @@ static Curl_addrinfo *my_getaddrinfo(struct SessionHandle *data, void Curl_global_host_cache_init(void) { if (!host_cache_initialized) { - Curl_hash_init(&hostname_cache, 7, Curl_freeaddrinfo); + Curl_hash_init(&hostname_cache, 7, Curl_freednsinfo); host_cache_initialized = 1; } } @@ -287,17 +287,25 @@ struct Curl_dns_entry *Curl_resolv(struct SessionHandle *data, /* * This is a wrapper function for freeing name information in a protocol * independent way. This takes care of using the appropriate underlaying - * proper function. + * function. */ -void Curl_freeaddrinfo(void *freethis) +void Curl_freeaddrinfo(Curl_addrinfo *p) { - struct Curl_dns_entry *p = (struct Curl_dns_entry *) freethis; - #ifdef ENABLE_IPV6 - freeaddrinfo(p->addr); + freeaddrinfo(p); #else - free(p->addr); + free(p); #endif +} + +/* + * Free a cache dns entry. + */ +void Curl_freednsinfo(void *freethis) +{ + struct Curl_dns_entry *p = (struct Curl_dns_entry *) freethis; + + Curl_freeaddrinfo(p->addr); free(p); } diff --git a/lib/hostip.h b/lib/hostip.h index 78a17e2e8bc662ef8b418a1f2d24add3e93a8497..169ed17c92acd296e65ee478892df7f32da52ef6 100644 --- a/lib/hostip.h +++ b/lib/hostip.h @@ -65,7 +65,10 @@ struct Curl_dns_entry *Curl_resolv(struct SessionHandle *data, void Curl_scan_cache_used(void *user, void *ptr); /* free name info */ -void Curl_freeaddrinfo(void *freethis); +void Curl_freeaddrinfo(Curl_addrinfo *freeaddr); + +/* free cached name info */ +void Curl_freednsinfo(void *freethis); #ifdef MALLOCDEBUG void curl_freeaddrinfo(struct addrinfo *freethis,