]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
daemon/session: start defer only for DOQ_CONN
authorFrantisek Tobias <frantisek.tobias@nic.cz>
Mon, 6 Oct 2025 13:11:45 +0000 (15:11 +0200)
committerFrantisek Tobias <frantisek.tobias@nic.cz>
Wed, 7 Jan 2026 13:39:14 +0000 (14:39 +0100)
daemon/defer.h
daemon/session2.c

index 8eae1033f8d76db7591d9e519983c1536e6f0902..e6ade87aad9d2cf2094c0ef3bda53755e15eae09 100644 (file)
@@ -91,7 +91,7 @@ static inline void defer_sample_addr(const union kr_sockaddr *addr, bool stream)
 static inline void defer_sample_start_stamp(uint64_t stamp)
 {
        if (!defer) return;
-       if (defer_sample_state.is_accounting) return;
+       kr_assert(!defer_sample_state.is_accounting);
        defer_sample_state.is_accounting = true;
        defer_sample_state.stamp = stamp;
        defer_sample_state.addr.ip.sa_family = AF_UNSPEC;
@@ -101,7 +101,7 @@ static inline void defer_sample_start_stamp(uint64_t stamp)
 static inline void defer_sample_stop_stamp(uint64_t stamp)
 {
        if (!defer) return;
-       // kr_assert(defer_sample_state.is_accounting);
+       kr_assert(defer_sample_state.is_accounting);
        defer_sample_state.is_accounting = false;
 
        if (defer_sample_state.addr.ip.sa_family == AF_UNSPEC) return;
index 1af90d77b76596cf414901adada66b9f2a00aab3..17fe8e2f0d260d0772ac8b1b19aaaac0fe4366e8 100644 (file)
@@ -641,7 +641,9 @@ static int session2_submit(
        // but we may not know the client's IP yet.
        // Note two cases: incoming session (new request)
        // vs. outgoing session (resuming work on some request)
-       if ((direction == PROTOLAYER_UNWRAP) && (layer_ix == 0))
+       if ((direction == PROTOLAYER_UNWRAP) && (layer_ix == 0) &&
+                       session->proto != KR_PROTO_DOQ_STREAM &&
+                       session->proto != KR_PROTO_DOQ)
                defer_sample_start(NULL);
 
        struct protolayer_iter_ctx *ctx = malloc(session->iter_ctx_size);
@@ -704,7 +706,9 @@ static int session2_submit(
        }
 
        int ret = protolayer_step(ctx);
-       if ((direction == PROTOLAYER_UNWRAP) && (layer_ix == 0))
+       if ((direction == PROTOLAYER_UNWRAP) && (layer_ix == 0) &&
+                       session->proto != KR_PROTO_DOQ_STREAM &&
+                       session->proto != KR_PROTO_DOQ)
                defer_sample_stop(NULL, false);
        return ret;
 }