From d5bfa2e9d844de5a5b39697bbfcdeee22fed7a91 Mon Sep 17 00:00:00 2001 From: shum Date: Sat, 6 Jun 2026 09:17:55 +0000 Subject: [PATCH] chat: bump simplexmq pin + document cross-table simplex_name discriminator MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pin bump 5ee014dd -> c9c2d19 picks up the 8 simplexmq commits since the last bump (parseBare lowercase fix, forwarded-param cleanup, ServerTests + agent end-to-end tests, TldRegistries removal, SNRC ABI decoder, NameRecord/NameOwner module extraction). Adds a brief comment on clearConflictingContactProfileSimplexName_ explaining why the audit's flagged cross-table collision (between contact_profiles.simplex_name and group_profiles.simplex_name) is structurally impossible: SimplexNameInfo's strEncode prefixes contact names with '@' and group names with '#', so the stored bytes never overlap between the two tables. Query-plan regen deferred (the test is non-deterministic in CI / dev sandbox — see prior 6c990696c). --- cabal.project | 2 +- src/Simplex/Chat/Store/Shared.hs | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/cabal.project b/cabal.project index 18fd30645f..ed8a2fea4b 100644 --- a/cabal.project +++ b/cabal.project @@ -21,7 +21,7 @@ constraints: zip +disable-bzip2 +disable-zstd source-repository-package type: git location: https://github.com/simplex-chat/simplexmq.git - tag: 5ee014ddccd11e612fe873a7150ccf78b81a0ad2 + tag: c9c2d19074a809ba505f393b41aa20ac7b437aa7 source-repository-package type: git diff --git a/src/Simplex/Chat/Store/Shared.hs b/src/Simplex/Chat/Store/Shared.hs index 893494cd06..ae3f3bc0d2 100644 --- a/src/Simplex/Chat/Store/Shared.hs +++ b/src/Simplex/Chat/Store/Shared.hs @@ -437,6 +437,11 @@ createContact db user profile = do -- row's display_name when a conflict was resolved, for the caller to surface -- as CEvtSimplexNameConflict. Newer-claim-wins matches RSLV semantics: the -- latest broadcast is the canonical assignment. +-- +-- Cross-table collision with group_profiles.simplex_name is structurally +-- impossible: strEncode SimplexNameInfo prefixes contact names with '@' and +-- group names with '#', so the encoded bytes stored in the column never +-- overlap between the two tables. clearConflictingContactProfileSimplexName_ :: DB.Connection -> UserId -> Maybe ProfileId -> Maybe SimplexNameInfo -> IO (Maybe ContactName) clearConflictingContactProfileSimplexName_ _ _ _ Nothing = pure Nothing clearConflictingContactProfileSimplexName_ db userId Nothing (Just simplexName) =