From: Jason Ish Date: Mon, 1 May 2023 16:50:40 +0000 (-0600) Subject: detect: fix setting of flag for rule reload X-Git-Tag: suricata-7.0.0-rc2~301 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1c6644ef4eda43e7b14447b18409e8b35f59344d;p=thirdparty%2Fsuricata.git detect: fix setting of flag for rule reload 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 --- diff --git a/src/detect-engine.c b/src/detect-engine.c index ce2d319d52..23341087fd 100644 --- a/src/detect-engine.c +++ b/src/detect-engine.c @@ -2278,7 +2278,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]); } } diff --git a/src/tm-threads.h b/src/tm-threads.h index e547064bc4..76b1ce221e 100644 --- a/src/tm-threads.h +++ b/src/tm-threads.h @@ -255,9 +255,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; }