diff options
Diffstat (limited to 'src/swarm/blob.rs')
| -rw-r--r-- | src/swarm/blob.rs | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/src/swarm/blob.rs b/src/swarm/blob.rs index 42cfbf3..58522fa 100644 --- a/src/swarm/blob.rs +++ b/src/swarm/blob.rs @@ -29,6 +29,7 @@ use tokio::sync::{Semaphore, mpsc}; use tokio::time::Instant; use tracing::{debug, info, warn}; +use crate::locks::MutexExt; use crate::state::AppState; use crate::transport::{BlobBody, BlobId, BlobMessage, ParsedMessage}; @@ -80,25 +81,19 @@ impl Blobs { fn fetches( &self, ) -> MutexGuard<'_, HashMap<BlobId, mpsc::UnboundedSender<(String, BlobBody)>>> { - self.fetches - .lock() - .unwrap_or_else(|poisoned| poisoned.into_inner()) + self.fetches.lock_or_recover() } fn cached(&self, id: BlobId) -> Option<Arc<Prepared>> { self.cache - .lock() - .unwrap_or_else(|poisoned| poisoned.into_inner()) + .lock_or_recover() .as_ref() .filter(|(cached, _)| *cached == id) .map(|(_, prepared)| Arc::clone(prepared)) } fn remember(&self, id: BlobId, prepared: Arc<Prepared>) { - *self - .cache - .lock() - .unwrap_or_else(|poisoned| poisoned.into_inner()) = Some((id, prepared)); + *self.cache.lock_or_recover() = Some((id, prepared)); } } |
