Repository navigation
regression: XMPP hosted rooms leave occupants uninformed of corrections, topic changes and kicks - #43317
regression: XMPP hosted rooms leave occupants uninformed of corrections, topic changes and kicks#43317sampaiodiego wants to merge 3 commits into
Conversation
…corrections message-corrections D2: a hosted room rebuilt every message it relayed from body and id alone, so a correction from one XMPP occupant reached the others without its <replace/> and their clients showed it as a new message. The room now relays the replace id it parsed, as R5 requires.
hosted-muc D3: a topic changed in Rocket.Chat became the subject only for whoever joined next, while occupants already in the room kept the old one. The room now sends every remote occupant the new subject when it changes, as XEP-0045 §8.1 asks, from the bare room JID since no occupant made the change. The hosted-muc spec states this as R19.
…sted room hosted-muc D1: when Rocket.Chat removed an XMPP user from a room it hosts, the other occupants got the unavailable presence with status 307 but the removed user did not, because the occupant was dropped before the recipients were listed. Their client kept showing them in the room. The kicked occupant now gets their own unavailable presence with 307 and 110 first (XEP-0045 §8.2); R9 says so.
|
Looks like this PR is not ready to merge, because of the following issues:
Please fix the issues and try again If you have any trouble, please check the PR guidelines |
|
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #43317 +/- ##
===========================================
+ Coverage 72.33% 72.34% +0.01%
===========================================
Files 5392 5392
Lines 232584 232592 +8
Branches 44434 44532 +98
===========================================
+ Hits 168230 168275 +45
+ Misses 59816 59765 -51
- Partials 4538 4552 +14
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
Proposed changes (including videos or screenshots)
Fixes three things XMPP occupants of a room Rocket.Chat hosts were never told. All three are in the protocol core's
MucRoom, with no Rocket.Chat-side changes. There is one commit per defect, and each un-skips the test that pins it and updates the spec in the same commit.<replace/>and showed as a new message.groupchatwith the new<subject/>when it changes (XEP-0045 §8.1). It comes from the bare room JID, since no occupant made the change. Re-registering the room with an unchanged topic sends nothing.unavailablepresence, but the removed user did not, so their client kept showing them in the room.unavailablepresence with 307 and 110 (XEP-0045 §8.2), then the others get 307.No changeset: the XMPP server has not been released yet (
.changeset/native-xmpp-server.mdis still pending).Issue(s)
Steps to test or reproduce
yarn testunitinee/packages/xmpp-server: 25 suites, 229 passed, 4 skipped. There is a newMucRoomunit test per fix, and a mutation check confirmed the correction-relay test fails without its fix.End-to-end against the Openfire stack,
hosted-muc.spec.ts, run as the whole "private group" block plus the topic test, because those tests build on each other. All three failed on thedevelopservice image:undefined !== 'e2e-…'.On this branch's image the block passes 14/14.
Full e2e suite:
develop65 pass, 1 fail, 12 skipped; this branch 68 pass, 1 fail, 9 skipped. The failure is presence R5 on both, an order-dependent test fixed in test(xmpp-server): run the account service and DDP streamer in the Openfire stack #43299.Further comments
MucRoom.kicktake the status code now, so the ban fix can send 301 (XEP-0045 §9.1). I left that to the ban PR, which is the first caller to need it.docs/README.md's example// Known defect:anchor pointed at hosted-muc D1. It now points at hosted-muc D5, which stays open. The worked examples indocs/examples.mdthat tell how D1 and D3 were recorded and fixed are left as they are.🤖 Generated with Claude Code