]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
detect: fix setting of flag for rule reload 8799/head
authorJason Ish <jason.ish@oisf.net>
Mon, 1 May 2023 16:50:40 +0000 (10:50 -0600)
committerJason Ish <jason.ish@oisf.net>
Tue, 2 May 2023 20:15:19 +0000 (14:15 -0600)
As part of 6d8b50b748844e9de6010cde5a6b139148c0e937, the settings of
THV_CAPTURE_INJECT_PKT ended up in a location unreachable by capture
methods that did not have PktAcqBreakLoop.

Instead, always call TmThreadsCaptureBreakLoop which handles the logic
for how the read loop should be broken.

This fixes the case where read threads won't "break" for rule reloads
until packets are seen.

Ticket: #6021
(cherry picked from commit 1c6644ef4eda43e7b14447b18409e8b35f59344d)

src/detect-engine.c
src/tm-threads.h

index 8dd210d963b2d91432e0a1196e8ab90cf72af18c..9555b085f714fb734a51fedf56298016879d2b81 100644 (file)
@@ -1929,7 +1929,7 @@ retry:
         if (SC_ATOMIC_GET(new_det_ctx[i]->so_far_used_by_detect) == 1) {
             SCLogDebug("new_det_ctx - %p used by detect engine", new_det_ctx[i]);
             threads_done++;
-        } else if (detect_tvs[i]->break_loop) {
+        } else {
             TmThreadsCaptureBreakLoop(detect_tvs[i]);
         }
     }
index a2b998f15d7221395d2cc020c9feffe7074cba51..207a0fb7ff721e31c6a471a8563cfce7016d83f5 100644 (file)
@@ -256,9 +256,6 @@ static inline void TmThreadsCaptureHandleTimeout(ThreadVars *tv, Packet *p)
 
 static inline void TmThreadsCaptureBreakLoop(ThreadVars *tv)
 {
-    if (unlikely(!tv->break_loop))
-        return;
-
     if ((tv->tmm_flags & TM_FLAG_RECEIVE_TM) == 0) {
         return;
     }