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.
This commit is contained in:
Antonio Scandurra
2022-04-11 16:27:14 +02:00
parent c3927c541f
commit 273ee0ae58
+8 -9
View File
@@ -596,20 +596,19 @@ impl Server {
self: Arc<Server>,
request: TypedEnvelope<proto::SaveBuffer>,
) -> tide::Result<proto::BufferSaved> {
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())