diff src/event/ngx_event_quic.c @ 8370:262396242352 quic

Reworked macros for parsing/assembling packet types. Previously, macros checking a packet type with the long header also checked whether this is a long header. Now it requires a separate preceding check.
author Vladimir Homutov <vl@nginx.com>
date Thu, 30 Apr 2020 12:38:38 +0300
parents bddf704d62c1
children 9d9531431c8c
line wrap: on
line diff
--- a/src/event/ngx_event_quic.c
+++ b/src/event/ngx_event_quic.c
@@ -2655,16 +2655,19 @@ ngx_quic_send_frames(ngx_connection_t *c
 
     pkt.secret = &keys->server;
 
+    pkt.flags = NGX_QUIC_PKT_FIXED_BIT;
+
     if (start->level == ssl_encryption_initial) {
-        pkt.flags = NGX_QUIC_PKT_INITIAL;
+        pkt.flags |= NGX_QUIC_PKT_LONG | NGX_QUIC_PKT_INITIAL;
         pkt.token = initial_token;
 
     } else if (start->level == ssl_encryption_handshake) {
-        pkt.flags = NGX_QUIC_PKT_HANDSHAKE;
+        pkt.flags |= NGX_QUIC_PKT_LONG | NGX_QUIC_PKT_HANDSHAKE;
 
     } else {
-        // TODO: macro, set FIXED bit
-        pkt.flags = 0x40 | (c->quic->key_phase ? NGX_QUIC_PKT_KPHASE : 0);
+        if (c->quic->key_phase) {
+            pkt.flags |= NGX_QUIC_PKT_KPHASE;
+        }
     }
 
     ngx_quic_set_packet_number(&pkt, ctx);