From be0cad295d7eb556c2280e1042232f6dece6cbb1 Mon Sep 17 00:00:00 2001 From: Alois Date: Tue, 28 Jul 2026 01:02:05 +0200 Subject: [PATCH] (fix): fix connection issues --- src/transport/omikron_connection.rs | 10 +++++++--- src/transport/omikron_manager.rs | 6 ++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/transport/omikron_connection.rs b/src/transport/omikron_connection.rs index d48120c..54a3bf9 100644 --- a/src/transport/omikron_connection.rs +++ b/src/transport/omikron_connection.rs @@ -245,16 +245,20 @@ impl OmikronConnection { } pub async fn close(self: Arc) { log_in!( - self.get_omikron_id().await.unwrap_or(0), + self.id as i64, PrintType::Omega, "Omikron connection Closed" ); + if let Some(sender) = self.sender.lock().await.take() { + sender.close(); + } } async fn cleanup(self: Arc) { if self.id != 0 { log_in!(self.id as i64, PrintType::Omega, "Omikron disconnected"); - omikron_manager::remove_omikron(self.id as i64).await; - crate::sql::user_online_tracker::untrack_omikron(self.id as i64).await; + if omikron_manager::remove_omikron(self.id as i64, &self).await { + crate::sql::user_online_tracker::untrack_omikron(self.id as i64).await; + } } if let Some(handle) = self.cleanup_handle.lock().unwrap().take() { handle.abort(); diff --git a/src/transport/omikron_manager.rs b/src/transport/omikron_manager.rs index 0b2f66c..0e1575d 100644 --- a/src/transport/omikron_manager.rs +++ b/src/transport/omikron_manager.rs @@ -22,8 +22,10 @@ pub async fn add_omikron(conn: Arc) { } } -pub async fn remove_omikron(omikron_id: i64) { - OMIKRON_CONNECTIONS.remove(&omikron_id); +pub async fn remove_omikron(omikron_id: i64, connection: &Arc) -> bool { + OMIKRON_CONNECTIONS + .remove_if(&omikron_id, |_, current| Arc::ptr_eq(current, connection)) + .is_some() } pub fn get_connected_omikron(omikron_id: i64) -> Option> {