Mercurial > hg > nginx-quic
comparison src/event/ngx_event_quic_transport.h @ 7792: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 |
comparison
equal
deleted
inserted
replaced
7791:9b9d592c0da3 | 7792:1cdd53532309 |
---|---|
100 typedef struct { | 100 typedef struct { |
101 uint64_t largest; | 101 uint64_t largest; |
102 uint64_t delay; | 102 uint64_t delay; |
103 uint64_t range_count; | 103 uint64_t range_count; |
104 uint64_t first_range; | 104 uint64_t first_range; |
105 uint64_t ranges[20]; | 105 uint64_t ect0; |
106 /* TODO: ecn counts */ | 106 uint64_t ect1; |
107 uint64_t ce; | |
108 u_char *ranges_start; | |
109 u_char *ranges_end; | |
107 } ngx_quic_ack_frame_t; | 110 } ngx_quic_ack_frame_t; |
108 | 111 |
109 | 112 |
110 typedef struct { | 113 typedef struct { |
111 uint64_t offset; | 114 uint64_t offset; |
282 | 285 |
283 ssize_t ngx_quic_parse_frame(ngx_quic_header_t *pkt, u_char *start, u_char *end, | 286 ssize_t ngx_quic_parse_frame(ngx_quic_header_t *pkt, u_char *start, u_char *end, |
284 ngx_quic_frame_t *frame); | 287 ngx_quic_frame_t *frame); |
285 ssize_t ngx_quic_create_frame(u_char *p, ngx_quic_frame_t *f); | 288 ssize_t ngx_quic_create_frame(u_char *p, ngx_quic_frame_t *f); |
286 | 289 |
290 ssize_t ngx_quic_parse_ack_range(ngx_quic_header_t *pkt, u_char *start, | |
291 u_char *end, uint64_t *gap, uint64_t *range); | |
292 | |
287 ngx_int_t ngx_quic_parse_transport_params(u_char *p, u_char *end, | 293 ngx_int_t ngx_quic_parse_transport_params(u_char *p, u_char *end, |
288 ngx_quic_tp_t *tp, ngx_log_t *log); | 294 ngx_quic_tp_t *tp, ngx_log_t *log); |
289 ssize_t ngx_quic_create_transport_params(u_char *p, u_char *end, | 295 ssize_t ngx_quic_create_transport_params(u_char *p, u_char *end, |
290 ngx_quic_tp_t *tp); | 296 ngx_quic_tp_t *tp); |
291 | 297 |