From b0788dc4efedad95e0fd1d1ddcf95fd383825b7a Mon Sep 17 00:00:00 2001 From: irriden Date: Tue, 25 Jul 2023 21:00:17 +0000 Subject: [PATCH] sphinx-key: timeout lss init message reception close #99 --- sphinx-key/src/core/events.rs | 8 +++++--- sphinx-key/src/core/lss.rs | 5 +++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/sphinx-key/src/core/events.rs b/sphinx-key/src/core/events.rs index 1b9d066..ea11dbb 100644 --- a/sphinx-key/src/core/events.rs +++ b/sphinx-key/src/core/events.rs @@ -131,13 +131,11 @@ pub fn make_event_loop( // send the initial HELLO mqtt_pub(&mut mqtt, client_id, topics::HELLO, &[]); - // FIXME it right to restart here? let (root_handler, lss_signer) = match lss::init_lss(client_id, &rx, rhb, &mut mqtt) { Ok(rl) => rl, Err(e) => { log::error!("failed to init lss {:?}", e); unsafe { esp_idf_sys::esp_restart() }; - return Err(anyhow::anyhow!("nope")); } }; @@ -190,7 +188,11 @@ pub fn make_event_loop( } Err(e) => match e { VlsHandlerError::BadSequence(current, expected) => unsafe { - log::info!("caught a badsequence error, current: {}, expected: {}", current, expected); + log::info!( + "caught a badsequence error, current: {}, expected: {}", + current, + expected + ); log::info!("restarting esp!"); esp_idf_sys::esp_restart(); }, diff --git a/sphinx-key/src/core/lss.rs b/sphinx-key/src/core/lss.rs index 6d20aaa..fa56601 100644 --- a/sphinx-key/src/core/lss.rs +++ b/sphinx-key/src/core/lss.rs @@ -9,6 +9,7 @@ use lss_connector::{secp256k1::PublicKey, BrokerMutations, LssSigner, Msg as Lss use sphinx_signer::sphinx_glyph::topics; use sphinx_signer::{self, RootHandler, RootHandlerBuilder}; use std::sync::mpsc; +use std::time::Duration; pub use lss_connector::handle_lss_msg; @@ -19,7 +20,7 @@ pub fn init_lss( mqtt: &mut EspMqttClient>, ) -> Result<(RootHandler, LssSigner)> { let server_pubkey = loop { - let event = rx.recv()?; + let event = rx.recv_timeout(Duration::from_secs(30))?; match server_pubkey_from_event(event) { Ok(spk) => break spk, Err(e) => log::warn!("failed server_pubkey_from_event {:?}", e), @@ -32,7 +33,7 @@ pub fn init_lss( .expect("could not publish LSS response"); let created = loop { - let event = rx.recv()?; + let event = rx.recv_timeout(Duration::from_secs(30))?; match created_from_event(event) { Ok(c) => break c, Err(e) => log::warn!("failed created_from_event {:?}", e),