1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-22 08:08:50 -05:00

remove_handle: call multi_done() first, then clear dns cache pointer

Closes #1960
This commit is contained in:
Daniel Stenberg 2017-10-07 22:00:48 +02:00
parent f3e03f6c0a
commit 1e552535e1
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2

View File

@ -711,12 +711,6 @@ CURLMcode curl_multi_remove_handle(struct Curl_multi *multi,
curl_easy_cleanup is called. */ curl_easy_cleanup is called. */
Curl_expire_clear(data); Curl_expire_clear(data);
if(data->dns.hostcachetype == HCACHE_MULTI) {
/* stop using the multi handle's DNS cache */
data->dns.hostcache = NULL;
data->dns.hostcachetype = HCACHE_NONE;
}
if(data->easy_conn) { if(data->easy_conn) {
/* we must call multi_done() here (if we still own the connection) so that /* we must call multi_done() here (if we still own the connection) so that
@ -735,6 +729,13 @@ CURLMcode curl_multi_remove_handle(struct Curl_multi *multi,
Curl_getoff_all_pipelines(data, data->easy_conn); Curl_getoff_all_pipelines(data, data->easy_conn);
} }
if(data->dns.hostcachetype == HCACHE_MULTI) {
/* stop using the multi handle's DNS cache, *after* the possible
multi_done() call above */
data->dns.hostcache = NULL;
data->dns.hostcachetype = HCACHE_NONE;
}
Curl_wildcard_dtor(&data->wildcard); Curl_wildcard_dtor(&data->wildcard);
/* destroy the timeout list that is held in the easy handle, do this *after* /* destroy the timeout list that is held in the easy handle, do this *after*