diff --git a/lib/hostip.c b/lib/hostip.c index 93a732d90f71f46c0785877f212ec52d286b2dd0..c06961e7907334c33eeaede9d301bbf9622d2308 100644 --- a/lib/hostip.c +++ b/lib/hostip.c @@ -527,8 +527,16 @@ static void host_callback(void *arg, /* "struct connectdata *" */ /* pack_hostent() copies to and shrinks the target buffer */ struct hostent *he = pack_hostent(&bufp, hostent); - dns = cache_resolv_response(conn->data, he, + struct SessionHandle *data = conn->data; + + if(data->share) + Curl_share_lock(data, CURL_LOCK_DATA_DNS, CURL_LOCK_ACCESS_SINGLE); + + dns = cache_resolv_response(data, he, conn->async.hostname, conn->async.port); + + if(data->share) + Curl_share_unlock(data, CURL_LOCK_DATA_DNS); } }