chiark / gitweb /
slip: Make addr check be able to return a value
[hippotat.git] / src / bin / client.rs
index d73eceb221277819c858df45c602171d7d6b12aa..2642e22760386e0858b2a58291d991fa32358785 100644 (file)
@@ -65,11 +65,13 @@ fn submit_request<'r, 'c:'r, C:HCC>(
        {}
        {}
        {}
+       {}
        {}"#),
                        &c.ic.link.client,
                        token,
                        c.ic.target_requests_outstanding,
                        show_timeout,
+                       c.ic.mtu,
                        c.ic.max_batch_down,
                        c.ic.max_batch_up,
   );
@@ -228,11 +230,11 @@ async fn run_client<C:HCC>(
           //eprintln!("data={:?}", DumpHex(&data));
 
           match check1(Slip2Mime, ic.mtu, &data, |header| {
-            let addr = ip_packet_addr::<false>(header)?;
-            if addr != ic.link.client.0 { throw!(PE::Src(addr)) }
+            let saddr = ip_packet_addr::<false>(header)?;
+            if saddr != ic.link.client.0 { throw!(PE::Src(saddr)) }
             Ok(())
           }) {
-            Ok(data) => tx_queue.push_back(TxQueued {
+            Ok((data, ())) => tx_queue.push_back(TxQueued {
               data,
               expires: Instant::now() + ic.max_queue_time
             }),
@@ -280,7 +282,7 @@ async fn run_client<C:HCC>(
               let addr = ip_packet_addr::<true>(header)?;
               if addr != ic.link.client.0 { throw!(PE::Dst(addr)) }
               Ok(())
-            }, |o| rx_queue.push(o),
+            }, |o| Ok({ rx_queue.push(o); }),
                |e| error!("{} #{}: rx discarding: {}", &ic, req_num, e))
             {
               Ok(()) => reporter.lock().success(),