diff src/event/ngx_event_quic_transport.h @ 8326:1cdd53532309 quic

ACK ranges processing. + since number of ranges in unknown, provide a function to parse them once again in handler to avoid memory allocation + ack handler now processes all ranges, not only the first + ECN counters are parsed and saved into frame if present
author Vladimir Homutov <vl@nginx.com>
date Mon, 06 Apr 2020 16:19:26 +0300
parents 29354c6fc5f2
children 167d32476737
line wrap: on
line diff
--- a/src/event/ngx_event_quic_transport.h
+++ b/src/event/ngx_event_quic_transport.h
@@ -102,8 +102,11 @@ typedef struct {
     uint64_t                                    delay;
     uint64_t                                    range_count;
     uint64_t                                    first_range;
-    uint64_t                                    ranges[20];
-    /* TODO: ecn counts */
+    uint64_t                                    ect0;
+    uint64_t                                    ect1;
+    uint64_t                                    ce;
+    u_char                                      *ranges_start;
+    u_char                                      *ranges_end;
 } ngx_quic_ack_frame_t;
 
 
@@ -284,6 +287,9 @@ ssize_t ngx_quic_parse_frame(ngx_quic_he
     ngx_quic_frame_t *frame);
 ssize_t ngx_quic_create_frame(u_char *p, ngx_quic_frame_t *f);
 
+ssize_t ngx_quic_parse_ack_range(ngx_quic_header_t *pkt, u_char *start,
+    u_char *end, uint64_t *gap, uint64_t *range);
+
 ngx_int_t ngx_quic_parse_transport_params(u_char *p, u_char *end,
     ngx_quic_tp_t *tp, ngx_log_t *log);
 ssize_t ngx_quic_create_transport_params(u_char *p, u_char *end,