]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Add few missing qpcache_hit() calls
authorOndřej Surý <ondrej@isc.org>
Wed, 27 Aug 2025 11:52:42 +0000 (13:52 +0200)
committerOndřej Surý <ondrej@isc.org>
Thu, 28 Aug 2025 17:28:56 +0000 (19:28 +0200)
There were couple of missing qpcache_hit() calls in qpcache.c:add()
function where existing data was better than the newly added header.

lib/dns/qpcache.c

index 631639473f1b03a400e136afdc476518a5bd8daa..be47fd85a0bc974d4e2b5f28ff340de2631c53e0 100644 (file)
@@ -2559,6 +2559,7 @@ expire_ncache_entry(qpcache_t *qpdb, qpcnode_t *qpnode, dns_slabtop_t *top,
                        /*
                         * The NXDOMAIN/NODATA(QTYPE=ANY) is more trusted.
                         */
+                       qpcache_hit(qpdb, top->header);
                        bindrdataset(qpdb, qpnode, top->header, now, nlocktype,
                                     tlocktype,
                                     addedrdataset DNS__DB_FLARG_PASS);
@@ -2751,6 +2752,7 @@ add(qpcache_t *qpdb, qpcnode_t *qpnode, dns_slabheader_t *newheader,
                if (trust < header->trust &&
                    (ACTIVE(header, now) || !EXISTS(header)))
                {
+                       qpcache_hit(qpdb, header);
                        bindrdataset(qpdb, qpnode, header, now, nlocktype,
                                     tlocktype,
                                     addedrdataset DNS__DB_FLARG_PASS);
@@ -2774,8 +2776,6 @@ add(qpcache_t *qpdb, qpcnode_t *qpnode, dns_slabheader_t *newheader,
                                         qpdb->common.rdclass,
                                         DNS_TYPEPAIR_TYPE(header->typepair)))
                {
-                       qpcache_hit(qpdb, header);
-
                        if (header->noqname == NULL &&
                            newheader->noqname != NULL)
                        {
@@ -2788,6 +2788,8 @@ add(qpcache_t *qpdb, qpcnode_t *qpnode, dns_slabheader_t *newheader,
                                header->closest = newheader->closest;
                                newheader->closest = NULL;
                        }
+
+                       qpcache_hit(qpdb, header);
                        bindrdataset(qpdb, qpnode, header, now, nlocktype,
                                     tlocktype,
                                     addedrdataset DNS__DB_FLARG_PASS);
@@ -2824,8 +2826,6 @@ add(qpcache_t *qpdb, qpcnode_t *qpnode, dns_slabheader_t *newheader,
                    header->expire < newheader->expire &&
                    dns_rdataslab_equal(header, newheader))
                {
-                       qpcache_hit(qpdb, header);
-
                        if (header->noqname == NULL &&
                            newheader->noqname != NULL)
                        {
@@ -2838,6 +2838,8 @@ add(qpcache_t *qpdb, qpcnode_t *qpnode, dns_slabheader_t *newheader,
                                header->closest = newheader->closest;
                                newheader->closest = NULL;
                        }
+
+                       qpcache_hit(qpdb, header);
                        bindrdataset(qpdb, qpnode, header, now, nlocktype,
                                     tlocktype,
                                     addedrdataset DNS__DB_FLARG_PASS);