From bafdcd864e2f9de9f62447716441e883bf0cbee6 Mon Sep 17 00:00:00 2001 From: Evan Date: Tue, 10 Mar 2026 15:12:09 +0000 Subject: [PATCH] more logs --- rust/babblerd/src/lib.rs | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/rust/babblerd/src/lib.rs b/rust/babblerd/src/lib.rs index 270928e7..6c32dcfe 100644 --- a/rust/babblerd/src/lib.rs +++ b/rust/babblerd/src/lib.rs @@ -145,8 +145,11 @@ pub mod babel { let Ok(Some(_)) = read else { break; }; } recv = receiver.recv() => { - let Ok(s) = recv else { break; }; - let Ok(()) = write.write_all(format!("{s}\n").as_bytes()).await else { break; }; + let res = match recv { + Err(_) => { tracing::debug!("receiver closed, dropping connection"); break; }, + Ok(s) => write.write_all(format!("{s}\n").as_bytes()).await, + }; + if let Err(e) = res { tracing::warn!(error=%e, "failed to write to socket"); break; }; } }; } @@ -160,7 +163,7 @@ pub mod babel { const PRIVATE_SOCK_PATH: &str = "/run/babeld.sock"; use std::io; - use std::time::Duration; + use std::time::{Duration, Instant}; use futures_lite::FutureExt; use tokio::io::{AsyncBufReadExt, AsyncWriteExt, BufReader, Lines}; @@ -218,12 +221,14 @@ pub mod babel { write.write_all(cmd.as_bytes()).await?; loop { let Some(line) = read.next_line().await? else { + tracing::warn!("babeld closed unexpectedly"); return Ok(None); }; tracing::info!("[babel] {:?}", line); if line == "ok" { return Ok(Some(true)); } else if line == "bad" { + tracing::warn!("malformed message sent to babeld"); return Ok(Some(false)); } } @@ -249,9 +254,24 @@ pub mod babel { } } tracing::info!("babeld ok"); - Self::query(&mut babel_lines, &mut writer, "monitor\n").await?; + if Self::query(&mut babel_lines, &mut writer, "monitor\n") + .await? + .is_none() + { + return Ok(()); + }; + let mut time = Instant::now(); loop { + if Instant::now() - time > Duration::from_secs(5) { + if Self::query(&mut babel_lines, &mut writer, "dump\n") + .await? + .is_none() + { + return Ok(()); + }; + time = Instant::now(); + } tokio::select! { babble = recv.recv() => { tracing::debug!("[babble] {:?}", babble);