diff options
| author | yangwei <[email protected]> | 2024-09-11 16:36:32 +0800 |
|---|---|---|
| committer | yangwei <[email protected]> | 2024-09-11 16:36:32 +0800 |
| commit | 9ee2add9a2ae15dbf89f9a62bef289cd49c6f788 (patch) | |
| tree | c164c0f0530b01f280b573aa593c4e08adc61fd4 | |
| parent | 74cdcad2744904e0c501487c472bd15b0f7bc190 (diff) | |
🐞 fix(tcp_free_stream): 更新tcp stream free判断逻辑,避免TFO时不调用插件close
| -rw-r--r-- | src/dealpkt/deal_tcp.c | 29 |
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; } |
