Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make SetUpCodePairer only browse for nodes that are in commissioning mode. #17356

Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion src/controller/SetUpCodePairer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -138,9 +138,23 @@ CHIP_ERROR SetUpCodePairer::StartDiscoverOverIP(SetupPayload & payload)
: Dnssd::DiscoveryFilterType::kLongDiscriminator;
currentFilter.code =
payload.isShortDiscriminator ? static_cast<uint16_t>((payload.discriminator >> 8) & 0x0F) : payload.discriminator;

// We're going to ensure that anything we discover matches currentFilter
Damian-Nordic marked this conversation as resolved.
Show resolved Hide resolved
// before we use it, which will do our discriminator checks for us.
//
// For the actual discovery, use a "commissionable nodes only" subtype.
// This avoids a problem we can run into if we use the discriminator-based
// subtypes where we discover a (possibly stale) advertisement for a
// non-commissionable (CM=0) node, then it becomes commissionable but we
// don't notice that because it does not add or remove SRV records, just
// updates TXT records. But in this situation a PTR record _will_ get
// added, so that's what we look for.
Dnssd::DiscoveryFilter filter;
filter.type = Dnssd::DiscoveryFilterType::kCommissioningMode;

// Handle possibly-sync callbacks.
mWaitingForDiscovery[kIPTransport] = true;
CHIP_ERROR err = mCommissioner->DiscoverCommissionableNodes(currentFilter);
CHIP_ERROR err = mCommissioner->DiscoverCommissionableNodes(filter);
if (err != CHIP_NO_ERROR)
{
mWaitingForDiscovery[kIPTransport] = false;
Expand Down