update conditional in shutdown forced reassembly to check for flows that required flow reassemly

remotes/origin/master-1.1.x
Anoop Saldanha 14 years ago committed by Victor Julien
parent 15359dc47e
commit 762ac0fe31

@ -1018,6 +1018,8 @@ static inline void FlowForceReassemblyForQ(FlowQueue *q)
{
Flow *f;
TcpSession *ssn;
int client_ok = 0;
int server_ok = 0;
/* no locks needed, since the engine is virtually dead.
* We are the kings here */
@ -1045,7 +1047,12 @@ static inline void FlowForceReassemblyForQ(FlowQueue *q)
}
/* ah ah! We have some unattended toserver segments */
if (ssn->client.seg_list != NULL) {
if (!(ssn->client.seg_list == NULL ||
(ssn->client.seg_list_tail->flags & SEGMENTTCP_FLAG_RAW_PROCESSED &&
ssn->client.seg_list_tail->flags & SEGMENTTCP_FLAG_APPLAYER_PROCESSED &&
ssn->toserver_smsg_head == NULL))) {
client_ok = 1;
StreamTcpThread *stt = stream_pseudo_pkt_stream_tm_slot->slot_data;
ssn->client.last_ack = (ssn->client.seg_list_tail->seq +
@ -1058,7 +1065,11 @@ static inline void FlowForceReassemblyForQ(FlowQueue *q)
StreamTcpReassembleProcessAppLayer(stt->ra_ctx);
}
/* oh oh! We have some unattended toclient segments */
if (ssn->server.seg_list != NULL) {
if (!(ssn->server.seg_list == NULL ||
(ssn->server.seg_list_tail->flags & SEGMENTTCP_FLAG_RAW_PROCESSED &&
ssn->server.seg_list_tail->flags & SEGMENTTCP_FLAG_APPLAYER_PROCESSED &&
ssn->toclient_smsg_head == NULL))) {
server_ok = 1;
StreamTcpThread *stt = stream_pseudo_pkt_stream_tm_slot->slot_data;
ssn->server.last_ack = (ssn->server.seg_list_tail->seq +
@ -1072,7 +1083,7 @@ static inline void FlowForceReassemblyForQ(FlowQueue *q)
}
/* insert a pseudo packet in the toserver direction */
if (ssn->client.seg_list != NULL) {
if (client_ok == 1) {
Packet *p = PacketGetFromQueueOrAlloc();
if (p == NULL) {
printf("packet is NULL\n");
@ -1146,7 +1157,7 @@ static inline void FlowForceReassemblyForQ(FlowQueue *q)
}
}
} /* if (ssn->client.seg_list != NULL) */
if (ssn->server.seg_list != NULL) {
if (server_ok == 1) {
Packet *p = PacketGetFromQueueOrAlloc();
if (p == NULL) {
printf("packet is NULL\n");

Loading…
Cancel
Save