Skip to content

Commit

Permalink
Fix handling of non-permitted messages in ExchangeContext. (project-c…
Browse files Browse the repository at this point in the history
…hip#33148)

They should not count as responses, since we don't notify our delegate about
them.
  • Loading branch information
bzbarsky-apple authored and andreilitvin committed May 3, 2024
1 parent 69faf5f commit 2608aae
Showing 1 changed file with 17 additions and 12 deletions.
29 changes: 17 additions & 12 deletions src/messaging/ExchangeContext.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -592,21 +592,26 @@ CHIP_ERROR ExchangeContext::HandleMessage(uint32_t messageCounter, const Payload
// Set kFlagReceivedAtLeastOneMessage to true since we have received at least one new application level message
SetHasReceivedAtLeastOneMessage(true);

if (IsResponseExpected())
// Don't send messages on to our delegate if our dispatch does not allow
// those messages. Those messages should also not be treated as responses,
// since if our delegate is expecting a response we will not notify it about
// these messages.
if (mDispatch.MessagePermitted(payloadHeader.GetProtocolID(), payloadHeader.GetMessageType()))
{
// Since we got the response, cancel the response timer.
CancelResponseTimer();
if (IsResponseExpected())
{
// Since we got the response, cancel the response timer.
CancelResponseTimer();

// If the context was expecting a response to a previously sent message, this message
// is implicitly that response.
SetResponseExpected(false);
}
// If the context was expecting a response to a previously sent message, this message
// is implicitly that response.
SetResponseExpected(false);
}

// Don't send messages on to our delegate if our dispatch does not allow
// those messages.
if (mDelegate != nullptr && mDispatch.MessagePermitted(payloadHeader.GetProtocolID(), payloadHeader.GetMessageType()))
{
return mDelegate->OnMessageReceived(this, payloadHeader, std::move(msgBuf));
if (mDelegate != nullptr)
{
return mDelegate->OnMessageReceived(this, payloadHeader, std::move(msgBuf));
}
}

DefaultOnMessageReceived(this, payloadHeader.GetProtocolID(), payloadHeader.GetMessageType(), messageCounter,
Expand Down

0 comments on commit 2608aae

Please sign in to comment.