From 01d57d587711fe4b3e4d61d052d4b848a8a1c0df Mon Sep 17 00:00:00 2001 From: dasman Date: Tue, 25 Jun 2024 03:20:38 +0300 Subject: [PATCH] darkirc: start IRC server task after the DAG has been synced --- bin/darkirc/src/main.rs | 54 ++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/bin/darkirc/src/main.rs b/bin/darkirc/src/main.rs index d96accb24..412254d1d 100644 --- a/bin/darkirc/src/main.rs +++ b/bin/darkirc/src/main.rs @@ -341,33 +341,6 @@ async fn realmain(args: Args, ex: Arc>) -> Result<()> { ex.clone(), ); - info!("Starting IRC server"); - let password = args.password.unwrap_or_default(); - let config_path = get_config_path(args.config, CONFIG_FILE)?; - let irc_server = IrcServer::new( - darkirc.clone(), - args.irc_listen, - args.irc_tls_cert, - args.irc_tls_secret, - config_path, - password, - ) - .await?; - - let irc_task = StoppableTask::new(); - let ex_ = ex.clone(); - irc_task.clone().start( - irc_server.clone().listen(ex_), - |res| async move { - match res { - Ok(()) | Err(Error::DetachedTaskStopped) => { /* TODO: */ } - Err(e) => error!("Failed stopping IRC server: {}", e), - } - }, - Error::DetachedTaskStopped, - ex.clone(), - ); - info!("Starting P2P network"); p2p.clone().start().await?; @@ -398,6 +371,33 @@ async fn realmain(args: Args, ex: Arc>) -> Result<()> { *event_graph.synced.write().await = true; } + info!("Starting IRC server"); + let password = args.password.unwrap_or_default(); + let config_path = get_config_path(args.config, CONFIG_FILE)?; + let irc_server = IrcServer::new( + darkirc.clone(), + args.irc_listen, + args.irc_tls_cert, + args.irc_tls_secret, + config_path, + password, + ) + .await?; + + let irc_task = StoppableTask::new(); + let ex_ = ex.clone(); + irc_task.clone().start( + irc_server.clone().listen(ex_), + |res| async move { + match res { + Ok(()) | Err(Error::DetachedTaskStopped) => { /* TODO: */ } + Err(e) => error!("Failed stopping IRC server: {}", e), + } + }, + Error::DetachedTaskStopped, + ex.clone(), + ); + // Signal handling for graceful termination. let (signals_handler, signals_task) = SignalHandler::new(ex)?; signals_handler.wait_termination(signals_task).await?;