From a82a443eefcd5c95098fdf0ce8c98915447625d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Wed, 3 Apr 2024 21:21:00 +0200 Subject: [PATCH] fixup! Make the cache_name locking more fine-grained --- lib/dns/resolver.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c index 38a8265b32..afd14effef 100644 --- a/lib/dns/resolver.c +++ b/lib/dns/resolver.c @@ -6066,10 +6066,12 @@ cache_name(fetchctx_t *fctx, dns_name_t *name, dns_message_t *message, * having to remember which * rdatasets needed validation. */ + LOCK(&fctx->lock); result = valcreate( fctx, message, addrinfo, name, rdataset->type, rdataset, sigrdataset, valoptions); + UNLOCK(&fctx->lock); } } else if (CHAINING(rdataset)) { if (rdataset->type == dns_rdatatype_cname) { @@ -6202,7 +6204,9 @@ cache_name(fetchctx_t *fctx, dns_name_t *name, dns_message_t *message, } dns_db_attach(fctx->cache, adbp); dns_db_transfernode(fctx->cache, &node, anodep); + LOCK(&fctx->lock); clone_results(fctx); + UNLOCK(&fctx->lock); } }