aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/easy.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/lib/easy.c b/lib/easy.c
index a068604b4..145db5af1 100644
--- a/lib/easy.c
+++ b/lib/easy.c
@@ -233,15 +233,17 @@ CURLcode curl_easy_perform(CURL *curl)
{
struct SessionHandle *data = (struct SessionHandle *)curl;
- if (!data->hostcache) {
- if (Curl_global_host_cache_use(data)) {
- data->hostcache = Curl_global_host_cache_get();
- }
- else {
- data->hostcache = Curl_hash_alloc(7, Curl_freednsinfo);
+ if (Curl_global_host_cache_use(data) && data->hostcache != Curl_global_host_cache_get()) {
+ if (data->hostcache) {
+ Curl_hash_destroy(data->hostcache);
}
+ data->hostcache = Curl_global_host_cache_get();
}
+ if (!data->hostcache) {
+ data->hostcache = Curl_hash_alloc(7, Curl_freednsinfo);
+ }
+
return Curl_perform(data);
}