From: Ian Jackson Date: Mon, 16 Aug 2021 00:55:36 +0000 (+0100) Subject: server: improve messages X-Git-Tag: hippotat/1.0.0~146 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=hippotat.git;a=commitdiff_plain;h=e6431ad48ae0c0464a0b54291d8cef2e54574c21 server: improve messages Signed-off-by: Ian Jackson --- diff --git a/src/bin/server.rs b/src/bin/server.rs index 15b5161..4b5fc52 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -36,6 +36,7 @@ struct WebRequest { boundary_finder: multipart::BoundaryFinder, reply_to: tokio::sync::oneshot::Sender, warnings: Warnings, + conn: Arc, } /// Reply from client task to hyper worker pool task @@ -49,8 +50,12 @@ struct WebResponse { type WebResponseData = Vec; #[throws(PacketError)] -pub fn route_packet(packet: Box<[u8]>, daddr: IpAddr) { - trace!("xxx discarding packet daddr={:?} len={}", daddr, packet.len()); +pub fn route_packet(conn: &str, link: &dyn Display, + packet: Box<[u8]>, daddr: IpAddr) +{ + // xxx + trace!("{} {} discarding packet daddr={:?} len={}", + conn, link, daddr, packet.len()); } async fn handle( @@ -199,7 +204,8 @@ async fn handle( // boundary, start, &comp.name, &client.ic); let (reply_to, reply_recv) = tokio::sync::oneshot::channel(); - trace!("{} request xxx={}", &client.ic, initial.len()); + trace!("{} {} request, Content-Length={}", + &conn, &client_name, length_hint); let wreq = WebRequest { initial, initial_remaining, @@ -207,7 +213,8 @@ async fn handle( boundary_finder: boundary_finder.into_owned(), body, warnings: mem::take(&mut warnings), - reply_to + reply_to, + conn: conn.clone(), }; client.web.try_send(wreq) @@ -217,9 +224,13 @@ async fn handle( warnings = reply.warnings; let data = reply.data?; - if ! warnings.warnings.is_empty() - && log::log_enabled!(log::Level::Trace) { - trace!("{} {}: warnings {:?}", &conn, &client_name, &warnings.warnings); + if warnings.warnings.is_empty() { + trace!("{} {} responding, {}", + &conn, &client_name, data.len()); + } else { + debug!("{} {} responding, {} warnings={:?}", + &conn, &client_name, data.len(), + &warnings.warnings); } let data = hyper::Body::from(data); @@ -283,7 +294,6 @@ async fn run_client(ic: Arc, warnings: default(), }; - dbg!(&response); try_send_response(ret.reply_to, response); } @@ -293,7 +303,7 @@ async fn run_client(ic: Arc, let WebRequest { initial, initial_remaining, length_hint, mut body, boundary_finder, - reply_to, mut warnings, + reply_to, conn, mut warnings, } = req.ok_or_else(|| anyhow!("webservers all shut down!"))?; match async { @@ -330,7 +340,7 @@ async fn run_client(ic: Arc, )? Ok::<_,AE>($ret) })().context(stringify!($v))?; - dbg!(&$v); + //dbg!(&$v); } } @@ -368,8 +378,10 @@ async fn run_client(ic: Arc, if saddr != ic.link.client.0 { throw!(PE::Src(saddr)) } let daddr = ip_packet_addr::(header)?; Ok(daddr) - }, |(daddr,packet)| route_packet(daddr,packet), - |e| Ok::<_,SlipFramesError<_>>({ warnings.add(&e)?; }) + }, |(daddr,packet)| route_packet( + &conn, &ic.link.client, daddr,packet + ), + |e| Ok::<_,SlipFramesError<_>>({ warnings.add(&e)?; }) )?; } @@ -430,12 +442,14 @@ async fn main() { for addr in &global.addrs { let all_clients_ = all_clients.clone(); - let make_service = hyper::service::make_service_fn(move |conn| { - let all_clients_ = all_clients_.clone(); - let conn = Arc::new(format!("[conn:{:?}]", conn)); - async { Ok::<_, Void>( hyper::service::service_fn(move |req| { - handle(conn.clone(), all_clients_.clone(), req) - }) ) } } + let make_service = hyper::service::make_service_fn( + move |conn: &hyper::server::conn::AddrStream| { + let all_clients_ = all_clients_.clone(); + let conn = Arc::new(format!("[{}]", conn.remote_addr())); + async { Ok::<_, Void>( hyper::service::service_fn(move |req| { + handle(conn.clone(), all_clients_.clone(), req) + }) ) } + } ); let addr = SocketAddr::new(*addr, global.port);