]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- Fix that for auth-zone and rpz zones the allow-notify master
authorW.C.A. Wijngaards <wouter@nlnetlabs.nl>
Fri, 12 Jun 2026 09:48:14 +0000 (11:48 +0200)
committerW.C.A. Wijngaards <wouter@nlnetlabs.nl>
Fri, 12 Jun 2026 09:48:14 +0000 (11:48 +0200)
  addresses and netblocks are available from start, and
  fix the probe step skip.

doc/Changelog
services/authzone.c

index 5b905d1260858e66f2546436cd45604489c1d806..e97466738c1c20d2af79582c97af093f88b9cd7f 100644 (file)
@@ -1,3 +1,8 @@
+12 June 2026: Wouter
+       - Fix that for auth-zone and rpz zones the allow-notify
+         addresses and netblocks are available from start, and
+         fix the probe step skip.
+
 11 June 2026: Wouter
        - Fix for #1306: configure detects specifically the call to
          SSL_set_quic_tls_early_data_enabled and
index 998d422d4b29b49f471e336e814e57f149ecda33..3fc3f174ec0639c149da65a73b967971a4624625 100644 (file)
@@ -106,6 +106,9 @@ static void xfr_probe_send_or_end(struct auth_xfer* xfr,
  * or transfer task if nothing to probe, or false if already in progress */
 static int xfr_start_probe(struct auth_xfer* xfr, struct module_env* env,
        struct auth_master* spec);
+/** copy the master addresses from the task_probe lookups to the allow_notify
+ * list of masters */
+static void probe_copy_masters_for_allow_notify(struct auth_xfer* xfr);
 /** delete xfer structure (not its tree entry) */
 void auth_xfer_delete(struct auth_xfer* xfr);
 
@@ -2213,6 +2216,10 @@ auth_zones_cfg(struct auth_zones* az, struct config_auth* c)
                        lock_rw_unlock(&z->lock);
                        return 0;
                }
+               /* Pick up allow notify entries, early. This works for
+                * addresses and netblocks. */
+               if(!x->allow_notify_list)
+                       probe_copy_masters_for_allow_notify(x);
                lock_basic_unlock(&x->lock);
        }
 
@@ -6961,8 +6968,8 @@ xfr_start_probe(struct auth_xfer* xfr, struct module_env* env,
                if(!have_probe_targets(xfr->task_probe->masters) &&
                        xfr->task_probe->masters != NULL)
                        xfr->task_probe->only_lookup = 1;
-               if(!(xfr->task_probe->only_lookup &&
-                       xfr->task_probe->masters != NULL)) {
+               if(!xfr->task_probe->only_lookup &&
+                       !have_probe_targets(xfr->task_probe->masters)) {
                        /* useless to pick up task_probe, no masters to
                         * probe. Instead attempt to pick up task transfer */
                        if(xfr->task_transfer->worker == NULL) {