From: Victor Julien Date: Tue, 24 Sep 2013 18:00:21 +0000 (+0200) Subject: stream: clean up queue list in all cases X-Git-Tag: suricata-2.0beta2~334 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=239ab202c92a3ae8ee653ce9fb81bd9569239219;p=thirdparty%2Fsuricata.git stream: clean up queue list in all cases --- diff --git a/src/stream-tcp.c b/src/stream-tcp.c index b9442bf31c..c3551b2adf 100644 --- a/src/stream-tcp.c +++ b/src/stream-tcp.c @@ -172,6 +172,7 @@ void StreamTcpSessionClear(void *ssnptr) { SCEnter(); StreamMsg *smsg = NULL; + TcpStateQueue *q, *q_next; TcpSession *ssn = (TcpSession *)ssnptr; if (ssn == NULL) @@ -210,6 +211,16 @@ void StreamTcpSessionClear(void *ssnptr) } ssn->toclient_smsg_head = NULL; + q = ssn->queue; + while (q != NULL) { + q_next = q->next; + SCFree(q); + q = q_next; + StreamTcpDecrMemuse((uint64_t)sizeof(TcpStateQueue)); + } + ssn->queue = NULL; + ssn->queue_len = 0; + memset(ssn, 0, sizeof(TcpSession)); PoolThreadReturn(ssn_pool, ssn); #ifdef DEBUG