diff --git a/book/changelog.md b/book/changelog.md index cd3af642..138329c3 100644 --- a/book/changelog.md +++ b/book/changelog.md @@ -186,6 +186,10 @@ This will be the first release of Grapevine since it was forked from Conduit ([!96](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/96)) 18. Fixed incoming HTTP/2 requests failing federation signature check. ([!104](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/104)) +19. Return 403 instead of 500 when joins to a local-only room are denied. + Consequently fixes Heisenbridge being unable to join puppeted users to its + rooms ([#85](https://gitlab.computer.surgery/matrix/grapevine/-/issues/85)). + ([!127](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/127)) ### Added diff --git a/src/api/client_server/membership.rs b/src/api/client_server/membership.rs index 00f1db9e..f9ce1163 100644 --- a/src/api/client_server/membership.rs +++ b/src/api/client_server/membership.rs @@ -639,8 +639,11 @@ async fn join_room_by_id_helper( "We couldn't do the join locally, maybe federation can help to \ satisfy the restricted join requirements" ); - let (make_join_response, remote_server) = - make_join_request(sender_user, room_id, servers).await?; + let Ok((make_join_response, remote_server)) = + make_join_request(sender_user, room_id, servers).await + else { + return Err(error); + }; let room_version_id = match make_join_response.room_version { Some(room_version_id)