on the knocking homeserver to inform it that its knock has been accepted.
on the knocking homeserver to inform it that the knock has been accepted.
The knocking homeserver should assume an invite to a room it has knocked on means
The knocking homeserver should assume an invite to a room it has knocked on means
that its knock has been accepted, even if the invite was not explicitly
that its knock has been accepted, even if the invite was not explicitly
@ -117,7 +119,6 @@ related to the knock attempt.
The knock has been rejected by someone in the room.
The knock has been rejected by someone in the room.
XXX: There is also an open question here about who should be able to reject a
XXX: There is also an open question here about who should be able to reject a
knock. When revoking an invite for a user, perhaps counter-intuitively, you
knock. When revoking an invite for a user, perhaps counter-intuitively, you
need to have a high enough power level to kick users, rather than invite
need to have a high enough power level to kick users, rather than invite
@ -151,7 +152,9 @@ if it is sent by the homeserver we originally knocked through. We know this
homeserver is (or at least was) in the room, so they're probably telling the
homeserver is (or at least was) in the room, so they're probably telling the
truth. This is almost an edge case though, as while you'll knock through one
truth. This is almost an edge case though, as while you'll knock through one
homeserver in the room, there's no guarantee that the admin that denies your
homeserver in the room, there's no guarantee that the admin that denies your
knock will be on the same homeserver you knocked through. Perhaps the homeserver you knocked through could listen for this and then send the event back to you - but what if it goes offline in the meantime?
knock will be on the same homeserver you knocked through. Perhaps the
homeserver you knocked through could listen for this and then send the event
back to you - but what if it goes offline in the meantime?
As such, this feature working over federation is de-scoped for now, and left
As such, this feature working over federation is de-scoped for now, and left
to a future MSC which can solve this problem across the board for all
to a future MSC which can solve this problem across the board for all
@ -162,7 +165,8 @@ they have access to the events it references.
### Membership change to `ban`
### Membership change to `ban`
The knock has been rejected by someone.
The knock has been rejected by someone in the room and the user has been
banned, and is unable to send further knocks.
This one is fairly straightforward. Someone with the appropriate power levels
This one is fairly straightforward. Someone with the appropriate power levels
in the room bans the user. This will have the same effect as rejecting the
in the room bans the user. This will have the same effect as rejecting the
@ -174,6 +178,9 @@ If the user is unbanned, then knocks will be accepted again.
To ban the user, the client should call [`POST
To ban the user, the client should call [`POST
/_matrix/client/r0/rooms/{roomId}/ban`](https://matrix.org/docs/spec/client_server/r0.6.1#post-matrix-client-r0-rooms-roomid-ban) with the user ID of the knocking user in the JSON body.
/_matrix/client/r0/rooms/{roomId}/ban`](https://matrix.org/docs/spec/client_server/r0.6.1#post-matrix-client-r0-rooms-roomid-ban) with the user ID of the knocking user in the JSON body.
Informing the knocking user about the update is the same as rejecting the
knock.
## Client-Server API
## Client-Server API
Two new endpoints are introduced in the Client-Server API (similarly to
Two new endpoints are introduced in the Client-Server API (similarly to