From 1ab97ddbe588cd2d84efc32c7f6eb1dee580754b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20K=C3=B6sters?= Date: Fri, 11 Mar 2022 13:38:39 +0100 Subject: [PATCH] state-res: Fix knocking support --- crates/ruma-state-res/src/event_auth.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/crates/ruma-state-res/src/event_auth.rs b/crates/ruma-state-res/src/event_auth.rs index 707e9408..f34a010a 100644 --- a/crates/ruma-state-res/src/event_auth.rs +++ b/crates/ruma-state-res/src/event_auth.rs @@ -71,7 +71,9 @@ pub fn auth_types_for_event( let content: RoomMemberContentFields = from_json_str(content.get())?; if let Some(Ok(membership)) = content.membership.map(|m| m.deserialize()) { - if [MembershipState::Join, MembershipState::Invite].contains(&membership) { + if [MembershipState::Join, MembershipState::Invite, MembershipState::Knock] + .contains(&membership) + { let key = (EventType::RoomJoinRules, "".to_owned()); if !auth_types.contains(&key) { auth_types.push(key); @@ -516,7 +518,8 @@ fn valid_membership_change( warn!(?target_user_membership_event_id, "Banned user can't join"); false } else { - let invite_allowed = join_rules == JoinRule::Invite + let invite_allowed = (join_rules == JoinRule::Invite + || room_version.allow_knocking && join_rules == JoinRule::Knock) && (target_user_current_membership == MembershipState::Join || target_user_current_membership == MembershipState::Invite);