aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSergey Kandaurov <pluknet@nginx.com>2021-02-03 12:39:41 +0300
committerSergey Kandaurov <pluknet@nginx.com>2021-02-03 12:39:41 +0300
commitb51d0100299d0a2f35edfc1c00b3e31571bc88e5 (patch)
treeb8aa84cc9ab8375b8b7b9f6bc5e5ef43d9d243f2 /src
parent365c8b7914033c05fc1e564684dade448fc65671 (diff)
downloadnginx-b51d0100299d0a2f35edfc1c00b3e31571bc88e5.tar.gz
nginx-b51d0100299d0a2f35edfc1c00b3e31571bc88e5.zip
QUIC: removed redundant "app" flag from ngx_quic_close_frame_t.
The flag was introduced to create type-aware CONNECTION_CLOSE frames, and now is replaced with frame type information, directly accessible. Notably, this fixes type logging for received frames in b3d9e57d0f62.
Diffstat (limited to 'src')
-rw-r--r--src/event/quic/ngx_event_quic.c7
-rw-r--r--src/event/quic/ngx_event_quic_transport.c23
-rw-r--r--src/event/quic/ngx_event_quic_transport.h1
3 files changed, 15 insertions, 16 deletions
diff --git a/src/event/quic/ngx_event_quic.c b/src/event/quic/ngx_event_quic.c
index 6a156bb71..b0628545d 100644
--- a/src/event/quic/ngx_event_quic.c
+++ b/src/event/quic/ngx_event_quic.c
@@ -522,7 +522,8 @@ ngx_quic_log_frame(ngx_log_t *log, ngx_quic_frame_t *f, ngx_uint_t tx)
case NGX_QUIC_FT_CONNECTION_CLOSE:
case NGX_QUIC_FT_CONNECTION_CLOSE_APP:
p = ngx_slprintf(p, last, "CONNECTION_CLOSE%s err:%ui",
- f->u.close.app ? "_APP" : "", f->u.close.error_code);
+ f->type == NGX_QUIC_FT_CONNECTION_CLOSE ? "" : "_APP",
+ f->u.close.error_code);
if (f->u.close.reason.len) {
p = ngx_slprintf(p, last, " %V", &f->u.close.reason);
@@ -3251,10 +3252,10 @@ ngx_quic_send_cc(ngx_connection_t *c)
}
frame->level = qc->error_level;
- frame->type = NGX_QUIC_FT_CONNECTION_CLOSE;
+ frame->type = qc->error_app ? NGX_QUIC_FT_CONNECTION_CLOSE_APP
+ : NGX_QUIC_FT_CONNECTION_CLOSE;
frame->u.close.error_code = qc->error;
frame->u.close.frame_type = qc->error_ftype;
- frame->u.close.app = qc->error_app;
if (qc->error_reason) {
frame->u.close.reason.len = ngx_strlen(qc->error_reason);
diff --git a/src/event/quic/ngx_event_quic_transport.c b/src/event/quic/ngx_event_quic_transport.c
index 2ecfac5a4..73b146731 100644
--- a/src/event/quic/ngx_event_quic_transport.c
+++ b/src/event/quic/ngx_event_quic_transport.c
@@ -116,7 +116,7 @@ static size_t ngx_quic_create_new_connection_id(u_char *p,
ngx_quic_new_conn_id_frame_t *rcid);
static size_t ngx_quic_create_retire_connection_id(u_char *p,
ngx_quic_retire_cid_frame_t *rcid);
-static size_t ngx_quic_create_close(u_char *p, ngx_quic_close_frame_t *cl);
+static size_t ngx_quic_create_close(u_char *p, ngx_quic_frame_t *f);
static ngx_int_t ngx_quic_parse_transport_param(u_char *p, u_char *end,
uint16_t id, ngx_quic_tp_t *dst);
@@ -1249,7 +1249,7 @@ ngx_quic_create_frame(u_char *p, ngx_quic_frame_t *f)
case NGX_QUIC_FT_CONNECTION_CLOSE:
case NGX_QUIC_FT_CONNECTION_CLOSE_APP:
f->need_ack = 0;
- return ngx_quic_create_close(p, &f->u.close);
+ return ngx_quic_create_close(p, f);
case NGX_QUIC_FT_MAX_STREAMS:
return ngx_quic_create_max_streams(p, &f->u.max_streams);
@@ -1956,20 +1956,19 @@ ngx_quic_create_transport_params(u_char *pos, u_char *end, ngx_quic_tp_t *tp,
static size_t
-ngx_quic_create_close(u_char *p, ngx_quic_close_frame_t *cl)
+ngx_quic_create_close(u_char *p, ngx_quic_frame_t *f)
{
- size_t len;
- u_char *start;
- ngx_uint_t type;
+ size_t len;
+ u_char *start;
+ ngx_quic_close_frame_t *cl;
- type = cl->app ? NGX_QUIC_FT_CONNECTION_CLOSE_APP
- : NGX_QUIC_FT_CONNECTION_CLOSE;
+ cl = &f->u.close;
if (p == NULL) {
- len = ngx_quic_varint_len(type);
+ len = ngx_quic_varint_len(f->type);
len += ngx_quic_varint_len(cl->error_code);
- if (!cl->app) {
+ if (f->type != NGX_QUIC_FT_CONNECTION_CLOSE_APP) {
len += ngx_quic_varint_len(cl->frame_type);
}
@@ -1981,10 +1980,10 @@ ngx_quic_create_close(u_char *p, ngx_quic_close_frame_t *cl)
start = p;
- ngx_quic_build_int(&p, type);
+ ngx_quic_build_int(&p, f->type);
ngx_quic_build_int(&p, cl->error_code);
- if (!cl->app) {
+ if (f->type != NGX_QUIC_FT_CONNECTION_CLOSE_APP) {
ngx_quic_build_int(&p, cl->frame_type);
}
diff --git a/src/event/quic/ngx_event_quic_transport.h b/src/event/quic/ngx_event_quic_transport.h
index 7f82d949e..e747aaa2c 100644
--- a/src/event/quic/ngx_event_quic_transport.h
+++ b/src/event/quic/ngx_event_quic_transport.h
@@ -197,7 +197,6 @@ typedef struct {
uint64_t error_code;
uint64_t frame_type;
ngx_str_t reason;
- ngx_uint_t app; /* unsigned app:1; */
} ngx_quic_close_frame_t;