From ef7d0fdd79e351a4f185f8dd406db65a236b0626 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Mon, 16 Aug 2021 00:41:50 +0100 Subject: [PATCH] slip: Make addr check be able to return a value, from checkn Signed-off-by: Ian Jackson --- src/bin/client.rs | 2 +- src/slip.rs | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/bin/client.rs b/src/bin/client.rs index 2642e22..10b2076 100644 --- a/src/bin/client.rs +++ b/src/bin/client.rs @@ -282,7 +282,7 @@ async fn run_client( let addr = ip_packet_addr::(header)?; if addr != ic.link.client.0 { throw!(PE::Dst(addr)) } Ok(()) - }, |o| Ok({ rx_queue.push(o); }), + }, |(o,())| Ok({ rx_queue.push(o); }), |e| error!("{} #{}: rx discarding: {}", &ic, req_num, e)) { Ok(()) => reporter.lock().success(), diff --git a/src/slip.rs b/src/slip.rs index 1282bf3..2d376a3 100644 --- a/src/slip.rs +++ b/src/slip.rs @@ -28,15 +28,15 @@ impl SlipMime for SlipNoConv { const CONV_TO: Option = None; } pub struct ErrorOnlyBad; #[throws(ErrorOnlyBad)] -pub fn checkn( +pub fn checkn( mime: M, mtu: u32, data: &[u8], addr_chk: AC, mut out: OUT, mut error_handler: EH -) where AC: Fn(&[u8]) -> Result<(), PacketError> + Copy, - OUT: FnMut(Box<[u8]>) -> Result<(), PacketError>, +) where AC: Fn(&[u8]) -> Result + Copy, + OUT: FnMut((Box<[u8]>, ACR)) -> Result<(), PacketError>, EH: FnMut(PacketError), { // eprintln!("before: {:?}", DumpHex(data)); @@ -47,8 +47,7 @@ pub fn checkn( match (||{ let checked = check1(mime, mtu, packet, addr_chk); if matches!(checked, Err(PacketError::Empty)) { return Ok::<_,PE>(()) } - let (packet, _acr) = checked?; - out(packet)?; + out(checked?)?; ok = true; Ok::<_,PE>(()) })() { -- 2.30.2