diff --git a/src/core/thread/mesh_forwarder_ftd.cpp b/src/core/thread/mesh_forwarder_ftd.cpp index 874e3c5b6..eb2c9f79e 100644 --- a/src/core/thread/mesh_forwarder_ftd.cpp +++ b/src/core/thread/mesh_forwarder_ftd.cpp @@ -81,7 +81,8 @@ void MeshForwarder::SendMessage(OwnedPtr aMessagePtr) for (Child &child : Get().Iterate(Child::kInStateValidOrRestoring)) { - if (!child.IsRxOnWhenIdle() && (destinedForAll || child.HasIp6Address(destination))) + if (!child.IsRxOnWhenIdle() && (destinedForAll || child.HasIp6Address(destination)) && + !child.HasIp6Address(ip6Header.GetSource())) { mIndirectSender.AddMessageForSleepyChild(message, child); }