DNS request avoids zero request id.

This commit is contained in:
Xie Han
2022-12-29 22:11:41 +08:00
parent dff1112378
commit 659a507ece
2 changed files with 9 additions and 3 deletions
+1 -1
View File
@@ -184,7 +184,7 @@ void DnsMessage::set_question_name(const std::string& name)
parser->question.qname = strdup(name.c_str());
}
std::atomic<uint16_t> DnsRequest::req_id_;
std::atomic<uint16_t> DnsRequest::req_id_(1);
int DnsResponse::append(const void *buf, size_t *size)
{
+8 -2
View File
@@ -192,11 +192,14 @@ private:
class DnsRequest : public DnsMessage
{
static std::atomic<uint16_t> req_id_;
public:
DnsRequest()
{
dns_parser_set_id(req_id_++, this->parser);
uint64_t req_id;
do
req_id = DnsRequest::req_id_++;
while (req_id == 0);
dns_parser_set_id(req_id, this->parser);
}
DnsRequest(DnsRequest&& req) = default;
@@ -206,6 +209,9 @@ public:
{
dns_parser_set_question(host, qtype, qclass, this->parser);
}
private:
static std::atomic<uint16_t> req_id_;
};
class DnsResponse : public DnsMessage