diff --git a/src/flow.c b/src/flow.c index fce1ae3f31..7f7ea6f8c0 100644 --- a/src/flow.c +++ b/src/flow.c @@ -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);