From 8f0d5edf63b385c013571439c4af3b2f0fe2c856 Mon Sep 17 00:00:00 2001 From: Sergey Kandaurov Date: Wed, 5 May 2021 19:32:49 +0300 Subject: [PATCH] QUIC: simplified sending 1-RTT only frames. --- src/event/quic/ngx_event_quic.c | 10 ++++------ src/event/quic/ngx_event_quic_connid.c | 19 +++++++------------ src/event/quic/ngx_event_quic_connid.h | 4 ++-- src/event/quic/ngx_event_quic_migration.c | 9 ++++----- src/event/quic/ngx_event_quic_migration.h | 4 ++-- 5 files changed, 19 insertions(+), 27 deletions(-) diff --git a/src/event/quic/ngx_event_quic.c b/src/event/quic/ngx_event_quic.c index e19795487..b1aa758ee 100644 --- a/src/event/quic/ngx_event_quic.c +++ b/src/event/quic/ngx_event_quic.c @@ -1265,8 +1265,7 @@ ngx_quic_handle_frames(ngx_connection_t *c, ngx_quic_header_t *pkt) case NGX_QUIC_FT_PATH_CHALLENGE: - if (ngx_quic_handle_path_challenge_frame(c, pkt, - &frame.u.path_challenge) + if (ngx_quic_handle_path_challenge_frame(c, &frame.u.path_challenge) != NGX_OK) { return NGX_ERROR; @@ -1276,8 +1275,7 @@ ngx_quic_handle_frames(ngx_connection_t *c, ngx_quic_header_t *pkt) case NGX_QUIC_FT_PATH_RESPONSE: - if (ngx_quic_handle_path_response_frame(c, pkt, - &frame.u.path_response) + if (ngx_quic_handle_path_response_frame(c, &frame.u.path_response) != NGX_OK) { return NGX_ERROR; @@ -1287,7 +1285,7 @@ ngx_quic_handle_frames(ngx_connection_t *c, ngx_quic_header_t *pkt) case NGX_QUIC_FT_NEW_CONNECTION_ID: - if (ngx_quic_handle_new_connection_id_frame(c, pkt, &frame.u.ncid) + if (ngx_quic_handle_new_connection_id_frame(c, &frame.u.ncid) != NGX_OK) { return NGX_ERROR; @@ -1297,7 +1295,7 @@ ngx_quic_handle_frames(ngx_connection_t *c, ngx_quic_header_t *pkt) case NGX_QUIC_FT_RETIRE_CONNECTION_ID: - if (ngx_quic_handle_retire_connection_id_frame(c, pkt, + if (ngx_quic_handle_retire_connection_id_frame(c, &frame.u.retire_cid) != NGX_OK) { diff --git a/src/event/quic/ngx_event_quic_connid.c b/src/event/quic/ngx_event_quic_connid.c index 4dbb2bbd6..ca9218fcb 100644 --- a/src/event/quic/ngx_event_quic_connid.c +++ b/src/event/quic/ngx_event_quic_connid.c @@ -16,7 +16,7 @@ static ngx_int_t ngx_quic_bpf_attach_id(ngx_connection_t *c, u_char *id); #endif static ngx_int_t ngx_quic_send_retire_connection_id(ngx_connection_t *c, - enum ssl_encryption_level_t level, uint64_t seqnum); + uint64_t seqnum); static ngx_quic_client_id_t *ngx_quic_alloc_client_id(ngx_connection_t *c, ngx_quic_connection_t *qc); @@ -75,7 +75,7 @@ ngx_quic_bpf_attach_id(ngx_connection_t *c, u_char *id) ngx_int_t ngx_quic_handle_new_connection_id_frame(ngx_connection_t *c, - ngx_quic_header_t *pkt, ngx_quic_new_conn_id_frame_t *f) + ngx_quic_new_conn_id_frame_t *f) { ngx_str_t id; ngx_queue_t *q; @@ -94,9 +94,7 @@ ngx_quic_handle_new_connection_id_frame(ngx_connection_t *c, * done so for that sequence number. */ - if (ngx_quic_send_retire_connection_id(c, pkt->level, f->seqnum) - != NGX_OK) - { + if (ngx_quic_send_retire_connection_id(c, f->seqnum) != NGX_OK) { return NGX_ERROR; } @@ -174,9 +172,7 @@ retire: /* this connection id must be retired */ - if (ngx_quic_send_retire_connection_id(c, pkt->level, cid->seqnum) - != NGX_OK) - { + if (ngx_quic_send_retire_connection_id(c, cid->seqnum) != NGX_OK) { return NGX_ERROR; } @@ -210,8 +206,7 @@ done: static ngx_int_t -ngx_quic_send_retire_connection_id(ngx_connection_t *c, - enum ssl_encryption_level_t level, uint64_t seqnum) +ngx_quic_send_retire_connection_id(ngx_connection_t *c, uint64_t seqnum) { ngx_quic_frame_t *frame; ngx_quic_connection_t *qc; @@ -223,7 +218,7 @@ ngx_quic_send_retire_connection_id(ngx_connection_t *c, return NGX_ERROR; } - frame->level = level; + frame->level = ssl_encryption_application; frame->type = NGX_QUIC_FT_RETIRE_CONNECTION_ID; frame->u.retire_cid.sequence_number = seqnum; @@ -356,7 +351,7 @@ ngx_quic_used_client_id(ngx_connection_t *c, ngx_quic_path_t *path) ngx_int_t ngx_quic_handle_retire_connection_id_frame(ngx_connection_t *c, - ngx_quic_header_t *pkt, ngx_quic_retire_cid_frame_t *f) + ngx_quic_retire_cid_frame_t *f) { ngx_quic_path_t *path; ngx_quic_socket_t *qsock, **tmp; diff --git a/src/event/quic/ngx_event_quic_connid.h b/src/event/quic/ngx_event_quic_connid.h index a0552e9dd..f823e84dc 100644 --- a/src/event/quic/ngx_event_quic_connid.h +++ b/src/event/quic/ngx_event_quic_connid.h @@ -13,9 +13,9 @@ ngx_int_t ngx_quic_handle_retire_connection_id_frame(ngx_connection_t *c, - ngx_quic_header_t *pkt, ngx_quic_retire_cid_frame_t *f); + ngx_quic_retire_cid_frame_t *f); ngx_int_t ngx_quic_handle_new_connection_id_frame(ngx_connection_t *c, - ngx_quic_header_t *pkt, ngx_quic_new_conn_id_frame_t *f); + ngx_quic_new_conn_id_frame_t *f); ngx_int_t ngx_quic_create_sockets(ngx_connection_t *c); ngx_int_t ngx_quic_create_server_id(ngx_connection_t *c, u_char *id); diff --git a/src/event/quic/ngx_event_quic_migration.c b/src/event/quic/ngx_event_quic_migration.c index 74dc0113b..d6300012d 100644 --- a/src/event/quic/ngx_event_quic_migration.c +++ b/src/event/quic/ngx_event_quic_migration.c @@ -22,7 +22,7 @@ static ngx_quic_path_t *ngx_quic_alloc_path(ngx_connection_t *c); ngx_int_t ngx_quic_handle_path_challenge_frame(ngx_connection_t *c, - ngx_quic_header_t *pkt, ngx_quic_path_challenge_frame_t *f) + ngx_quic_path_challenge_frame_t *f) { off_t max, pad; ssize_t sent; @@ -33,7 +33,7 @@ ngx_quic_handle_path_challenge_frame(ngx_connection_t *c, qc = ngx_quic_get_connection(c); - frame.level = pkt->level; + frame.level = ssl_encryption_application; frame.type = NGX_QUIC_FT_PATH_RESPONSE; frame.u.path_response = *f; @@ -70,7 +70,7 @@ ngx_quic_handle_path_challenge_frame(ngx_connection_t *c, return NGX_ERROR; } - fp->level = pkt->level; + fp->level = ssl_encryption_application; fp->type = NGX_QUIC_FT_PING; ngx_quic_queue_frame(qc, fp); @@ -82,7 +82,7 @@ ngx_quic_handle_path_challenge_frame(ngx_connection_t *c, ngx_int_t ngx_quic_handle_path_response_frame(ngx_connection_t *c, - ngx_quic_header_t *pkt, ngx_quic_path_challenge_frame_t *f) + ngx_quic_path_challenge_frame_t *f) { ngx_queue_t *q; ngx_quic_path_t *path, *prev; @@ -557,7 +557,6 @@ ngx_quic_validate_path(ngx_connection_t *c, ngx_quic_socket_t *qsock) ngx_add_timer(&qc->path_validation, pto); } - return NGX_OK; } diff --git a/src/event/quic/ngx_event_quic_migration.h b/src/event/quic/ngx_event_quic_migration.h index 3de1d2c51..7c37c9085 100644 --- a/src/event/quic/ngx_event_quic_migration.h +++ b/src/event/quic/ngx_event_quic_migration.h @@ -26,9 +26,9 @@ ngx_int_t ngx_quic_handle_path_challenge_frame(ngx_connection_t *c, - ngx_quic_header_t *pkt, ngx_quic_path_challenge_frame_t *f); + ngx_quic_path_challenge_frame_t *f); ngx_int_t ngx_quic_handle_path_response_frame(ngx_connection_t *c, - ngx_quic_header_t *pkt, ngx_quic_path_challenge_frame_t *f); + ngx_quic_path_challenge_frame_t *f); ngx_quic_path_t *ngx_quic_add_path(ngx_connection_t *c, struct sockaddr *sockaddr, socklen_t socklen);