From bab6b7b54645e9b58e9fd06dea255c5f94ec7ad7 Mon Sep 17 00:00:00 2001 From: jepenven-silabs Date: Fri, 5 Nov 2021 09:13:15 -0400 Subject: [PATCH 1/2] Add Ack check in group msg --- src/transport/SessionManager.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/transport/SessionManager.cpp b/src/transport/SessionManager.cpp index ad291f5054f2c9..b5ceb7d7523a27 100644 --- a/src/transport/SessionManager.cpp +++ b/src/transport/SessionManager.cpp @@ -488,17 +488,24 @@ void SessionManager::SecureGroupMessageDispatch(const PacketHeader & packetHeade ExitNow(err = CHIP_NO_ERROR); } + // Group Messages should never send an Ack + if (payloadHeader.NeedsAck()) + { + ChipLogError(Inet, "Invalid condition found in protocol header"); + ExitNow(err = CHIP_ERROR_INCORRECT_STATE); + } + // TODO: Handle Group message counter here spec 4.7.3 // spec 4.5.1.2 for msg counter + if (isDuplicate == SessionManagerDelegate::DuplicateMessage::Yes) { ChipLogDetail(Inet, "Received a duplicate message with MessageCounter:" ChipLogFormatMessageCounter " on exchange " ChipLogFormatExchangeId, - packetHeader.GetMessageCounter(), ChipLogValueExchangeIdFromSentHeader(payloadHeader)); + packetHeader.GetMessageCounter(), ChipLogValueExchangeIdFromReceivedHeader(payloadHeader)); - // If it's a duplicate message, let's drop it right here to save CPU - // cycles on further message processing. + // If it's a duplicate message, let's drop it right here to save CPU cycles ExitNow(err = CHIP_NO_ERROR); } From 4616538932be40ced2965c241f1c5d0401a07343 Mon Sep 17 00:00:00 2001 From: jepenven-silabs Date: Fri, 5 Nov 2021 11:16:40 -0400 Subject: [PATCH 2/2] error log changed --- src/transport/SessionManager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/transport/SessionManager.cpp b/src/transport/SessionManager.cpp index b5ceb7d7523a27..d3d0e80df9f950 100644 --- a/src/transport/SessionManager.cpp +++ b/src/transport/SessionManager.cpp @@ -491,7 +491,7 @@ void SessionManager::SecureGroupMessageDispatch(const PacketHeader & packetHeade // Group Messages should never send an Ack if (payloadHeader.NeedsAck()) { - ChipLogError(Inet, "Invalid condition found in protocol header"); + ChipLogError(Inet, "Unexpected ACK requested for group message"); ExitNow(err = CHIP_ERROR_INCORRECT_STATE); }