From 73daf8ce334dc3d3dc8215cd898cfbb9fe3267de Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Tue, 9 May 2006 11:33:00 +0000 Subject: Robson Braga Araujo fixed a memory leak when you added an easy handle to a multi stack and that easy handle had already been used to do one or more easy interface transfers, as then the code threw away the previously used DNS cache without properly freeing it. --- lib/multi.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'lib/multi.c') diff --git a/lib/multi.c b/lib/multi.c index c0f9a7918..c3463b0ce 100644 --- a/lib/multi.c +++ b/lib/multi.c @@ -315,7 +315,12 @@ CURLMcode curl_multi_add_handle(CURLM *multi_handle, easy->easy_handle = easy_handle; multistate(easy, CURLM_STATE_INIT); - /* for multi interface connections, we share DNS cache automaticly */ + /* for multi interface connections, we share DNS cache automaticly. + First kill the existing one if there is any. */ + if (easy->easy_handle->hostcache && + easy->easy_handle->hostcache != multi->hostcache) + Curl_hash_destroy(easy->easy_handle->hostcache); + easy->easy_handle->hostcache = multi->hostcache; /* We add this new entry first in the list. We make our 'next' point to the -- cgit v1.2.3