From 0427d2e578e34f78631fcb239abd356264a49fe4 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> Date: Sat, 4 Feb 2023 12:25:11 +0000 Subject: [PATCH] core: prevent failure to acknowledge a group message in case its parsing or saving fails (potential cause for stuck delivery) (#1887) --- src/Simplex/Chat.hs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Simplex/Chat.hs b/src/Simplex/Chat.hs index 6cc899e1c5..c19c222f0d 100644 --- a/src/Simplex/Chat.hs +++ b/src/Simplex/Chat.hs @@ -2102,8 +2102,8 @@ processAgentMessageConn user@User {userId} corrId agentConnId agentMessage = do saveConnInfo conn connInfo MSG meta _msgFlags msgBody -> do cmdId <- createAckCmd conn - _ <- saveRcvMSG conn (ConnectionId connId) meta msgBody cmdId - withAckMessage agentConnId cmdId meta $ pure () + withAckMessage agentConnId cmdId meta . void $ + saveRcvMSG conn (ConnectionId connId) meta msgBody cmdId SENT msgId -> sentMsgDeliveryEvent conn msgId OK -> @@ -2345,9 +2345,9 @@ processAgentMessageConn user@User {userId} corrId agentConnId agentMessage = do when (memberCategory m == GCPreMember) $ probeMatchingContacts ct connectedIncognito MSG msgMeta _msgFlags msgBody -> do cmdId <- createAckCmd conn - msg@RcvMessage {chatMsgEvent = ACME _ event} <- saveRcvMSG conn (GroupId groupId) msgMeta msgBody cmdId - updateChatLock "groupMessage" event - withAckMessage agentConnId cmdId msgMeta $ + withAckMessage agentConnId cmdId msgMeta $ do + msg@RcvMessage {chatMsgEvent = ACME _ event} <- saveRcvMSG conn (GroupId groupId) msgMeta msgBody cmdId + updateChatLock "groupMessage" event case event of XMsgNew mc -> canSend $ newGroupContentMessage gInfo m mc msg msgMeta XMsgUpdate sharedMsgId mContent ttl live -> canSend $ groupMessageUpdate gInfo m sharedMsgId mContent msg msgMeta ttl live