mirror of
https://github.com/curl/curl.git
synced 2026-08-08 19:02:57 +03:00
- allow to specify when they are wanted on starting a resolve - match dns cache entries accordingly. An entry which never tried to get HTTPS-RRs is no answer for a resolve that wants it. - fix late arrivals of resolve answers to match the "async" records that started them - if it still exists. - provide for multiple "async" resolves in a transfer at the same time. We may need to resolve an IP interface while the main connection resolve has not finished yet. - allow lookup of HTTPS-RR information as soon as it is available, even if A/AAAA queries are still ongoing. For this, the "async" infrastructure is changed: - Defined bits for DNS queries `CURL_DNSQ_A`, `CURL_DNSQ_AAAA` and `CURL_DNSQ_HTTPS`. These replace `ip_version` which says nothing about HTTPS. Use them in dns cache entries for matching. - enhance the `async->id` to be a unique `uint32_t` for resolves inside one multi. This is weak, as the id may wrap around. However it is combined with the `mid` of the easy handle, making collisions highly unlikely. `data->state.async` is only accessed in few places where the mid/async-id match is performed. - vtls: for ECH supporting TLS backends (openssl, rustls, wolfssl), retrieve the HTTPS-RR information from the dns connection filter. Delay the connect if the HTTPS-RR is needed, but has not been resolved yet. The implementation of all this is complete for the threaded resolver. c-ares resolver and DoH do not take advantage of all new async features yet. To be done in separate PRs. Details: c-ares: cleanup settings and initialisation. Any ares channel is only being created on starting a resolve and propagating operations in setopt.c to the channel are not helpful. Changed threaded+ares pollset handling so that they do not overwrite each others `ASYNC_NAME` timeouts. Add trace name 'threads' for tracing thread queue and pool used by threaded resolver. Closes #21175 |
||
|---|---|---|
| .. | ||
| curlx | ||
| vauth | ||
| vquic | ||
| vssh | ||
| vtls | ||
| .gitignore | ||
| altsvc.c | ||
| altsvc.h | ||
| amigaos.c | ||
| amigaos.h | ||
| arpa_telnet.h | ||
| asyn-ares.c | ||
| asyn-base.c | ||
| asyn-thrdd.c | ||
| asyn.h | ||
| bufq.c | ||
| bufq.h | ||
| bufref.c | ||
| bufref.h | ||
| cf-dns.c | ||
| cf-dns.h | ||
| cf-h1-proxy.c | ||
| cf-h1-proxy.h | ||
| cf-h2-proxy.c | ||
| cf-h2-proxy.h | ||
| cf-haproxy.c | ||
| cf-haproxy.h | ||
| cf-https-connect.c | ||
| cf-https-connect.h | ||
| cf-ip-happy.c | ||
| cf-ip-happy.h | ||
| cf-socket.c | ||
| cf-socket.h | ||
| cfilters.c | ||
| cfilters.h | ||
| CMakeLists.txt | ||
| config-mac.h | ||
| config-os400.h | ||
| config-riscos.h | ||
| config-win32.h | ||
| conncache.c | ||
| conncache.h | ||
| connect.c | ||
| connect.h | ||
| content_encoding.c | ||
| content_encoding.h | ||
| cookie.c | ||
| cookie.h | ||
| cshutdn.c | ||
| cshutdn.h | ||
| curl_addrinfo.c | ||
| curl_addrinfo.h | ||
| curl_config-cmake.h.in | ||
| curl_ctype.h | ||
| curl_endian.c | ||
| curl_endian.h | ||
| curl_fnmatch.c | ||
| curl_fnmatch.h | ||
| curl_fopen.c | ||
| curl_fopen.h | ||
| curl_get_line.c | ||
| curl_get_line.h | ||
| curl_gethostname.c | ||
| curl_gethostname.h | ||
| curl_gssapi.c | ||
| curl_gssapi.h | ||
| curl_hmac.h | ||
| curl_ldap.h | ||
| curl_md4.h | ||
| curl_md5.h | ||
| curl_memrchr.c | ||
| curl_memrchr.h | ||
| curl_ntlm_core.c | ||
| curl_ntlm_core.h | ||
| curl_printf.h | ||
| curl_range.c | ||
| curl_range.h | ||
| curl_sasl.c | ||
| curl_sasl.h | ||
| curl_setup.h | ||
| curl_sha256.h | ||
| curl_sha512_256.c | ||
| curl_sha512_256.h | ||
| curl_share.c | ||
| curl_share.h | ||
| curl_sspi.c | ||
| curl_sspi.h | ||
| curl_threads.c | ||
| curl_threads.h | ||
| curl_trc.c | ||
| curl_trc.h | ||
| cw-out.c | ||
| cw-out.h | ||
| cw-pause.c | ||
| cw-pause.h | ||
| dict.c | ||
| dict.h | ||
| dllmain.c | ||
| dnscache.c | ||
| dnscache.h | ||
| doh.c | ||
| doh.h | ||
| dynhds.c | ||
| dynhds.h | ||
| easy.c | ||
| easy_lock.h | ||
| easygetopt.c | ||
| easyif.h | ||
| easyoptions.c | ||
| easyoptions.h | ||
| escape.c | ||
| escape.h | ||
| fake_addrinfo.c | ||
| fake_addrinfo.h | ||
| file.c | ||
| file.h | ||
| fileinfo.c | ||
| fileinfo.h | ||
| formdata.c | ||
| formdata.h | ||
| ftp-int.h | ||
| ftp.c | ||
| ftp.h | ||
| ftplistparser.c | ||
| ftplistparser.h | ||
| functypes.h | ||
| getenv.c | ||
| getinfo.c | ||
| getinfo.h | ||
| gopher.c | ||
| gopher.h | ||
| hash.c | ||
| hash.h | ||
| headers.c | ||
| headers.h | ||
| hmac.c | ||
| hostip.c | ||
| hostip.h | ||
| hostip4.c | ||
| hostip6.c | ||
| hsts.c | ||
| hsts.h | ||
| http.c | ||
| http.h | ||
| http1.c | ||
| http1.h | ||
| http2.c | ||
| http2.h | ||
| http_aws_sigv4.c | ||
| http_aws_sigv4.h | ||
| http_chunks.c | ||
| http_chunks.h | ||
| http_digest.c | ||
| http_digest.h | ||
| http_negotiate.c | ||
| http_negotiate.h | ||
| http_ntlm.c | ||
| http_ntlm.h | ||
| http_proxy.c | ||
| http_proxy.h | ||
| httpsrr.c | ||
| httpsrr.h | ||
| idn.c | ||
| idn.h | ||
| if2ip.c | ||
| if2ip.h | ||
| imap.c | ||
| imap.h | ||
| ldap.c | ||
| libcurl.def | ||
| libcurl.rc | ||
| libcurl.vers.in | ||
| llist.c | ||
| llist.h | ||
| macos.c | ||
| macos.h | ||
| Makefile.am | ||
| Makefile.inc | ||
| Makefile.soname | ||
| md4.c | ||
| md5.c | ||
| memdebug.c | ||
| mime.c | ||
| mime.h | ||
| mprintf.c | ||
| mqtt.c | ||
| mqtt.h | ||
| multi.c | ||
| multi_ev.c | ||
| multi_ev.h | ||
| multi_ntfy.c | ||
| multi_ntfy.h | ||
| multihandle.h | ||
| multiif.h | ||
| netrc.c | ||
| netrc.h | ||
| noproxy.c | ||
| noproxy.h | ||
| openldap.c | ||
| optiontable.pl | ||
| parsedate.c | ||
| parsedate.h | ||
| pingpong.c | ||
| pingpong.h | ||
| pop3.c | ||
| pop3.h | ||
| progress.c | ||
| progress.h | ||
| protocol.c | ||
| protocol.h | ||
| psl.c | ||
| psl.h | ||
| rand.c | ||
| rand.h | ||
| ratelimit.c | ||
| ratelimit.h | ||
| request.c | ||
| request.h | ||
| rtsp.c | ||
| rtsp.h | ||
| select.c | ||
| select.h | ||
| sendf.c | ||
| sendf.h | ||
| setopt.c | ||
| setopt.h | ||
| setup-os400.h | ||
| setup-vms.h | ||
| setup-win32.h | ||
| sha256.c | ||
| sigpipe.h | ||
| slist.c | ||
| slist.h | ||
| smb.c | ||
| smb.h | ||
| smtp.c | ||
| smtp.h | ||
| sockaddr.h | ||
| socketpair.c | ||
| socketpair.h | ||
| socks.c | ||
| socks.h | ||
| socks_gssapi.c | ||
| socks_sspi.c | ||
| splay.c | ||
| splay.h | ||
| strcase.c | ||
| strcase.h | ||
| strequal.c | ||
| strerror.c | ||
| strerror.h | ||
| system_win32.c | ||
| system_win32.h | ||
| telnet.c | ||
| telnet.h | ||
| tftp.c | ||
| tftp.h | ||
| thrdpool.c | ||
| thrdpool.h | ||
| thrdqueue.c | ||
| thrdqueue.h | ||
| transfer.c | ||
| transfer.h | ||
| uint-bset.c | ||
| uint-bset.h | ||
| uint-hash.c | ||
| uint-hash.h | ||
| uint-spbset.c | ||
| uint-spbset.h | ||
| uint-table.c | ||
| uint-table.h | ||
| url.c | ||
| url.h | ||
| urlapi-int.h | ||
| urlapi.c | ||
| urldata.h | ||
| version.c | ||
| ws.c | ||
| ws.h | ||