diff options
author | Jesse Luehrs <doy@tozt.net> | 2020-05-03 04:40:47 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2020-05-03 04:40:47 -0400 |
commit | 7306c1bd6ed857b6ee833315ee798629e78282c5 (patch) | |
tree | 7f52abe921f290076d492b08a1b787536bae218e /src/bin/rbw-agent/agent.rs | |
parent | dbdd8a78951f8a44630abcceb7b13d0d823ee074 (diff) | |
download | rbw-7306c1bd6ed857b6ee833315ee798629e78282c5.tar.gz rbw-7306c1bd6ed857b6ee833315ee798629e78282c5.zip |
fix unlocking org keys on initial login
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 { |