state-res: Fix knocking support

This commit is contained in:
Timo Kösters 2022-03-11 13:38:39 +01:00 committed by GitHub
parent 23b8941361
commit 1ab97ddbe5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -71,7 +71,9 @@ pub fn auth_types_for_event(
let content: RoomMemberContentFields = from_json_str(content.get())?; let content: RoomMemberContentFields = from_json_str(content.get())?;
if let Some(Ok(membership)) = content.membership.map(|m| m.deserialize()) { 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()); let key = (EventType::RoomJoinRules, "".to_owned());
if !auth_types.contains(&key) { if !auth_types.contains(&key) {
auth_types.push(key); auth_types.push(key);
@ -516,7 +518,8 @@ fn valid_membership_change(
warn!(?target_user_membership_event_id, "Banned user can't join"); warn!(?target_user_membership_event_id, "Banned user can't join");
false false
} else { } 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::Join
|| target_user_current_membership == MembershipState::Invite); || target_user_current_membership == MembershipState::Invite);