Skip to content

Commit d9710c6

Browse files
authored
[dnssd] smaller enhancements in Server (openthread#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.
1 parent 3e7528e commit d9710c6

2 files changed

Lines changed: 14 additions & 10 deletions

File tree

src/core/net/dnssd_server.cpp

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -157,17 +157,13 @@ void Server::ProcessQuery(Request &aRequest)
157157
Response response(GetInstance());
158158

159159
#if OPENTHREAD_CONFIG_DNS_UPSTREAM_QUERY_ENABLE
160-
if (mEnableUpstreamQuery && ShouldForwardToUpstream(aRequest))
160+
if (ShouldForwardToUpstream(aRequest))
161161
{
162-
Error error = ResolveByUpstream(aRequest);
163-
164-
if (error == kErrorNone)
162+
if (ResolveByUpstream(aRequest) == kErrorNone)
165163
{
166164
ExitNow();
167165
}
168166

169-
LogWarnOnError(error, "forwarding to upstream");
170-
171167
rcode = Header::kResponseServerFailure;
172168

173169
// Continue to allocate and prepare the response message
@@ -207,6 +203,10 @@ void Server::ProcessQuery(Request &aRequest)
207203
}
208204
#endif
209205

206+
// `ResolveByProxy` may take ownership of `response.mMessage` and
207+
// setting it to `nullptr`. In such a case, the `response.Send()`
208+
// call will effectively do nothing.
209+
210210
ResolveByProxy(response, *aRequest.mMessageInfo);
211211

212212
exit:
@@ -386,8 +386,9 @@ Server::ResponseCode Server::Response::AddQuestionsFrom(const Request &aRequest)
386386

387387
Error Server::Response::ParseQueryName(void)
388388
{
389-
// Parses and validates the query name and updates
390-
// the name compression offsets.
389+
// Parses the query name, determines name compression
390+
// offsets, and validates that the query name is for
391+
// `kDefaultDomainName` ("default.service.arpa.").
391392

392393
Error error = kErrorNone;
393394
Name::Buffer name;
@@ -865,12 +866,14 @@ bool Server::Response::QueryNameMatchesService(const Srp::Server::Service &aServ
865866
#endif // OPENTHREAD_CONFIG_SRP_SERVER_ENABLE
866867

867868
#if OPENTHREAD_CONFIG_DNS_UPSTREAM_QUERY_ENABLE
868-
bool Server::ShouldForwardToUpstream(const Request &aRequest)
869+
bool Server::ShouldForwardToUpstream(const Request &aRequest) const
869870
{
870871
bool shouldForward = false;
871872
uint16_t readOffset;
872873
Name::Buffer name;
873874

875+
VerifyOrExit(mEnableUpstreamQuery);
876+
874877
VerifyOrExit(aRequest.mHeader.IsRecursionDesiredFlagSet());
875878
readOffset = sizeof(Header);
876879

@@ -949,6 +952,7 @@ Error Server::ResolveByUpstream(const Request &aRequest)
949952
mCounters.mUpstreamDnsCounters.mQueries++;
950953

951954
exit:
955+
LogWarnOnError(error, "forward to upstream");
952956
return error;
953957
}
954958
#endif // OPENTHREAD_CONFIG_DNS_UPSTREAM_QUERY_ENABLE

src/core/net/dnssd_server.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -573,7 +573,7 @@ class Server : public InstanceLocator, private NonCopyable
573573
#endif
574574

575575
#if OPENTHREAD_CONFIG_DNS_UPSTREAM_QUERY_ENABLE
576-
static bool ShouldForwardToUpstream(const Request &aRequest);
576+
bool ShouldForwardToUpstream(const Request &aRequest) const;
577577
UpstreamQueryTransaction *AllocateUpstreamQueryTransaction(const Ip6::MessageInfo &aMessageInfo);
578578
void ResetUpstreamQueryTransaction(UpstreamQueryTransaction &aTxn, Error aError);
579579
Error ResolveByUpstream(const Request &aRequest);

0 commit comments

Comments
 (0)