Skip to content
Snippets Groups Projects
Commit 022996e5 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

Dirk Manske made the share-locking around DNS lookups a bit "looser" so that

multiple DNS lookups can run simultaneously faster. The downside is that
resolving the same host name now can be made at once from multiple threads,
but the upside is that threads now don't alwys have to wait for the others'
resolves. Test case 506 updated accordingly.
parent 4935853e
No related branches found
No related tags found
No related merge requests found
......@@ -307,6 +307,9 @@ int Curl_resolv(struct connectdata *conn,
/* See if its already in our dns cache */
dns = Curl_hash_pick(data->hostcache, entry_id, entry_len+1);
if(data->share)
Curl_share_unlock(data, CURL_LOCK_DATA_DNS);
/* free the allocated entry_id again */
free(entry_id);
......@@ -332,12 +335,18 @@ int Curl_resolv(struct connectdata *conn,
}
}
else
{
if(data->share)
Curl_share_lock(data, CURL_LOCK_DATA_DNS, CURL_LOCK_ACCESS_SINGLE);
/* we got a response, store it in the cache */
dns = cache_resolv_response(data, addr, hostname, port);
if(data->share)
Curl_share_unlock(data, CURL_LOCK_DATA_DNS);
}
}
if(data->share)
Curl_share_unlock(data, CURL_LOCK_DATA_DNS);
*entry = dns;
......
......@@ -68,6 +68,8 @@ unlock: share <Pigs in space>
PERFORM
lock: dns <Pigs in space>
unlock: dns <Pigs in space>
lock: dns <Pigs in space>
unlock: dns <Pigs in space>
lock: cookie <Pigs in space>
unlock: cookie <Pigs in space>
lock: cookie <Pigs in space>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment