From 273ee0ae58032d400b336d8e4f1344c27527a923 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Mon, 11 Apr 2022 16:14:41 +0200 Subject: [PATCH] Acquire guest connection ids after save request has been forwarded This fixes a bug that would cause the server to broadcast the save message to guests that have potentially left the project. --- crates/server/src/rpc.rs | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/crates/server/src/rpc.rs b/crates/server/src/rpc.rs index c63f57f42c1735d2273d3ab0fc494c1e3e31d5e6..2fe0931c4ca8c6e97bfe1704e763a7f6d643e786 100644 --- a/crates/server/src/rpc.rs +++ b/crates/server/src/rpc.rs @@ -596,20 +596,19 @@ impl Server { self: Arc, request: TypedEnvelope, ) -> tide::Result { - let host; - let mut guests; - { - let state = self.state(); - let project = state.read_project(request.payload.project_id, request.sender_id)?; - host = project.host_connection_id; - guests = project.guest_connection_ids() - } - + let host = self + .state() + .read_project(request.payload.project_id, request.sender_id)? + .host_connection_id; let response = self .peer .forward_request(request.sender_id, host, request.payload.clone()) .await?; + let mut guests = self + .state() + .read_project(request.payload.project_id, request.sender_id)? + .connection_ids(); guests.retain(|guest_connection_id| *guest_connection_id != request.sender_id); broadcast(host, guests, |conn_id| { self.peer.forward_send(host, conn_id, response.clone())