]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
fix pc accumulation; eliminate redundant session clearing on blocked flows
authorrcombs <rcombs@sq18.sfeng.sourcefire.com>
Wed, 26 Nov 2014 00:09:30 +0000 (19:09 -0500)
committerrcombs <rcombs@sq18.sfeng.sourcefire.com>
Wed, 26 Nov 2014 00:09:30 +0000 (19:09 -0500)
src/flow/flow_control.cc
src/network_inspectors/binder/binder.cc
src/utils/stats.cc

index c0c8be17ff928dd5739d7b0ee32e59301375c66c..09d6a2bc456a4aad5d0fcf8df944f8d28cfdc48f 100644 (file)
@@ -354,7 +354,8 @@ unsigned FlowControl::process(Flow* flow, Packet* p)
         if ( b )
             b->eval(p);
 
-        if ( !flow->ssn_client || !flow->session->setup(p) )
+        if ( !b || (flow->flow_state == Flow::INSPECT && 
+            (!flow->ssn_client || !flow->session->setup(p))) )
             flow->set_state(Flow::ALLOW);
 
         ++news;
@@ -378,9 +379,7 @@ unsigned FlowControl::process(Flow* flow, Packet* p)
         break;
 
     case Flow::BLOCK:
-        // FIXIT-M should not repeatedly clear session
-        stream.drop_packet(p);
-        Active_DropSession();
+        Active_DropPacket();
         break;
     }
 
index 5ada24728514f02085f57c705c1271b37c073969..61f7e38bd2a738970c976ebc3a54dd34a98fa2e3 100644 (file)
@@ -44,6 +44,7 @@ using namespace std;
 #include "target_based/sftarget_data.h"
 #include "target_based/sftarget_protocol_reference.h"
 #include "target_based/sftarget_reader.h"
+#include "packet_io/active.h"
 
 THREAD_LOCAL ProfileStats bindPerfStats;
 
index 5ba00f132eac7c49f9f337fca9030a313fbf9243..a1dd2f6b64b51a599621c9cbb546d5272dc49efc 100644 (file)
@@ -248,7 +248,7 @@ void pc_sum()
     for ( unsigned i = 0; i < MAX_SFDAQ_VERDICT; i++ )
         g_daq_stats.verdicts[i] += daq_stats->verdicts[i];
 
-    sum_stats((PegCount*)&gpc, (PegCount*)&pc, array_size(pc_names));
+    sum_stats((PegCount*)&gpc, (PegCount*)&pc, array_size(pc_names)-1);
     memset(&pc, 0, sizeof(pc));
 
     sum_stats((PegCount*)&gaux, (PegCount*)&aux_counts, sizeof(aux_counts)/sizeof(PegCount));