diff options
Diffstat (limited to 'src/bin/rbw-agent/agent.rs')
-rw-r--r-- | src/bin/rbw-agent/agent.rs | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/bin/rbw-agent/agent.rs b/src/bin/rbw-agent/agent.rs index 0094f7d..655c3dc 100644 --- a/src/bin/rbw-agent/agent.rs +++ b/src/bin/rbw-agent/agent.rs @@ -9,20 +9,21 @@ pub enum TimeoutEvent { pub struct State { pub priv_key: Option<rbw::locked::Keys>, - pub org_keys: std::collections::HashMap<String, rbw::locked::Keys>, + pub org_keys: + Option<std::collections::HashMap<String, rbw::locked::Keys>>, pub timeout_chan: tokio::sync::mpsc::UnboundedSender<TimeoutEvent>, } impl State { pub fn key(&self, org_id: Option<&str>) -> Option<&rbw::locked::Keys> { match org_id { - Some(id) => self.org_keys.get(id), + Some(id) => self.org_keys.as_ref().and_then(|h| h.get(id)), None => self.priv_key.as_ref(), } } pub fn needs_unlock(&self) -> bool { - self.priv_key.is_none() + self.priv_key.is_none() || self.org_keys.is_none() } pub fn set_timeout(&mut self) { @@ -153,7 +154,7 @@ async fn handle_request( false } rbw::protocol::Action::Sync => { - crate::actions::sync(sock).await?; + crate::actions::sync(sock, true).await?; false } rbw::protocol::Action::Decrypt { |