From ef63e01632600c8b59b24f9a9fa0f54f4a2a9153 Mon Sep 17 00:00:00 2001 From: Floris Bruynooghe Date: Thu, 30 Mar 2023 22:23:50 +0200 Subject: [PATCH] fix(imex): transfer::get_backup must always free ongoing process (#4249) * fix(imex): transfer::get_backup must always free ongoing process When the ongoing process is cancelled it is still the responsibility of whoever took out the ongoing process to free it. This code was only freeing the ongoing process when completed normally but not when cancelled. * add changelog --- CHANGELOG.md | 8 +++++++- src/imex/transfer.rs | 6 ++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 346d67801..b08874b31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [1.112.3] - Unreleased + +### Changes + +### Fixes +- transfer::get_backup now frees ongoing process when cancelled. #4249 + ## [1.112.2] - 2023-03-30 ### Changes @@ -10,7 +17,6 @@ ### Fixes - Do not return media from trashed messages in the "All media" view. #4247 - ## [1.112.1] - 2023-03-27 ### Changes diff --git a/src/imex/transfer.rs b/src/imex/transfer.rs index df21d71d9..6156628a6 100644 --- a/src/imex/transfer.rs +++ b/src/imex/transfer.rs @@ -392,12 +392,10 @@ pub async fn get_backup(context: &Context, qr: Qr) -> Result<()> { let cancel_token = context.alloc_ongoing().await?; let res = tokio::select! { biased; - res = get_backup_inner(context, qr) => { - context.free_ongoing().await; - res - } + res = get_backup_inner(context, qr) => res, _ = cancel_token.recv() => Err(format_err!("cancelled")), }; + context.free_ongoing().await; res }