From be6b198730df0d700229b6d0a250cf070abfdff1 Mon Sep 17 00:00:00 2001 From: Abtin Keshavarzian Date: Tue, 16 Jul 2024 08:57:49 -0700 Subject: [PATCH] [mesh-forwarder] use `RemoveMessageIfNoPendingTx()` (#10513) This commit replaces direct calls to `DequeueAndFree()` with `RemoveMessageIfNoPendingTx()` in `EvictMessage()`, `HandleResolved()`, and `RemoveDataResponseMessages()`. This promotes consistency in message removal logic and eliminates the need to check if the removed message is `mSendMessage`, as this is already handled by `RemoveMessageIfNoPendingTx()`. --- src/core/thread/mesh_forwarder.cpp | 15 +++++++-------- src/core/thread/mesh_forwarder_ftd.cpp | 9 ++------- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/src/core/thread/mesh_forwarder.cpp b/src/core/thread/mesh_forwarder.cpp index 3eb324339..004bbe834 100644 --- a/src/core/thread/mesh_forwarder.cpp +++ b/src/core/thread/mesh_forwarder.cpp @@ -208,6 +208,8 @@ void MeshForwarder::EvictMessage(Message &aMessage) OT_ASSERT(queue != nullptr); + LogMessage(kMessageEvict, aMessage, kErrorNoBufs); + if (queue == &mSendQueue) { #if OPENTHREAD_FTD @@ -218,15 +220,12 @@ void MeshForwarder::EvictMessage(Message &aMessage) #endif FinalizeMessageDirectTx(aMessage, kErrorNoBufs); - - if (mSendMessage == &aMessage) - { - mSendMessage = nullptr; - } + RemoveMessageIfNoPendingTx(aMessage); + } + else + { + queue->DequeueAndFree(aMessage); } - - LogMessage(kMessageEvict, aMessage, kErrorNoBufs); - queue->DequeueAndFree(aMessage); } void MeshForwarder::ResumeMessageTransmissions(void) diff --git a/src/core/thread/mesh_forwarder_ftd.cpp b/src/core/thread/mesh_forwarder_ftd.cpp index 6f7039640..603c7ed14 100644 --- a/src/core/thread/mesh_forwarder_ftd.cpp +++ b/src/core/thread/mesh_forwarder_ftd.cpp @@ -166,7 +166,7 @@ void MeshForwarder::HandleResolved(const Ip6::Address &aEid, Error aError) { LogMessage(kMessageDrop, message, kErrorAddressQuery); FinalizeMessageDirectTx(message, kErrorAddressQuery); - mSendQueue.DequeueAndFree(message); + RemoveMessageIfNoPendingTx(message); continue; } @@ -337,14 +337,9 @@ void MeshForwarder::RemoveDataResponseMessages(void) } } - if (mSendMessage == &message) - { - mSendMessage = nullptr; - } - LogMessage(kMessageDrop, message); FinalizeMessageDirectTx(message, kErrorDrop); - mSendQueue.DequeueAndFree(message); + RemoveMessageIfNoPendingTx(message); } }