From c5b96a48f94604a0382c75363379c7d54bc06d36 Mon Sep 17 00:00:00 2001 From: yangwei Date: Fri, 14 Jun 2024 15:22:41 +0800 Subject: 🐞 fix(MESA_detain_rawpkt_data_get0): 修复获取detain数据包时,误判为NULL的问题 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/dealpkt/plug_support.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/dealpkt/plug_support.c b/src/dealpkt/plug_support.c index 2f025da..59824fe 100644 --- a/src/dealpkt/plug_support.c +++ b/src/dealpkt/plug_support.c @@ -30,7 +30,7 @@ static struct segment_id_list *segment_id_list_dup(sapp_mem_type_t type, int tid const char *MESA_detain_rawpkt_data_get0(struct streaminfo *pstream, struct detain_pkt *pkt, int *data_sz) { if(data_sz==NULL)return NULL; - if(pkt==NULL || pkt->original == NULL)return NULL; + if(pkt==NULL || pkt->replica.raw_pkt_data == NULL)return NULL; struct streaminfo_private *pstream_pr = (struct streaminfo_private *)pstream; *data_sz = pkt->replica.raw_pkt_len - pstream_pr->offset_to_raw_pkt_hdr; return (const char *)((const char *)pkt->replica.raw_pkt_data + pstream_pr->offset_to_raw_pkt_hdr); @@ -89,6 +89,9 @@ int MESA_detain_pkt_forward(struct detain_pkt *pkt) if(pkt->replica.__lib_raw_pkt_len > 0 && pkt->replica.__lib_raw_pkt_data && pkt->replica.io_lib_pkt_reference) { dl_io_fun_list.dl_io_forward_rawpkt(&pkt->replica, pkt->tid); + pkt->replica.__lib_raw_pkt_len=0; + pkt->replica.__lib_raw_pkt_data=NULL; + pkt->replica.io_lib_pkt_reference=NULL; } detain_pkt_mem_free(pkt); pkt = NULL; @@ -150,6 +153,9 @@ void MESA_detain_pkt_free(struct detain_pkt *pkt) if(pkt->replica.__lib_raw_pkt_len > 0 && pkt->replica.__lib_raw_pkt_data && pkt->replica.io_lib_pkt_reference) { dl_io_fun_list.dl_io_free_rawpkt(&pkt->replica, pkt->tid); + pkt->replica.__lib_raw_pkt_len=0; + pkt->replica.__lib_raw_pkt_data=NULL; + pkt->replica.io_lib_pkt_reference=NULL; } detain_pkt_mem_free(pkt); pkt = NULL; -- cgit v1.2.3