mirror of
https://github.com/XRPLF/rippled.git
synced 2026-09-27 15:28:03 +00:00
HTTPClient: arm the request deadline on the normal path (the wait was registered only when expires_after threw, so no request had a timeout), reset the per-site error state so host fallback is attempted, and on expiry close the transport instead of negotiating a TLS shutdown that waits on the unresponsive peer. Ignore a deadline handler that was already queued when the timer was re-armed for the next host, treat a timer wait error like a timeout instead of aborting the process, and complete on a header read error rather than parsing an incomplete buffer. ConnectAttempt: bound the upgrade-response read with the step timer, as every other step of the attempt already is. util::spawn: build the strand from the context or executor directly. get_associated_executor is a handler query and does not instantiate for an io_context or an executor under Boost 1.91. Tests: HTTPClient timeout, read-error and host-fallback cases; util::spawn on an io_context, an executor and a strand, plus exception propagation. Fixes #8235