Skip to main content

Module stalls

Module stalls 

Source
Expand description

The one place Sioul builds on ureq’s transport, ureq::unversioned, which ureq keeps out of its semver promise: any ureq release may change it. Written for ureq 3.4 (3.4.2 in Cargo.lock, 9 October 2026). When an update breaks the build here, this file alone changes; what it does stays the same: each wait for the network bounded, not only each phase of a request.

ureq’s own limits count a whole phase of a request (all of an answer’s body, for instance): an answer trickling in on a weak signal for longer than that is cut although it moves, and one that stops is waited for until the phase’s end. Here each read and each write waits stall at most: an answer goes on as long as it moves, and one that stops is given up soon.

A shared agent (shared_agent) keeps its connections for requests that ask different waits: each request says its own first, on its thread (ask), since a connection kept in ureq’s pool serves the next request whichever opened it.

Structs§

Stalling 🔒
Stalls 🔒
Each wait for the network, at most stall; patient: the waits for an answer are not capped (agent’s); asked: both as the request running on the thread asked (shared_agent).

Constants§

ASKED 🔒
What the last request run on this thread through a shared agent asked (ask).

Functions§

agent 🔒
An agent with ureq’s config, each wait for the network stall at most; patient: the wait for an answer is not capped (a file sent whole, whose bytes may wait in the system’s buffers on a slow uplink while the answer is awaited: bounded by the request’s whole budget alone).
ask 🔒
The waits of the next requests this thread runs through a shared agent (shared_agent), their answers’ bodies read included: each read and write stall at most, the wait for an answer not capped when patient. Said before each request; holds until the next is said. Other agents never read it.
shared_agent 🔒
An agent whose connections serve requests that ask different waits (the sharing’s one agent per process, remote): each wait as the request running on this thread asked (ask); none asked yet on it, stall, not patient.