mirror of
https://github.com/isc-projects/bind9.git
synced 2026-05-28 04:34:54 -04:00
Merge branch '3248-dig-stuck-using-a-server-with-a-mapped-ip-address' into 'main'
Fix dig hanging issue in cases when the lookup's next query can't start Closes #3248 See merge request isc-projects/bind9!6061
This commit is contained in:
commit
bd9707464c
3 changed files with 30 additions and 0 deletions
5
CHANGES
5
CHANGES
|
|
@ -1,3 +1,8 @@
|
|||
5848. [bug] dig could hang in some cases involving multiple servers
|
||||
in a lookup, when a request fails and the next one
|
||||
refuses to start for some reason, for example if it was
|
||||
an IPv4 mapped IPv6 address. [GL #3248]
|
||||
|
||||
5847. [cleanup] Remove task privileged mode in favor of processing
|
||||
all events in the loadzone task in a single run
|
||||
by setting the quantum to UINT_MAX. [GL #3253]
|
||||
|
|
|
|||
|
|
@ -3881,6 +3881,9 @@ recv_done(isc_nmhandle_t *handle, isc_result_t eresult, isc_region_t *region,
|
|||
l->retries);
|
||||
start_udp(newq);
|
||||
}
|
||||
if (check_if_queries_done(l, query)) {
|
||||
goto cancel_lookup;
|
||||
}
|
||||
|
||||
goto detach_query;
|
||||
} else if (l->retries > 1 && l->tcp_mode) {
|
||||
|
|
@ -3917,6 +3920,10 @@ recv_done(isc_nmhandle_t *handle, isc_result_t eresult, isc_region_t *region,
|
|||
start_udp(next);
|
||||
}
|
||||
}
|
||||
if (check_if_queries_done(l, query)) {
|
||||
goto cancel_lookup;
|
||||
}
|
||||
|
||||
goto detach_query;
|
||||
}
|
||||
|
||||
|
|
@ -3958,6 +3965,10 @@ recv_done(isc_nmhandle_t *handle, isc_result_t eresult, isc_region_t *region,
|
|||
start_udp(next);
|
||||
}
|
||||
}
|
||||
if (check_if_queries_done(l, query)) {
|
||||
goto cancel_lookup;
|
||||
}
|
||||
|
||||
goto detach_query;
|
||||
}
|
||||
|
||||
|
|
@ -4234,6 +4245,10 @@ recv_done(isc_nmhandle_t *handle, isc_result_t eresult, isc_region_t *region,
|
|||
? "SERVFAIL reply"
|
||||
: "recursion not available",
|
||||
query->servname);
|
||||
if (check_if_queries_done(l, query)) {
|
||||
goto cancel_lookup;
|
||||
}
|
||||
|
||||
goto detach_query;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1071,6 +1071,16 @@ if [ -x "$DIG" ] ; then
|
|||
grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
|
||||
if [ $ret -ne 0 ]; then echo_i "failed"; fi
|
||||
status=$((status+ret))
|
||||
|
||||
# See [GL #3248] for more information
|
||||
n=$((n+1))
|
||||
echo_i "check that dig correctly refuses to use a server with a IPv4 mapped IPv6 address after failing with a regular IP address ($n)"
|
||||
ret=0
|
||||
dig_with_opts @10.53.0.8 @::ffff:10.53.0.8 a.example > dig.out.test$n 2>&1 || ret=1
|
||||
grep -F ";; Skipping mapped address" dig.out.test$n > /dev/null || ret=1
|
||||
grep -F ";; No acceptable nameservers" dig.out.test$n > /dev/null || ret=1
|
||||
if [ $ret -ne 0 ]; then echo_i "failed"; fi
|
||||
status=$((status+ret))
|
||||
else
|
||||
echo_i "$DIG is needed, so skipping these dig tests"
|
||||
fi
|
||||
|
|
|
|||
Loading…
Reference in a new issue