forked from M-Labs/nac3
1
0
Fork 0

fix BorrowMutError in moninj

This commit is contained in:
spaqin 2022-03-02 15:45:17 +08:00
parent 9a06cd9d27
commit 4a2218641f
1 changed files with 3 additions and 3 deletions

View File

@ -137,8 +137,7 @@ macro_rules! dispatch {
($timer:ident, $aux_mutex:ident, $routing_table:ident, $channel:expr, $func:ident $(, $param:expr)*) => {{ ($timer:ident, $aux_mutex:ident, $routing_table:ident, $channel:expr, $func:ident $(, $param:expr)*) => {{
let destination = ($channel >> 16) as u8; let destination = ($channel >> 16) as u8;
let channel = $channel; let channel = $channel;
let routing_table = $routing_table.borrow_mut(); let hop = $routing_table.0[destination as usize][0];
let hop = routing_table.0[destination as usize][0];
if hop == 0 { if hop == 0 {
local_moninj::$func(channel.into(), $($param, )*) local_moninj::$func(channel.into(), $($param, )*)
} else { } else {
@ -157,7 +156,7 @@ macro_rules! dispatch {
} }
async fn handle_connection(stream: &TcpStream, timer: GlobalTimer, async fn handle_connection(stream: &TcpStream, timer: GlobalTimer,
_aux_mutex: &Rc<Mutex<bool>>, _routing_table: &Rc<RefCell<drtio_routing::RoutingTable>>) -> Result<()> { _aux_mutex: &Rc<Mutex<bool>>, _routing_table: &drtio_routing::RoutingTable) -> Result<()> {
if !expect(&stream, b"ARTIQ moninj\n").await? { if !expect(&stream, b"ARTIQ moninj\n").await? {
return Err(Error::UnexpectedPattern); return Err(Error::UnexpectedPattern);
} }
@ -262,6 +261,7 @@ pub fn start(timer: GlobalTimer, aux_mutex: Rc<Mutex<bool>>, routing_table: Rc<R
let stream = TcpStream::accept(1383, 2048, 2048).await.unwrap(); let stream = TcpStream::accept(1383, 2048, 2048).await.unwrap();
task::spawn(async move { task::spawn(async move {
info!("received connection"); info!("received connection");
let routing_table = routing_table.borrow();
let result = handle_connection(&stream, timer, &aux_mutex, &routing_table).await; let result = handle_connection(&stream, timer, &aux_mutex, &routing_table).await;
match result { match result {
Err(Error::NetworkError(smoltcp::Error::Finished)) => info!("peer closed connection"), Err(Error::NetworkError(smoltcp::Error::Finished)) => info!("peer closed connection"),