]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
layer/iterate: forwarding; repeat query to upstream if SERVFAIL\REFUSE has been received
authorGrigorii Demidov <grigorii.demidov@nic.cz>
Wed, 17 Jan 2018 12:50:23 +0000 (13:50 +0100)
committerGrigorii Demidov <grigorii.demidov@nic.cz>
Fri, 19 Jan 2018 09:49:36 +0000 (10:49 +0100)
lib/layer/iterate.c

index 9a9d3114059f80dc39b9696a6329f2ffc9e9a5da..7da28b566440d7648f88aab64459f2ce41908765 100644 (file)
@@ -935,7 +935,7 @@ static int resolve(kr_layer_t *ctx, knot_pkt_t *pkt)
                break; /* OK */
        case KNOT_RCODE_REFUSED:
        case KNOT_RCODE_SERVFAIL: {
-               if (query->flags.STUB || query->flags.FORWARD) {
+               if (query->flags.STUB) {
                         /* Pass through in stub mode */
                        break;
                }
@@ -945,7 +945,9 @@ static int resolve(kr_layer_t *ctx, knot_pkt_t *pkt)
                        query->fails = 0; /* Reset per-query counter. */
                        return resolve_error(pkt, req);
                } else {
-                       query->flags.NO_MINIMIZE = true; /* Drop minimisation as a safe-guard. */
+                       if (!query->flags.FORWARD) {
+                               query->flags.NO_MINIMIZE = true; /* Drop minimisation as a safe-guard. */
+                       }
                        return KR_STATE_CONSUME;
                }
        }