]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
url: Curl_free_request_state() should also free doh handles
authorDaniel Stenberg <daniel@haxx.se>
Sun, 27 Oct 2019 21:20:02 +0000 (22:20 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 29 Oct 2019 21:48:19 +0000 (22:48 +0100)
... or risk DoH memory leaks.

Reported-by: Paul Dreik
Fixes #4463
Closes #4527

lib/url.c

index 660d241416fce48146a12b718da0de3c02e58d40..bbae273fdbe472d5ec22f2ced901d450f4ee1f64 100644 (file)
--- a/lib/url.c
+++ b/lib/url.c
@@ -399,9 +399,6 @@ CURLcode Curl_close(struct Curl_easy *data)
     Curl_share_unlock(data, CURL_LOCK_DATA_SHARE);
   }
 
-  /* Leave no dangling DOH handles behind */
-  Curl_close(data->req.doh.probe[0].easy);
-  Curl_close(data->req.doh.probe[1].easy);
   free(data->req.doh.probe[0].serverdoh.memory);
   free(data->req.doh.probe[1].serverdoh.memory);
   curl_slist_free_all(data->req.doh.headers);
@@ -1986,6 +1983,10 @@ void Curl_free_request_state(struct Curl_easy *data)
 {
   Curl_safefree(data->req.protop);
   Curl_safefree(data->req.newurl);
+  Curl_close(data->req.doh.probe[0].easy);
+  data->req.doh.probe[0].easy = NULL;
+  Curl_close(data->req.doh.probe[1].easy);
+  data->req.doh.probe[1].easy = NULL;
 }