From 5affe0e93e9f4b85bb6b87c1594b95029a5ab762 Mon Sep 17 00:00:00 2001 From: trivernis Date: Sat, 12 Sep 2020 18:30:19 +0200 Subject: [PATCH] Switch to Mutex from parking_lot to avoid poisoning Signed-off-by: trivernis --- Cargo.lock | 1 + Cargo.toml | 3 ++- src/database/users.rs | 11 ++++++----- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 016a1ab..a1286cb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -382,6 +382,7 @@ dependencies = [ "mime 0.3.16", "msgrpc", "num_cpus", + "parking_lot", "postgres", "r2d2", "r2d2_postgres", diff --git a/Cargo.toml b/Cargo.toml index 8579f69..fe865e3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,4 +30,5 @@ chrono = "0.4.15" r2d2 = "0.8.9" r2d2_postgres = "0.16.0" scheduled-thread-pool = "0.2.5" -num_cpus = "1.13.0" \ No newline at end of file +num_cpus = "1.13.0" +parking_lot = "0.11.0" \ No newline at end of file diff --git a/src/database/users.rs b/src/database/users.rs index dc7ef06..e93e7b0 100644 --- a/src/database/users.rs +++ b/src/database/users.rs @@ -5,7 +5,8 @@ use crate::database::{DatabaseResult, PostgresPool, Table}; use crate::utils::error::DBError; use crate::utils::{create_salt, hash_password}; -use std::sync::{Arc, Mutex}; +use parking_lot::Mutex; +use std::sync::Arc; use zeroize::{Zeroize, Zeroizing}; const DEFAULT_ADMIN_PASSWORD: &str = "flotte-admin"; @@ -94,7 +95,7 @@ impl Users { let id: i32 = row.get(0); let tokens = SessionTokens::new(id); - tokens.store(&mut self.token_store.lock().unwrap())?; + tokens.store(&mut self.token_store.lock())?; Ok(tokens) } else { @@ -103,7 +104,7 @@ impl Users { } pub fn validate_request_token(&self, token: &String) -> DatabaseResult<(bool, i32)> { - let store = self.token_store.lock().unwrap(); + let store = self.token_store.lock(); let entry = store.get_request_token(&token); if let Some(entry) = entry { @@ -114,7 +115,7 @@ impl Users { } pub fn validate_refresh_token(&self, token: &String) -> DatabaseResult<(bool, i32)> { - let store = self.token_store.lock().unwrap(); + let store = self.token_store.lock(); let entry = store.get_refresh_token(&token); if let Some(entry) = entry { @@ -125,7 +126,7 @@ impl Users { } pub fn refresh_tokens(&self, refresh_token: &String) -> DatabaseResult { - let mut token_store = self.token_store.lock().unwrap(); + let mut token_store = self.token_store.lock(); let tokens = token_store.get_refresh_token(refresh_token); if let Some(mut tokens) = tokens.and_then(|t| SessionTokens::from_entry(t)) { tokens.refresh();