urldata: move async resolver state from easy handle to connectdata

- resolving is done for a connection, not for every transfer
- save create/dup/free of a cares channel for each transfer
- check values of setopt calls against a local channel if no
  connection has been attached yet, when needed.

Closes #12198
This commit is contained in:
Stefan Eissing 2023-10-25 12:31:34 +02:00 committed by Daniel Stenberg
parent 910f740ce2
commit 56a4db2e4e
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2
10 changed files with 147 additions and 127 deletions

View file

@ -1986,8 +1986,8 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
if(dns) {
#ifdef CURLRES_ASYNCH
data->state.async.dns = dns;
data->state.async.done = TRUE;
conn->resolve_async.dns = dns;
conn->resolve_async.done = TRUE;
#endif
result = CURLE_OK;
infof(data, "Hostname '%s' was found in DNS cache", hostname);