]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- auth zone notify work.
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Tue, 17 Apr 2018 12:18:34 +0000 (12:18 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Tue, 17 Apr 2018 12:18:34 +0000 (12:18 +0000)
git-svn-id: file:///svn/unbound/trunk@4627 be551aaa-1e26-0410-a405-d3ace91eadb9

doc/Changelog
services/authzone.c

index 826d2fcd1b97c976377abaed4297f4d86c352af0..4c1abc81d8cf6cd0eab7c04f60146fae81d56aba 100644 (file)
@@ -1,3 +1,6 @@
+17 April 2018: Wouter
+       - auth zone notify work.
+
 16 April 2018: Wouter
        - Fix auth zone target lookup iterator.
        - auth zone notify with prefix
index 5698a3c6eecdfc0bcadf09c6b1f97e712f11d850..8143803f820d28d8d862017d1415428516dcf935 100644 (file)
@@ -3312,6 +3312,30 @@ xfr_serial_means_update(struct auth_xfer* xfr, uint32_t serial)
        return 0;
 }
 
+/** note notify serial, updates the notify information in the xfr struct */
+static void
+xfr_note_notify_serial(struct auth_xfer* xfr, int has_serial, uint32_t serial)
+{
+       if(xfr->notify_received && xfr->notify_has_serial && has_serial) {
+               /* see if this serial is newer */
+               if(compare_serial(xfr->notify_serial, serial) < 0)
+                       xfr->notify_serial = serial;
+       } else if(xfr->notify_received && xfr->notify_has_serial &&
+               !has_serial) {
+               /* remove serial, we have notify without serial */
+               xfr->notify_has_serial = 0;
+               xfr->notify_serial = 0;
+       } else if(xfr->notify_received && !xfr->notify_has_serial) {
+               /* we already have notify without serial, keep it
+                * that way; no serial check when current operation
+                * is done */
+       } else {
+               xfr->notify_received = 1;
+               xfr->notify_has_serial = has_serial;
+               xfr->notify_serial = serial;
+       }
+}
+
 /** process a notify serial, start new probe or note serial. xfr is locked */
 static void
 xfr_process_notify(struct auth_xfer* xfr, struct module_env* env,
@@ -3324,25 +3348,7 @@ xfr_process_notify(struct auth_xfer* xfr, struct module_env* env,
        /* start new probe with this addr src, or note serial */
        if(!xfr_start_probe(xfr, env, fromhost)) {
                /* not started because already in progress, note the serial */
-               if(xfr->notify_received && xfr->notify_has_serial &&
-                       has_serial) {
-                       /* see if this serial is newer */
-                       if(compare_serial(xfr->notify_serial, serial) < 0)
-                               xfr->notify_serial = serial;
-               } else if(xfr->notify_received && xfr->notify_has_serial &&
-                       !has_serial) {
-                       /* remove serial, we have notify without serial */
-                       xfr->notify_has_serial = 0;
-                       xfr->notify_serial = 0;
-               } else if(xfr->notify_received && !xfr->notify_has_serial) {
-                       /* we already have notify without serial, keep it
-                        * that way; no serial check when current operation
-                        * is done */
-               } else {
-                       xfr->notify_received = 1;
-                       xfr->notify_has_serial = has_serial;
-                       xfr->notify_serial = serial;
-               }
+               xfr_note_notify_serial(xfr, has_serial, serial);
                lock_basic_unlock(&xfr->lock);
        }
 }