From: Ondřej Surý Date: Tue, 4 Feb 2025 20:15:22 +0000 (+0100) Subject: Switch the locknum generation for qpznode to random X-Git-Tag: v9.21.5~3^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=732fc338a94d58f78a15e17225a94e1a5f868d6a;p=thirdparty%2Fbind9.git Switch the locknum generation for qpznode to random Instead of using on hash of the name modulo number of the buckets, assign the locknum randomly with isc_random_uniform(). This makes the locknum assignment aligned with qpcache and allows the bucket number to be non-prime in the future. --- diff --git a/lib/dns/qpzone.c b/lib/dns/qpzone.c index a1b7b97a207..e0ddab3bfbf 100644 --- a/lib/dns/qpzone.c +++ b/lib/dns/qpzone.c @@ -595,10 +595,11 @@ new_qpznode(qpzonedb_t *qpdb, const dns_name_t *name) { *newdata = (qpznode_t){ .name = DNS_NAME_INITEMPTY, .references = ISC_REFCOUNT_INITIALIZER(1), + .locknum = isc_random_uniform(qpdb->buckets_count), }; - newdata->locknum = dns_name_hash(name) % qpdb->buckets_count; - dns_name_dupwithoffsets(name, qpdb->common.mctx, &newdata->name); + isc_mem_attach(qpdb->common.mctx, &newdata->mctx); + dns_name_dupwithoffsets(name, qpdb->common.mctx, &newdata->name); #if DNS_DB_NODETRACE fprintf(stderr, "new_qpznode:%s:%s:%d:%p->references = 1\n", __func__,