stream: clean up queue list in all cases

pull/559/head
Victor Julien 13 years ago
parent 67c12c61d3
commit 239ab202c9

@ -172,6 +172,7 @@ void StreamTcpSessionClear(void *ssnptr)
{ {
SCEnter(); SCEnter();
StreamMsg *smsg = NULL; StreamMsg *smsg = NULL;
TcpStateQueue *q, *q_next;
TcpSession *ssn = (TcpSession *)ssnptr; TcpSession *ssn = (TcpSession *)ssnptr;
if (ssn == NULL) if (ssn == NULL)
@ -210,6 +211,16 @@ void StreamTcpSessionClear(void *ssnptr)
} }
ssn->toclient_smsg_head = NULL; 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)); memset(ssn, 0, sizeof(TcpSession));
PoolThreadReturn(ssn_pool, ssn); PoolThreadReturn(ssn_pool, ssn);
#ifdef DEBUG #ifdef DEBUG

Loading…
Cancel
Save