knock->knock and rescinding of knocks are not allowed
@@ -36,8 +36,8 @@ There are restrictions to being able to set this membership.
### Current membership
Only users without a current membership or with their current membership
-being "leave" can knock on a room. This means that a user that is banned or
-currently in the room cannot knock on it.
+being "leave" can knock on a room. This means that a user that is banned, has
+already knocked or is currently in the room cannot knock on it.
### Join Rules
The `join_rule` of `m.room.join_rules` must be set to "invite" for a knock to
@@ -74,6 +74,14 @@ that user can be transitioned to the following possible states:
- `ban`: In this case, the knock was rejected and the user has been prevented
from sending further knocks.
+Users are not allowed to change their membership once set to `knock`, in
+order to prevent users from being able to knock multiple times and spam a
+room.
+
+XXX: So if you knock on a room that's then abandoned that's in your `/sync`
+forever? Clients should have a way to tell their server to hide and show
+knocks.
+
## Client-Server API
Two new endpoints are introduced in the Client-Server API (similarly to
join): `POST /_matrix/client/r0/rooms/{roomId}/knock` and
