-
Notifications
You must be signed in to change notification settings - Fork 385
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MSC4233: Remembering which server a user knocked through #4233
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Implementation requirements:
- Client(?)
- Server
{"type": "m.room.name", "state_key": "", "content": {"name": "My Room"}} | ||
] | ||
}, | ||
"knock_servers": [ // new property |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i wonder if via
might be clearer?
Servers may not have already tracked this, so information will be lacking for already-knocked rooms. | ||
Clients should expect errors, per usual, when attempting to call the summary API or any other endpoint. | ||
|
||
## Alternatives |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
presumably another option would be for the server to silently remember the knock server on behalf of the client and add an implicit via when they provide a raw room id?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This would also mean that there would be no client implementation requirements, which would help this proposal proliferate through the ecosystem faster.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The MSC already requires the server to track it, so I guess it's an open question for whether we want to continue using via
for things, or have servers remember stuff.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This MSC also applies to rescinding knocks: servers don't know what server to make/send_leave
through remotely.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This proposal currently doesn't help in the case of the user attempting to rescind a knock (see element-hq/synapse#18030 for some discussion) as POST /_matrix/client/v3/rooms/{roomId}/leave
does not have a via
parameter. It did not need one originally, as before knocking it was assumed the user had to be in the room already in order to /leave
.
To support rescinding knocks over federation, either this proposal adds a via
parameter to /leave
as well, or we just make adding remotes entirely server-side as https://github.com/matrix-org/matrix-spec-proposals/pull/4233/files#r1862610665 describes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/leave
is also used to decline invites, which is also subject to the same sort of issues (if the sender's server is down).
Overall, if we do want to add via
to /leave
, I'd ask that it be a dedicated MSC. If we want to move away from client-provided via
s, that may also be a different MSC.
Rendered
I am Director of Standards Development at The Matrix.org Foundation C.I.C., Matrix Spec Core Team (SCT) member, employed by Element, and operate the t2bot.io service. This proposal is written and published with my role as a member of the SCT.