@@ -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
212212exit:
@@ -386,8 +386,9 @@ Server::ResponseCode Server::Response::AddQuestionsFrom(const Request &aRequest)
386386
387387Error 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
951954exit:
955+ LogWarnOnError (error, " forward to upstream" );
952956 return error;
953957}
954958#endif // OPENTHREAD_CONFIG_DNS_UPSTREAM_QUERY_ENABLE
0 commit comments