connectedhomeip
connectedhomeip copied to clipboard
BindingManager invalidates CASE sessions when it shouldn't
Problem
In:
void BindingManager::FabricRemoved(CompressedFabricId compressedFabricId, FabricIndex fabricIndex)
{
mPendingNotificationMap.RemoveAllEntriesForFabric(fabricIndex);
mInitParams.mCASESessionManager->ReleaseSessionsForFabric(compressedFabricId);
}
This invalidates session from a place where this should not be done. The behavior of fabric removal in NOC cluster should suffice, and propagate the necessary session eviction.
Proposed Solution
- Remove
ReleaseSessionsForFabric
fromBindingManager
We still need to to fix this for V1.0.
V1 review: @mrjerryjohns and @tehampson to review and provide justification if this needs to be a v1.0 blocker.
Given the recent changes that @tehampson made to pivot OperationalSessionSetup
to now just be relevant during CASE establishment only, this isn't a P0 anymore.
When a fabric is removed, two things happen:
-
CleanupSessionsForFabric
is called, which will expire all sessions in theSessionManager
for that fabric. -
CASESession::OnFabricRemoved
will get called, which will terminate any pending session establishment and as a result, terminate any openOperationalSessionSetup
instances as well. Consequently, the call toReleaseSessionsForFabric
in BindingManager is just redundant.
Decreased blocking status based on comment from @mrjerryjohns above (Jerry added the p1 flag oringally)
Taking off p1 label.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.
This stale issue has been automatically closed. Thank you for your contributions.