mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-29 05:28:00 +00:00
remove unnecessary assertion in dns_dispatch_connect()
When a thread calls dns_dispatch_connect() on an unconnected TCP socket it sets `tcpstate` from `DNS_DISPATCHSTATE_NONE` to `_CONNECTING`. Previously, it then INSISTed that there were no pending connections before calling isc_nm_tcpdnsconnect(). If a second thread called dns_dispatch_connect() during that window of time, it could add a pending connection to the list, and trigger an assertion failure. This commit removes the INSIST since the condition is actually harmless.
This commit is contained in:
parent
84c353b5cf
commit
e1c81f9b1b
4
CHANGES
4
CHANGES
@ -1,3 +1,7 @@
|
||||
5927. [bug] A race was possible in dns_dispatch_connect()
|
||||
that could trigger an assertion failure if two
|
||||
threads called it near-simultaneously. [GL #3456]
|
||||
|
||||
5926. [func] Handle transient TCP connect() EADDRINUSE failures
|
||||
on FreeBSD (and possibly other BSDs) by trying three
|
||||
times before giving up. [GL #3451]
|
||||
|
@ -1812,7 +1812,6 @@ dns_dispatch_connect(dns_dispentry_t *resp) {
|
||||
case DNS_DISPATCHSTATE_NONE:
|
||||
/* First connection, continue with connecting */
|
||||
LOCK(&disp->lock);
|
||||
INSIST(ISC_LIST_EMPTY(disp->pending));
|
||||
ISC_LIST_APPEND(disp->pending, resp, plink);
|
||||
UNLOCK(&disp->lock);
|
||||
dns_dispatch_attach(disp, &(dns_dispatch_t *){ NULL });
|
||||
|
Loading…
x
Reference in New Issue
Block a user