Skip to content

Commit 0cf5db2

Browse files
nodejs-github-botgithub-actions[bot]
authored andcommittedMar 16, 2025·
deps: update nghttp3 to 1.8.0
1 parent 26c4851 commit 0cf5db2

20 files changed

+1020
-582
lines changed
 

‎deps/ngtcp2/nghttp3/lib/includes/nghttp3/nghttp3.h

+1-3
Original file line numberDiff line numberDiff line change
@@ -2106,7 +2106,7 @@ NGHTTP3_EXTERN int nghttp3_conn_bind_qpack_streams(nghttp3_conn *conn,
21062106
* control credit (both stream and connection) of underlying QUIC
21072107
* connection by that amount. It does not include the amount of data
21082108
* carried by DATA frame which contains application data (excluding
2109-
* any control or QPACK unidirectional streams) . See
2109+
* any control or QPACK unidirectional streams). See
21102110
* :type:`nghttp3_recv_data` to handle those bytes. If |fin| is
21112111
* nonzero, this is the last data from remote endpoint in this stream.
21122112
*
@@ -2480,8 +2480,6 @@ typedef struct nghttp3_data_reader {
24802480
* This function returns 0 if it succeeds, or one of the following
24812481
* negative error codes:
24822482
*
2483-
* :macro:`NGHTTP3_ERR_INVALID_ARGUMENT`
2484-
* |stream_id| identifies unidirectional stream.
24852483
* :macro:`NGHTTP3_ERR_CONN_CLOSING`
24862484
* Connection is shutting down, and no new stream is allowed.
24872485
* :macro:`NGHTTP3_ERR_STREAM_IN_USE`

‎deps/ngtcp2/nghttp3/lib/includes/nghttp3/version.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
*
3232
* Version number of the nghttp3 library release.
3333
*/
34-
#define NGHTTP3_VERSION "1.6.0"
34+
#define NGHTTP3_VERSION "1.8.0"
3535

3636
/**
3737
* @macro
@@ -41,6 +41,6 @@
4141
* number, 8 bits for minor and 8 bits for patch. Version 1.2.3
4242
* becomes 0x010203.
4343
*/
44-
#define NGHTTP3_VERSION_NUM 0x010600
44+
#define NGHTTP3_VERSION_NUM 0x010800
4545

4646
#endif /* !defined(NGHTTP3_VERSION_H) */

‎deps/ngtcp2/nghttp3/lib/nghttp3_conn.c

+49-31
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
dynamic table capacity that QPACK encoder is willing to use. */
4040
#define NGHTTP3_QPACK_ENCODER_MAX_DTABLE_CAPACITY 4096
4141

42-
nghttp3_objalloc_def(chunk, nghttp3_chunk, oplent);
42+
nghttp3_objalloc_def(chunk, nghttp3_chunk, oplent)
4343

4444
/*
4545
* conn_remote_stream_uni returns nonzero if |stream_id| is remote
@@ -233,12 +233,16 @@ static int conn_new(nghttp3_conn **pconn, int server, int callbacks_version,
233233
const nghttp3_callbacks *callbacks, int settings_version,
234234
const nghttp3_settings *settings, const nghttp3_mem *mem,
235235
void *user_data) {
236-
int rv;
237236
nghttp3_conn *conn;
238237
size_t i;
239238
(void)callbacks_version;
240239
(void)settings_version;
241240

241+
assert(settings->max_field_section_size <= NGHTTP3_VARINT_MAX);
242+
assert(settings->qpack_max_dtable_capacity <= NGHTTP3_VARINT_MAX);
243+
assert(settings->qpack_encoder_max_dtable_capacity <= NGHTTP3_VARINT_MAX);
244+
assert(settings->qpack_blocked_streams <= NGHTTP3_VARINT_MAX);
245+
242246
if (mem == NULL) {
243247
mem = nghttp3_mem_default();
244248
}
@@ -254,18 +258,11 @@ static int conn_new(nghttp3_conn **pconn, int server, int callbacks_version,
254258

255259
nghttp3_map_init(&conn->streams, mem);
256260

257-
rv =
258-
nghttp3_qpack_decoder_init(&conn->qdec, settings->qpack_max_dtable_capacity,
259-
settings->qpack_blocked_streams, mem);
260-
if (rv != 0) {
261-
goto qdec_init_fail;
262-
}
261+
nghttp3_qpack_decoder_init(&conn->qdec, settings->qpack_max_dtable_capacity,
262+
settings->qpack_blocked_streams, mem);
263263

264-
rv = nghttp3_qpack_encoder_init(
265-
&conn->qenc, settings->qpack_encoder_max_dtable_capacity, mem);
266-
if (rv != 0) {
267-
goto qenc_init_fail;
268-
}
264+
nghttp3_qpack_encoder_init(&conn->qenc,
265+
settings->qpack_encoder_max_dtable_capacity, mem);
269266

270267
nghttp3_pq_init(&conn->qpack_blocked_streams, ricnt_less, mem);
271268

@@ -291,16 +288,6 @@ static int conn_new(nghttp3_conn **pconn, int server, int callbacks_version,
291288
*pconn = conn;
292289

293290
return 0;
294-
295-
qenc_init_fail:
296-
nghttp3_qpack_decoder_free(&conn->qdec);
297-
qdec_init_fail:
298-
nghttp3_map_free(&conn->streams);
299-
nghttp3_objalloc_free(&conn->stream_objalloc);
300-
nghttp3_objalloc_free(&conn->out_chunk_objalloc);
301-
nghttp3_mem_free(mem, conn);
302-
303-
return rv;
304291
}
305292

306293
int nghttp3_conn_client_new_versioned(nghttp3_conn **pconn,
@@ -399,6 +386,9 @@ nghttp3_ssize nghttp3_conn_read_stream(nghttp3_conn *conn, int64_t stream_id,
399386
size_t bidi_nproc;
400387
int rv;
401388

389+
assert(stream_id >= 0);
390+
assert(stream_id <= (int64_t)NGHTTP3_MAX_VARINT);
391+
402392
stream = nghttp3_conn_find_stream(conn, stream_id);
403393
if (stream == NULL) {
404394
/* TODO Assert idtr */
@@ -434,6 +424,10 @@ nghttp3_ssize nghttp3_conn_read_stream(nghttp3_conn *conn, int64_t stream_id,
434424
return rv;
435425
}
436426
}
427+
} else if (!nghttp3_client_stream_uni(stream_id)) {
428+
/* server does not expect to receive new server initiated
429+
bidirectional or unidirectional stream from client. */
430+
return NGHTTP3_ERR_H3_STREAM_CREATION_ERROR;
437431
} else {
438432
/* unidirectional stream */
439433
if (srclen == 0 && fin) {
@@ -448,7 +442,7 @@ nghttp3_ssize nghttp3_conn_read_stream(nghttp3_conn *conn, int64_t stream_id,
448442

449443
stream->rx.hstate = NGHTTP3_HTTP_STATE_REQ_INITIAL;
450444
stream->tx.hstate = NGHTTP3_HTTP_STATE_REQ_INITIAL;
451-
} else if (nghttp3_stream_uni(stream_id)) {
445+
} else if (nghttp3_server_stream_uni(stream_id)) {
452446
if (srclen == 0 && fin) {
453447
return 0;
454448
}
@@ -461,8 +455,8 @@ nghttp3_ssize nghttp3_conn_read_stream(nghttp3_conn *conn, int64_t stream_id,
461455
stream->rx.hstate = NGHTTP3_HTTP_STATE_RESP_INITIAL;
462456
stream->tx.hstate = NGHTTP3_HTTP_STATE_RESP_INITIAL;
463457
} else {
464-
/* client doesn't expect to receive new bidirectional stream
465-
from server. */
458+
/* client doesn't expect to receive new bidirectional stream or
459+
client initiated unidirectional stream from server. */
466460
return NGHTTP3_ERR_H3_STREAM_CREATION_ERROR;
467461
}
468462
} else if (conn->server) {
@@ -471,7 +465,12 @@ nghttp3_ssize nghttp3_conn_read_stream(nghttp3_conn *conn, int64_t stream_id,
471465
stream->rx.hstate = NGHTTP3_HTTP_STATE_REQ_INITIAL;
472466
stream->tx.hstate = NGHTTP3_HTTP_STATE_REQ_INITIAL;
473467
}
468+
} else {
469+
assert(nghttp3_client_stream_uni(stream_id));
474470
}
471+
} else {
472+
assert(nghttp3_client_stream_bidi(stream_id) ||
473+
nghttp3_server_stream_uni(stream_id));
475474
}
476475

477476
if (srclen == 0 && !fin) {
@@ -608,6 +607,9 @@ nghttp3_ssize nghttp3_conn_read_uni(nghttp3_conn *conn, nghttp3_stream *stream,
608607
break;
609608
case NGHTTP3_STREAM_TYPE_UNKNOWN:
610609
nconsumed = (nghttp3_ssize)srclen;
610+
if (fin) {
611+
break;
612+
}
611613

612614
rv = conn_call_stop_sending(conn, stream, NGHTTP3_H3_STREAM_CREATION_ERROR);
613615
if (rv != 0) {
@@ -1836,7 +1838,7 @@ int nghttp3_conn_create_stream(nghttp3_conn *conn, nghttp3_stream **pstream,
18361838
nghttp3_stream *stream;
18371839
int rv;
18381840
nghttp3_stream_callbacks callbacks = {
1839-
conn_stream_acked_data,
1841+
.acked_data = conn_stream_acked_data,
18401842
};
18411843

18421844
rv = nghttp3_stream_new(&stream, stream_id, &callbacks,
@@ -1874,6 +1876,8 @@ int nghttp3_conn_bind_control_stream(nghttp3_conn *conn, int64_t stream_id) {
18741876
nghttp3_frame_entry frent;
18751877
int rv;
18761878

1879+
assert(stream_id >= 0);
1880+
assert(stream_id <= (int64_t)NGHTTP3_MAX_VARINT);
18771881
assert(!conn->server || nghttp3_server_stream_uni(stream_id));
18781882
assert(conn->server || nghttp3_client_stream_uni(stream_id));
18791883

@@ -1906,6 +1910,10 @@ int nghttp3_conn_bind_qpack_streams(nghttp3_conn *conn, int64_t qenc_stream_id,
19061910
nghttp3_stream *stream;
19071911
int rv;
19081912

1913+
assert(qenc_stream_id >= 0);
1914+
assert(qenc_stream_id <= (int64_t)NGHTTP3_MAX_VARINT);
1915+
assert(qdec_stream_id >= 0);
1916+
assert(qdec_stream_id <= (int64_t)NGHTTP3_MAX_VARINT);
19091917
assert(!conn->server || nghttp3_server_stream_uni(qenc_stream_id));
19101918
assert(!conn->server || nghttp3_server_stream_uni(qdec_stream_id));
19111919
assert(conn->server || nghttp3_client_stream_uni(qenc_stream_id));
@@ -2194,13 +2202,11 @@ int nghttp3_conn_submit_request(nghttp3_conn *conn, int64_t stream_id,
21942202
assert(!conn->server);
21952203
assert(conn->tx.qenc);
21962204

2205+
assert(stream_id >= 0);
2206+
assert(stream_id <= (int64_t)NGHTTP3_MAX_VARINT);
21972207
assert(nghttp3_client_stream_bidi(stream_id));
21982208

2199-
/* TODO Should we check that stream_id is client stream_id? */
22002209
/* TODO Check GOAWAY last stream ID */
2201-
if (nghttp3_stream_uni(stream_id)) {
2202-
return NGHTTP3_ERR_INVALID_ARGUMENT;
2203-
}
22042210

22052211
if (conn->flags & NGHTTP3_CONN_FLAG_GOAWAY_RECVED) {
22062212
return NGHTTP3_ERR_CONN_CLOSING;
@@ -2454,6 +2460,9 @@ int nghttp3_conn_close_stream(nghttp3_conn *conn, int64_t stream_id,
24542460
int nghttp3_conn_shutdown_stream_read(nghttp3_conn *conn, int64_t stream_id) {
24552461
nghttp3_stream *stream;
24562462

2463+
assert(stream_id >= 0);
2464+
assert(stream_id <= (int64_t)NGHTTP3_MAX_VARINT);
2465+
24572466
if (!nghttp3_client_stream_bidi(stream_id)) {
24582467
return 0;
24592468
}
@@ -2515,6 +2524,9 @@ uint64_t nghttp3_conn_get_frame_payload_left(nghttp3_conn *conn,
25152524
nghttp3_stream *stream;
25162525
int uni = 0;
25172526

2527+
assert(stream_id >= 0);
2528+
assert(stream_id <= (int64_t)NGHTTP3_MAX_VARINT);
2529+
25182530
if (!nghttp3_client_stream_bidi(stream_id)) {
25192531
uni = conn_remote_stream_uni(conn, stream_id);
25202532
if (!uni) {
@@ -2542,6 +2554,8 @@ int nghttp3_conn_get_stream_priority_versioned(nghttp3_conn *conn,
25422554
(void)pri_version;
25432555

25442556
assert(conn->server);
2557+
assert(stream_id >= 0);
2558+
assert(stream_id <= (int64_t)NGHTTP3_MAX_VARINT);
25452559

25462560
if (!nghttp3_client_stream_bidi(stream_id)) {
25472561
return NGHTTP3_ERR_INVALID_ARGUMENT;
@@ -2566,6 +2580,8 @@ int nghttp3_conn_set_client_stream_priority(nghttp3_conn *conn,
25662580
uint8_t *buf = NULL;
25672581

25682582
assert(!conn->server);
2583+
assert(stream_id >= 0);
2584+
assert(stream_id <= (int64_t)NGHTTP3_MAX_VARINT);
25692585

25702586
if (!nghttp3_client_stream_bidi(stream_id)) {
25712587
return NGHTTP3_ERR_INVALID_ARGUMENT;
@@ -2603,6 +2619,8 @@ int nghttp3_conn_set_server_stream_priority_versioned(nghttp3_conn *conn,
26032619
assert(conn->server);
26042620
assert(pri->urgency < NGHTTP3_URGENCY_LEVELS);
26052621
assert(pri->inc == 0 || pri->inc == 1);
2622+
assert(stream_id >= 0);
2623+
assert(stream_id <= (int64_t)NGHTTP3_MAX_VARINT);
26062624

26072625
if (!nghttp3_client_stream_bidi(stream_id)) {
26082626
return NGHTTP3_ERR_INVALID_ARGUMENT;

‎deps/ngtcp2/nghttp3/lib/nghttp3_conn.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ typedef struct nghttp3_chunk {
7676
nghttp3_opl_entry oplent;
7777
} nghttp3_chunk;
7878

79-
nghttp3_objalloc_decl(chunk, nghttp3_chunk, oplent);
79+
nghttp3_objalloc_decl(chunk, nghttp3_chunk, oplent)
8080

8181
struct nghttp3_conn {
8282
nghttp3_objalloc out_chunk_objalloc;

‎deps/ngtcp2/nghttp3/lib/nghttp3_gaptr.c

+27-12
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,16 @@
2929
#include <assert.h>
3030

3131
void nghttp3_gaptr_init(nghttp3_gaptr *gaptr, const nghttp3_mem *mem) {
32-
nghttp3_ksl_init(&gaptr->gap, nghttp3_ksl_range_compar, sizeof(nghttp3_range),
33-
mem);
32+
nghttp3_ksl_init(&gaptr->gap, nghttp3_ksl_range_compar,
33+
nghttp3_ksl_range_search, sizeof(nghttp3_range), mem);
3434

3535
gaptr->mem = mem;
3636
}
3737

3838
static int gaptr_gap_init(nghttp3_gaptr *gaptr) {
39-
nghttp3_range range = {0, UINT64_MAX};
39+
nghttp3_range range = {
40+
.end = UINT64_MAX,
41+
};
4042

4143
return nghttp3_ksl_insert(&gaptr->gap, NULL, &range, NULL);
4244
}
@@ -52,7 +54,11 @@ void nghttp3_gaptr_free(nghttp3_gaptr *gaptr) {
5254
int nghttp3_gaptr_push(nghttp3_gaptr *gaptr, uint64_t offset,
5355
uint64_t datalen) {
5456
int rv;
55-
nghttp3_range k, m, l, r, q = {offset, offset + datalen};
57+
nghttp3_range k, m, l, r;
58+
nghttp3_range q = {
59+
.begin = offset,
60+
.end = offset + datalen,
61+
};
5662
nghttp3_ksl_it it;
5763

5864
if (nghttp3_ksl_len(&gaptr->gap) == 0) {
@@ -62,8 +68,8 @@ int nghttp3_gaptr_push(nghttp3_gaptr *gaptr, uint64_t offset,
6268
}
6369
}
6470

65-
it = nghttp3_ksl_lower_bound_compar(&gaptr->gap, &q,
66-
nghttp3_ksl_range_exclusive_compar);
71+
it = nghttp3_ksl_lower_bound_search(&gaptr->gap, &q,
72+
nghttp3_ksl_range_exclusive_search);
6773

6874
for (; !nghttp3_ksl_it_end(&it);) {
6975
k = *(nghttp3_range *)nghttp3_ksl_it_key(&it);
@@ -112,16 +118,19 @@ uint64_t nghttp3_gaptr_first_gap_offset(nghttp3_gaptr *gaptr) {
112118

113119
nghttp3_range nghttp3_gaptr_get_first_gap_after(nghttp3_gaptr *gaptr,
114120
uint64_t offset) {
115-
nghttp3_range q = {offset, offset + 1};
121+
nghttp3_range q = {
122+
.begin = offset,
123+
.end = offset + 1,
124+
};
116125
nghttp3_ksl_it it;
117126

118127
if (nghttp3_ksl_len(&gaptr->gap) == 0) {
119128
nghttp3_range r = {0, UINT64_MAX};
120129
return r;
121130
}
122131

123-
it = nghttp3_ksl_lower_bound_compar(&gaptr->gap, &q,
124-
nghttp3_ksl_range_exclusive_compar);
132+
it = nghttp3_ksl_lower_bound_search(&gaptr->gap, &q,
133+
nghttp3_ksl_range_exclusive_search);
125134

126135
assert(!nghttp3_ksl_it_end(&it));
127136

@@ -130,16 +139,22 @@ nghttp3_range nghttp3_gaptr_get_first_gap_after(nghttp3_gaptr *gaptr,
130139

131140
int nghttp3_gaptr_is_pushed(nghttp3_gaptr *gaptr, uint64_t offset,
132141
uint64_t datalen) {
133-
nghttp3_range q = {offset, offset + datalen};
142+
nghttp3_range q = {
143+
.begin = offset,
144+
.end = offset + datalen,
145+
};
134146
nghttp3_ksl_it it;
135147
nghttp3_range m;
136148

137149
if (nghttp3_ksl_len(&gaptr->gap) == 0) {
138150
return 0;
139151
}
140152

141-
it = nghttp3_ksl_lower_bound_compar(&gaptr->gap, &q,
142-
nghttp3_ksl_range_exclusive_compar);
153+
it = nghttp3_ksl_lower_bound_search(&gaptr->gap, &q,
154+
nghttp3_ksl_range_exclusive_search);
155+
156+
assert(!nghttp3_ksl_it_end(&it));
157+
143158
m = nghttp3_range_intersect(&q, (nghttp3_range *)nghttp3_ksl_it_key(&it));
144159

145160
return nghttp3_range_len(&m) == 0;

‎deps/ngtcp2/nghttp3/lib/nghttp3_http.c

+10-9
Original file line numberDiff line numberDiff line change
@@ -124,17 +124,17 @@ static int is_ws(uint8_t c) {
124124
int nghttp3_http_parse_priority(nghttp3_pri *dest, const uint8_t *value,
125125
size_t valuelen) {
126126
nghttp3_pri pri = *dest;
127-
sf_parser sfp;
128-
sf_vec key;
129-
sf_value val;
127+
sfparse_parser sfp;
128+
sfparse_vec key;
129+
sfparse_value val;
130130
int rv;
131131

132-
sf_parser_init(&sfp, value, valuelen);
132+
sfparse_parser_init(&sfp, value, valuelen);
133133

134134
for (;;) {
135-
rv = sf_parser_dict(&sfp, &key, &val);
135+
rv = sfparse_parser_dict(&sfp, &key, &val);
136136
if (rv != 0) {
137-
if (rv == SF_ERR_EOF) {
137+
if (rv == SFPARSE_ERR_EOF) {
138138
break;
139139
}
140140

@@ -147,15 +147,16 @@ int nghttp3_http_parse_priority(nghttp3_pri *dest, const uint8_t *value,
147147

148148
switch (key.base[0]) {
149149
case 'i':
150-
if (val.type != SF_TYPE_BOOLEAN) {
150+
if (val.type != SFPARSE_TYPE_BOOLEAN) {
151151
return NGHTTP3_ERR_INVALID_ARGUMENT;
152152
}
153153

154154
pri.inc = (uint8_t)val.boolean;
155155

156156
break;
157157
case 'u':
158-
if (val.type != SF_TYPE_INTEGER || val.integer < NGHTTP3_URGENCY_HIGH ||
158+
if (val.type != SFPARSE_TYPE_INTEGER ||
159+
val.integer < NGHTTP3_URGENCY_HIGH ||
159160
NGHTTP3_URGENCY_LOW < val.integer) {
160161
return NGHTTP3_ERR_INVALID_ARGUMENT;
161162
}
@@ -197,7 +198,7 @@ static char VALID_AUTHORITY_CHARS[] = {
197198
1 /* 4 */, 1 /* 5 */, 1 /* 6 */, 1 /* 7 */,
198199
1 /* 8 */, 1 /* 9 */, 1 /* : */, 1 /* ; */,
199200
0 /* < */, 1 /* = */, 0 /* > */, 0 /* ? */,
200-
1 /* @ */, 1 /* A */, 1 /* B */, 1 /* C */,
201+
0 /* @ */, 1 /* A */, 1 /* B */, 1 /* C */,
201202
1 /* D */, 1 /* E */, 1 /* F */, 1 /* G */,
202203
1 /* H */, 1 /* I */, 1 /* J */, 1 /* K */,
203204
1 /* L */, 1 /* M */, 1 /* N */, 1 /* O */,

‎deps/ngtcp2/nghttp3/lib/nghttp3_ksl.c

+53-24
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@
3434
#include "nghttp3_mem.h"
3535
#include "nghttp3_range.h"
3636

37-
static nghttp3_ksl_blk null_blk = {{{NULL, NULL, 0, 0, {0}}}};
37+
static nghttp3_ksl_blk null_blk;
3838

39-
nghttp3_objalloc_def(ksl_blk, nghttp3_ksl_blk, oplent);
39+
nghttp3_objalloc_def(ksl_blk, nghttp3_ksl_blk, oplent)
4040

4141
static size_t ksl_nodelen(size_t keylen) {
4242
assert(keylen >= sizeof(uint64_t));
@@ -59,7 +59,8 @@ static void ksl_node_set_key(nghttp3_ksl *ksl, nghttp3_ksl_node *node,
5959
}
6060

6161
void nghttp3_ksl_init(nghttp3_ksl *ksl, nghttp3_ksl_compar compar,
62-
size_t keylen, const nghttp3_mem *mem) {
62+
nghttp3_ksl_search search, size_t keylen,
63+
const nghttp3_mem *mem) {
6364
size_t nodelen = ksl_nodelen(keylen);
6465

6566
nghttp3_objalloc_init(&ksl->blkalloc,
@@ -68,6 +69,7 @@ void nghttp3_ksl_init(nghttp3_ksl *ksl, nghttp3_ksl_compar compar,
6869
ksl->head = NULL;
6970
ksl->front = ksl->back = NULL;
7071
ksl->compar = compar;
72+
ksl->search = search;
7173
ksl->n = 0;
7274
ksl->keylen = keylen;
7375
ksl->nodelen = nodelen;
@@ -274,20 +276,6 @@ static void ksl_insert_node(nghttp3_ksl *ksl, nghttp3_ksl_blk *blk, size_t i,
274276
++blk->n;
275277
}
276278

277-
static size_t ksl_search(const nghttp3_ksl *ksl, nghttp3_ksl_blk *blk,
278-
const nghttp3_ksl_key *key,
279-
nghttp3_ksl_compar compar) {
280-
size_t i;
281-
nghttp3_ksl_node *node;
282-
283-
for (i = 0, node = (nghttp3_ksl_node *)(void *)blk->nodes;
284-
i < blk->n && compar((nghttp3_ksl_key *)node->key, key);
285-
++i, node = (nghttp3_ksl_node *)(void *)((uint8_t *)node + ksl->nodelen))
286-
;
287-
288-
return i;
289-
}
290-
291279
int nghttp3_ksl_insert(nghttp3_ksl *ksl, nghttp3_ksl_it *it,
292280
const nghttp3_ksl_key *key, void *data) {
293281
nghttp3_ksl_blk *blk;
@@ -312,7 +300,7 @@ int nghttp3_ksl_insert(nghttp3_ksl *ksl, nghttp3_ksl_it *it,
312300
blk = ksl->head;
313301

314302
for (;;) {
315-
i = ksl_search(ksl, blk, key, ksl->compar);
303+
i = ksl->search(ksl, blk, key);
316304

317305
if (blk->leaf) {
318306
if (i < blk->n &&
@@ -571,7 +559,7 @@ int nghttp3_ksl_remove(nghttp3_ksl *ksl, nghttp3_ksl_it *it,
571559
}
572560

573561
for (;;) {
574-
i = ksl_search(ksl, blk, key, ksl->compar);
562+
i = ksl->search(ksl, blk, key);
575563

576564
if (i == blk->n) {
577565
if (it) {
@@ -642,12 +630,12 @@ int nghttp3_ksl_remove(nghttp3_ksl *ksl, nghttp3_ksl_it *it,
642630

643631
nghttp3_ksl_it nghttp3_ksl_lower_bound(const nghttp3_ksl *ksl,
644632
const nghttp3_ksl_key *key) {
645-
return nghttp3_ksl_lower_bound_compar(ksl, key, ksl->compar);
633+
return nghttp3_ksl_lower_bound_search(ksl, key, ksl->search);
646634
}
647635

648-
nghttp3_ksl_it nghttp3_ksl_lower_bound_compar(const nghttp3_ksl *ksl,
636+
nghttp3_ksl_it nghttp3_ksl_lower_bound_search(const nghttp3_ksl *ksl,
649637
const nghttp3_ksl_key *key,
650-
nghttp3_ksl_compar compar) {
638+
nghttp3_ksl_search search) {
651639
nghttp3_ksl_blk *blk = ksl->head;
652640
nghttp3_ksl_it it;
653641
size_t i;
@@ -658,7 +646,7 @@ nghttp3_ksl_it nghttp3_ksl_lower_bound_compar(const nghttp3_ksl *ksl,
658646
}
659647

660648
for (;;) {
661-
i = ksl_search(ksl, blk, key, compar);
649+
i = search(ksl, blk, key);
662650

663651
if (blk->leaf) {
664652
if (i == blk->n && blk->next) {
@@ -702,7 +690,7 @@ void nghttp3_ksl_update_key(nghttp3_ksl *ksl, const nghttp3_ksl_key *old_key,
702690
assert(ksl->head);
703691

704692
for (;;) {
705-
i = ksl_search(ksl, blk, old_key, ksl->compar);
693+
i = ksl->search(ksl, blk, old_key);
706694

707695
assert(i < blk->n);
708696
node = nghttp3_ksl_nth_node(ksl, blk, i);
@@ -825,9 +813,50 @@ int nghttp3_ksl_range_compar(const nghttp3_ksl_key *lhs,
825813
return a->begin < b->begin;
826814
}
827815

816+
nghttp3_ksl_search_def(range, nghttp3_ksl_range_compar)
817+
818+
size_t nghttp3_ksl_range_search(const nghttp3_ksl *ksl, nghttp3_ksl_blk *blk,
819+
const nghttp3_ksl_key *key) {
820+
return ksl_range_search(ksl, blk, key);
821+
}
822+
828823
int nghttp3_ksl_range_exclusive_compar(const nghttp3_ksl_key *lhs,
829824
const nghttp3_ksl_key *rhs) {
830825
const nghttp3_range *a = lhs, *b = rhs;
831826
return a->begin < b->begin && !(nghttp3_max_uint64(a->begin, b->begin) <
832827
nghttp3_min_uint64(a->end, b->end));
833828
}
829+
830+
nghttp3_ksl_search_def(range_exclusive, nghttp3_ksl_range_exclusive_compar)
831+
832+
size_t nghttp3_ksl_range_exclusive_search(const nghttp3_ksl *ksl,
833+
nghttp3_ksl_blk *blk,
834+
const nghttp3_ksl_key *key) {
835+
return ksl_range_exclusive_search(ksl, blk, key);
836+
}
837+
838+
int nghttp3_ksl_uint64_less(const nghttp3_ksl_key *lhs,
839+
const nghttp3_ksl_key *rhs) {
840+
return *(uint64_t *)lhs < *(uint64_t *)rhs;
841+
}
842+
843+
nghttp3_ksl_search_def(uint64_less, nghttp3_ksl_uint64_less)
844+
845+
size_t nghttp3_ksl_uint64_less_search(const nghttp3_ksl *ksl,
846+
nghttp3_ksl_blk *blk,
847+
const nghttp3_ksl_key *key) {
848+
return ksl_uint64_less_search(ksl, blk, key);
849+
}
850+
851+
int nghttp3_ksl_int64_greater(const nghttp3_ksl_key *lhs,
852+
const nghttp3_ksl_key *rhs) {
853+
return *(int64_t *)lhs > *(int64_t *)rhs;
854+
}
855+
856+
nghttp3_ksl_search_def(int64_greater, nghttp3_ksl_int64_greater)
857+
858+
size_t nghttp3_ksl_int64_greater_search(const nghttp3_ksl *ksl,
859+
nghttp3_ksl_blk *blk,
860+
const nghttp3_ksl_key *key) {
861+
return ksl_int64_greater_search(ksl, blk, key);
862+
}

‎deps/ngtcp2/nghttp3/lib/nghttp3_ksl.h

+94-15
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ struct nghttp3_ksl_blk {
104104
};
105105
};
106106

107-
nghttp3_objalloc_decl(ksl_blk, nghttp3_ksl_blk, oplent);
107+
nghttp3_objalloc_decl(ksl_blk, nghttp3_ksl_blk, oplent)
108108

109109
/*
110110
* nghttp3_ksl_compar is a function type which returns nonzero if key
@@ -115,6 +115,35 @@ typedef int (*nghttp3_ksl_compar)(const nghttp3_ksl_key *lhs,
115115

116116
typedef struct nghttp3_ksl nghttp3_ksl;
117117

118+
/*
119+
* nghttp3_ksl_search is a function to search for the first element in
120+
* |blk|->nodes which is not ordered before |key|. It returns the
121+
* index of such element. It returns |blk|->n if there is no such
122+
* element.
123+
*/
124+
typedef size_t (*nghttp3_ksl_search)(const nghttp3_ksl *ksl,
125+
nghttp3_ksl_blk *blk,
126+
const nghttp3_ksl_key *key);
127+
128+
/*
129+
* nghttp3_ksl_search_def is a macro to implement nghttp3_ksl_search
130+
* with COMPAR which is supposed to be nghttp3_ksl_compar.
131+
*/
132+
#define nghttp3_ksl_search_def(NAME, COMPAR) \
133+
static size_t ksl_##NAME##_search(const nghttp3_ksl *ksl, \
134+
nghttp3_ksl_blk *blk, \
135+
const nghttp3_ksl_key *key) { \
136+
size_t i; \
137+
nghttp3_ksl_node *node; \
138+
\
139+
for (i = 0, node = (nghttp3_ksl_node *)(void *)blk->nodes; \
140+
i < blk->n && COMPAR((nghttp3_ksl_key *)node->key, key); ++i, \
141+
node = (nghttp3_ksl_node *)(void *)((uint8_t *)node + ksl->nodelen)) \
142+
; \
143+
\
144+
return i; \
145+
}
146+
118147
typedef struct nghttp3_ksl_it nghttp3_ksl_it;
119148

120149
/*
@@ -138,6 +167,7 @@ struct nghttp3_ksl {
138167
/* back points to the last leaf block. */
139168
nghttp3_ksl_blk *back;
140169
nghttp3_ksl_compar compar;
170+
nghttp3_ksl_search search;
141171
/* n is the number of elements stored. */
142172
size_t n;
143173
/* keylen is the size of key */
@@ -149,11 +179,13 @@ struct nghttp3_ksl {
149179

150180
/*
151181
* nghttp3_ksl_init initializes |ksl|. |compar| specifies compare
152-
* function. |keylen| is the length of key and must be at least
182+
* function. |search| is a search function which must use |compar|.
183+
* |keylen| is the length of key and must be at least
153184
* sizeof(uint64_t).
154185
*/
155186
void nghttp3_ksl_init(nghttp3_ksl *ksl, nghttp3_ksl_compar compar,
156-
size_t keylen, const nghttp3_mem *mem);
187+
nghttp3_ksl_search search, size_t keylen,
188+
const nghttp3_mem *mem);
157189

158190
/*
159191
* nghttp3_ksl_free frees resources allocated for |ksl|. If |ksl| is
@@ -218,12 +250,12 @@ nghttp3_ksl_it nghttp3_ksl_lower_bound(const nghttp3_ksl *ksl,
218250
const nghttp3_ksl_key *key);
219251

220252
/*
221-
* nghttp3_ksl_lower_bound_compar works like nghttp3_ksl_lower_bound,
222-
* but it takes custom function |compar| to do lower bound search.
253+
* nghttp3_ksl_lower_bound_search works like nghttp3_ksl_lower_bound,
254+
* but it takes custom function |search| to do lower bound search.
223255
*/
224-
nghttp3_ksl_it nghttp3_ksl_lower_bound_compar(const nghttp3_ksl *ksl,
256+
nghttp3_ksl_it nghttp3_ksl_lower_bound_search(const nghttp3_ksl *ksl,
225257
const nghttp3_ksl_key *key,
226-
nghttp3_ksl_compar compar);
258+
nghttp3_ksl_search search);
227259

228260
/*
229261
* nghttp3_ksl_update_key replaces the key of nodes which has
@@ -330,22 +362,69 @@ int nghttp3_ksl_it_begin(const nghttp3_ksl_it *it);
330362

331363
/*
332364
* nghttp3_ksl_range_compar is an implementation of
333-
* nghttp3_ksl_compar. lhs->ptr and rhs->ptr must point to
334-
* nghttp3_range object and the function returns nonzero if (const
335-
* nghttp3_range *)(lhs->ptr)->begin < (const nghttp3_range
336-
* *)(rhs->ptr)->begin.
365+
* nghttp3_ksl_compar. |lhs| and |rhs| must point to nghttp3_range
366+
* object, and the function returns nonzero if ((const nghttp3_range
367+
* *)lhs)->begin < ((const nghttp3_range *)rhs)->begin.
337368
*/
338369
int nghttp3_ksl_range_compar(const nghttp3_ksl_key *lhs,
339370
const nghttp3_ksl_key *rhs);
340371

372+
/*
373+
* nghttp3_ksl_range_search is an implementation of nghttp3_ksl_search
374+
* that uses nghttp3_ksl_range_compar.
375+
*/
376+
size_t nghttp3_ksl_range_search(const nghttp3_ksl *ksl, nghttp3_ksl_blk *blk,
377+
const nghttp3_ksl_key *key);
378+
341379
/*
342380
* nghttp3_ksl_range_exclusive_compar is an implementation of
343-
* nghttp3_ksl_compar. lhs->ptr and rhs->ptr must point to
344-
* nghttp3_range object and the function returns nonzero if (const
345-
* nghttp3_range *)(lhs->ptr)->begin < (const nghttp3_range
346-
* *)(rhs->ptr)->begin and the 2 ranges do not intersect.
381+
* nghttp3_ksl_compar. |lhs| and |rhs| must point to nghttp3_range
382+
* object, and the function returns nonzero if ((const nghttp3_range
383+
* *)lhs)->begin < ((const nghttp3_range *)rhs)->begin, and the 2
384+
* ranges do not intersect.
347385
*/
348386
int nghttp3_ksl_range_exclusive_compar(const nghttp3_ksl_key *lhs,
349387
const nghttp3_ksl_key *rhs);
350388

389+
/*
390+
* nghttp3_ksl_range_exclusive_search is an implementation of
391+
* nghttp3_ksl_search that uses nghttp3_ksl_range_exclusive_compar.
392+
*/
393+
size_t nghttp3_ksl_range_exclusive_search(const nghttp3_ksl *ksl,
394+
nghttp3_ksl_blk *blk,
395+
const nghttp3_ksl_key *key);
396+
397+
/*
398+
* nghttp3_ksl_uint64_less is an implementation of nghttp3_ksl_compar.
399+
* |lhs| and |rhs| must point to uint64_t objects, and the function
400+
* returns nonzero if *(uint64_t *)|lhs| < *(uint64_t *)|rhs|.
401+
*/
402+
int nghttp3_ksl_uint64_less(const nghttp3_ksl_key *lhs,
403+
const nghttp3_ksl_key *rhs);
404+
405+
/*
406+
* nghttp3_ksl_uint64_less_search is an implementation of
407+
* nghttp3_ksl_search that uses nghttp3_ksl_uint64_less.
408+
*/
409+
size_t nghttp3_ksl_uint64_less_search(const nghttp3_ksl *ksl,
410+
nghttp3_ksl_blk *blk,
411+
const nghttp3_ksl_key *key);
412+
413+
/*
414+
* nghttp3_ksl_int64_greater is an implementation of
415+
* nghttp3_ksl_compar. |lhs| and |rhs| must point to int64_t objects,
416+
* and the function returns nonzero if *(int64_t *)|lhs| > *(int64_t
417+
* *)|rhs|.
418+
*/
419+
int nghttp3_ksl_int64_greater(const nghttp3_ksl_key *lhs,
420+
const nghttp3_ksl_key *rhs);
421+
422+
/*
423+
* nghttp3_ksl_int64_greater_search is an implementation of
424+
* nghttp3_ksl_search that uses nghttp3_ksl_int64_greater.
425+
*/
426+
size_t nghttp3_ksl_int64_greater_search(const nghttp3_ksl *ksl,
427+
nghttp3_ksl_blk *blk,
428+
const nghttp3_ksl_key *key);
429+
351430
#endif /* !defined(NGHTTP3_KSL_H) */

‎deps/ngtcp2/nghttp3/lib/nghttp3_macro.h

+18-18
Original file line numberDiff line numberDiff line change
@@ -48,27 +48,27 @@
4848
#define nghttp3_max_def(SUFFIX, T) \
4949
static inline T nghttp3_max_##SUFFIX(T a, T b) { return a < b ? b : a; }
5050

51-
nghttp3_max_def(int8, int8_t);
52-
nghttp3_max_def(int16, int16_t);
53-
nghttp3_max_def(int32, int32_t);
54-
nghttp3_max_def(int64, int64_t);
55-
nghttp3_max_def(uint8, uint8_t);
56-
nghttp3_max_def(uint16, uint16_t);
57-
nghttp3_max_def(uint32, uint32_t);
58-
nghttp3_max_def(uint64, uint64_t);
59-
nghttp3_max_def(size, size_t);
51+
nghttp3_max_def(int8, int8_t)
52+
nghttp3_max_def(int16, int16_t)
53+
nghttp3_max_def(int32, int32_t)
54+
nghttp3_max_def(int64, int64_t)
55+
nghttp3_max_def(uint8, uint8_t)
56+
nghttp3_max_def(uint16, uint16_t)
57+
nghttp3_max_def(uint32, uint32_t)
58+
nghttp3_max_def(uint64, uint64_t)
59+
nghttp3_max_def(size, size_t)
6060

6161
#define nghttp3_min_def(SUFFIX, T) \
6262
static inline T nghttp3_min_##SUFFIX(T a, T b) { return a < b ? a : b; }
6363

64-
nghttp3_min_def(int8, int8_t);
65-
nghttp3_min_def(int16, int16_t);
66-
nghttp3_min_def(int32, int32_t);
67-
nghttp3_min_def(int64, int64_t);
68-
nghttp3_min_def(uint8, uint8_t);
69-
nghttp3_min_def(uint16, uint16_t);
70-
nghttp3_min_def(uint32, uint32_t);
71-
nghttp3_min_def(uint64, uint64_t);
72-
nghttp3_min_def(size, size_t);
64+
nghttp3_min_def(int8, int8_t)
65+
nghttp3_min_def(int16, int16_t)
66+
nghttp3_min_def(int32, int32_t)
67+
nghttp3_min_def(int64, int64_t)
68+
nghttp3_min_def(uint8, uint8_t)
69+
nghttp3_min_def(uint16, uint16_t)
70+
nghttp3_min_def(uint32, uint32_t)
71+
nghttp3_min_def(uint64, uint64_t)
72+
nghttp3_min_def(size, size_t)
7373

7474
#endif /* !defined(NGHTTP3_MACRO_H) */

‎deps/ngtcp2/nghttp3/lib/nghttp3_map.c

+5-1
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,11 @@ void nghttp3_map_print_distance(const nghttp3_map *map) {
120120
static int insert(nghttp3_map_bucket *table, size_t hashbits,
121121
nghttp3_map_key_type key, void *data) {
122122
size_t idx = hash(key, hashbits);
123-
nghttp3_map_bucket b = {0, key, data}, *bkt;
123+
nghttp3_map_bucket b = {
124+
.key = key,
125+
.data = data,
126+
};
127+
nghttp3_map_bucket *bkt;
124128
size_t mask = (1u << hashbits) - 1;
125129

126130
for (;;) {

‎deps/ngtcp2/nghttp3/lib/nghttp3_qpack.c

+98-90
Large diffs are not rendered by default.

‎deps/ngtcp2/nghttp3/lib/nghttp3_qpack.h

+7-19
Original file line numberDiff line numberDiff line change
@@ -270,16 +270,10 @@ struct nghttp3_qpack_encoder {
270270
* nghttp3_qpack_encoder_init initializes |encoder|.
271271
* |hard_max_dtable_capacity| is the upper bound of the dynamic table
272272
* capacity. |mem| is a memory allocator.
273-
*
274-
* This function returns 0 if it succeeds, or one of the following
275-
* negative error codes:
276-
*
277-
* NGHTTP3_ERR_NOMEM
278-
* Out of memory.
279273
*/
280-
int nghttp3_qpack_encoder_init(nghttp3_qpack_encoder *encoder,
281-
size_t hard_max_dtable_capacity,
282-
const nghttp3_mem *mem);
274+
void nghttp3_qpack_encoder_init(nghttp3_qpack_encoder *encoder,
275+
size_t hard_max_dtable_capacity,
276+
const nghttp3_mem *mem);
283277

284278
/*
285279
* nghttp3_qpack_encoder_free frees memory allocated for |encoder|.
@@ -800,17 +794,11 @@ struct nghttp3_qpack_decoder {
800794
* |hard_max_dtable_capacity| is the upper bound of the dynamic table
801795
* capacity. |max_blocked_streams| is the maximum number of stream
802796
* which can be blocked. |mem| is a memory allocator.
803-
*
804-
* This function returns 0 if it succeeds, or one of the following
805-
* negative error codes:
806-
*
807-
* NGHTTP3_ERR_NOMEM
808-
* Out of memory.
809797
*/
810-
int nghttp3_qpack_decoder_init(nghttp3_qpack_decoder *decoder,
811-
size_t hard_max_dtable_capacity,
812-
size_t max_blocked_streams,
813-
const nghttp3_mem *mem);
798+
void nghttp3_qpack_decoder_init(nghttp3_qpack_decoder *decoder,
799+
size_t hard_max_dtable_capacity,
800+
size_t max_blocked_streams,
801+
const nghttp3_mem *mem);
814802

815803
/*
816804
* nghttp3_qpack_decoder_free frees memory allocated for |decoder|.

‎deps/ngtcp2/nghttp3/lib/nghttp3_qpack_huffman.c

+3-1
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,9 @@ nghttp3_qpack_huffman_decode(nghttp3_qpack_huffman_decode_context *ctx,
8888
int fin) {
8989
uint8_t *p = dest;
9090
const uint8_t *end = src + srclen;
91-
nghttp3_qpack_huffman_decode_node node = {ctx->fstate, 0};
91+
nghttp3_qpack_huffman_decode_node node = {
92+
.fstate = ctx->fstate,
93+
};
9294
const nghttp3_qpack_huffman_decode_node *t = &node;
9395
uint8_t c;
9496

‎deps/ngtcp2/nghttp3/lib/nghttp3_range.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ void nghttp3_range_init(nghttp3_range *r, uint64_t begin, uint64_t end) {
3333

3434
nghttp3_range nghttp3_range_intersect(const nghttp3_range *a,
3535
const nghttp3_range *b) {
36-
nghttp3_range r = {0, 0};
36+
nghttp3_range r = {0};
3737
uint64_t begin = nghttp3_max_uint64(a->begin, b->begin);
3838
uint64_t end = nghttp3_min_uint64(a->end, b->end);
3939

‎deps/ngtcp2/nghttp3/lib/nghttp3_ringbuf.c

+9-7
Original file line numberDiff line numberDiff line change
@@ -33,18 +33,20 @@
3333

3434
#include "nghttp3_macro.h"
3535

36+
#ifndef NDEBUG
3637
static int ispow2(size_t n) {
37-
#if defined(_MSC_VER) && !defined(__clang__) && \
38-
(defined(_M_ARM) || (defined(_M_ARM64) && _MSC_VER < 1941))
38+
# if defined(_MSC_VER) && !defined(__clang__) && \
39+
(defined(_M_ARM) || (defined(_M_ARM64) && _MSC_VER < 1941))
3940
return n && !(n & (n - 1));
40-
#elif defined(WIN32)
41+
# elif defined(WIN32)
4142
return 1 == __popcnt((unsigned int)n);
42-
#else /* !((defined(_MSC_VER) && !defined(__clang__) && (defined(_M_ARM) || \
43-
(defined(_M_ARM64) && _MSC_VER < 1941))) || defined(WIN32)) */
43+
# else /* !((defined(_MSC_VER) && !defined(__clang__) && (defined(_M_ARM) || \
44+
(defined(_M_ARM64) && _MSC_VER < 1941))) || defined(WIN32)) */
4445
return 1 == __builtin_popcount((unsigned int)n);
45-
#endif /* !((defined(_MSC_VER) && !defined(__clang__) && (defined(_M_ARM) || \
46-
(defined(_M_ARM64) && _MSC_VER < 1941))) || defined(WIN32)) */
46+
# endif /* !((defined(_MSC_VER) && !defined(__clang__) && (defined(_M_ARM) || \
47+
(defined(_M_ARM64) && _MSC_VER < 1941))) || defined(WIN32)) */
4748
}
49+
#endif /* !defined(NDEBUG) */
4850

4951
int nghttp3_ringbuf_init(nghttp3_ringbuf *rb, size_t nmemb, size_t size,
5052
const nghttp3_mem *mem) {

‎deps/ngtcp2/nghttp3/lib/nghttp3_stream.c

+11-4
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
/* NGHTTP3_MIN_RBLEN is the minimum length of nghttp3_ringbuf */
4545
#define NGHTTP3_MIN_RBLEN 4
4646

47-
nghttp3_objalloc_def(stream, nghttp3_stream, oplent);
47+
nghttp3_objalloc_def(stream, nghttp3_stream, oplent)
4848

4949
int nghttp3_stream_new(nghttp3_stream **pstream, int64_t stream_id,
5050
const nghttp3_stream_callbacks *callbacks,
@@ -336,12 +336,19 @@ int nghttp3_stream_write_settings(nghttp3_stream *stream,
336336
struct {
337337
nghttp3_frame_settings settings;
338338
nghttp3_settings_entry iv[15];
339-
} fr;
339+
} fr = {
340+
.settings =
341+
{
342+
.hd =
343+
{
344+
.type = NGHTTP3_FRAME_SETTINGS,
345+
},
346+
.niv = 3,
347+
},
348+
};
340349
nghttp3_settings_entry *iv;
341350
nghttp3_settings *local_settings = frent->aux.settings.local_settings;
342351

343-
fr.settings.hd.type = NGHTTP3_FRAME_SETTINGS;
344-
fr.settings.niv = 3;
345352
iv = &fr.settings.iv[0];
346353

347354
iv[0].id = NGHTTP3_SETTINGS_ID_MAX_FIELD_SECTION_SIZE;

‎deps/ngtcp2/nghttp3/lib/nghttp3_stream.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ struct nghttp3_stream {
255255
};
256256
};
257257

258-
nghttp3_objalloc_decl(stream, nghttp3_stream, oplent);
258+
nghttp3_objalloc_decl(stream, nghttp3_stream, oplent)
259259

260260
typedef struct nghttp3_frame_entry {
261261
nghttp3_frame fr;

‎deps/ngtcp2/nghttp3/lib/nghttp3_version.c

+5-2
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,11 @@
2828

2929
#include <nghttp3/nghttp3.h>
3030

31-
static nghttp3_info version = {NGHTTP3_VERSION_AGE, NGHTTP3_VERSION_NUM,
32-
NGHTTP3_VERSION};
31+
static nghttp3_info version = {
32+
.age = NGHTTP3_VERSION_AGE,
33+
.version_num = NGHTTP3_VERSION_NUM,
34+
.version_str = NGHTTP3_VERSION,
35+
};
3336

3437
const nghttp3_info *nghttp3_version(int least_version) {
3538
if (least_version > NGHTTP3_VERSION_NUM) {

‎deps/ngtcp2/nghttp3/lib/sfparse/sfparse.c

+462-192
Large diffs are not rendered by default.

‎deps/ngtcp2/nghttp3/lib/sfparse/sfparse.h

+163-149
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)
Please sign in to comment.