This repository was archived by the owner on Apr 26, 2024. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
This repository was archived by the owner on Apr 26, 2024. It is now read-only.
The error responses from /leave do not conform to the spec. #13360
Copy link
Copy link
Open
Labels
A-LeaveLeaving a roomLeaving a roomA-Spec-Complianceplaces where synapse does not conform to the specplaces where synapse does not conform to the specS-MinorBlocks non-critical functionality, workarounds exist.Blocks non-critical functionality, workarounds exist.T-DefectBugs, crashes, hangs, security vulnerabilities, or other reported issues.Bugs, crashes, hangs, security vulnerabilities, or other reported issues.
Description
Description
The spec (https://spec.matrix.org/v1.3/client-server-api/#post_matrixclientv3roomsroomidleave) only allows two possible responses from a call to /leave. A 200 if the room was left, or 429 if the request was rate limited.
However, Synapse will return different responses depending on your, and your homeservers state in the room:
- Leaving a room that doesn't exist on the host returns "M_UNKNOWN" (Not a known room)
- Leaving a room on the host that I was never in (but the host is still joined to via another user) will result in a M_FORBIDDEN.
- Leaving a room that I was previously in will always no-op with a 200.
The spec is unfortunately doesn't define the behaviour for trying to leave a room when you were never part of it, but my feeling is that it should no-op in a similar fashion to reinviting users, or rejoining a room also no-op.
Steps to reproduce
For case 1:
- Try to
/leave
a random roomID that you totally made up. - Observe the error
For case 2:
- Create a room your homeserver
- Try to /leave that room from another user who was never joined to it.
- Observe the error
For case 3:
- Create a room.
- Leave the room.
- Leave the room (and repeat as much as you like)
- Observe a 200 response with an empty body.
Homeserver
half-shot.uk
Synapse Version
1.60.0
Installation Method
pip (from PyPI)
Platform
Probably not relevant
Relevant log output
Ditto
Anything else that would be useful to know?
No response
Metadata
Metadata
Assignees
Labels
A-LeaveLeaving a roomLeaving a roomA-Spec-Complianceplaces where synapse does not conform to the specplaces where synapse does not conform to the specS-MinorBlocks non-critical functionality, workarounds exist.Blocks non-critical functionality, workarounds exist.T-DefectBugs, crashes, hangs, security vulnerabilities, or other reported issues.Bugs, crashes, hangs, security vulnerabilities, or other reported issues.