Unverified Commit 1e552535 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

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

Closes #1960
parent f3e03f6c
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -711,12 +711,6 @@ CURLMcode curl_multi_remove_handle(struct Curl_multi *multi,
     curl_easy_cleanup is called. */
  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) {

    /* 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);
  }

  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);

  /* destroy the timeout list that is held in the easy handle, do this *after*