]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
hostip: fix crash in sync resolver builds that use DOH
authorJay Satiro <raysatiro@yahoo.com>
Sat, 13 Feb 2021 07:45:33 +0000 (02:45 -0500)
committerJay Satiro <raysatiro@yahoo.com>
Sun, 14 Feb 2021 04:03:58 +0000 (23:03 -0500)
- Guard some Curl_async accesses with USE_CURL_ASYNC instead of
  !CURLRES_SYNCH.

This is another follow-up to 8335c64 which moved the async struct from
the connectdata struct into the Curl_easy struct. A previous follow-up
6cd167a fixed building for sync resolver by guarding some async struct
accesses with !CURLRES_SYNCH. The problem is since DOH (DNS-over-HTTPS)
is available as an asynchronous secondary resolver the async struct may
be used even when libcurl is built for the sync resolver. That means
that CURLRES_SYNCH and USE_CURL_ASYNC may be defined at the same time.

Closes https://github.com/curl/curl/pull/6603

lib/hostip.c

index 1a86e6a2313c178cb645ddee6f1a0a522d9c52c0..e6a92f2ab4e7702de2ea9d9fb7990017a95f1b0b 100644 (file)
@@ -521,10 +521,10 @@ enum resolve_t Curl_resolv(struct Curl_easy *data,
       int st;
       Curl_set_in_callback(data, true);
       st = data->set.resolver_start(
-#ifdef CURLRES_SYNCH
-        NULL,
-#else
+#ifdef USE_CURL_ASYNC
         data->state.async.resolver,
+#else
+        NULL,
 #endif
         NULL,
         data->set.resolver_start_client);
@@ -1108,7 +1108,7 @@ CURLcode Curl_once_resolved(struct Curl_easy *data, bool *protocol_done)
   CURLcode result;
   struct connectdata *conn = data->conn;
 
-#ifndef CURLRES_SYNCH
+#ifdef USE_CURL_ASYNC
   if(data->state.async.dns) {
     conn->dns_entry = data->state.async.dns;
     data->state.async.dns = NULL;