comparison src/event/quic/ngx_event_quic_streams.c @ 8828:a9f6540e61da quic

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.
author Roman Arutyunyan <arut@nginx.com>
date Thu, 05 Aug 2021 09:20:32 +0300
parents fe919fd63b0b
children 1f7f98638dc2
comparison
equal deleted inserted replaced
8827:fe919fd63b0b 8828:a9f6540e61da
847 done: 847 done:
848 848
849 (void) ngx_quic_output(pc); 849 (void) ngx_quic_output(pc);
850 850
851 if (qc->shutdown) { 851 if (qc->shutdown) {
852 ngx_quic_shutdown_quic(pc); 852 ngx_post_event(pc->read, &ngx_posted_events);
853 } 853 }
854 } 854 }
855 855
856 856
857 ngx_int_t 857 ngx_int_t