mirror of
https://github.com/curl/curl.git
synced 2026-08-05 09:16:14 +03:00
dnscache: slight refactoring
Slight refactoring around dnscache, e.g. hostcache - eliminate `data->state.hostcache`. Always look up relevant dnscache at share/multi. - unify naming to "dnscache", replacing "hostcache" - use `struct Curl_dnscache`, even though it just contains a `Curl_hash` for now. - add `Curl_dnscache_destroy()` for cleanup in share/multi. Closes #16941
This commit is contained in:
parent
6140a574de
commit
01e76702ac
14 changed files with 217 additions and 255 deletions
29
lib/multi.c
29
lib/multi.c
|
|
@ -221,7 +221,7 @@ struct Curl_multi *Curl_multi_handle(size_t ev_hashsize, /* event hash */
|
|||
|
||||
multi->magic = CURL_MULTI_HANDLE;
|
||||
|
||||
Curl_init_dnscache(&multi->hostcache, dnssize);
|
||||
Curl_dnscache_init(&multi->dnscache, dnssize);
|
||||
Curl_multi_ev_init(multi, ev_hashsize);
|
||||
|
||||
Curl_hash_init(&multi->proto_hash, 23,
|
||||
|
|
@ -275,7 +275,7 @@ error:
|
|||
|
||||
Curl_multi_ev_cleanup(multi);
|
||||
Curl_hash_destroy(&multi->proto_hash);
|
||||
Curl_hash_destroy(&multi->hostcache);
|
||||
Curl_dnscache_destroy(&multi->dnscache);
|
||||
Curl_cpool_destroy(&multi->cpool);
|
||||
Curl_cshutdn_destroy(&multi->cshutdn, multi->admin);
|
||||
Curl_ssl_scache_destroy(multi->ssl_scache);
|
||||
|
|
@ -382,14 +382,6 @@ CURLMcode curl_multi_add_handle(CURLM *m, CURL *d)
|
|||
/* set the easy handle */
|
||||
multistate(data, MSTATE_INIT);
|
||||
|
||||
/* for multi interface connections, we share DNS cache automatically if the
|
||||
easy handle's one is currently not set. */
|
||||
if(!data->dns.hostcache ||
|
||||
(data->dns.hostcachetype == HCACHE_NONE)) {
|
||||
data->dns.hostcache = &multi->hostcache;
|
||||
data->dns.hostcachetype = HCACHE_MULTI;
|
||||
}
|
||||
|
||||
#ifdef USE_LIBPSL
|
||||
/* Do the same for PSL. */
|
||||
if(data->share && (data->share->specifier & (1 << CURL_LOCK_DATA_PSL)))
|
||||
|
|
@ -468,7 +460,7 @@ static void multi_done_locked(struct connectdata *conn,
|
|||
|
||||
if(conn->dns_entry)
|
||||
Curl_resolv_unlink(data, &conn->dns_entry); /* done with this */
|
||||
Curl_hostcache_prune(data);
|
||||
Curl_dnscache_prune(data);
|
||||
|
||||
/* if data->set.reuse_forbid is TRUE, it means the libcurl client has
|
||||
forced us to close this connection. This is ignored for requests taking
|
||||
|
|
@ -682,13 +674,6 @@ CURLMcode curl_multi_remove_handle(CURLM *m, CURL *d)
|
|||
/* the handle is in a list, remove it from whichever it is */
|
||||
Curl_node_remove(&data->multi_queue);
|
||||
|
||||
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);
|
||||
|
||||
data->mstate = MSTATE_COMPLETED;
|
||||
|
|
@ -2711,12 +2696,6 @@ CURLMcode curl_multi_cleanup(CURLM *m)
|
|||
if(!data->state.done && data->conn)
|
||||
/* if DONE was never called for this handle */
|
||||
(void)multi_done(data, CURLE_OK, TRUE);
|
||||
if(data->dns.hostcachetype == HCACHE_MULTI) {
|
||||
/* clear out the usage of the shared DNS cache */
|
||||
Curl_hostcache_clean(data, data->dns.hostcache);
|
||||
data->dns.hostcache = NULL;
|
||||
data->dns.hostcachetype = HCACHE_NONE;
|
||||
}
|
||||
|
||||
data->multi = NULL; /* clear the association */
|
||||
|
||||
|
|
@ -2738,7 +2717,7 @@ CURLMcode curl_multi_cleanup(CURLM *m)
|
|||
|
||||
Curl_multi_ev_cleanup(multi);
|
||||
Curl_hash_destroy(&multi->proto_hash);
|
||||
Curl_hash_destroy(&multi->hostcache);
|
||||
Curl_dnscache_destroy(&multi->dnscache);
|
||||
Curl_psl_destroy(&multi->psl);
|
||||
Curl_ssl_scache_destroy(multi->ssl_scache);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue