From 95c0914809e61c0d8f7a0a2b4b5ee484efc2d216 Mon Sep 17 00:00:00 2001 From: Alexander Bondarenko <486682+dpwiz@users.noreply.github.com> Date: Sat, 24 Feb 2024 16:54:51 +0200 Subject: [PATCH] agent: speed up SMP clientDisconnected (#1011) --- src/Simplex/Messaging/Agent/TRcvQueues.hs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Simplex/Messaging/Agent/TRcvQueues.hs b/src/Simplex/Messaging/Agent/TRcvQueues.hs index 38b9a6d47..ce2c2da32 100644 --- a/src/Simplex/Messaging/Agent/TRcvQueues.hs +++ b/src/Simplex/Messaging/Agent/TRcvQueues.hs @@ -52,11 +52,11 @@ getSessQueues tSess (TRcvQueues qs) = M.foldl' addQ [] <$> readTVar qs addQ qs' rq = if rq `isSession` tSess then rq : qs' else qs' getDelSessQueues :: (UserId, SMPServer, Maybe ConnId) -> TRcvQueues -> STM [RcvQueue] -getDelSessQueues tSess (TRcvQueues qs) = stateTVar qs $ M.foldl' addQ ([], M.empty) +getDelSessQueues tSess (TRcvQueues qs) = stateTVar qs $ \qs' -> M.foldl' addQ ([], qs') qs' where - addQ (removed, qs') rq - | rq `isSession` tSess = (rq : removed, qs') - | otherwise = (removed, M.insert (qKey rq) rq qs') + addQ acc@(removed, qs') rq + | rq `isSession` tSess = (rq : removed, M.delete (qKey rq) qs') + | otherwise = acc isSession :: RcvQueue -> (UserId, SMPServer, Maybe ConnId) -> Bool isSession rq (uId, srv, connId_) =