diff --git a/src/server/listener.rs b/src/server/listener.rs index 4f4ccfc..226c939 100644 --- a/src/server/listener.rs +++ b/src/server/listener.rs @@ -275,6 +275,7 @@ pub async fn nexus_listener( internal_client_senders: Vec<(Arc, usize, broadcast::Sender)>, internal_client_recivers: Vec<(Arc, usize, broadcast::Sender)>, cancellation_tokens: (CancellationToken, CancellationToken), + ready_signal: Option>, ) { info!("Starting nexus on port: {}...", port); let clients_tx: Arc>>> = @@ -303,6 +304,12 @@ pub async fn nexus_listener( clients_tx.lock().await.insert(cid.clone(), client.2); } + // Signal that nexus is ready AFTER internal clients are registered + if let Some(tx) = ready_signal { + let _ = tx.send(()); + info!("Nexus ready - internal clients registered!"); + } + let (from_client_tx, mut from_client_rx) = mpsc::unbounded_channel::(); let filter_to_clients_tx = Arc::new(clients_tx.clone());