diff --git a/src/stream-tcp.c b/src/stream-tcp.c index f6d79eaf96..77d9b09a91 100644 --- a/src/stream-tcp.c +++ b/src/stream-tcp.c @@ -4551,60 +4551,8 @@ int StreamTcpPacket (ThreadVars *tv, Packet *p, StreamTcpThread *stt, } break; case TCP_CLOSED: - /* TCP session memory is not returned to pool until timeout. - * If in the mean time we receive any other session from - * the same client reusing same port then we switch back to - * tcp state none, but only on a valid SYN that is not a - * resend from our previous session. - * - * We also check it's not a SYN/ACK, all other SYN pkt - * validation is done at StreamTcpPacketStateNone(); - */ - if (PKT_IS_TOSERVER(p) && (p->tcph->th_flags & TH_SYN) && - !(p->tcph->th_flags & TH_ACK) && - !(SEQ_EQ(ssn->client.isn, TCP_GET_SEQ(p)))) - { - 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 */ - FlowCleanupAppLayer(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_ts = p->flow->alproto_tc = p->flow->alproto = ALPROTO_UNKNOWN; - p->flow->data_al_so_far[0] = p->flow->data_al_so_far[1] = 0; - ssn->data_first_seen_dir = 0; - p->flow->flags &= (~FLOW_TS_PM_ALPROTO_DETECT_DONE & - ~FLOW_TS_PP_ALPROTO_DETECT_DONE & - ~FLOW_TC_PM_ALPROTO_DETECT_DONE & - ~FLOW_TC_PP_ALPROTO_DETECT_DONE); - p->flow->flags &= ~ FLOW_NO_APPLAYER_INSPECTION; - if (p->flow->de_state != NULL) { - SCMutexLock(&p->flow->de_state_m); - DetectEngineStateReset(p->flow->de_state, (STREAM_TOSERVER | STREAM_TOCLIENT)); - SCMutexUnlock(&p->flow->de_state_m); - } - - if (StreamTcpPacketStateNone(tv,p,stt,ssn, &stt->pseudo_queue)) { - goto error; - } - - SCPerfCounterIncr(stt->counter_tcp_reused_ssn, tv->sc_perf_pca); - } else { - SCLogDebug("packet received on closed state"); - } + /* TCP session memory is not returned to pool until timeout. */ + SCLogDebug("packet received on closed state"); break; default: SCLogDebug("packet received on default state");