From: Ian Jackson Date: Tue, 3 Aug 2021 18:04:37 +0000 (+0100) Subject: pass SlipMime also as value X-Git-Tag: hippotat/1.0.0~372 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ian/git?a=commitdiff_plain;h=0800091973c48d8accce5dededf601010b5a94c2;p=hippotat.git pass SlipMime also as value Reduces type clutter Signed-off-by: Ian Jackson --- diff --git a/src/bin/client.rs b/src/bin/client.rs index 9e99810..46d8609 100644 --- a/src/bin/client.rs +++ b/src/bin/client.rs @@ -214,17 +214,16 @@ async fn run_client( .ok_or_else(|| io::Error::from(io::ErrorKind::UnexpectedEof))?; //eprintln!("data={:?}", DumpHex(&data)); - match check1 - ::<_,Slip2Mime>(ic.mtu, &data, |header| { - let addr = ip_packet_addr::(header)?; - if addr != ic.link.client.0 { throw!(PE::Src(addr)) } - Ok(()) - }) { - Ok(packet) => packets.push_back(packet), - Err(PE::Empty) => { }, - Err(e@ PE::Src(_)) => debug!("{}: tx discarding: {}", &ic, e), - Err(e) => error!("{}: tx discarding: {}", &ic, e), - }; + match check1(Slip2Mime, ic.mtu, &data, |header| { + let addr = ip_packet_addr::(header)?; + if addr != ic.link.client.0 { throw!(PE::Src(addr)) } + Ok(()) + }) { + Ok(packet) => packets.push_back(packet), + Err(PE::Empty) => { }, + Err(e@ PE::Src(_)) => debug!("{}: tx discarding: {}", &ic, e), + Err(e) => error!("{}: tx discarding: {}", &ic, e), + }; }, _ = async { }, @@ -257,12 +256,11 @@ async fn run_client( if let Some(got) = got { //eprintln!("got={:?}", DumpHex(&got)); - checkn - ::<_,_,_,SlipNoConv>(ic.mtu, &got, &mut rx_queue, |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)); + checkn(SlipNoConv,ic.mtu, &got, &mut rx_queue, |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)); dbg!(&rx_queue.len()); rx_queue = default(); // xxx diff --git a/src/slip.rs b/src/slip.rs index 2f7ba88..ad6254d 100644 --- a/src/slip.rs +++ b/src/slip.rs @@ -24,7 +24,8 @@ impl SlipMime for Slip2Mime { const CONV_TO: Option = Some(true); } impl SlipMime for Mime2Slip { const CONV_TO: Option = Some(false); } impl SlipMime for SlipNoConv { const CONV_TO: Option = None; } -pub fn checkn( +pub fn checkn( + mime: M, mtu: u32, data: &[u8], out: &mut OUT, @@ -36,7 +37,7 @@ pub fn checkn( { // eprintln!("before: {:?}", DumpHex(data)); for packet in data.split(|&c| c == SLIP_END) { - match check1::(mtu, packet, addr_chk) { + match check1(mime, mtu, packet, addr_chk) { Err(e) => error_handler(e), Ok(packet) => out.extend(iter::once(packet)), } @@ -46,6 +47,7 @@ pub fn checkn( #[throws(PacketError)] pub fn check1( + _mime: M, mtu: u32, packet: &[u8], addr_chk: AC,