From 72f6d68f8c4c35bcbf48f5687ee4ca8424dcc0ed Mon Sep 17 00:00:00 2001 From: Anton Liashkevich Date: Fri, 15 May 2026 19:46:58 -0400 Subject: [PATCH 1/2] Fixed review issues from https://github.com/NullNet-ai/nullnet/pull/95 --- members/nullnet-server/src/http_server/mod.rs | 4 ++-- .../nullnet-server/src/http_server/pool.rs | 4 ++-- members/nullnet-server/src/net_id_pool.rs | 21 ++++++++++++------- members/nullnet-server/src/orchestrator.rs | 4 ++-- 4 files changed, 19 insertions(+), 14 deletions(-) diff --git a/members/nullnet-server/src/http_server/mod.rs b/members/nullnet-server/src/http_server/mod.rs index 7e59c4a..34eed3f 100644 --- a/members/nullnet-server/src/http_server/mod.rs +++ b/members/nullnet-server/src/http_server/mod.rs @@ -35,6 +35,6 @@ pub async fn serve(state: AppState) { .with_state(state); let addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::UNSPECIFIED), HTTP_PORT); - let listener = tokio::net::TcpListener::bind(addr).await.unwrap(); - axum::serve(listener, app).await.unwrap(); + let listener = tokio::net::TcpListener::bind(addr).await.expect("failed to bind HTTP listener"); + axum::serve(listener, app).await.expect("HTTP server error"); } diff --git a/members/nullnet-server/src/http_server/pool.rs b/members/nullnet-server/src/http_server/pool.rs index e71734f..5181295 100644 --- a/members/nullnet-server/src/http_server/pool.rs +++ b/members/nullnet-server/src/http_server/pool.rs @@ -11,10 +11,10 @@ struct PoolJson { } pub(super) async fn pool_handler(State(state): State) -> impl IntoResponse { - let (total, in_use, free) = state.orchestrator.pool_stats().await; + let (total, in_use) = state.orchestrator.pool_stats().await; axum::Json(PoolJson { total, in_use, - free, + free: total - in_use, }) } diff --git a/members/nullnet-server/src/net_id_pool.rs b/members/nullnet-server/src/net_id_pool.rs index 741e1de..291fa22 100644 --- a/members/nullnet-server/src/net_id_pool.rs +++ b/members/nullnet-server/src/net_id_pool.rs @@ -60,11 +60,11 @@ impl NetIdPool { } } - /// Returns (total_capacity, in_use, free). - pub(crate) fn stats(&self) -> (u32, u32, u32) { + /// Returns (total_capacity, in_use). + pub(crate) fn stats(&self) -> (u32, u32) { let capacity = *MAX_NET_ID - MIN_NET_ID + 1; let in_use = (self.next_fresh - MIN_NET_ID) - self.freed.len() as u32; - (capacity, in_use, capacity - in_use) + (capacity, in_use) } } @@ -134,7 +134,8 @@ mod tests { #[test] fn test_stats_fresh_pool() { let pool = NetIdPool::new(); - let (total, in_use, free) = pool.stats(); + let (total, in_use) = pool.stats(); + let free = total - in_use; assert!(total > 0); assert_eq!(in_use, 0); assert_eq!(free, total); @@ -146,7 +147,8 @@ mod tests { pool.allocate(); pool.allocate(); pool.allocate(); - let (total, in_use, free) = pool.stats(); + let (total, in_use) = pool.stats(); + let free = total - in_use; assert_eq!(in_use, 3); assert_eq!(free, total - 3); } @@ -158,7 +160,8 @@ mod tests { pool.allocate(); pool.allocate(); pool.free(id); - let (total, in_use, free) = pool.stats(); + let (total, in_use) = pool.stats(); + let free = total - in_use; assert_eq!(in_use, 2); assert_eq!(free, total - 2); } @@ -167,7 +170,8 @@ mod tests { fn test_stats_exhausted_pool() { let mut pool = NetIdPool::new(); pool.next_fresh = *MAX_NET_ID + 1; - let (total, in_use, free) = pool.stats(); + let (total, in_use) = pool.stats(); + let free = total - in_use; assert_eq!(in_use, total); assert_eq!(free, 0); } @@ -179,7 +183,8 @@ mod tests { let id = pool.allocate().unwrap(); pool.allocate(); pool.free(id); - let (total, in_use, free) = pool.stats(); + let (total, in_use) = pool.stats(); + let free = total - in_use; assert_eq!(total, in_use + free); } } diff --git a/members/nullnet-server/src/orchestrator.rs b/members/nullnet-server/src/orchestrator.rs index 3e95d0e..fd3b1d6 100644 --- a/members/nullnet-server/src/orchestrator.rs +++ b/members/nullnet-server/src/orchestrator.rs @@ -125,10 +125,10 @@ impl Orchestrator { } pub(crate) async fn connected_node_ips(&self) -> Vec { - self.clients.read().await.keys().cloned().collect() + self.clients.read().await.keys().copied().collect() } - pub(crate) async fn pool_stats(&self) -> (u32, u32, u32) { + pub(crate) async fn pool_stats(&self) -> (u32, u32) { self.net_id_pool.lock().await.stats() } From 3b078cba55e76a6fe7b3e234f27c57b855ec8a55 Mon Sep 17 00:00:00 2001 From: Anton Liashkevich Date: Fri, 15 May 2026 19:51:17 -0400 Subject: [PATCH 2/2] Fixed formatting --- members/nullnet-server/src/http_server/mod.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/members/nullnet-server/src/http_server/mod.rs b/members/nullnet-server/src/http_server/mod.rs index 34eed3f..5d4c5b7 100644 --- a/members/nullnet-server/src/http_server/mod.rs +++ b/members/nullnet-server/src/http_server/mod.rs @@ -35,6 +35,8 @@ pub async fn serve(state: AppState) { .with_state(state); let addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::UNSPECIFIED), HTTP_PORT); - let listener = tokio::net::TcpListener::bind(addr).await.expect("failed to bind HTTP listener"); + let listener = tokio::net::TcpListener::bind(addr) + .await + .expect("failed to bind HTTP listener"); axum::serve(listener, app).await.expect("HTTP server error"); }