mirror of
https://github.com/sogou/workflow.git
synced 2026-10-29 11:36:47 +08:00
DNS request avoids zero request id.
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user