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