mirror of
https://github.com/isc-projects/bind9.git
synced 2026-04-27 09:06:51 -04:00
In recv_done(), when dig decides to start the lookup's next query in the line using `start_udp()` or `start_tcp()`, and for some reason, no queries get started, dig doesn't cancel the lookup. This can occur, for example, when there are two queries in the lookup, one with a regular IP address, and another with a IPv4 mapped IPv6 address. When the regular IP address fails to serve the query, its `recv_done()` callback starts the next query in the line (in this case the one with a mapped IP address), but because `dig` doesn't connect to such IP addresses, and there are no other queries in the list, no new queries are being started, and the lookup keeps hanging. After calling `start_udp()` or `start_tcp()` in `recv_done()`, check if there are no pending/working queries then cancel the lookup instead of only detaching from the current query. |
||
|---|---|---|
| .. | ||
| startperf | ||
| system | ||
| testdata/wire | ||
| .gitignore | ||
| Makefile.am | ||
| test_client.c | ||
| test_server.c | ||
| wire_test.c | ||