From: Štěpán Balážik Date: Fri, 16 Oct 2020 12:39:47 +0000 (+0200) Subject: resolve.c: reintroduce reset of flags.AWAIT_IPV{4,6} after resolution X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=05b3f83a01fe07749d0c090e5f0b34ff8b20e845;p=thirdparty%2Fknot-resolver.git resolve.c: reintroduce reset of flags.AWAIT_IPV{4,6} after resolution I deleted it by accident as it was hidden in some older nsrep function. --- diff --git a/lib/resolve.c b/lib/resolve.c index 1cfe4d374..0d4fe2799 100644 --- a/lib/resolve.c +++ b/lib/resolve.c @@ -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; }