summaryrefslogtreecommitdiffhomepage
path: root/src/event/quic/ngx_event_quic_ssl.c
diff options
context:
space:
mode:
authorSergey Kandaurov <pluknet@nginx.com>2021-11-30 14:30:59 +0300
committerSergey Kandaurov <pluknet@nginx.com>2021-11-30 14:30:59 +0300
commita981efe6e803acc17af428ea16385df1e8e05c00 (patch)
tree857571d41ba0642002de1bedbe243d3d21760064 /src/event/quic/ngx_event_quic_ssl.c
parentac851d7f69362ffeff4fe1f581434ab3ac9f9c59 (diff)
downloadnginx-a981efe6e803acc17af428ea16385df1e8e05c00.tar.gz
nginx-a981efe6e803acc17af428ea16385df1e8e05c00.tar.bz2
QUIC: ngx_quic_send_alert() callback moved to its place.
Diffstat (limited to 'src/event/quic/ngx_event_quic_ssl.c')
-rw-r--r--src/event/quic/ngx_event_quic_ssl.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/event/quic/ngx_event_quic_ssl.c b/src/event/quic/ngx_event_quic_ssl.c
index 839bb3161..9fc5c3985 100644
--- a/src/event/quic/ngx_event_quic_ssl.c
+++ b/src/event/quic/ngx_event_quic_ssl.c
@@ -34,6 +34,8 @@ static int ngx_quic_set_encryption_secrets(ngx_ssl_conn_t *ssl_conn,
static int ngx_quic_add_handshake_data(ngx_ssl_conn_t *ssl_conn,
enum ssl_encryption_level_t level, const uint8_t *data, size_t len);
static int ngx_quic_flush_flight(ngx_ssl_conn_t *ssl_conn);
+static int ngx_quic_send_alert(ngx_ssl_conn_t *ssl_conn,
+ enum ssl_encryption_level_t level, uint8_t alert);
static ngx_int_t ngx_quic_crypto_input(ngx_connection_t *c, ngx_chain_t *data);
@@ -287,6 +289,32 @@ ngx_quic_flush_flight(ngx_ssl_conn_t *ssl_conn)
}
+static int
+ngx_quic_send_alert(ngx_ssl_conn_t *ssl_conn, enum ssl_encryption_level_t level,
+ uint8_t alert)
+{
+ ngx_connection_t *c;
+ ngx_quic_connection_t *qc;
+
+ c = ngx_ssl_get_connection((ngx_ssl_conn_t *) ssl_conn);
+
+ ngx_log_debug2(NGX_LOG_DEBUG_EVENT, c->log, 0,
+ "quic ngx_quic_send_alert() level:%s alert:%d",
+ ngx_quic_level_name(level), (int) alert);
+
+ /* already closed on regular shutdown */
+
+ qc = ngx_quic_get_connection(c);
+ if (qc == NULL) {
+ return 1;
+ }
+
+ qc->error = NGX_QUIC_ERR_CRYPTO(alert);
+
+ return 1;
+}
+
+
ngx_int_t
ngx_quic_handle_crypto_frame(ngx_connection_t *c, ngx_quic_header_t *pkt,
ngx_quic_frame_t *frame)