]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
flow: cleanup expectations first
authorVictor Julien <victor@inliniac.net>
Fri, 3 Apr 2020 08:09:07 +0000 (10:09 +0200)
committerVictor Julien <victor@inliniac.net>
Fri, 3 Apr 2020 08:10:05 +0000 (10:10 +0200)
Make sure to cleanup expectations for a flow as the first step, before
parts of the flow itself are getting cleaned/freed.

Also indicate use unlikely as flows with expectations should be relatively
rare.

src/flow.c

index fce1ae3f31149b522d2cd0f3baf031bc22e9a5af..7f7ea6f8c072558e23d8c988c33a9c7ff4baa4b1 100644 (file)
@@ -1046,6 +1046,10 @@ int FlowClearMemory(Flow* f, uint8_t proto_map)
 {
     SCEnter();
 
+    if (unlikely(f->flags & FLOW_HAS_EXPECTATION)) {
+        AppLayerExpectationClean(f);
+    }
+
     /* call the protocol specific free function if we have one */
     if (flow_freefuncs[proto_map].Freefunc != NULL) {
         flow_freefuncs[proto_map].Freefunc(f->protoctx);
@@ -1053,9 +1057,6 @@ int FlowClearMemory(Flow* f, uint8_t proto_map)
 
     FlowFreeStorage(f);
 
-    if (f->flags & FLOW_HAS_EXPECTATION)
-        AppLayerExpectationClean(f);
-
     FLOW_RECYCLE(f);
 
     SCReturnInt(1);