mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-17 16:28:53 -04:00
When a query times out after a socket is created and associated with a
given dig_query_t structure, calling isc_socket_cancel() causes
connect_done() to be run, which in turn takes care of all necessary
cleanups. However, certain errors (e.g. get_address() returning
ISC_R_FAMILYNOSUPPORT) may prevent a TCP socket from being created in
the first place. Since force_timeout() may be used in code handling
such errors, connect_timeout() needs to properly clean up a TCP query
which is not associated with any socket. Call clear_query() from
connect_timeout() after attempting to send a TCP query to the next
available server if the timed out query does not have a socket
associated with it, in order to prevent dig from hanging indefinitely
due to the dig_query_t structure not being detached from its parent
dig_lookup_t structure.
(cherry picked from commit
|
||
|---|---|---|
| .. | ||
| include/dig | ||
| win32 | ||
| .gitignore | ||
| dig.1 | ||
| dig.c | ||
| dig.docbook | ||
| dig.html | ||
| dighost.c | ||
| host.1 | ||
| host.c | ||
| host.docbook | ||
| host.html | ||
| Makefile.in | ||
| nslookup.1 | ||
| nslookup.c | ||
| nslookup.docbook | ||
| nslookup.html | ||