]> git.kaiwu.me - nginx.git/commit
HTTP/3: proper uni stream closure detection.
authorRoman Arutyunyan <arut@nginx.com>
Mon, 31 Jan 2022 06:46:30 +0000 (09:46 +0300)
committerRoman Arutyunyan <arut@nginx.com>
Mon, 31 Jan 2022 06:46:30 +0000 (09:46 +0300)
commit77efe512fa18580bef6f8d795bc1c1cfff5d0097
tree299b8fb15007f9f566bd8dae6c3c65af35eb1262
parent5e31cdbb98466055ce27d4596b5e5a1406fc83d4
HTTP/3: proper uni stream closure detection.

Previously, closure detection for server-initiated uni streams was not properly
implemented.  Instead, HTTP/3 code relied on QUIC code posting the read event
and setting rev->error when it needed to close the stream.  Then, regular
uni stream read handler called c->recv() and received error, which closed the
stream.  This was an ad-hoc solution.  If, for whatever reason, the read
handler was called earlier, c->recv() would return 0, which would also close
the stream.

Now server-initiated uni streams have a separate read event handler for
tracking stream closure.  The handler calls c->recv(), which normally returns
0, but may return error in case of closure.
src/http/v3/ngx_http_v3_uni.c