diff --git a/src/api/client_server/membership.rs b/src/api/client_server/membership.rs index 34af9cdf..3b8920f8 100644 --- a/src/api/client_server/membership.rs +++ b/src/api/client_server/membership.rs @@ -509,6 +509,17 @@ pub(crate) async fn unban_user_route(body: Ruma) -> Res pub(crate) async fn forget_room_route(body: Ruma) -> Result { let sender_user = body.sender_user.as_ref().expect("user is authenticated"); + if services() + .rooms + .state_cache + .is_joined(sender_user, &body.room_id)? + { + return Err(Error::BadRequest( + ErrorKind::Unknown, + "You must leave the room before forgetting it", + )); + } + services() .rooms .state_cache