[joiner] keep discovering when UDP port is bad (#11337)

This commit fixes the issue that the joiner starts joining process
immediately when an invalid Joiner UDP Port is encountered. This issue
was introduced by #9445 which attempts to ignore joiner routers having
an invalid Joiner UDP Port.
This commit is contained in:
Yakun Xu
2025-03-12 10:36:54 -07:00
committed by GitHub
parent 7d488bcf24
commit 9e7b57d7fb
+6 -2
View File
@@ -249,7 +249,7 @@ void Joiner::HandleDiscoverResult(Mle::DiscoverScanner::ScanResult *aResult)
{
VerifyOrExit(mState == kStateDiscover);
if (aResult != nullptr && aResult->mJoinerUdpPort > 0)
if (aResult != nullptr)
{
SaveDiscoveredJoinerRouter(*aResult);
}
@@ -270,9 +270,11 @@ void Joiner::SaveDiscoveredJoinerRouter(const Mle::DiscoverScanner::ScanResult &
{
uint8_t priority;
bool doesAllowAny;
JoinerRouter *end = GetArrayEnd(mJoinerRouters);
JoinerRouter *end;
JoinerRouter *entry;
VerifyOrExit(aResult.mJoinerUdpPort > 0);
doesAllowAny = AsCoreType(&aResult.mSteeringData).PermitsAllJoiners();
LogInfo("Joiner discover network: %s, pan:0x%04x, port:%d, chan:%d, rssi:%d, allow-any:%s",
@@ -284,6 +286,8 @@ void Joiner::SaveDiscoveredJoinerRouter(const Mle::DiscoverScanner::ScanResult &
// We keep the list sorted based on priority. Find the place to
// add the new result.
end = GetArrayEnd(mJoinerRouters);
for (entry = &mJoinerRouters[0]; entry < end; entry++)
{
if (priority > entry->mPriority)