+10
−0
Loading
readBodyChunkNonBlocking() returning 0 means EAGAIN, not "stream
finished" -- only (size_t)-1 does. The upstream-error and empty-body
drain loops treated 0 as done and let the pooled HttpClient fall back
into _mdbStreamPool possibly mid-stream, corrupting it for the next
request that reuses it. That request then hangs waiting on frames
that never arrive, permanently parking one of blogi's fixed epoll
worker threads -- enough stuck video/media requests exhausts the pool
and wedges the entire site.
Co-Authored-By:
Claude Sonnet 5 <noreply@anthropic.com>