diff --git a/src/core/net/dns_client.cpp b/src/core/net/dns_client.cpp index 5e0c459c4..ae2b6fad2 100644 --- a/src/core/net/dns_client.cpp +++ b/src/core/net/dns_client.cpp @@ -88,13 +88,14 @@ otError Client::Query(const QueryInfo &aQuery, ResponseHandler aHandler, void *a Message * messageCopy = nullptr; Header header; QuestionAaaa question; - uint16_t messageId; VerifyOrExit(aQuery.IsValid(), error = OT_ERROR_INVALID_ARGS); - SuccessOrExit(error = GenerateUniqueRandomId(messageId)); + do + { + SuccessOrExit(error = header.SetRandomMessageId()); + } while (FindQueryById(header.GetMessageId()) != nullptr); - header.SetMessageId(messageId); header.SetType(Header::kTypeQuery); header.SetQueryType(Header::kQueryTypeStandard); @@ -201,19 +202,6 @@ exit: } } -otError Client::GenerateUniqueRandomId(uint16_t &aRandomId) -{ - otError error; - - do - { - SuccessOrExit(error = Random::Crypto::FillBuffer(reinterpret_cast(&aRandomId), sizeof(aRandomId))); - } while (FindQueryById(aRandomId) != nullptr); - -exit: - return error; -} - otError Client::CompareQuestions(Message &aMessageResponse, Message &aMessageQuery, uint16_t &aOffset) { otError error = OT_ERROR_NONE;