diff options
Diffstat (limited to 'lib/dns/client.c')
| -rw-r--r-- | lib/dns/client.c | 8 | 
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/dns/client.c b/lib/dns/client.c index b433e348fe31c..f21f666d33b10 100644 --- a/lib/dns/client.c +++ b/lib/dns/client.c @@ -1120,7 +1120,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; @@ -1434,6 +1433,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));  | 
