]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
iterator: don't retry if REFUSED
authorVladimír Čunát <vladimir.cunat@nic.cz>
Fri, 7 Apr 2017 12:05:41 +0000 (14:05 +0200)
committerVladimír Čunát <vladimir.cunat@nic.cz>
Fri, 7 Apr 2017 13:20:39 +0000 (15:20 +0200)
It's unlikely to be a temporary condition, unless the reply was spoofed
or something.  Fixes val_cname_to_unsigned_fake_rrsig test.

(cherry picked from commit bc2a26702e6460aee65fe170671336d670ba3eb9)

lib/layer/iterate.c
lib/resolve.c

index ef2ba8b5ead7aa015f09ef0ec29d41e912dd6a61..b166de22955fc355307139dbcf0dc52f9af497fe 100644 (file)
@@ -885,7 +885,6 @@ static int resolve(kr_layer_t *ctx, knot_pkt_t *pkt)
        case KNOT_RCODE_NOERROR:
        case KNOT_RCODE_NXDOMAIN:
                break; /* OK */
-       case KNOT_RCODE_REFUSED:
        case KNOT_RCODE_SERVFAIL: {
                if (query->flags & QUERY_STUB) { break; } /* Pass through in stub mode */
                VERBOSE_MSG("<= rcode: %s\n", rcode ? rcode->name : "??");
@@ -898,6 +897,7 @@ static int resolve(kr_layer_t *ctx, knot_pkt_t *pkt)
                        return KR_STATE_CONSUME;
                }
        }
+       case KNOT_RCODE_REFUSED:
        case KNOT_RCODE_FORMERR:
        case KNOT_RCODE_NOTIMPL:
                VERBOSE_MSG("<= rcode: %s\n", rcode ? rcode->name : "??");
index 0c35faac09775a8070a84c6ec570588c3f7b654a..7a40f11c94f9619be798d2e1dd7794aceb4b9c22 100644 (file)
@@ -1112,8 +1112,7 @@ int kr_resolve_produce(struct kr_request *request, struct sockaddr **dst, int *t
 
 ns_election:
 
-       /* If the query has got REFUSED & SERVFAIL, retry with current src up to KR_QUERY_NSRETRY_LIMIT.
-        * If the query has already selected a NS and is waiting for IPv4/IPv6 record,
+       /* If the query has already selected a NS and is waiting for IPv4/IPv6 record,
         * elect best address only, otherwise elect a completely new NS.
         */
        if(++ns_election_iter >= KR_ITER_LIMIT) {