4228. [bug] Address race condition in dns_client_destroyrestrans.

[RT #40605]
This commit is contained in:
Mark Andrews 2015-09-30 14:58:31 +10:00
parent 3739c1beae
commit 8a0b6b3901
2 changed files with 10 additions and 1 deletions

View file

@ -1,3 +1,6 @@
4228. [bug] Address race condition in dns_client_destroyrestrans.
[RT #40605]
4227. [bug] Silence static analysis warnings. [RT #40828]
4226. [bug] Address a theoretical shutdown race in

View file

@ -1178,7 +1178,6 @@ client_resfind(resctx_t *rctx, dns_fetchevent_t *event) {
UNLOCK(&rctx->lock);
}
static void
suspend(isc_task_t *task, isc_event_t *event) {
isc_appctx_t *actx = event->ev_arg;
@ -1498,6 +1497,13 @@ dns_client_destroyrestrans(dns_clientrestrans_t **transp) {
mctx = client->mctx;
dns_view_detach(&rctx->view);
/*
* Wait for the lock in client_resfind to be released before
* destroying the lock.
*/
LOCK(&rctx->lock);
UNLOCK(&rctx->lock);
LOCK(&client->lock);
INSIST(ISC_LINK_LINKED(rctx, link));