fixed Curl_freeaddrinfo() to only free addrinfo, and added Curl_freednsinfo()
authorDaniel Stenberg <daniel@haxx.se>
Tue, 26 Nov 2002 09:41:54 +0000 (09:41 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 26 Nov 2002 09:41:54 +0000 (09:41 +0000)
for freeing single dns cache entries

lib/easy.c
lib/hostip.c
lib/hostip.h

index b128180..a068604 100644 (file)
@@ -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);
     }
   }
 
index ecefef1..bc0f4d9 100644 (file)
@@ -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);
 }
index 78a17e2..169ed17 100644 (file)
@@ -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,