diff options
author | Timo Kösters <timo@koesters.xyz> | 2023-06-08 18:52:03 +0000 |
---|---|---|
committer | Timo Kösters <timo@koesters.xyz> | 2023-06-08 18:52:03 +0000 |
commit | 808b12f618b9fa9a2e9bf8cecdfdc60941cd492c (patch) | |
tree | 3c04cb41083d2b550189846245c3be5e8d31365c /src/api/client_server | |
parent | 422ee40107894758ec923d502bebd8843505a7d5 (diff) | |
parent | faa9208a3e484756f7e535ca0d51488fbf1e4dbe (diff) | |
download | conduit-808b12f618b9fa9a2e9bf8cecdfdc60941cd492c.zip |
Merge branch 'restricted' into 'next'
fix: restricted room error is now FORBIDDEN
See merge request famedly/conduit!478
Diffstat (limited to 'src/api/client_server')
-rw-r--r-- | src/api/client_server/membership.rs | 11 | ||||
-rw-r--r-- | src/api/client_server/session.rs | 2 |
2 files changed, 10 insertions, 3 deletions
diff --git a/src/api/client_server/membership.rs b/src/api/client_server/membership.rs index cd26372..11e37e6 100644 --- a/src/api/client_server/membership.rs +++ b/src/api/client_server/membership.rs @@ -106,6 +106,7 @@ pub async fn join_room_by_id_or_alias_route( ); servers.push(room_id.server_name().to_owned()); + (servers, room_id) } Err(room_alias) => { @@ -598,7 +599,7 @@ async fn join_room_by_id_helper( info!("send_join finished"); if let Some(signed_raw) = &send_join_response.room_state.event { - info!("There is a signed event. This room is probably using restricted joins"); + info!("There is a signed event. This room is probably using restricted joins. Adding signature to our event"); let (signed_event_id, signed_value) = match gen_event_id_canonical_json(signed_raw, &room_version_id) { Ok(t) => t, @@ -901,7 +902,13 @@ async fn join_room_by_id_helper( Err(e) => e, }; - if !restriction_rooms.is_empty() { + if !restriction_rooms.is_empty() + && servers + .iter() + .filter(|s| *s != services().globals.server_name()) + .count() + > 0 + { info!( "We couldn't do the join locally, maybe federation can help to satisfy the restricted join requirements" ); diff --git a/src/api/client_server/session.rs b/src/api/client_server/session.rs index b3328e4..8908fef 100644 --- a/src/api/client_server/session.rs +++ b/src/api/client_server/session.rs @@ -108,7 +108,7 @@ pub async fn login_route(body: Ruma<login::v3::Request>) -> Result<login::v3::Re if !body.from_appservice { return Err(Error::BadRequest( ErrorKind::Forbidden, - "Forbidden login type." + "Forbidden login type.", )); }; let username = if let UserIdentifier::UserIdOrLocalpart(user_id) = identifier { |