diff --git a/src/core/thread/dua_manager.cpp b/src/core/thread/dua_manager.cpp index fbbce8cb0..d684fc2e3 100644 --- a/src/core/thread/dua_manager.cpp +++ b/src/core/thread/dua_manager.cpp @@ -663,7 +663,6 @@ Error DuaManager::ProcessDuaResponse(Coap::Message &aMessage) break; case ThreadStatusTlv::kDuaInvalid: case ThreadStatusTlv::kDuaDuplicate: - SendAddressNotification(target, static_cast(status), *child); IgnoreError(child->RemoveIp6Address(target)); mChildDuaMask.Set(mChildIndexDuaRegistering, false); mChildDuaRegisteredMask.Set(mChildIndexDuaRegistering, false); @@ -674,6 +673,11 @@ Error DuaManager::ProcessDuaResponse(Coap::Message &aMessage) UpdateReregistrationDelay(); break; } + + if (status != ThreadStatusTlv::kDuaSuccess) + { + SendAddressNotification(target, static_cast(status), *child); + } } #endif // OPENTHREAD_FTD && OPENTHREAD_CONFIG_TMF_PROXY_DUA_ENABLE