mirror of
https://github.com/curl/curl.git
synced 2026-07-27 06:27:23 +03:00
dns_entry: move from conn to data->state
The `struct Curl_dns_entry *` used to established a connection do not have the connection's lifetime, but the transfer's lifetime (of the transfer that initiates the connect). `Curl_dns_entry *` is reference counted with the "dns cache". That cache might be owned by the multi or the transfer's share. In the share, the reference count needs updating under lock. Therefore, the dns entry can only be kept *and* released using the same transfer it was initially looked up from. But a connection is often discarded using another transfer. So far, the problem of this has been avoided in clearing the connection's dns entries in the "multi_don()" handling. So, connections had NULL dns entries after the initial transfers and its connect had been handled. Keeping the dns entries in data->state seems therefore a better choice. Also: remove the `struct Curl_dns_entry *` from the connect filters contexts. Use `data->state.dns` every time instead and fail correctly when not present and needed. Closes #17383
This commit is contained in:
parent
3ec6aa5c07
commit
be45e014c6
14 changed files with 132 additions and 119 deletions
|
|
@ -1941,7 +1941,6 @@ static CURLcode ftp_state_pasv_resp(struct Curl_easy *data,
|
|||
CURL_CF_SSL_ENABLE : CURL_CF_SSL_DISABLE);
|
||||
|
||||
if(result) {
|
||||
Curl_resolv_unlink(data, &dns); /* we are done using this dns entry */
|
||||
if(ftpc->count1 == 0 && ftpcode == 229)
|
||||
return ftp_epsv_disable(data, ftpc, conn);
|
||||
|
||||
|
|
@ -1959,8 +1958,6 @@ static CURLcode ftp_state_pasv_resp(struct Curl_easy *data,
|
|||
/* this just dumps information about this second connection */
|
||||
ftp_pasv_verbose(data, dns->addr, ftpc->newhost, connectport);
|
||||
|
||||
Curl_resolv_unlink(data, &dns); /* we are done using this address */
|
||||
|
||||
free(conn->secondaryhostname);
|
||||
conn->secondary_port = ftpc->newport;
|
||||
conn->secondaryhostname = strdup(ftpc->newhost);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue