summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoryangwei <[email protected]>2024-09-11 16:36:32 +0800
committeryangwei <[email protected]>2024-09-11 16:36:32 +0800
commit9ee2add9a2ae15dbf89f9a62bef289cd49c6f788 (patch)
treec164c0f0530b01f280b573aa593c4e08adc61fd4 /src
parent74cdcad2744904e0c501487c472bd15b0f7bc190 (diff)
🐞 fix(tcp_free_stream): 更新tcp stream free判断逻辑,避免TFO时不调用插件close
Diffstat (limited to 'src')
-rw-r--r--src/dealpkt/deal_tcp.c29
1 files changed, 10 insertions, 19 deletions
diff --git a/src/dealpkt/deal_tcp.c b/src/dealpkt/deal_tcp.c
index bc6d928..16dc154 100644
--- a/src/dealpkt/deal_tcp.c
+++ b/src/dealpkt/deal_tcp.c
@@ -1441,29 +1441,20 @@ int tcp_free_stream(struct streamindex *pindex, const void *this_ip_hdr, const v
pstream->curdir = saved_curdir;
pstream_pr->raw_pkt = raw_pkt; /* �������ʱ��̭, ��ֵΪNULL; �����RST������̭, Ϊ��ʵԭʼ�� */
-
- if(pstream->stream_state==TCP_DATA_STATE)
- {
- if(pdetail_pr->apme!=NULL)
- {
- pstream->opstate=OP_STATE_CLOSE;
- //tcp stream �ص�
- pkt_ret = stream_process_tcp(pstream, this_ip_hdr, transport_hdr, raw_pkt,&(pdetail_pr->apme),&(pstream->opstate));
- pdetail_pr->apme=NULL;
- }
- }
- //�����κ�״̬�ص�ȫ��������������
- if(pdetail_pr->pAllpktpme!=NULL)
+ if (pdetail_pr->apme != NULL)
+ {
+ pstream->opstate = OP_STATE_CLOSE;
+ // tcp stream �ص�
+ pkt_ret =
+ stream_process_tcp(pstream, this_ip_hdr, transport_hdr, raw_pkt, &(pdetail_pr->apme), &(pstream->opstate));
+ pdetail_pr->apme = NULL;
+ }
+
+ if(pdetail_pr->pAllpktpme!=NULL)
{
pstream->pktstate=OP_STATE_CLOSE;
- //tcp stream �ص�
-#if 0
- pkt_ret = stream_process_tcp_allpkt(pstream, this_ip_hdr, transport_hdr, raw_pkt,&(pdetail_pr->pAllpktpme),&(pstream->pktstate));
-#else
- /* 2017-12-13 lijia modify, TCPALL��Ϊ�ȵ���, ������tcp_free_stream��, ���ֻ��TCPALL���������CLOSE״̬, ���ٸ�ԭʼ��, ָ��̶�ΪNULL, ������ظ��� */
pkt_ret = stream_process_tcp_allpkt(pstream, this_ip_hdr, transport_hdr, raw_pkt, &(pdetail_pr->pAllpktpme),&(pstream->pktstate));
-#endif
pdetail_pr->pAllpktpme=NULL;
}