From 3788efeadf7f7fd85246ba1afed5128905ad0f81 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Mon, 28 Feb 2022 22:21:32 -0800 Subject: [PATCH] Clean up guest connection states correctly when a collaborator disconnects This bug was caught by running the executor until parked after tests. Co-Authored-By: Nathan Sobo --- crates/server/src/rpc/store.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/crates/server/src/rpc/store.rs b/crates/server/src/rpc/store.rs index e6c4429b6960a749175f4ee9fac25a792e715fbc..3d68836b572c54c2e2be278afc72bcc7bca4a472 100644 --- a/crates/server/src/rpc/store.rs +++ b/crates/server/src/rpc/store.rs @@ -296,7 +296,16 @@ impl Store { } } - Ok(e.remove()) + let project = e.remove(); + if let Some(share) = &project.share { + for guest_connection in share.guests.keys() { + if let Some(connection) = self.connections.get_mut(&guest_connection) { + connection.projects.remove(&project_id); + } + } + } + + Ok(project) } else { Err(anyhow!("no such project"))? }