diff --git a/src/tm-threads.c b/src/tm-threads.c index 196d7dac0d3e..afdb4446a1bf 100644 --- a/src/tm-threads.c +++ b/src/tm-threads.c @@ -636,7 +636,8 @@ void *TmThreadsSlotPktAcqLoop(void *td) { r = s->PktAcqLoop(tv, SC_ATOMIC_GET(s->slot_data), s); - if (r == TM_ECODE_FAILED || TmThreadsCheckFlag(tv, THV_KILL)) { + if (r == TM_ECODE_FAILED || TmThreadsCheckFlag(tv, THV_KILL) + || suricata_ctl_flags) { run = 0; } } @@ -1710,6 +1711,8 @@ TmEcode TmThreadSpawn(ThreadVars *tv) return TM_ECODE_FAILED; } + TmThreadWaitForFlag(tv, THV_INIT_DONE); + TmThreadAppend(tv, tv->type); return TM_ECODE_OK;