From 86c18fb3ae6bb629b590087bd07f64ae3f8dba79 Mon Sep 17 00:00:00 2001 From: Floris Bruynooghe Date: Tue, 4 Apr 2023 18:11:45 +0200 Subject: [PATCH 1/4] ref: More logging for ongoing and get_backup (#4289) This adds a few log items for imex::transfer::get_backup and the ongoing process to give some more insights. IO is now also paused after the ongoing process is allocated in get_backup to avoid needlessly pausing IO. --- src/context.rs | 13 +++++++++---- src/imex/transfer.rs | 10 +++++++--- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/context.rs b/src/context.rs index a9bbd01ad..cfa026d67 100644 --- a/src/context.rs +++ b/src/context.rs @@ -260,7 +260,7 @@ enum RunningState { Running { cancel_sender: Sender<()> }, /// Cancel signal has been sent, waiting for ongoing process to be freed. - ShallStop, + ShallStop { request: Instant }, /// There is no ongoing process, a new one can be allocated. Stopped, @@ -530,6 +530,9 @@ impl Context { pub(crate) async fn free_ongoing(&self) { let mut s = self.running_state.write().await; + if let RunningState::ShallStop { request } = *s { + info!(self, "Ongoing stopped in {:?}", request.elapsed()); + } *s = RunningState::Stopped; } @@ -542,9 +545,11 @@ impl Context { warn!(self, "could not cancel ongoing: {:#}", err); } info!(self, "Signaling the ongoing process to stop ASAP.",); - *s = RunningState::ShallStop; + *s = RunningState::ShallStop { + request: Instant::now(), + }; } - RunningState::ShallStop | RunningState::Stopped => { + RunningState::ShallStop { .. } | RunningState::Stopped => { info!(self, "No ongoing process to stop.",); } } @@ -554,7 +559,7 @@ impl Context { pub(crate) async fn shall_stop_ongoing(&self) -> bool { match &*self.running_state.read().await { RunningState::Running { .. } => false, - RunningState::ShallStop | RunningState::Stopped => true, + RunningState::ShallStop { .. } | RunningState::Stopped => true, } } diff --git a/src/imex/transfer.rs b/src/imex/transfer.rs index f4d693922..174e83519 100644 --- a/src/imex/transfer.rs +++ b/src/imex/transfer.rs @@ -50,7 +50,7 @@ use crate::blob::BlobDirContents; use crate::chat::{add_device_msg, delete_and_reset_all_device_msgs}; use crate::context::Context; use crate::message::{Message, Viewtype}; -use crate::qr::Qr; +use crate::qr::{self, Qr}; use crate::stock_str::backup_transfer_msg_body; use crate::{e2ee, EventType}; @@ -393,10 +393,14 @@ pub async fn get_backup(context: &Context, qr: Qr) -> Result<()> { !context.is_configured().await?, "Cannot import backups to accounts in use." ); - let _guard = context.scheduler.pause(context.clone()).await; - // Acquire global "ongoing" mutex. let cancel_token = context.alloc_ongoing().await?; + let _guard = context.scheduler.pause(context.clone()).await; + info!( + context, + "Running get_backup for {}", + qr::format_backup(&qr)? + ); let res = tokio::select! { biased; res = get_backup_inner(context, qr) => res, From 9150e9fb381483df59a744a64de3ef50a5d88651 Mon Sep 17 00:00:00 2001 From: link2xt Date: Mon, 17 Apr 2023 10:48:35 +0000 Subject: [PATCH 2/4] Update crossbeam-channel from 0.5.7 to 0.5.8 0.5.7 is yanked. --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5d9f4fa9c..0db873364 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -836,9 +836,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" dependencies = [ "cfg-if", "crossbeam-utils", From 179b9ba2cb58511a5b5d9f822c97697f15510b02 Mon Sep 17 00:00:00 2001 From: link2xt Date: Mon, 17 Apr 2023 10:41:17 +0000 Subject: [PATCH 3/4] Update to released async-imap 0.8.0 It fixes important bug in `ensure_capacity()` that sometimes resulted in erroneous detection of EOF in IMAP response. --- CHANGELOG.md | 6 ++++++ Cargo.lock | 26 +++++++------------------- Cargo.toml | 2 +- 3 files changed, 14 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e3d6775d9..e1f0932d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## Unreleased + +### Fixes + +- Updated `async-imap` to v0.8.0 to fix erroneous EOF detection in long IMAP responses. + ## [1.112.6] - 2023-04-04 ### Changes diff --git a/Cargo.lock b/Cargo.lock index 0db873364..3c9945e30 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -189,12 +189,12 @@ dependencies = [ [[package]] name = "async-imap" -version = "0.6.0" -source = "git+https://github.com/async-email/async-imap?branch=master#90270474a5a494669e7c63c13471d189afdc98ae" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d11e163a705d0c809dfc886eee95df5117c758539c940c0fe9aa3aa4da5388ce" dependencies = [ "async-channel", - "async-native-tls 0.4.0", - "base64 0.13.1", + "base64 0.21.0", "byte-pool", "chrono", "futures", @@ -218,18 +218,6 @@ dependencies = [ "event-listener", ] -[[package]] -name = "async-native-tls" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d57d4cec3c647232e1094dc013546c0b33ce785d8aeb251e1f20dfaf8a9a13fe" -dependencies = [ - "native-tls", - "thiserror", - "tokio", - "url", -] - [[package]] name = "async-native-tls" version = "0.5.0" @@ -494,9 +482,9 @@ checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" [[package]] name = "byte-pool" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8c7230ddbb427b1094d477d821a99f3f54d36333178eeb806e279bcdcecf0ca" +checksum = "c2f1b21189f50b5625efa6227cf45e9d4cfdc2e73582df2b879e9689e78a7158" dependencies = [ "crossbeam-queue", "stable_deref_trait", @@ -1067,7 +1055,7 @@ dependencies = [ "anyhow", "async-channel", "async-imap", - "async-native-tls 0.5.0", + "async-native-tls", "async-smtp", "async_zip", "backtrace", diff --git a/Cargo.toml b/Cargo.toml index 5deca72b8..c3b91d1a2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -35,7 +35,7 @@ ratelimit = { path = "./deltachat-ratelimit" } anyhow = "1" async-channel = "1.8.0" -async-imap = { git = "https://github.com/async-email/async-imap", branch = "master", default-features = false, features = ["runtime-tokio"] } +async-imap = { version = "0.8.0", default-features = false, features = ["runtime-tokio"] } async-native-tls = { version = "0.5", default-features = false, features = ["runtime-tokio"] } async-smtp = { version = "0.9", default-features = false, features = ["runtime-tokio"] } async_zip = { version = "0.0.11", default-features = false, features = ["deflate", "fs"] } From 0b832fb9de2eb2c1f110f1b9550cdff2ef76e033 Mon Sep 17 00:00:00 2001 From: link2xt Date: Mon, 17 Apr 2023 15:18:37 +0000 Subject: [PATCH 4/4] Prepare 1.112.7 --- CHANGELOG.md | 4 +++- Cargo.lock | 10 +++++----- Cargo.toml | 2 +- deltachat-ffi/Cargo.toml | 2 +- deltachat-jsonrpc/Cargo.toml | 2 +- deltachat-jsonrpc/typescript/package.json | 4 ++-- deltachat-repl/Cargo.toml | 2 +- deltachat-rpc-server/Cargo.toml | 2 +- package.json | 4 ++-- 9 files changed, 17 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e1f0932d8..781fee77e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## Unreleased +## [1.112.7] - 2023-04-17 ### Fixes @@ -2379,3 +2379,5 @@ https://github.com/deltachat/deltachat-core-rust/pulls?q=is%3Apr+is%3Aclosed [1.112.3]: https://github.com/deltachat/deltachat-core-rust/compare/v1.112.2...v1.112.3 [1.112.4]: https://github.com/deltachat/deltachat-core-rust/compare/v1.112.3...v1.112.4 [1.112.5]: https://github.com/deltachat/deltachat-core-rust/compare/v1.112.4...v1.112.5 +[1.112.6]: https://github.com/deltachat/deltachat-core-rust/compare/v1.112.5...v1.112.6 +[1.112.7]: https://github.com/deltachat/deltachat-core-rust/compare/v1.112.6...v1.112.7 diff --git a/Cargo.lock b/Cargo.lock index 3c9945e30..87198de03 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1049,7 +1049,7 @@ dependencies = [ [[package]] name = "deltachat" -version = "1.112.6" +version = "1.112.7" dependencies = [ "ansi_term", "anyhow", @@ -1123,7 +1123,7 @@ dependencies = [ [[package]] name = "deltachat-jsonrpc" -version = "1.112.6" +version = "1.112.7" dependencies = [ "anyhow", "async-channel", @@ -1146,7 +1146,7 @@ dependencies = [ [[package]] name = "deltachat-repl" -version = "1.112.6" +version = "1.112.7" dependencies = [ "ansi_term", "anyhow", @@ -1161,7 +1161,7 @@ dependencies = [ [[package]] name = "deltachat-rpc-server" -version = "1.112.6" +version = "1.112.7" dependencies = [ "anyhow", "deltachat", @@ -1185,7 +1185,7 @@ dependencies = [ [[package]] name = "deltachat_ffi" -version = "1.112.6" +version = "1.112.7" dependencies = [ "anyhow", "deltachat", diff --git a/Cargo.toml b/Cargo.toml index c3b91d1a2..cbd021e2c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "deltachat" -version = "1.112.6" +version = "1.112.7" edition = "2021" license = "MPL-2.0" rust-version = "1.64" diff --git a/deltachat-ffi/Cargo.toml b/deltachat-ffi/Cargo.toml index f6ed211e4..674dbbe93 100644 --- a/deltachat-ffi/Cargo.toml +++ b/deltachat-ffi/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "deltachat_ffi" -version = "1.112.6" +version = "1.112.7" description = "Deltachat FFI" edition = "2018" readme = "README.md" diff --git a/deltachat-jsonrpc/Cargo.toml b/deltachat-jsonrpc/Cargo.toml index 3360e7368..0007a7b60 100644 --- a/deltachat-jsonrpc/Cargo.toml +++ b/deltachat-jsonrpc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "deltachat-jsonrpc" -version = "1.112.6" +version = "1.112.7" description = "DeltaChat JSON-RPC API" edition = "2021" default-run = "deltachat-jsonrpc-server" diff --git a/deltachat-jsonrpc/typescript/package.json b/deltachat-jsonrpc/typescript/package.json index e2743bba7..7409bbe60 100644 --- a/deltachat-jsonrpc/typescript/package.json +++ b/deltachat-jsonrpc/typescript/package.json @@ -55,5 +55,5 @@ }, "type": "module", "types": "dist/deltachat.d.ts", - "version": "1.112.6" -} + "version": "1.112.7" +} \ No newline at end of file diff --git a/deltachat-repl/Cargo.toml b/deltachat-repl/Cargo.toml index c6cee05cf..4546ec4b9 100644 --- a/deltachat-repl/Cargo.toml +++ b/deltachat-repl/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "deltachat-repl" -version = "1.112.6" +version = "1.112.7" license = "MPL-2.0" edition = "2021" diff --git a/deltachat-rpc-server/Cargo.toml b/deltachat-rpc-server/Cargo.toml index 5edba509b..fb94b10bf 100644 --- a/deltachat-rpc-server/Cargo.toml +++ b/deltachat-rpc-server/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "deltachat-rpc-server" -version = "1.112.6" +version = "1.112.7" description = "DeltaChat JSON-RPC server" edition = "2021" readme = "README.md" diff --git a/package.json b/package.json index 6716b8c01..d4be1a946 100644 --- a/package.json +++ b/package.json @@ -60,5 +60,5 @@ "test:mocha": "mocha -r esm node/test/test.js --growl --reporter=spec --bail --exit" }, "types": "node/dist/index.d.ts", - "version": "1.112.6" -} + "version": "1.112.7" +} \ No newline at end of file