]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
resolve nitpick: simplify deep nesting in query_finalize()
authorVladimír Čunát <vladimir.cunat@nic.cz>
Tue, 5 Mar 2019 16:15:07 +0000 (17:15 +0100)
committerVladimír Čunát <vladimir.cunat@nic.cz>
Tue, 12 Mar 2019 11:35:45 +0000 (12:35 +0100)
lib/resolve.c

index c2c90287569a347b997b363dd350641619849b6e..2493bb1a38c3f42563ac7fd25d8a6607c34f6ad1 100644 (file)
@@ -679,35 +679,32 @@ static int answer_finalize(struct kr_request *request, int state)
 
 static int query_finalize(struct kr_request *request, struct kr_query *qry, knot_pkt_t *pkt)
 {
-       int ret = 0;
        knot_pkt_begin(pkt, KNOT_ADDITIONAL);
-       if (!(qry->flags.SAFEMODE)) {
-               /* Remove any EDNS records from any previous iteration. */
-               ret = edns_erase_and_reserve(pkt);
-               if (ret == 0) {
-                       ret = edns_create(pkt, request->answer, request);
-               }
-               if (ret == 0) {
-                       /* Stub resolution (ask for +rd and +do) */
-                       if (qry->flags.STUB) {
-                               knot_wire_set_rd(pkt->wire);
-                               if (knot_pkt_has_dnssec(request->qsource.packet)) {
-                                       knot_edns_set_do(pkt->opt_rr);
-                               }
-                               if (knot_wire_get_cd(request->qsource.packet->wire)) {
-                                       knot_wire_set_cd(pkt->wire);
-                               }
-                       /* Full resolution (ask for +cd and +do) */
-                       } else {
-                               knot_edns_set_do(pkt->opt_rr);
-                               knot_wire_set_cd(pkt->wire);
-                               if (qry->flags.FORWARD) {
-                                       knot_wire_set_rd(pkt->wire);
-                               }
-                       }
+       if (qry->flags.SAFEMODE)
+               return kr_ok();
+       /* Remove any EDNS records from any previous iteration. */
+       int ret = edns_erase_and_reserve(pkt);
+       if (ret) return ret;
+       ret = edns_create(pkt, request->answer, request);
+       if (ret) return ret;
+       if (qry->flags.STUB) {
+               /* Stub resolution (ask for +rd and +do) */
+               knot_wire_set_rd(pkt->wire);
+               if (knot_pkt_has_dnssec(request->qsource.packet)) {
+                       knot_edns_set_do(pkt->opt_rr);
+               }
+               if (knot_wire_get_cd(request->qsource.packet->wire)) {
+                       knot_wire_set_cd(pkt->wire);
+               }
+       } else {
+               /* Full resolution (ask for +cd and +do) */
+               knot_edns_set_do(pkt->opt_rr);
+               knot_wire_set_cd(pkt->wire);
+               if (qry->flags.FORWARD) {
+                       knot_wire_set_rd(pkt->wire);
                }
        }
-       return ret;
+       return kr_ok();
 }
 
 int kr_resolve_begin(struct kr_request *request, struct kr_context *ctx, knot_pkt_t *answer)