Skip to content

Commit 6584829

Browse files
Prevent failure when Dnssd::ServiceAdvertiser is not initialized
1 parent a5400be commit 6584829

1 file changed

Lines changed: 11 additions & 5 deletions

File tree

src/app/server/Dnssd.cpp

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,7 @@ CHIP_ERROR DnssdServer::Advertise(bool commissionableNode, chip::Dnssd::Commissi
379379

380380
auto & mdnsAdvertiser = chip::Dnssd::ServiceAdvertiser::Instance();
381381

382-
ChipLogProgress(Discovery, "Advertise commission parameter vendorID=%u productID=%u discriminator=%04u/%02u cm=%u cp=%u jf=%u",
382+
ChipLogDetail(Discovery, "Advertise commission parameter vendorID=%u productID=%u discriminator=%04u/%02u cm=%u cp=%u jf=%u",
383383
advertiseParameters.GetVendorId().value_or(0), advertiseParameters.GetProductId().value_or(0),
384384
advertiseParameters.GetLongDiscriminator(), advertiseParameters.GetShortDiscriminator(),
385385
to_underlying(advertiseParameters.GetCommissioningMode()),
@@ -460,11 +460,15 @@ void DnssdServer::StartServer(Dnssd::CommissioningMode mode)
460460
SuccessOrLog(Dnssd::ServiceAdvertiser::Instance().Init(chip::DeviceLayer::UDPEndPointManager()), Discovery,
461461
"Failed to initialize advertiser");
462462

463-
SuccessOrLog(Dnssd::ServiceAdvertiser::Instance().RemoveServices(), Discovery, "Failed to remove advertised services");
463+
// No need to remove anything if it's not initialized
464+
if (Dnssd::ServiceAdvertiser::Instance().IsInitialized())
465+
{
466+
SuccessOrLog(Dnssd::ServiceAdvertiser::Instance().RemoveServices(), Discovery, "Failed to remove advertised services");
467+
}
464468

465469
SuccessOrLog(AdvertiseOperational(), Discovery, "Failed to advertise operational node");
466470

467-
if (mode != Dnssd::CommissioningMode::kDisabled)
471+
if (mode != Dnssd::CommissioningMode::kDisabled && Dnssd::ServiceAdvertiser::Instance().IsInitialized())
468472
{
469473
SuccessOrLog(AdvertiseCommissionableNode(mode), Discovery, "Failed to advertise commissionable node");
470474
}
@@ -494,8 +498,10 @@ void DnssdServer::StartServer(Dnssd::CommissioningMode mode)
494498
#if CHIP_DEVICE_CONFIG_ENABLE_COMMISSIONER_DISCOVERY
495499
SuccessOrLog(AdvertiseCommissioner(), Discovery, "Failed to advertise commissioner");
496500
#endif // CHIP_DEVICE_CONFIG_ENABLE_COMMISSIONER_DISCOVERY
497-
498-
SuccessOrLog(Dnssd::ServiceAdvertiser::Instance().FinalizeServiceUpdate(), Discovery, "Failed to finalize service update");
501+
if (Dnssd::ServiceAdvertiser::Instance().IsInitialized())
502+
{
503+
SuccessOrLog(Dnssd::ServiceAdvertiser::Instance().FinalizeServiceUpdate(), Discovery, "Failed to finalize service update");
504+
}
499505
}
500506

501507
#if CHIP_ENABLE_ROTATING_DEVICE_ID && defined(CHIP_DEVICE_CONFIG_ROTATING_DEVICE_ID_UNIQUE_ID)

0 commit comments

Comments
 (0)