]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
resolve.c: reintroduce reset of flags.AWAIT_IPV{4,6} after resolution
authorŠtěpán Balážik <stepan.balazik@nic.cz>
Fri, 16 Oct 2020 12:39:47 +0000 (14:39 +0200)
committerŠtěpán Balážik <stepan.balazik@nic.cz>
Fri, 16 Oct 2020 12:39:47 +0000 (14:39 +0200)
I deleted it by accident as it was hidden in some older nsrep function.

lib/resolve.c

index 1cfe4d374d0af74bf2c1a15561f4c59069ff93d5..0d4fe2799a43313fde504602cb695af37f1e0540 100644 (file)
@@ -785,6 +785,17 @@ int kr_resolve_consume(struct kr_request *request, struct kr_transport **transpo
                }
        }
 
+       if (transport && !qry->flags.CACHED) {
+               if (!(request->state & KR_STATE_FAIL)) {
+                       /* Do not complete NS address resolution on soft-fail. */
+                       const int rcode = packet ? knot_wire_get_rcode(packet->wire) : 0;
+                       if (rcode != KNOT_RCODE_SERVFAIL && rcode != KNOT_RCODE_REFUSED) {
+                               qry->flags.AWAIT_IPV6 = false;
+                               qry->flags.AWAIT_IPV4 = false;
+                       }
+               }
+       }
+
        if (request->state & KR_STATE_FAIL) {
                qry->flags.RESOLVED = false;
        }