2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-30 14:07:59 +00:00

3210. [bug] Canceling the oldest query due to recursive-client

overload could trigger an assertion failure. [RT #26463]
This commit is contained in:
Evan Hunt
2011-11-07 23:03:09 +00:00
parent 98c8a5d995
commit 83c0ef8815
2 changed files with 11 additions and 2 deletions

View File

@@ -1,3 +1,6 @@
3210. [bug] Canceling the oldest query due to recursive-client
overload could trigger an assertion failure. [RT #26463]
3209. [func] Add "dnssec-lookaside 'no'". [RT #24858] 3209. [func] Add "dnssec-lookaside 'no'". [RT #24858]
3208. [bug] 'dig -y' handle unknown tsig alorithm better. 3208. [bug] 'dig -y' handle unknown tsig alorithm better.

View File

@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE. * PERFORMANCE OF THIS SOFTWARE.
*/ */
/* $Id: client.c,v 1.282 2011/11/03 21:14:22 each Exp $ */ /* $Id: client.c,v 1.283 2011/11/07 23:03:09 each Exp $ */
#include <config.h> #include <config.h>
@@ -349,10 +349,16 @@ exit_check(ns_client_t *client) {
* I/O cancel is complete. Burn down all state * I/O cancel is complete. Burn down all state
* related to the current request. Ensure that * related to the current request. Ensure that
* the client is no longer on the recursing list. * the client is no longer on the recursing list.
*
* We need to check whether the client is still linked,
* because it may already have been removed from the
* recursing list by ns_client_killoldestquery()
*/ */
if (client->state == NS_CLIENTSTATE_RECURSING) { if (client->state == NS_CLIENTSTATE_RECURSING) {
LOCK(&manager->reclock); LOCK(&manager->reclock);
ISC_LIST_UNLINK(manager->recursing, client, rlink); if (ISC_LINK_LINKED(client, rlink))
ISC_LIST_UNLINK(manager->recursing,
client, rlink);
UNLOCK(&manager->reclock); UNLOCK(&manager->reclock);
} }
ns_client_endrequest(client); ns_client_endrequest(client);