summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorliuxueli <[email protected]>2023-05-12 19:40:38 +0800
committerliuxueli <[email protected]>2023-05-12 19:40:38 +0800
commit8cfb3571160f52be1400e4bbf4d20734d211d8aa (patch)
tree76e5f1744518d0b150202f7e47ac032a05c25fa8
parent7b90896a3d33bb76329cb12e9aa2a2719ea47d78 (diff)
TSG-14990: DNS按照请求、应答包中的message_id关联session,查询是message_id类型不正确导致请求应答关联失败v2.1.6
-rw-r--r--src/dns.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/dns.cpp b/src/dns.cpp
index e80b714..da556ec 100644
--- a/src/dns.cpp
+++ b/src/dns.cpp
@@ -1948,9 +1948,11 @@ int parse_dns_protocol(struct streaminfo *a_stream, unsigned char opstate, char
if(dns_register_flag&DNS_ALL)
{
+ int message_id=0;
if(dns_info.hdr_info.qr==0)
{
- HASH_FIND_INT(context->session_hash, &dns_info.hdr_info.id, one_session);
+ message_id=dns_info.hdr_info.id;
+ HASH_FIND_INT(context->session_hash, &message_id, one_session);
if(one_session!=NULL)
{
dns_delete_one_session(a_stream, context, one_session, a_packet);
@@ -1964,7 +1966,8 @@ int parse_dns_protocol(struct streaminfo *a_stream, unsigned char opstate, char
{
dir_state=DNS_DIR_DOUBLE;
session_state=SESSION_STATE_DATA|SESSION_STATE_CLOSE;
- HASH_FIND_INT(context->session_hash, &dns_info.hdr_info.id, one_session);
+ message_id=dns_info.hdr_info.id;
+ HASH_FIND_INT(context->session_hash, &message_id, one_session);
if(one_session==NULL)
{
one_session=(struct dns_session *)dictator_malloc(thread_seq, sizeof(struct dns_session));