From a908de6416cc2452a9aaf6c0cd2a2596bfc8376b Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Fri, 7 Aug 2026 21:27:24 +0000 Subject: [PATCH] server: prevent concurrent SKEY commands from overwriting queue sender key (#1844) * server: prevent concurrent SKEY commands from overwriting queue sender key * wip --- src/Simplex/Messaging/Server/QueueStore/Postgres.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Simplex/Messaging/Server/QueueStore/Postgres.hs b/src/Simplex/Messaging/Server/QueueStore/Postgres.hs index ce1cf25db..8738bee99 100644 --- a/src/Simplex/Messaging/Server/QueueStore/Postgres.hs +++ b/src/Simplex/Messaging/Server/QueueStore/Postgres.hs @@ -342,7 +342,7 @@ instance StoreQueueClass q => QueueStoreClass q (PostgresQueueStore q) where withQueueRec sq "secureQueue" $ \q -> do verify q assertUpdated $ withDB' "secureQueue" st $ \db -> - DB.execute db "UPDATE msg_queues SET sender_key = ? WHERE recipient_id = ? AND deleted_at IS NULL" (sKey, rId) + DB.execute db "UPDATE msg_queues SET sender_key = ? WHERE recipient_id = ? AND deleted_at IS NULL AND (sender_key IS NULL OR sender_key = ?)" (sKey, rId, sKey) atomically $ writeTVar (queueRec sq) $ Just q {senderKey = Just sKey} withLog "secureQueue" st $ \s -> logSecureQueue s rId sKey where