diff options
| author | liuxueli <[email protected]> | 2023-05-12 19:40:38 +0800 |
|---|---|---|
| committer | liuxueli <[email protected]> | 2023-05-12 19:40:38 +0800 |
| commit | 8cfb3571160f52be1400e4bbf4d20734d211d8aa (patch) | |
| tree | 76e5f1744518d0b150202f7e47ac032a05c25fa8 | |
| parent | 7b90896a3d33bb76329cb12e9aa2a2719ea47d78 (diff) | |
TSG-14990: DNS按照请求、应答包中的message_id关联session,查询是message_id类型不正确导致请求应答关联失败v2.1.6
| -rw-r--r-- | src/dns.cpp | 7 |
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)); |
