# HG changeset patch # User Sergey Kandaurov # Date 1632308478 -10800 # Node ID 630ecd7038052de87f0611d5ca1b76466e1be690 # Parent a2cef164a924fb0b5516298d8a2bdd28db75e18a QUIC: set NGX_TCP_NODELAY_DISABLED for fake stream connections. Notably, it is to avoid setting the TCP_NODELAY flag for QUIC streams in ngx_http_upstream_send_response(). It is an invalid operation on inherently SOCK_DGRAM sockets, which leads to QUIC connection close. The change reduces diff to the default branch in stream content phase. diff --git a/src/event/quic/ngx_event_quic_streams.c b/src/event/quic/ngx_event_quic_streams.c --- a/src/event/quic/ngx_event_quic_streams.c +++ b/src/event/quic/ngx_event_quic_streams.c @@ -450,6 +450,7 @@ ngx_quic_create_stream(ngx_connection_t sc->local_sockaddr = c->local_sockaddr; sc->local_socklen = c->local_socklen; sc->number = ngx_atomic_fetch_add(ngx_connection_counter, 1); + sc->tcp_nodelay = NGX_TCP_NODELAY_DISABLED; sc->recv = ngx_quic_stream_recv; sc->send = ngx_quic_stream_send; diff --git a/src/stream/ngx_stream_core_module.c b/src/stream/ngx_stream_core_module.c --- a/src/stream/ngx_stream_core_module.c +++ b/src/stream/ngx_stream_core_module.c @@ -325,9 +325,6 @@ ngx_stream_core_content_phase(ngx_stream cscf = ngx_stream_get_module_srv_conf(s, ngx_stream_core_module); if (c->type == SOCK_STREAM -#if (NGX_STREAM_QUIC) - && c->quic == NULL -#endif && cscf->tcp_nodelay && ngx_tcp_nodelay(c) != NGX_OK) {