diff --git a/daemon/lua/kres-gen.lua b/daemon/lua/kres-gen.lua
index 1b7571fbdaa78b1846010ae7f0b61dfd0fc0708c..4989c02c7fecf3a1cc16263c646d10b1887bf3f1 100644
--- a/daemon/lua/kres-gen.lua
+++ b/daemon/lua/kres-gen.lua
@@ -166,6 +166,7 @@ struct kr_rplan {
 struct kr_request_qsource_flags {
 	_Bool tcp : 1;
 	_Bool tls : 1;
+	_Bool http : 1;
 };
 struct kr_request {
 	struct kr_context *ctx;
diff --git a/lib/resolve.h b/lib/resolve.h
index 60d80bb295bdee602280b94e92ac71dfed5d5824..ae695b9136dc6207159cded2b8ceed6c66159b25 100644
--- a/lib/resolve.h
+++ b/lib/resolve.h
@@ -179,6 +179,7 @@ struct kr_context
 struct kr_request_qsource_flags {
 	bool tcp:1; /**< true if the request is on TCP (or TLS); only meaningful if (dst_addr). */
 	bool tls:1; /**< true if the request is on TLS; only meaningful if (dst_addr). */
+	bool http:1; /**< true if the request is on HTTP; only meaningful if (dst_addr). */
 };
 
 /**
diff --git a/modules/http/http_doh.lua b/modules/http/http_doh.lua
index 4088ad07bed232bd7ee7e75cd1a1cf71e660c20d..68ee3b17728a51b6fcb58be5cadb2f2f574ef82c 100644
--- a/modules/http/http_doh.lua
+++ b/modules/http/http_doh.lua
@@ -92,6 +92,10 @@ local function serve_doh(h, stream)
 	local function init_cb(req)
 		req.qsource.addr = convert_sockaddr(stream:peername())
 		req.qsource.dst_addr = convert_sockaddr(stream:localname())
+		req.qsource.flags.tcp = true
+		req.qsource.flags.tls = (stream.connection:checktls() ~= nil)
+		print(req.qsource.flags.tls)
+		req.qsource.flags.http = true
 	end
 
 	-- resolve query