From 54557997952028f4617ca37c583f4a5fd070236c Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Mon, 20 May 2024 22:09:06 +0200 Subject: [PATCH] time: only consider packet threads In offline mode, a timestamp is kept per thread, and the lowest timestamp of the active threads is used. This was also considering the non-packet threads, which could lead to the used timestamp being further behind that needed. This would happen at the start of the program, as the non-packet threads were set up the same way as the packet threads. This patch both no longer sets up the timestamp for non-packet threads as well as not considering non-packet threads during timestamp retrieval. Fixes: 6f560144c1b9 ("time: improve offline time handling") Bug: #7034. --- src/tm-threads.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/tm-threads.c b/src/tm-threads.c index e1eee3b641..124a7aab5d 100644 --- a/src/tm-threads.c +++ b/src/tm-threads.c @@ -2211,6 +2211,8 @@ bool TmThreadsTimeSubsysIsReady(void) Thread *t = &thread_store.threads[s]; if (!t->in_use) break; + if (t->type != TVT_PPT) + continue; if (t->sys_sec_stamp == 0) { ready = false; break; @@ -2229,6 +2231,8 @@ void TmThreadsInitThreadsTimestamp(const SCTime_t ts) Thread *t = &thread_store.threads[s]; if (!t->in_use) break; + if (t->type != TVT_PPT) + continue; t->pktts = ts; t->sys_sec_stamp = (uint32_t)systs.tv_sec; } @@ -2249,6 +2253,9 @@ void TmThreadsGetMinimalTimestamp(struct timeval *ts) Thread *t = &thread_store.threads[s]; if (t->in_use == 0) break; + /* only packet threads set timestamps based on packets */ + if (t->type != TVT_PPT) + continue; struct timeval pkttv = { .tv_sec = SCTIME_SECS(t->pktts), .tv_usec = SCTIME_USECS(t->pktts) }; if (!(timercmp(&pkttv, &nullts, ==))) {