]> git.kaiwu.me - nginx.git/commit
QUIC: asynchronous shutdown.
authorRoman Arutyunyan <arut@nginx.com>
Thu, 5 Aug 2021 06:20:32 +0000 (09:20 +0300)
committerRoman Arutyunyan <arut@nginx.com>
Thu, 5 Aug 2021 06:20:32 +0000 (09:20 +0300)
commitdab9163a95cb9c1c00ee9a3644c58474528b0f2b
tree095ec68bffcf70e1f4d32f4d1508c1ca7442b60d
parent0b179efeb0bc18e92a31748685cc74240ddb5667
QUIC: asynchronous shutdown.

Previously, when cleaning up a QUIC stream in shutdown mode,
ngx_quic_shutdown_quic() was called, which could close the QUIC connection
right away.  This could be a problem if the connection was referenced up the
stack.  For example, this could happen in ngx_quic_init_streams(),
ngx_quic_close_streams(), ngx_quic_create_client_stream() etc.

With a typical HTTP/3 client the issue is unlikely because of HTTP/3 uni
streams which need a posted event to close.  In this case QUIC connection
cannot be closed right away.

Now QUIC connection read event is posted and it will shut down the connection
asynchronously.
src/event/quic/ngx_event_quic.c
src/event/quic/ngx_event_quic_streams.c