]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
lib/rules: correctly match DoQ protocol
authorVladimír Čunát <vladimir.cunat@nic.cz>
Thu, 9 Jul 2026 09:45:37 +0000 (11:45 +0200)
committerVladimír Čunát <vladimir.cunat@nic.cz>
Wed, 22 Jul 2026 05:55:39 +0000 (07:55 +0200)
Reported by r00tth3w0r1d@gmail.com as KRES-DOQ-04

The confusion stems from (my) original plans
to represent DoQ here as (fl.tls && !fl.tcp && !fl.http)
but ftobias ended up adding fl.quic.

NEWS
lib/rules/api.c

diff --git a/NEWS b/NEWS
index 2402048698b37045b5ae77d9e7f997481070dcee..aebf36769f5da5292bfd819e8f27ee2653e5935b 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -18,6 +18,7 @@ Improvements
 Bugfixes
 --------
 - /local-data/addresses*: make multiple addresses work (#808, #954)
+- views: fix protocol-based matching for DoQ
 
 
 Knot Resolver 6.4.0 (2026-06-17)
index 6bfab3adb50d7a7ce88471ab5b7b454b2306cd4e..679fee637914bf6db2304b5bf3ad2b46354374d4 100644 (file)
@@ -1159,10 +1159,12 @@ static enum kr_proto req_proto(const struct kr_request *req)
        const struct kr_request_qsource_flags fl = req->qsource.flags;
        if (fl.http)
                return KR_PROTO_DOH;
+       if (fl.quic)
+               return KR_PROTO_DOQ;
        if (fl.tcp)
                return fl.tls ? KR_PROTO_DOT : KR_PROTO_TCP53;
-       // UDP in some form
-       return fl.tls ? KR_PROTO_DOQ : KR_PROTO_UDP53;
+       kr_assert(!fl.tls);
+       return KR_PROTO_UDP53;
 }
 static bool req_proto_matches(const struct kr_request *req, kr_proto_set proto_set)
 {