aboutsummaryrefslogtreecommitdiff
path: root/lib/hostip.c
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2002-11-26 09:41:54 +0000
committerDaniel Stenberg <daniel@haxx.se>2002-11-26 09:41:54 +0000
commit7df5677b4677eabbb8d1477171f3c9bf0028f08d (patch)
tree6dff57ce9e751cfb7e6858b4a2fc89a67d281604 /lib/hostip.c
parent2e71876b28a83fbeaa9f7feb5896a7e35297ad74 (diff)
fixed Curl_freeaddrinfo() to only free addrinfo, and added Curl_freednsinfo()
for freeing single dns cache entries
Diffstat (limited to 'lib/hostip.c')
-rw-r--r--lib/hostip.c22
1 files changed, 15 insertions, 7 deletions
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);
}