+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]
3208. [bug] 'dig -y' handle unknown tsig alorithm better.
* 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>
* I/O cancel is complete. Burn down all state
* related to the current request. Ensure that
* 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) {
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);
}
ns_client_endrequest(client);