summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorVladimir Homutov <vl@nginx.com>2020-03-23 12:57:24 +0300
committerVladimir Homutov <vl@nginx.com>2020-03-23 12:57:24 +0300
commitb3129b46f69a46a04c1a4dad6137806b948b7a32 (patch)
treec07107d147aa0d1be737ab1617800838452148ad /src
parent6a3a0ee19f1b37edc9a69765ee745dae96082d96 (diff)
downloadnginx-b3129b46f69a46a04c1a4dad6137806b948b7a32.tar.gz
nginx-b3129b46f69a46a04c1a4dad6137806b948b7a32.tar.bz2
Skip unknown transport parameters.
Diffstat (limited to 'src')
-rw-r--r--src/event/ngx_event_quic_transport.c23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/event/ngx_event_quic_transport.c b/src/event/ngx_event_quic_transport.c
index 61265b3d3..459d61c2d 100644
--- a/src/event/ngx_event_quic_transport.c
+++ b/src/event/ngx_event_quic_transport.c
@@ -1227,7 +1227,7 @@ ngx_quic_parse_transport_param(u_char *p, u_char *end, uint16_t id,
case NGX_QUIC_TP_STATELESS_RESET_TOKEN:
case NGX_QUIC_TP_PREFERRED_ADDRESS:
// TODO
- return NGX_ERROR;
+ return NGX_DECLINED;
}
switch (id) {
@@ -1259,7 +1259,7 @@ ngx_quic_parse_transport_param(u_char *p, u_char *end, uint16_t id,
break;
default:
- return NGX_ERROR;
+ return NGX_DECLINED;
}
switch (id) {
@@ -1320,6 +1320,7 @@ ngx_int_t
ngx_quic_parse_transport_params(u_char *p, u_char *end, ngx_quic_tp_t *tp,
ngx_log_t *log)
{
+ ngx_int_t rc;
#if (quic_version < 0xff00001b)
@@ -1348,12 +1349,19 @@ ngx_quic_parse_transport_params(u_char *p, u_char *end, ngx_quic_tp_t *tp,
return NGX_ERROR;
}
- if (ngx_quic_parse_transport_param(p, p + len, id, tp) != NGX_OK) {
+ rc = ngx_quic_parse_transport_param(p, p + len, id, tp);
+
+ if (rc == NGX_ERROR) {
ngx_log_error(NGX_LOG_INFO, log, 0,
"failed to parse transport param id 0x%xi data", id);
return NGX_ERROR;
}
+ if (rc == NGX_DECLINED) {
+ ngx_log_error(NGX_LOG_INFO, log, 0,
+ "unknown transport param id 0x%xi, skipped", id);
+ }
+
p += len;
};
@@ -1376,12 +1384,19 @@ ngx_quic_parse_transport_params(u_char *p, u_char *end, ngx_quic_tp_t *tp,
return NGX_ERROR;
}
- if (ngx_quic_parse_transport_param(p, p + len, id, tp) != NGX_OK) {
+ rc = ngx_quic_parse_transport_param(p, p + len, id, tp);
+
+ if (rc == NGX_ERROR) {
ngx_log_error(NGX_LOG_INFO, log, 0,
"failed to parse transport param id 0x%xi data", id);
return NGX_ERROR;
}
+ if (rc == NGX_DECLINED) {
+ ngx_log_error(NGX_LOG_INFO, log, 0,
+ "unknown transport param id 0x%xi,skipped", id);
+ }
+
p += len;
}