diff options
author | Henauxg <19689618+Henauxg@users.noreply.github.com> | 2023-01-16 19:44:51 +0100 |
---|---|---|
committer | Henauxg <19689618+Henauxg@users.noreply.github.com> | 2023-01-16 19:44:51 +0100 |
commit | e316d994e4e00e0e79809aa3fb89df00de3ce91f (patch) | |
tree | db5b2661cba27167a1973b5d5ecb1d4b45be9e08 /src/server.rs | |
parent | d3b063dbb5595c2609ded29f0cd8cc90de40fff8 (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.rs | 15 |
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"); + } }); }; |