]> git.ipfire.org Git - thirdparty/knot-dns.git/commitdiff
bugfix/updates: infinite recursion when changing SOA TTL
authorLibor Peltan <libor.peltan@nic.cz>
Tue, 19 Nov 2019 15:29:35 +0000 (16:29 +0100)
committerLibor Peltan <libor.peltan@nic.cz>
Tue, 19 Nov 2019 15:29:35 +0000 (16:29 +0100)
src/knot/updates/zone-update.c
tests-extra/tests/ddns/basic/test.py

index c89378035955573d036f067cf4d5a175ff04a7f7..c7684891638d4b9b858d1b719ee90fbb706a3537 100644 (file)
@@ -402,7 +402,7 @@ void zone_update_clear(zone_update_t *update)
 
 static int solve_add_different_ttl(zone_update_t *update, const knot_rrset_t *add)
 {
-       if (add->type == KNOT_RRTYPE_RRSIG) {
+       if (add->type == KNOT_RRTYPE_RRSIG || add->type == KNOT_RRTYPE_SOA) {
                return KNOT_EOK;
        }
 
index 5764ac408916932c23fa7cbf0c0070a0829b8367..51b51337fef01f3a7712902cf643cbbe154ca569 100644 (file)
@@ -320,6 +320,17 @@ def do_normal_tests(master, zone, dnssec=False):
                rdata="dns1.ddns. hostmaster.ddns. 2013111213 10800 3600 1209600 7200")
     verify(master, zone, dnssec)
 
+    # add SOA with different TTL
+    check_log("SOA different TTL")
+    up = master.update(zone)
+    up.add("ddns.", 1800, "SOA",
+           "dns1.ddns. hostmaster.ddns. 2014111213 10800 1800 1209600 7200")
+    up.send("NOERROR")
+    resp = master.dig("ddns.", "SOA")
+    resp.check(rcode="NOERROR",
+               rdata="dns1.ddns. hostmaster.ddns. 2014111213 10800 1800 1209600 7200")
+    verify(master, zone, dnssec)
+
     # add and remove the same record
     check_log("Add and remove same record")
     up = master.update(zone)