FlowUpdateTtlTC(f, IPV6_GET_RAW_HLIM(ip6h));
}
}
+ if (f->thread_id[pkt_dir] == 0) {
+ f->thread_id[pkt_dir] = (FlowThreadId)tv->id;
+ }
if (f->flow_state == FLOW_STATE_ESTABLISHED) {
SCLogDebug("pkt %p FLOW_PKT_ESTABLISHED", p);
return 0;
}
-static inline void HandleThreadId(ThreadVars *tv, Packet *p, StreamTcpThread *stt)
+static inline void CheckThreadId(ThreadVars *tv, Packet *p, StreamTcpThread *stt)
{
const int idx = (!(PKT_IS_TOSERVER(p)));
/* assign the thread id to the flow */
- if (unlikely(p->flow->thread_id[idx] == 0)) {
- p->flow->thread_id[idx] = (FlowThreadId)tv->id;
- } else if (unlikely((FlowThreadId)tv->id != p->flow->thread_id[idx])) {
- SCLogDebug("wrong thread: flow has %u, we are %d", p->flow->thread_id[idx], tv->id);
- if (p->pkt_src == PKT_SRC_WIRE) {
- StatsIncr(tv, stt->counter_tcp_wrong_thread);
- if ((p->flow->flags & FLOW_WRONG_THREAD) == 0) {
- p->flow->flags |= FLOW_WRONG_THREAD;
- StreamTcpSetEvent(p, STREAM_WRONG_THREAD);
+ if (likely(p->flow->thread_id[idx] != 0)) {
+ if (unlikely((FlowThreadId)tv->id != p->flow->thread_id[idx])) {
+ SCLogDebug("wrong thread: flow has %u, we are %d", p->flow->thread_id[idx], tv->id);
+ if (p->pkt_src == PKT_SRC_WIRE) {
+ StatsIncr(tv, stt->counter_tcp_wrong_thread);
+ if ((p->flow->flags & FLOW_WRONG_THREAD) == 0) {
+ p->flow->flags |= FLOW_WRONG_THREAD;
+ StreamTcpSetEvent(p, STREAM_WRONG_THREAD);
+ }
}
}
}
return TM_ECODE_OK;
}
- HandleThreadId(tv, p, stt);
+ CheckThreadId(tv, p, stt);
/* only TCP packets with a flow from here */