stream: improve TCP ssn reuse cleanup.

remotes/origin/master-1.2.x
Victor Julien 14 years ago
parent 9769510ba3
commit 7e3c15e54a

@ -176,6 +176,9 @@ static int AlpStoreField(AppLayerParserResult *output, uint16_t idx,
void AppLayerSetEOF(Flow *f)
{
if (f == NULL || f->aldata == NULL)
return;
AppLayerParserStateStore *parser_state_store =
(AppLayerParserStateStore *)f->aldata[app_layer_sid];
if (parser_state_store != NULL) {

@ -3608,6 +3608,28 @@ static int StreamTcpPacket (ThreadVars *tv, Packet *p, StreamTcpThread *stt,
{
SCLogDebug("reusing closed TCP session");
/* return segments */
StreamTcpReturnStreamSegments(&ssn->client);
StreamTcpReturnStreamSegments(&ssn->server);
/* free SACK list */
StreamTcpSackFreeList(&ssn->client);
StreamTcpSackFreeList(&ssn->server);
/* reset the app layer state */
AppLayerParserCleanupState(p->flow);
FlowL7DataPtrInit(p->flow);
ssn->state = 0;
ssn->flags = 0;
ssn->client.flags = 0;
ssn->server.flags = 0;
/* set state the NONE, also pulls flow out of closed queue */
StreamTcpPacketSetState(p, ssn, TCP_NONE);
p->flow->alproto = ALPROTO_UNKNOWN;
p->flow->flags &= ~FLOW_TS_PM_PP_ALPROTO_DETECT_DONE;
p->flow->flags &= ~FLOW_TS_PM_PP_ALPROTO_DETECT_DONE;
if (StreamTcpPacketStateNone(tv,p,stt,ssn, &stt->pseudo_queue)) {
goto error;
}

Loading…
Cancel
Save