]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
fixed flush bucket dumping
authorRuss Combs <rucombs@cisco.com>
Tue, 19 Aug 2014 17:29:43 +0000 (13:29 -0400)
committerRuss Combs <rucombs@cisco.com>
Tue, 19 Aug 2014 17:29:43 +0000 (13:29 -0400)
src/stream/flush_bucket.cc
src/stream/flush_bucket.h
src/stream/tcp/stream_tcp.cc

index 9289e252597c6e26fe33e27a189200ab7cdde635..c9d432f8d51287c7d08394e50d35ff185d7fa352 100644 (file)
@@ -25,6 +25,7 @@
 
 #include <random>
 
+#include "snort.h"
 #include "protocols/packet.h"
 
 //-------------------------------------------------------------------------
 
 static THREAD_LOCAL FlushBucket* s_flush_bucket = nullptr;
 
-void FlushBucket::set(FlushBucket* fb)
+void FlushBucket::set(unsigned sz)
 {
-    s_flush_bucket = fb;
+    if ( s_flush_bucket )
+        return;
+
+    if ( sz )
+        s_flush_bucket = new ConstFlushBucket(sz);
+
+    else if ( ScStaticHash() )
+        s_flush_bucket = new StaticFlushBucket;
+
+    else
+        s_flush_bucket = new RandomFlushBucket;
+
+    assert(s_flush_bucket);
 }
 
 void FlushBucket::clear()
index 58b31cbcf7507c01f89f61a8aecbeddab0706505..2d00a8991035ac8f1754ff861381755715a5b478 100644 (file)
@@ -31,12 +31,11 @@ public:
     virtual uint16_t get_next() = 0;
 
     static uint16_t get_size();
-    static void set(FlushBucket*);
+    static void set(unsigned sz);
     static void clear();
 
 protected:
     FlushBucket() { };
-    static FlushBucket* flush_bucket;
 };
 
 class ConstFlushBucket : public FlushBucket
index 90debb97d9ac89d4fee2ef050418eec17ad3740b..2499cfb4b7df127f265ab4376751432d79873151 100644 (file)
@@ -76,23 +76,13 @@ void StreamTcp::show(SnortConfig*)
 
 void StreamTcp::tinit()
 {
-    FlushBucket* fb;
-
-    if ( config->footprint )
-        fb = new ConstFlushBucket(config->footprint);
-
-    else if ( ScStaticHash() )
-        fb = new StaticFlushBucket;
-
-    else
-        fb = new RandomFlushBucket;
-
-    FlushBucket::set(fb);
+    FlushBucket::set(config->footprint);
 }
 
 void StreamTcp::tterm()
 {
-    //FlushBucket::clear();  FIXIT must be called after StreamBase::tterm()
+    // must be done after StreamBase::tterm(); see tcp_tterm()
+    //FlushBucket::clear();
 }
 
 void StreamTcp::eval(Packet*)
@@ -141,6 +131,7 @@ void tcp_tinit()
 void tcp_tterm()
 {
     tcp_sterm();
+    FlushBucket::clear();
 }
 
 static const InspectApi tcp_api =