diff --git a/src/core/radio/trel_peer_discoverer.cpp b/src/core/radio/trel_peer_discoverer.cpp index 88fe9a411..9d48e812b 100644 --- a/src/core/radio/trel_peer_discoverer.cpp +++ b/src/core/radio/trel_peer_discoverer.cpp @@ -444,27 +444,16 @@ void PeerDiscoverer::HandleTxtResult(otInstance *aInstance, const otPlatDnssdTxt void PeerDiscoverer::HandleTxtResult(const Dnssd::TxtResult &aResult) { - Peer *peer; + Peer *peer = nullptr; + TxtData txtData; + TxtData::Info txtInfo; VerifyOrExit(IsRunning()); peer = Get().FindMatching(Peer::ServiceNameMatcher(aResult.mServiceInstance)); VerifyOrExit(peer != nullptr); - ProcessPeerTxtData(aResult, *peer); - - UpdatePeerState(*peer); - -exit: - return; -} - -void PeerDiscoverer::ProcessPeerTxtData(const Dnssd::TxtResult &aResult, Peer &aPeer) -{ - TxtData txtData; - TxtData::Info txtInfo; - - aPeer.mTxtDataValidated = false; + peer->mTxtDataValidated = false; VerifyOrExit(aResult.mTtl != 0); @@ -474,14 +463,15 @@ void PeerDiscoverer::ProcessPeerTxtData(const Dnssd::TxtResult &aResult, Peer &a if (txtInfo.mExtAddress == Get().GetExtAddress()) { - LogInfo("Peer %s is this device itself", aPeer.mServiceName.AsCString()); - Get().RemoveMatching(aPeer); + LogInfo("Peer %s is this device itself", peer->mServiceName.AsCString()); + Get().RemoveMatching(*peer); + peer = nullptr; ExitNow(); } - aPeer.SetExtPanId(txtInfo.mExtPanId); + peer->SetExtPanId(txtInfo.mExtPanId); - if (aPeer.GetExtAddress() != txtInfo.mExtAddress) + if (peer->GetExtAddress() != txtInfo.mExtAddress) { // Remove any peer that is associated with the same ExtAddress. // These are likely stale entries. This ensure we have at most @@ -489,13 +479,16 @@ void PeerDiscoverer::ProcessPeerTxtData(const Dnssd::TxtResult &aResult, Peer &a Get().RemoveAndFreeAllMatching(txtInfo.mExtAddress); - aPeer.SetExtAddress(txtInfo.mExtAddress); + peer->SetExtAddress(txtInfo.mExtAddress); } - aPeer.mTxtDataValidated = true; + peer->mTxtDataValidated = true; exit: - return; + if (peer != nullptr) + { + UpdatePeerState(*peer); + } } void PeerDiscoverer::StartHostAddressResolver(Peer &aPeer) diff --git a/src/core/radio/trel_peer_discoverer.hpp b/src/core/radio/trel_peer_discoverer.hpp index 24b76f8e5..8af278bae 100644 --- a/src/core/radio/trel_peer_discoverer.hpp +++ b/src/core/radio/trel_peer_discoverer.hpp @@ -252,7 +252,6 @@ private: void StopServiceResolvers(Peer &aPeer); void HandleSrvResult(const Dnssd::SrvResult &aResult); void HandleTxtResult(const Dnssd::TxtResult &aResult); - void ProcessPeerTxtData(const Dnssd::TxtResult &aResult, Peer &aPeer); void StartHostAddressResolver(Peer &aPeer); void StopHostAddressResolver(Peer &aPeer); void HandleAddressResult(const Dnssd::AddressResult &aResult);