]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
daemon/ratelimiting: disable for non-UDP requests docs-develop-rrl-8r8r8r/deployments/5303
authorLukáš Ondráček <lukas.ondracek@nic.cz>
Wed, 9 Oct 2024 12:27:42 +0000 (14:27 +0200)
committerLukáš Ondráček <lukas.ondracek@nic.cz>
Wed, 9 Oct 2024 12:27:42 +0000 (14:27 +0200)
daemon/ratelimiting.c

index 676fde575d240b39f836fe3c3b8e3aa763611a0b..dbb10668851b0b14707529fccde145bd76944205 100644 (file)
@@ -112,6 +112,11 @@ bool ratelimiting_request_begin(struct kr_request *req)
 {
        if (!req->qsource.addr)
                return false;  // don't consider internal requests
+
+       // We only do this on pure UDP.  (also TODO if cookies get implemented)
+       const bool ip_validated = req->qsource.flags.tcp || req->qsource.flags.tls;
+       if (ip_validated) return false;
+
        uint8_t limited = 0;  // 0: not limited, 1: truncated, 2: no answer
        if (ratelimiting) {
                _Alignas(16) uint8_t key[16] = {0, };
@@ -135,10 +140,6 @@ bool ratelimiting_request_begin(struct kr_request *req)
        if (!limited) return false;
 
        if (limited == 1) { // TC=1: return truncated reply to force source IP validation
-               // We only do this on pure UDP.  (also TODO if cookies get implemented)
-               const bool ip_validated = req->qsource.flags.tcp || req->qsource.flags.tls;
-               if (ip_validated) return false;
-
                knot_pkt_t *answer = kr_request_ensure_answer(req);
                if (!answer) { // something bad; TODO: perhaps improve recovery from this
                        kr_assert(false);
@@ -152,13 +153,6 @@ bool ratelimiting_request_begin(struct kr_request *req)
                knot_wire_clear_ad(answer->wire);
                req->state = KR_STATE_DONE;
        } else {
-               /*
-               // Example limiting: REFUSED.
-               knot_wire_set_rcode(answer->wire, KNOT_RCODE_REFUSED);
-               kr_request_set_extended_error(req, KNOT_EDNS_EDE_OTHER, "YRAA: rate-limited");
-               req->state = KR_STATE_DONE;
-               */
-
                // no answer
                req->options.NO_ANSWER = true;
                req->state = KR_STATE_FAIL;