From: Bhargava Jandhyala (bjandhya) Date: Wed, 16 Dec 2020 10:04:04 +0000 (+0000) Subject: Merge pull request #2660 in SNORT/snort3 from ~KBHANDAN/snort3:whd to master X-Git-Tag: 3.0.3-6~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=025d53f0a3f1f3d8726bfcf7c2fdd364047bc8c9;p=thirdparty%2Fsnort3.git Merge pull request #2660 in SNORT/snort3 from ~KBHANDAN/snort3:whd to master Squashed commit of the following: commit 32eb1b6bf8f56b10a1f3de6fc57ac2f4bf96e415 Author: Kaushal Bhandankar Date: Wed Dec 9 12:28:38 2020 -0500 flow: Pause logging during timeout processing --- diff --git a/src/flow/flow_control.cc b/src/flow/flow_control.cc index 7bd3545d2..53bd55315 100644 --- a/src/flow/flow_control.cc +++ b/src/flow/flow_control.cc @@ -120,8 +120,6 @@ bool FlowControl::prune_one(PruneReason reason, bool do_cleanup) void FlowControl::timeout_flows(time_t cur_time) { - ActiveSuspendContext act_susp(Active::ASP_TIMEOUT); - cache->timeout(1, cur_time); } @@ -139,13 +137,17 @@ Flow* FlowControl::stale_flow_cleanup(FlowCache* cache, Flow* flow, Packet* p) { if ( p->pkth->flags & DAQ_PKT_FLAG_NEW_FLOW ) { - ActiveSuspendContext act_susp(Active::ASP_TIMEOUT); - if (PacketTracer::is_active()) PacketTracer::log("Session: deleting snort session, reason: stale and not cleaned \n"); - cache->release(flow, PruneReason::STALE); - flow = nullptr; + ActiveSuspendContext act_susp(Active::ASP_TIMEOUT); + + { + PacketTracerSuspend pt_susp; + + cache->release(flow, PruneReason::STALE); + flow = nullptr; + } } return flow; diff --git a/src/flow/test/flow_control_test.cc b/src/flow/test/flow_control_test.cc index fec727c0b..5c4ac306f 100644 --- a/src/flow/test/flow_control_test.cc +++ b/src/flow/test/flow_control_test.cc @@ -60,6 +60,8 @@ void PacketTracer::log(const char*, ...) { } void PacketTracer::open_file() { } void PacketTracer::dump_to_daq(Packet*) { } void PacketTracer::reset() { } +void PacketTracer::pause() { } +void PacketTracer::unpause() { } void Active::set_drop_reason(char const*) { } Packet::Packet(bool) { } Packet::~Packet() = default; diff --git a/src/network_inspectors/packet_tracer/packet_tracer.h b/src/network_inspectors/packet_tracer/packet_tracer.h index 6aaf92863..a9013417b 100644 --- a/src/network_inspectors/packet_tracer/packet_tracer.h +++ b/src/network_inspectors/packet_tracer/packet_tracer.h @@ -112,7 +112,7 @@ SO_PUBLIC extern THREAD_LOCAL PacketTracer* s_pkt_trace; inline bool PacketTracer::is_active() { return s_pkt_trace ? s_pkt_trace->active : false; } -struct PacketTracerSuspend +struct SO_PUBLIC PacketTracerSuspend { PacketTracerSuspend() { PacketTracer::pause(); }