diff src/event/ngx_event_quic_transport.c @ 8559:a89a58c642ef quic

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.
author Vladimir Homutov <vl@nginx.com>
date Fri, 25 Sep 2020 21:47:28 +0300
parents 0f37b4ef3cd9
children d0d3fc0697a0
line wrap: on
line diff
--- 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_head
     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_hea
 {
     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);