aboutsummaryrefslogtreecommitdiff
path: root/src/server.rs
diff options
context:
space:
mode:
authorHenauxg <19689618+Henauxg@users.noreply.github.com>2023-01-16 19:44:51 +0100
committerHenauxg <19689618+Henauxg@users.noreply.github.com>2023-01-16 19:44:51 +0100
commite316d994e4e00e0e79809aa3fb89df00de3ce91f (patch)
treedb5b2661cba27167a1973b5d5ecb1d4b45be9e08 /src/server.rs
parentd3b063dbb5595c2609ded29f0cd8cc90de40fff8 (diff)
[client & server] Close waiter: only signal connection closed if the internal channel still exists
Diffstat (limited to 'src/server.rs')
-rw-r--r--src/server.rs15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/server.rs b/src/server.rs
index 7b94eac..5d3a50a 100644
--- a/src/server.rs
+++ b/src/server.rs
@@ -751,12 +751,15 @@ async fn client_connection_task(
tokio::spawn(async move {
let conn_err = conn.closed().await;
info!("Client {} connection closed: {}", client_id, conn_err);
- to_sync_server
- .send(ServerAsyncMessage::ClientConnectionClosed(
- client_id, conn_err,
- ))
- .await
- .expect("Failed to signal connection lost to sync server");
+ // If we requested the connection to close, channel may have been closed already.
+ if !to_sync_server.is_closed() {
+ to_sync_server
+ .send(ServerAsyncMessage::ClientConnectionClosed(
+ client_id, conn_err,
+ ))
+ .await
+ .expect("Failed to signal connection lost to sync server");
+ }
});
};