From 6e5d2b20984678a4ed9242fedfe8cdb2eb7028ec Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Mon, 16 Aug 2021 00:14:03 +0100 Subject: [PATCH] server: change type of checkn Signed-off-by: Ian Jackson --- src/bin/client.rs | 6 ++++-- src/slip.rs | 8 ++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/bin/client.rs b/src/bin/client.rs index 559b1af..d73eceb 100644 --- a/src/bin/client.rs +++ b/src/bin/client.rs @@ -276,11 +276,13 @@ async fn run_client( if let Some(got) = got { //eprintln!("got={:?}", DumpHex(&got)); - match checkn(SlipNoConv,ic.mtu, &got, &mut rx_queue, |header| { + match checkn(SlipNoConv,ic.mtu, &got, |header| { let addr = ip_packet_addr::(header)?; if addr != ic.link.client.0 { throw!(PE::Dst(addr)) } Ok(()) - }, |e| error!("{} #{}: rx discarding: {}", &ic, req_num, e)) { + }, |o| rx_queue.push(o), + |e| error!("{} #{}: rx discarding: {}", &ic, req_num, e)) + { Ok(()) => reporter.lock().success(), Err(ErrorOnlyBad) => { reqs.push(Box::pin(async { diff --git a/src/slip.rs b/src/slip.rs index 0b1fe6c..3903636 100644 --- a/src/slip.rs +++ b/src/slip.rs @@ -32,11 +32,11 @@ pub fn checkn( mime: M, mtu: u32, data: &[u8], - out: &mut OUT, addr_chk: AC, + mut out: OUT, mut error_handler: EH -) where OUT: Extend>, - AC: Fn(&[u8]) -> Result<(), PacketError> + Copy, +) where AC: Fn(&[u8]) -> Result<(), PacketError> + Copy, + OUT: FnMut(Box<[u8]>), EH: FnMut(PacketError), { // eprintln!("before: {:?}", DumpHex(data)); @@ -47,7 +47,7 @@ pub fn checkn( match check1(mime, mtu, packet, addr_chk) { Err(PacketError::Empty) => { } Err(e) => { err=true; error_handler(e); }, - Ok(packet) => { ok=true; out.extend(iter::once(packet)); }, + Ok(packet) => { ok=true; out(packet); }, } } // eprintln!(" after: {:?}", DumpHex(data)); -- 2.30.2