From 7df5677b4677eabbb8d1477171f3c9bf0028f08d Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Tue, 26 Nov 2002 09:41:54 +0000 Subject: fixed Curl_freeaddrinfo() to only free addrinfo, and added Curl_freednsinfo() for freeing single dns cache entries --- lib/hostip.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'lib/hostip.c') diff --git a/lib/hostip.c b/lib/hostip.c index ecefef1f7..bc0f4d979 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); } -- cgit v1.2.3