diff options
| author | yangwei <[email protected]> | 2024-09-13 14:00:59 +0800 |
|---|---|---|
| committer | yangwei <[email protected]> | 2024-09-13 14:00:59 +0800 |
| commit | ccd6866dc90cc2337585cf67da67a8011b90ced2 (patch) | |
| tree | 89d59d54cefe9eb63b35dc4cd943da5cb7ebba8b | |
| parent | 711d836b41f9553b81c567fba7d34e8b20e41064 (diff) | |
🐞 fix(tcp fast drop lru): 如果lru返回当前流,调用reset_stream
| -rw-r--r-- | src/dealpkt/deal_tcp.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/dealpkt/deal_tcp.c b/src/dealpkt/deal_tcp.c index 660499b..0ba46ce 100644 --- a/src/dealpkt/deal_tcp.c +++ b/src/dealpkt/deal_tcp.c @@ -669,7 +669,7 @@ static struct streamindex *tcp_add_new_stream_bysyn(struct streamindex *pindex, pstream = &pstream_pr->stream_public; pdetail_pr = (struct tcpdetail_private *)pstream->pdetail; pdetail = (struct tcpdetail *)pdetail_pr; - // add by lqy 20150107, ???��??? + // add by lqy 20150107, ???��??? if (createdir == DIR_S2C) { pdetail->clientpktnum = 1; @@ -694,7 +694,7 @@ static struct streamindex *tcp_add_new_stream_bysyn(struct streamindex *pindex, pdetail->createtime=g_CurrentTime; pstream_pr->stream_create_timestamp_ms=g_CurrentTime_ms; - /* ????????, ?????��????ddos ?? */ + /* ????????, ?????��????ddos ?? */ if(pstream_pr->create_dir_by_well_known_port != 1) { pstream_pr->under_ddos_bypass = packet_io_under_ddos_should_bypass(threadnum); @@ -2798,7 +2798,10 @@ static int deal_tcp_stream(struct streamindex *pindex, const void *this_iphdr, s printaddr(&pstream->addr, pstream->threadnum), pstream->curdir); pdetail->lastmtime = g_CurrentTime; pstream_pr->stream_lastupdate_timestamp_ms = g_CurrentTime_ms; - lrustream(pindex_tcp); + if(1 == lrustream(pindex_tcp)) + { + tcp_reset_stream(pindex_tcp, this_iphdr,this_tcphdr, tcplen,raw_pkt); + } if((this_tcphdr->th_flags & TH_RST) && tcplen == 0) { return PASS; @@ -3382,7 +3385,7 @@ static struct buf_unorder *tcp_save_unorder_pkt(struct streaminfo *a_tcp,const v //carry_ip_stream = skip_proxy_phony_stream(a_tcp->pfather); carry_ip_stream = skip_proxy_phony_stream(a_tcp); - /* ?��???? */ + /* ?��???? */ memcpy(&(uo_packet->raw_pkt), stack_raw_pkt, sizeof(raw_pkt_t)); uo_packet->raw_pkt.raw_pkt_data = sapp_mem_malloc(SAPP_MEM_DYN_TCP_UNORDER,a_tcp->threadnum, stack_raw_pkt->raw_pkt_len); memcpy((void *)uo_packet->raw_pkt.raw_pkt_data, stack_raw_pkt->raw_pkt_data, stack_raw_pkt->raw_pkt_len); |
