diff options
author | Vladimir Homutov <vl@nginx.com> | 2020-09-25 21:47:28 +0300 |
---|---|---|
committer | Vladimir Homutov <vl@nginx.com> | 2020-09-25 21:47:28 +0300 |
commit | fe626bda8426fe7f0a9a9e4930eba30eb2b2f109 (patch) | |
tree | 3ea6263f0c08327d098f4764744756d1cc6cb435 /src | |
parent | 80958b29a2ed69237b463f848951e63480339b07 (diff) | |
download | nginx-fe626bda8426fe7f0a9a9e4930eba30eb2b2f109.tar.gz nginx-fe626bda8426fe7f0a9a9e4930eba30eb2b2f109.zip |
QUIC: simplified packet header parsing.
Now flags are processed in ngx_quic_input(), and raw->pos points to the first
byte after the flags. Redundant checks from ngx_quic_parse_short_header() and
ngx_quic_parse_long_header() are removed.
Diffstat (limited to 'src')
-rw-r--r-- | src/event/ngx_event_quic.c | 1 | ||||
-rw-r--r-- | src/event/ngx_event_quic_transport.c | 28 |
2 files changed, 3 insertions, 26 deletions
diff --git a/src/event/ngx_event_quic.c b/src/event/ngx_event_quic.c index f79ec408f..04fe56deb 100644 --- a/src/event/ngx_event_quic.c +++ b/src/event/ngx_event_quic.c @@ -1623,6 +1623,7 @@ ngx_quic_input(ngx_connection_t *c, ngx_buf_t *b) pkt.len = b->last - p; pkt.log = c->log; pkt.flags = p[0]; + pkt.raw->pos++; if (c->quic->in_retry) { rc = ngx_quic_retry_input(c, &pkt); diff --git a/src/event/ngx_event_quic_transport.c b/src/event/ngx_event_quic_transport.c index be0aed78d..182b93f61 100644 --- a/src/event/ngx_event_quic_transport.c +++ b/src/event/ngx_event_quic_transport.c @@ -250,21 +250,9 @@ ngx_quic_parse_long_header(ngx_quic_header_t *pkt) u_char *p, *end; uint8_t idlen; - p = pkt->data; + p = pkt->raw->pos; end = pkt->data + pkt->len; - p = ngx_quic_read_uint8(p, end, &pkt->flags); - if (p == NULL) { - ngx_log_error(NGX_LOG_INFO, pkt->log, 0, - "quic packet is too small to read flags"); - return NGX_ERROR; - } - - if (!ngx_quic_long_pkt(pkt->flags)) { - ngx_log_error(NGX_LOG_INFO, pkt->log, 0, "quic not a long packet"); - return NGX_ERROR; - } - p = ngx_quic_read_uint32(p, end, &pkt->version); if (p == NULL) { ngx_log_error(NGX_LOG_INFO, pkt->log, 0, @@ -473,21 +461,9 @@ ngx_quic_parse_short_header(ngx_quic_header_t *pkt, ngx_str_t *dcid) { u_char *p, *end; - p = pkt->data; + p = pkt->raw->pos; end = pkt->data + pkt->len; - p = ngx_quic_read_uint8(p, end, &pkt->flags); - if (p == NULL) { - ngx_log_error(NGX_LOG_INFO, pkt->log, 0, - "quic packet is too small to read flags"); - return NGX_ERROR; - } - - if (!ngx_quic_short_pkt(pkt->flags)) { - ngx_log_error(NGX_LOG_INFO, pkt->log, 0, "quic not a short packet"); - return NGX_ERROR; - } - ngx_log_debug1(NGX_LOG_DEBUG_EVENT, pkt->log, 0, "quic short packet flags:%xd", pkt->flags); |