XMPP: geen chat-geschiedenis (MAM) — late joiners en reconnecters verliezen het hele gesprek #1425
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck#1425
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Bevinding
lib/xmpp/xmpp_chat.dart— de chat-lijst (_messages, regel 106) is puur in-memory en wordt niet gesynchroniseerd met MAM (XEP-0313 Message Archive Management) of enige andere vorm van server-side geschiedenis. Een deelnemer die laat joint of na een reconnect terugkomt, ziet alleen berichten die ná zijn join/return zijn verzonden — het hele eerdere gesprek is weg.De snapshot-channel (
xmpp_snapshot.dart) stuurt wel de deck-baseline opnieuw naar newcomers (de slide-lijst op een versie), maar de chat-geschiedenis is geen onderdeel van de snapshot. Chat en deck zijn gescheiden kanalen.Wat er gebeurt per scenario
Late joiner: een deelnemer die 10 minuten na sessie-start joinet, ziet geen van de 10 minuten aan chatberichten die al zijn verzonden. Hij ziet alleen berichten vanaf zijn eigen join.
Reconnect: een deelnemer die na een netwerkdrop terugkomt (als reconnect is aangesloten, zie #1421), mist alle chatberichten die tijdens de drop zijn verzonden. De
_pending-buffer in chat vangt alleen berichten die ná de reconnect-join zijn ontvangen — niet de berichten die tijdens de drop zijn verzonden.Nieuwe device van dezelfde gebruiker: een gebruiker die van device wisselt, ziet geen geschiedenis — elk device start met een lege chat-lijst.
Trust boundary
Interne architectuur — geen externe aanvaller. Een normaal unhappy-flow scenario (late join, reconnect, device-wissel) volstaat.
Impact
Oplossingsrichting
mod_muc_mamdoet dat). De berichten worden verzegeld ontvangen en kunnen worden geopend met de epoch-sleutel. De sealed-id-dedup (§4) voorkomt duplicaten bij overlap met live-ontvangst.Locatie
lib/xmpp/xmpp_chat.dartregels 106–114 (_messagesin-memory, geen persistentie of MAM)lib/xmpp/xmpp_snapshot.dart(snapshot dekt alleen deck, niet chat)lib/xmpp/xmpp_collab_launch.dartregels 167–205 (syncNowstuurt baseline naar newcomers, maar geen chat-geschiedenis)Severity
MEDIUM — geen crash of data-corruptie, maar chat-geschiedenisverlies is een merkbare stabiliteitsprobleem in samenwerking.