diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/easy.c | 2 | ||||
| -rw-r--r-- | lib/hostip.c | 22 | ||||
| -rw-r--r-- | lib/hostip.h | 5 | 
3 files changed, 20 insertions, 9 deletions
diff --git a/lib/easy.c b/lib/easy.c index b128180d8..a068604b4 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 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);  } diff --git a/lib/hostip.h b/lib/hostip.h index 78a17e2e8..169ed17c9 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,  | 
