Skip to content

Commit 66efbd0

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

1 file changed

Lines changed: 17 additions & 11 deletions

File tree

src/app/server/Dnssd.cpp

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -379,15 +379,15 @@ 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",
383-
advertiseParameters.GetVendorId().value_or(0), advertiseParameters.GetProductId().value_or(0),
384-
advertiseParameters.GetLongDiscriminator(), advertiseParameters.GetShortDiscriminator(),
385-
to_underlying(advertiseParameters.GetCommissioningMode()),
386-
advertiseParameters.GetCommissionerPasscodeSupported().value_or(false) ? 1 : 0,
382+
ChipLogDetail(Discovery, "Advertise commission parameter vendorID=%u productID=%u discriminator=%04u/%02u cm=%u cp=%u jf=%u",
383+
advertiseParameters.GetVendorId().value_or(0), advertiseParameters.GetProductId().value_or(0),
384+
advertiseParameters.GetLongDiscriminator(), advertiseParameters.GetShortDiscriminator(),
385+
to_underlying(advertiseParameters.GetCommissioningMode()),
386+
advertiseParameters.GetCommissionerPasscodeSupported().value_or(false) ? 1 : 0,
387387
#if CHIP_DEVICE_CONFIG_ENABLE_JOINT_FABRIC
388-
advertiseParameters.GetJointFabricMode().Raw()
388+
advertiseParameters.GetJointFabricMode().Raw()
389389
#else
390-
0 // Dummy value when Joint Fabric is disabled
390+
0 // Dummy value when Joint Fabric is disabled
391391
#endif // CHIP_DEVICE_CONFIG_ENABLE_JOINT_FABRIC
392392
);
393393

@@ -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)