Mercurial > hg > nginx-quic
changeset 7728:66f59c67adf4 quic
Skip unknown transport parameters.
author | Vladimir Homutov <vl@nginx.com> |
---|---|
date | Mon, 23 Mar 2020 12:57:24 +0300 |
parents | 55a3a9c50af2 |
children | 1295b293d09a |
files | src/event/ngx_event_quic_transport.c |
diffstat | 1 files changed, 19 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- 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 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 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 * 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 * 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; }