diff --git a/src/core/thread/mle.cpp b/src/core/thread/mle.cpp index fa3f9e305..1707fe3eb 100644 --- a/src/core/thread/mle.cpp +++ b/src/core/thread/mle.cpp @@ -3006,10 +3006,17 @@ otError Mle::HandleAnnounce(const Message &aMessage, const Ip6::MessageInfo &aMe netif.GetMac().SetPanId(panid.GetPanId()); Start(false, true); } - else + else if (localTimestamp->Compare(timestamp) < 0) { SendAnnounce(static_cast(channel.GetChannel()), false); } + else + { + // do nothing + // timestamps are equal: no behaviour specified by the Thread spec. + // If SendAnnounce is executed at this point, there exists a scenario where + // multiple devices keep sending MLE Announce messages to one another indefinitely. + } exit: OT_UNUSED_VARIABLE(aMessageInfo);