changeset 9412:ca1713feedae

QUIC: better approach for premature handshake completion. Using SSL_in_init() to inspect a handshake state was replaced with SSL_is_init_finished(). This represents a more complete fix to the BoringSSL issue addressed in 22671b37e. This provides awareness of the early data handshake state when using OpenSSL 3.5 TLS callbacks in 0-RTT enabled configurations, which, in particular, is used to avoid premature completion of the initial TLS handshake, before required client handshake messages are received. This is a non-functional change when using BoringSSL. It supersedes testing non-positive SSL_do_handshake() results in all supported SSL libraries, hence simplified. In preparation for using OpenSSL 3.5 TLS callbacks.
author Sergey Kandaurov <pluknet@nginx.com>
date Fri, 16 May 2025 01:10:11 +0400
parents 7e424b06825b
children e992b5db34fc
files src/event/quic/ngx_event_quic_ssl.c
diffstat 1 files changed, 1 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/event/quic/ngx_event_quic_ssl.c	Tue May 06 15:58:17 2025 +0400
+++ b/src/event/quic/ngx_event_quic_ssl.c	Fri May 16 01:10:11 2025 +0400
@@ -463,7 +463,7 @@
         }
     }
 
-    if (n <= 0 || SSL_in_init(ssl_conn)) {
+    if (!SSL_is_init_finished(ssl_conn)) {
         if (ngx_quic_keys_available(qc->keys, NGX_QUIC_ENCRYPTION_EARLY_DATA, 0)
             && qc->client_tp_done)
         {