4228. [bug] Address race condition in dns_client_destroyrestrans.
[RT #40605]
This commit is contained in:
@@ -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
|
||||
|
||||
+7
-1
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user