mirror of
https://github.com/espressif/openthread.git
synced 2026-08-08 11:47:46 +00:00
[dnssd] smaller enhancements in Server (#11439)
This commit contains a few smaller enhancements in the DNS-SD server implementation: - `ShouldForwardToUpstream()` now checks the `mEnableUpstreamQuery`. - The `ResolveByUpstream()` method now handles its own error logging. - Comments are added/updated to improve code readability.
This commit is contained in:
@@ -157,17 +157,13 @@ void Server::ProcessQuery(Request &aRequest)
|
||||
Response response(GetInstance());
|
||||
|
||||
#if OPENTHREAD_CONFIG_DNS_UPSTREAM_QUERY_ENABLE
|
||||
if (mEnableUpstreamQuery && ShouldForwardToUpstream(aRequest))
|
||||
if (ShouldForwardToUpstream(aRequest))
|
||||
{
|
||||
Error error = ResolveByUpstream(aRequest);
|
||||
|
||||
if (error == kErrorNone)
|
||||
if (ResolveByUpstream(aRequest) == kErrorNone)
|
||||
{
|
||||
ExitNow();
|
||||
}
|
||||
|
||||
LogWarnOnError(error, "forwarding to upstream");
|
||||
|
||||
rcode = Header::kResponseServerFailure;
|
||||
|
||||
// Continue to allocate and prepare the response message
|
||||
@@ -207,6 +203,10 @@ void Server::ProcessQuery(Request &aRequest)
|
||||
}
|
||||
#endif
|
||||
|
||||
// `ResolveByProxy` may take ownership of `response.mMessage` and
|
||||
// setting it to `nullptr`. In such a case, the `response.Send()`
|
||||
// call will effectively do nothing.
|
||||
|
||||
ResolveByProxy(response, *aRequest.mMessageInfo);
|
||||
|
||||
exit:
|
||||
@@ -386,8 +386,9 @@ exit:
|
||||
|
||||
Error Server::Response::ParseQueryName(void)
|
||||
{
|
||||
// Parses and validates the query name and updates
|
||||
// the name compression offsets.
|
||||
// Parses the query name, determines name compression
|
||||
// offsets, and validates that the query name is for
|
||||
// `kDefaultDomainName` ("default.service.arpa.").
|
||||
|
||||
Error error = kErrorNone;
|
||||
Name::Buffer name;
|
||||
@@ -865,12 +866,14 @@ exit:
|
||||
#endif // OPENTHREAD_CONFIG_SRP_SERVER_ENABLE
|
||||
|
||||
#if OPENTHREAD_CONFIG_DNS_UPSTREAM_QUERY_ENABLE
|
||||
bool Server::ShouldForwardToUpstream(const Request &aRequest)
|
||||
bool Server::ShouldForwardToUpstream(const Request &aRequest) const
|
||||
{
|
||||
bool shouldForward = false;
|
||||
uint16_t readOffset;
|
||||
Name::Buffer name;
|
||||
|
||||
VerifyOrExit(mEnableUpstreamQuery);
|
||||
|
||||
VerifyOrExit(aRequest.mHeader.IsRecursionDesiredFlagSet());
|
||||
readOffset = sizeof(Header);
|
||||
|
||||
@@ -949,6 +952,7 @@ Error Server::ResolveByUpstream(const Request &aRequest)
|
||||
mCounters.mUpstreamDnsCounters.mQueries++;
|
||||
|
||||
exit:
|
||||
LogWarnOnError(error, "forward to upstream");
|
||||
return error;
|
||||
}
|
||||
#endif // OPENTHREAD_CONFIG_DNS_UPSTREAM_QUERY_ENABLE
|
||||
|
||||
@@ -573,7 +573,7 @@ private:
|
||||
#endif
|
||||
|
||||
#if OPENTHREAD_CONFIG_DNS_UPSTREAM_QUERY_ENABLE
|
||||
static bool ShouldForwardToUpstream(const Request &aRequest);
|
||||
bool ShouldForwardToUpstream(const Request &aRequest) const;
|
||||
UpstreamQueryTransaction *AllocateUpstreamQueryTransaction(const Ip6::MessageInfo &aMessageInfo);
|
||||
void ResetUpstreamQueryTransaction(UpstreamQueryTransaction &aTxn, Error aError);
|
||||
Error ResolveByUpstream(const Request &aRequest);
|
||||
|
||||
Reference in New Issue
Block a user