No ureq agent set a timeout, and ureq sets none by default, so a connection dropped silently mid-transfer (a NAT or load-balancer idle drop) hung a JMAP, DAV, EWS or Graph run, or an export, with no error, and the retry logic never got a chance to run. IMAP and ManageSieve already had read timeouts. Every agent now takes its settings from a new net module: 30s to connect, 60s to send the request headers, 5 minutes for the server's first byte, and 30 minutes for a whole response body, which ureq counts as one budget for the body rather than per read: enough for the 512 MiB limit at about 300 KB/s. A JMAP upload's send budget grows with its size, from a 2 minute floor at an assumed 64 KiB/s worst case. A timeout is a transport error, and every client already retries those, so a stalled transfer is now abandoned and retried. Tests pin that down for each client. The TLS setup the seven agents repeated moves to one helper.
24 lines
449 B
Rust
24 lines
449 B
Rust
/*
|
|
* SPDX-FileCopyrightText: 2020 Stalwart Labs LLC <[email protected]>
|
|
* SPDX-FileCopyrightText: 2026 John Coffey <[email protected]>
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0 OR MIT
|
|
*/
|
|
|
|
pub mod cli;
|
|
pub mod dav;
|
|
pub mod db;
|
|
pub mod error;
|
|
pub mod exchange;
|
|
pub mod exchange_ews;
|
|
pub mod exchange_graph;
|
|
pub mod imap;
|
|
pub mod inspect;
|
|
pub mod jmap;
|
|
pub mod logging;
|
|
pub mod managesieve;
|
|
pub mod net;
|
|
pub mod secret;
|
|
pub mod sync;
|
|
pub mod types;
|