]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
stream: clean up queue list in all cases
authorVictor Julien <victor@inliniac.net>
Tue, 24 Sep 2013 18:00:21 +0000 (20:00 +0200)
committerVictor Julien <victor@inliniac.net>
Tue, 24 Sep 2013 18:00:21 +0000 (20:00 +0200)
src/stream-tcp.c

index b9442bf31cfe531093dc0c6d7eaafe5fed96ca84..c3551b2adf742e59a3f8cf2f4e7dcdbcbf95cb4f 100644 (file)
@@ -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