aio-libs
aiohttp
Blog
Docs
Changelog
Blog
Docs
Changelog
Overview
Branches
Benchmarks
Runs
Performance History
Latest Results
State the clock rule once in _drain_tail It was written twice with an early return between, once for the bound still holding and once for a resume that found the transport held elsewhere. Neither covered a pause already in force on entry that the drain then armed the clock against, which is reachable by setting _reading_paused before the drain. The rule is about the transport, not about which pause the drain just lifted, so say it once at the end: anything still holding it means sock_read stays stopped.
ws_tail_bound
36 minutes ago
Name the surviving resume for what it guards _resume_msg_queue_reading() checks the message tail as well as the queue, and its pause partner is gone now that callers take the base method, so it was the odd half of a pair naming one buffer. It resumes once the buffers it guards have drained; say that.
ws_tail_bound
46 minutes ago
Inline the tail pause helpers and stop the clock reviving _resume_tail_reading() re-armed sock_read to mirror the pause, but data_received() owns the read clock and has already set it by the time the drain returns; that re-arm could revive a timeout dropped for a response that had just completed with no body. Drop the re-arm, and with it the pair: each was called once, and naming them pause and resume implied an inverse the clock half never was. The rule now reads where it applies, once at the bound and once after the drain.
ws_tail_bound
1 hour ago
Put the empty-except comments back
ws_tail_bound
1 hour ago
Stop the clock on the branch that keeps the pause The bound-holding early return added last commit is the one path that leaves the transport paused with sock_read still running: the drain restarts it on the way through data_received(). Drop it there too, so "this pause is ours" holds on every branch rather than most of them. Clear the two new flags in connection_lost() alongside the parser state they belong with. Nothing pools a failed handler today, so this is for the next reader rather than a fix.
ws_tail_bound
2 hours ago
Recommend heartbeat alone
ws_tail_bound
2 hours ago
Cover the resume that has to stop the timeout
ws_tail_bound
3 hours ago
Name the reader's EOF what it actually means It reads as though a clean close could land here, which it cannot: WebSocketReader returns EOF only after storing a protocol error on the queue. Call it protocol_error, and drop the unparsed remainder it returns with it, which nothing uses now that it is discarded too.
ws_tail_bound
7 hours ago
Latest Branches
CodSpeed Performance Gauge
0%
Bound websocket client buffers a peer can fill
#13743
46 minutes ago
9cf5c53
ws_tail_bound
CodSpeed Performance Gauge
0%
Cap parts yielded by request.multipart() with client_max_fields
#13742
7 hours ago
a1bcd5e
multipart-max-size
CodSpeed Performance Gauge
0%
[PR #13738/8b010057 backport][3.15] Add client_max_fields option to Application
#13740
13 hours ago
b1bd57c
patchback/backports/3.15/8b0100572936df28977b9de8a6cc7e464c0b521e/pr-13738
© 2026 CodSpeed Technology
Home
Terms
Privacy
Docs