summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorliuxueli <[email protected]>2023-05-24 15:00:56 +0800
committer杨威 <[email protected]>2023-06-02 19:34:06 +0800
commit93d7d4a6a23a8276a7c942e4e4680afda13387b2 (patch)
tree64b9b45a7626d654acc72ffc921d7fbdc0572346
parente79b9357ac1c2a1d1fdc86f1b4eca100dece51d2 (diff)
TSG-15248: 超时淘汰的会话,由于缺少原始包导致closing状态同步失败v4.3.7
-rw-r--r--include/private/stream_internal.h3
-rw-r--r--src/packet_io/sapp_inject.c8
-rw-r--r--src/packet_io/sendpacket.c5
3 files changed, 8 insertions, 8 deletions
diff --git a/include/private/stream_internal.h b/include/private/stream_internal.h
index 21b3a86..df2ae11 100644
--- a/include/private/stream_internal.h
+++ b/include/private/stream_internal.h
@@ -220,7 +220,8 @@ struct streaminfo_private
unsigned int hash_slave; /* 2015-12-14 lijia add, ʹ��linux_jhash����ʱ, ����ͬʱ�õ��������ϵ�HASHֵ, ��HASH����ȷ����HASH����SLOTλ��, slave_HASH���ڿ��ٱȽϵ�ַ�Ƿ���� */
unsigned char hash_not_head_times;/* 2015-12-15 lijia add, ��ǰindex����HASH SLOT�ĵ�һλ�Ĵ��� */
unsigned char cur_layer_raw_hdr_len; /* 2017-10-31 lijia add, ��ǰ���ԭʼ����ַ����, ��pppͷ��ѹ��, ԭ���汾�޷��������״̬, ����ʱҲ�޷���֪��ַ������ */
- unsigned char __pad:3;
+ unsigned char __pad:2;
+ unsigned char is_ctrl_pkt:1;
unsigned char packet_io_context:1; /* 2019-09-07 lijia add, for polling entry send packet */
unsigned char stream_close_reason:4; /* 2019-02-14 lijia add, ����TCPʹ��tcpdetail_private��link_state����, ����UDP֮ǰû��, ���pad�����˱��� */
unsigned char gdev_block_timer;
diff --git a/src/packet_io/sapp_inject.c b/src/packet_io/sapp_inject.c
index 0ee6a5c..706fe2f 100644
--- a/src/packet_io/sapp_inject.c
+++ b/src/packet_io/sapp_inject.c
@@ -90,16 +90,14 @@ int sapp_inject_ctrl_pkt(struct streaminfo *stream, enum sapp_inject_opt sio, co
{
struct streaminfo_private *stream_pr = (struct streaminfo_private *)stream;
- if(stream_pr == NULL || stream_pr->raw_pkt == NULL)
+ if(stream_pr == NULL)
{
return -1;
}
- unsigned char raw_is_ctrl_pkt_flag=stream_pr->raw_pkt->is_ctrl_pkt;
-
- ((raw_pkt_t *)stream_pr->raw_pkt)->is_ctrl_pkt = 1;
+ stream_pr->is_ctrl_pkt=1;
int ret=sapp_inject_pkt(stream, SIO_DEFAULT, payload, payload_len, snd_routedir);
- ((raw_pkt_t *)stream_pr->raw_pkt)->is_ctrl_pkt = raw_is_ctrl_pkt_flag;
+ stream_pr->is_ctrl_pkt=0;
return ret;
}
diff --git a/src/packet_io/sendpacket.c b/src/packet_io/sendpacket.c
index 73d7133..e0baafc 100644
--- a/src/packet_io/sendpacket.c
+++ b/src/packet_io/sendpacket.c
@@ -3407,9 +3407,10 @@ int __sapp_inject_pkt(struct streaminfo *raw_stream, enum sapp_inject_opt sio,
{
((raw_pkt_t *)raw_pkt)->stream_trace_id = raw_stream_pr->stream_trace_id;
}
-
- if (((raw_pkt_t *)raw_pkt)->is_ctrl_pkt != 0)
+
+ if (raw_stream_pr->is_ctrl_pkt==1)
{
+ ((raw_pkt_t *)raw_pkt)->is_ctrl_pkt=1;
((raw_pkt_t *)raw_pkt)->payload_len=payload_len;
}