Summary
All Client::connect() calls in a process share a single DNS worker queue capped at 32 jobs. The 33rd concurrent connect attempt fails immediately with ErrorCode::Timeout, even when DNS itself is healthy.
Attacker
Any workload in the same process that can trigger many concurrent outbound Client::connect() calls (remote user requesting many streams, compromised thread, or hostile co-hosted workload in the embedder).
Controlled input
33+ simultaneous connect attempts requiring DNS resolution.
Attack path
- All clients share one
mpsc::sync_channel DNS worker (DNS_TX, depth 32) in resolve_socket_addrs().
try_send on the 33rd job returns Err → ErrorCode::Timeout.
- Legitimate concurrent outbound connects in the same process fail even though DNS is available.
Impact
Cross-client denial of service inside a single embedder process (e.g. media gateway spawning many outbound RTMP pulls). Unrelated legitimate connects fail when the queue is saturated.
Location
src/client/mod.rs
Remediation
Increase queue depth, block with a deadline instead of failing immediately on try_send, or isolate DNS resolution per connect with a global concurrency limit separate from the queue depth.
Summary
All
Client::connect()calls in a process share a single DNS worker queue capped at 32 jobs. The 33rd concurrent connect attempt fails immediately withErrorCode::Timeout, even when DNS itself is healthy.Attacker
Any workload in the same process that can trigger many concurrent outbound
Client::connect()calls (remote user requesting many streams, compromised thread, or hostile co-hosted workload in the embedder).Controlled input
33+ simultaneous connect attempts requiring DNS resolution.
Attack path
mpsc::sync_channelDNS worker (DNS_TX, depth 32) inresolve_socket_addrs().try_sendon the 33rd job returnsErr→ErrorCode::Timeout.Impact
Cross-client denial of service inside a single embedder process (e.g. media gateway spawning many outbound RTMP pulls). Unrelated legitimate connects fail when the queue is saturated.
Location
src/client/mod.rsRemediation
Increase queue depth, block with a deadline instead of failing immediately on
try_send, or isolate DNS resolution per connect with a global concurrency limit separate from the queue depth.