diff --git a/src/decode.c b/src/decode.c index c7c0b4ccd9..1aa964c5f1 100644 --- a/src/decode.c +++ b/src/decode.c @@ -475,6 +475,15 @@ DecodeThreadVars *DecodeThreadVarsAlloc(ThreadVars *tv) return dtv; } +void DecodeThreadVarsFree(DecodeThreadVars *dtv) +{ + if (dtv != NULL) { + if (dtv->app_tctx != NULL) + AppLayerDestroyCtxThread(dtv->app_tctx); + SCFree(dtv); + } +} + /** * \brief Set data for Packet and set length when zeo copy is used * diff --git a/src/decode.h b/src/decode.h index 80458cb6d3..c373711228 100644 --- a/src/decode.h +++ b/src/decode.h @@ -808,6 +808,7 @@ int PacketCopyDataOffset(Packet *p, int offset, uint8_t *data, int datalen); const char *PktSrcToString(enum PktSrcEnum pkt_src); DecodeThreadVars *DecodeThreadVarsAlloc(ThreadVars *); +void DecodeThreadVarsFree(DecodeThreadVars *); /* decoder functions */ int DecodeEthernet(ThreadVars *, DecodeThreadVars *, Packet *, uint8_t *, uint16_t, PacketQueue *);