diff --git a/src/net.rs b/src/net.rs index fa34ffa..caddcae 100644 --- a/src/net.rs +++ b/src/net.rs @@ -78,18 +78,17 @@ pub async fn tcp_stack(stack: embassy_net::Stack<'static>) { loop { stack.wait_config_up().await; + let link_down = async { + stack.wait_link_down().await; + UpdateConnection::get_receiver().clear(); + UpdateConnection::disconnect(); + }; + let rpc_fut = unwrap!( - try_box_future_within(|| select( - stack.wait_link_down(), - rpc::rpc_loop(&mut tcp, rpc_buffer) - )), + try_box_future_within(|| select(link_down, rpc::rpc_loop(&mut tcp, rpc_buffer))), "Failed to alloc RPC LOOP" ); rpc_fut.await; - - UpdateConnection::get_receiver().clear(); - - UpdateConnection::disconnect(); } } diff --git a/src/net/crypto.rs b/src/net/crypto.rs index 603ded9..d24fe96 100644 --- a/src/net/crypto.rs +++ b/src/net/crypto.rs @@ -12,6 +12,11 @@ use sachy_fmt::{error, unwrap}; use striker_proto::{Server, ServerBuilder, ServerReceiver, ServerSender}; use wharrgarbl::utils::BufferSlice; +use crate::{ + constants::NOISE_PSK, errors::PicoError, rpc::RpcServer, updates::UpdateConnection, + utils::try_box_future_within, +}; + #[repr(transparent)] struct WrapRoscRng; @@ -34,11 +39,6 @@ impl TryRng for WrapRoscRng { impl TryCryptoRng for WrapRoscRng {} -use crate::{ - constants::NOISE_PSK, errors::PicoError, rpc::RpcServer, updates::UpdateConnection, - utils::try_box_future_within, -}; - pub struct CryptoSession { transport: Server, }