Mercurial > hg > nginx
view auto/cc/bcc @ 9156:36b59521a41c
QUIC: refined sending CONNECTION_CLOSE in various packet types.
As per RFC 9000, section 10.2.3, to ensure that peer successfully removed
packet protection, CONNECTION_CLOSE can be sent in multiple packets using
different packet protection levels.
Now it is sent in all protection levels available.
This roughly corresponds to the following paragraph:
* Prior to confirming the handshake, a peer might be unable to process 1-RTT
packets, so an endpoint SHOULD send a CONNECTION_CLOSE frame in both Handshake
and 1-RTT packets. A server SHOULD also send a CONNECTION_CLOSE frame in an
Initial packet.
In practice, this change allows to avoid sending an Initial packet when we know
the client has handshake keys, by checking if we have discarded initial keys.
Also, this fixes sending CONNECTION_CLOSE when using QuicTLS with old QUIC API,
where TLS stack releases application read keys before handshake confirmation;
it is fixed by sending CONNECTION_CLOSE additionally in a Handshake packet.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Fri, 01 Sep 2023 20:31:46 +0400 |
parents | b7b7f3a0cc28 |
children |
line wrap: on
line source
# Copyright (C) Igor Sysoev # Copyright (C) Nginx, Inc. # Borland C++ 5.5 # optimizations # maximize speed CFLAGS="$CFLAGS -O2" case $CPU in pentium) # optimize for Pentium and Athlon CPU_OPT="-5" ;; pentiumpro) # optimize for Pentium Pro, Pentium II and Pentium III CPU_OPT="-6" ;; esac # __stdcall #CPU_OPT="$CPU_OPT -ps" # __fastcall #CPU_OPT="$CPU_OPT -pr" CFLAGS="$CFLAGS $CPU_OPT" # multithreaded CFLAGS="$CFLAGS -tWM" # stop on warning CFLAGS="$CFLAGS -w!" # disable logo CFLAGS="$CFLAGS -q" # precompiled headers CORE_DEPS="$CORE_DEPS $NGX_OBJS/ngx_config.csm" NGX_PCH="$NGX_OBJS/ngx_config.csm" NGX_BUILD_PCH="-H=$NGX_OBJS/ngx_config.csm" NGX_USE_PCH="-Hu -H=$NGX_OBJS/ngx_config.csm" # Win32 GUI mode application #LINK="\$(CC) -laa" # the resource file NGX_RES="$NGX_OBJS/nginx.res" NGX_RCC="brcc32 -fo$NGX_OBJS/nginx.res \$(CORE_INCS) $NGX_WIN32_RC" # the pragma allows to link the resource file using bcc32 and # to avoid the direct ilink32 calling and the c0w32.obj's WinMain/main problem NGX_PRAGMA="#pragma resource \"$NGX_OBJS/nginx.res\"" ngx_include_opt="-I" ngx_objout="-o" ngx_binout="-e" ngx_objext="obj" ngx_long_start='@&&| ' ngx_long_end='|' ngx_regex_dirsep='\\' ngx_dirsep="\\"