From 05b3f83a01fe07749d0c090e5f0b34ff8b20e845 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C5=A0t=C4=9Bp=C3=A1n=20Bal=C3=A1=C5=BEik?= Date: Fri, 16 Oct 2020 14:39:47 +0200 Subject: [PATCH] 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. --- lib/resolve.c | 11 +++++++++++ 1 file changed, 11 insertions(+) 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; } -- 2.47.2