From b105a3bb22fe334e1bb1b458daac4f4dc9066fe0 Mon Sep 17 00:00:00 2001 From: Ivan Moiseev Date: Sat, 12 Oct 2024 15:17:19 +0200 Subject: [PATCH] fix: transactional pause --- crates/librqbit/src/session.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/crates/librqbit/src/session.rs b/crates/librqbit/src/session.rs index 83a03be..5f26992 100644 --- a/crates/librqbit/src/session.rs +++ b/crates/librqbit/src/session.rs @@ -1365,8 +1365,19 @@ impl Session { } pub async fn pause(&self, handle: &ManagedTorrentHandle) -> anyhow::Result<()> { + let mut g = handle.locked.write(); + let prev = g.paused; + g.paused = true; + drop(g); + handle.locked.write().paused = true; - handle.pause()?; + match handle.pause() { + Ok(()) => {} + Err(err) => { + handle.locked.write().paused = prev; + return Err(err); + } + } self.try_update_persistence_metadata(handle).await; Ok(()) }