mirror of
https://github.com/chatmail/core.git
synced 2026-05-02 04:46:29 +03:00
fix: renew IDLE timeout on keepalives and reduce it to 5 minutes
This change depends on async-imap update that resets the timeout every time an `* OK Still here` is received. Reducing timeout allows to detect lost connections not later than 6 minutes because Delta Chat will attempt to finish IDLE with DONE after 5 minutes without keepalives and will either get TCP RST directly or, worst case, wait another minute for TCP socket read timeout.
This commit is contained in:
4
Cargo.lock
generated
4
Cargo.lock
generated
@@ -224,9 +224,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "async-imap"
|
name = "async-imap"
|
||||||
version = "0.9.4"
|
version = "0.9.5"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d736a74edf6c327b53dd9c932eae834253470ac5f0c55770e7e133bcbf986362"
|
checksum = "a9d69fc1499878158750f644c4eb46aff55bb9d32d77e3dc4aecf8308d5c3ba6"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-channel 2.1.1",
|
"async-channel 2.1.1",
|
||||||
"base64 0.21.5",
|
"base64 0.21.5",
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ ratelimit = { path = "./deltachat-ratelimit" }
|
|||||||
|
|
||||||
anyhow = "1"
|
anyhow = "1"
|
||||||
async-channel = "2.0.0"
|
async-channel = "2.0.0"
|
||||||
async-imap = { version = "0.9.1", default-features = false, features = ["runtime-tokio"] }
|
async-imap = { version = "0.9.5", default-features = false, features = ["runtime-tokio"] }
|
||||||
async-native-tls = { version = "0.5", 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-smtp = { version = "0.9", default-features = false, features = ["runtime-tokio"] }
|
||||||
async_zip = { version = "0.0.12", default-features = false, features = ["deflate", "fs"] }
|
async_zip = { version = "0.0.12", default-features = false, features = ["deflate", "fs"] }
|
||||||
|
|||||||
@@ -12,7 +12,13 @@ use crate::context::Context;
|
|||||||
use crate::imap::{client::IMAP_TIMEOUT, FolderMeaning};
|
use crate::imap::{client::IMAP_TIMEOUT, FolderMeaning};
|
||||||
use crate::log::LogExt;
|
use crate::log::LogExt;
|
||||||
|
|
||||||
const IDLE_TIMEOUT: Duration = Duration::from_secs(23 * 60);
|
/// Timeout after which IDLE is finished
|
||||||
|
/// if there are no responses from the server.
|
||||||
|
///
|
||||||
|
/// If `* OK Still here` keepalives are sent more frequently
|
||||||
|
/// than this duration, timeout should never be triggered.
|
||||||
|
/// For example, Dovecot sends keepalives every 2 minutes by default.
|
||||||
|
const IDLE_TIMEOUT: Duration = Duration::from_secs(5 * 60);
|
||||||
|
|
||||||
impl Session {
|
impl Session {
|
||||||
pub async fn idle(
|
pub async fn idle(
|
||||||
|
|||||||
Reference in New Issue
Block a user