Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
f3fcad2
doc: note that path.normalize deviates from POSIX
tniessen Jan 29, 2024
d4eb03f
meta: add .mailmap entry for lemire
lemire Jan 29, 2024
44476be
tools: update lint-md-dependencies to [email protected]
nodejs-github-bot Jan 30, 2024
0f461aa
doc: fix `dns.lookup` and `dnsPromises.lookup` description
duncanchiu409 Jan 30, 2024
a501315
repl: fix `NO_COLORS` env var is ignored
MoLow Jan 31, 2024
8b28366
src: support multi-line values for .env file
IlyasShabi Jan 31, 2024
4ab63db
tools: run `build-windows` workflow only on source changes
aduh95 Jan 31, 2024
ec9c785
deps: update ngtcp2 to 1.2.0
nodejs-github-bot Jan 31, 2024
ce56887
lib: define FormData and fetch etc. in the built-in snapshot
joyeecheung Jan 31, 2024
a64a866
deps: update ada to 2.7.5
nodejs-github-bot Jan 22, 2024
7a1267c
deps: update ada to 2.7.6
nodejs-github-bot Jan 30, 2024
39d3f42
deps: update corepack to 0.24.1
nodejs-github-bot Jan 31, 2024
3fbe157
esm: improve error when calling `import.meta.resolve` from `data:` URL
aduh95 Jan 31, 2024
a7eb72d
test: remove test-fs-rmdir-recursive flaky designation
lpinca Feb 1, 2024
1cd9a95
src: fix vm bug for configurable globalThis
fhinkel Feb 1, 2024
dd4767f
deps: update undici to 6.4.0
nodejs-github-bot Feb 1, 2024
ad0bcb9
vm: support using the default loader to handle dynamic import()
joyeecheung Feb 1, 2024
a3e0834
deps: V8: cherry-pick efb1133eb894
joyeecheung Feb 1, 2024
d1114c4
http2: close idle connections when allowHTTP1 is true
xsbchen Feb 1, 2024
68885d5
deps: update nghttp2 to 1.59.0
nodejs-github-bot Feb 1, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
deps: update ngtcp2 to 1.2.0
PR-URL: #51584
Reviewed-By: Marco Ippolito <[email protected]>
Reviewed-By: Antoine du Hamel <[email protected]>
  • Loading branch information
nodejs-github-bot authored Jan 31, 2024
commit ec9c785be6144741a9acddeacfedbda2d4adc6d4
17 changes: 17 additions & 0 deletions deps/ngtcp2/ngtcp2/lib/includes/ngtcp2/ngtcp2.h
Original file line number Diff line number Diff line change
Expand Up @@ -4269,6 +4269,9 @@ NGTCP2_EXTERN int ngtcp2_conn_open_uni_stream(ngtcp2_conn *conn,
*
* |flags| is currently unused, and should be set to 0.
*
* This function returns 0 if a stream denoted by |stream_id| is not
* found.
*
* This function returns 0 if it succeeds, or one of the following
* negative error codes:
*
Expand All @@ -4291,6 +4294,9 @@ NGTCP2_EXTERN int ngtcp2_conn_shutdown_stream(ngtcp2_conn *conn, uint32_t flags,
*
* |flags| is currently unused, and should be set to 0.
*
* This function returns 0 if a stream denoted by |stream_id| is not
* found.
*
* This function returns 0 if it succeeds, or one of the following
* negative error codes:
*
Expand All @@ -4315,6 +4321,9 @@ NGTCP2_EXTERN int ngtcp2_conn_shutdown_stream_write(ngtcp2_conn *conn,
*
* |flags| is currently unused, and should be set to 0.
*
* This function returns 0 if a stream denoted by |stream_id| is not
* found.
*
* This function returns 0 if it succeeds, or one of the following
* negative error codes:
*
Expand Down Expand Up @@ -4675,6 +4684,9 @@ NGTCP2_EXTERN int ngtcp2_conn_in_draining_period(ngtcp2_conn *conn);
* specifies the stream ID. This function only extends stream-level
* flow control window.
*
* This function returns 0 if a stream denoted by |stream_id| is not
* found.
*
* This function returns 0 if it succeeds, or one of the following
* negative error codes:
*
Expand Down Expand Up @@ -5340,6 +5352,11 @@ NGTCP2_EXTERN void ngtcp2_ccerr_set_application_error(ngtcp2_ccerr *ccerr,
* CONNECTION_CLOSE (type 0x1d) frame. Otherwise, it does not produce
* any data, and returns 0.
*
* |destlen| could be shorten by some factors (e.g., server side
* amplification limit). This function returns
* :macro:`NGTCP2_ERR_NOBUF` if the resulting buffer is too small even
* if the given buffer has enough space.
*
* This function must not be called from inside the callback
* functions.
*
Expand Down
4 changes: 2 additions & 2 deletions deps/ngtcp2/ngtcp2/lib/includes/ngtcp2/version.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
*
* Version number of the ngtcp2 library release.
*/
#define NGTCP2_VERSION "1.1.0"
#define NGTCP2_VERSION "1.2.0"

/**
* @macro
Expand All @@ -46,6 +46,6 @@
* number, 8 bits for minor and 8 bits for patch. Version 1.2.3
* becomes 0x010203.
*/
#define NGTCP2_VERSION_NUM 0x010100
#define NGTCP2_VERSION_NUM 0x010200

#endif /* VERSION_H */
3 changes: 3 additions & 0 deletions deps/ngtcp2/ngtcp2/lib/ngtcp2_cc.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
#include "ngtcp2_mem.h"
#include "ngtcp2_rcvry.h"
#include "ngtcp2_conn_stat.h"
#include "ngtcp2_unreachable.h"

/* NGTCP2_CC_DELIVERY_RATE_SEC_FILTERLEN is the window length of
delivery rate filter driven by ACK clocking. */
Expand Down Expand Up @@ -247,6 +248,8 @@ uint64_t ngtcp2_cbrt(uint64_t n) {
# if defined(_WIN64)
if (_BitScanReverse64(&index, n)) {
d = 61 - index;
} else {
ngtcp2_unreachable();
}
# else /* !defined(_WIN64) */
if (_BitScanReverse(&index, (unsigned int)(n >> 32))) {
Expand Down
74 changes: 23 additions & 51 deletions deps/ngtcp2/ngtcp2/lib/ngtcp2_conn.c
Original file line number Diff line number Diff line change
Expand Up @@ -5329,7 +5329,6 @@ static int conn_recv_ack(ngtcp2_conn *conn, ngtcp2_pktns *pktns, ngtcp2_ack *fr,
num_acked = ngtcp2_rtb_recv_ack(&pktns->rtb, fr, &conn->cstat, conn, pktns,
pkt_ts, ts);
if (num_acked < 0) {
/* TODO assert this */
assert(ngtcp2_err_is_fatal((int)num_acked));
return (int)num_acked;
}
Expand Down Expand Up @@ -5790,9 +5789,8 @@ static int conn_recv_path_response(ngtcp2_conn *conn, ngtcp2_path_response *fr,
}

if (!(pv->flags & NGTCP2_PV_FLAG_DONT_CARE)) {
if (!(pv->flags & NGTCP2_PV_FLAG_FALLBACK_ON_FAILURE)) {
if (pv->dcid.seq != conn->dcid.current.seq) {
assert(!conn->server);
assert(pv->dcid.seq != conn->dcid.current.seq);
assert(conn->dcid.current.cid.datalen);

rv = conn_retire_dcid(conn, &conn->dcid.current, ts);
Expand Down Expand Up @@ -5871,25 +5869,6 @@ static int conn_recv_path_response(ngtcp2_conn *conn, ngtcp2_path_response *fr,
return conn_stop_pv(conn, ts);
}

/*
* pkt_num_bits returns the number of bits available when packet
* number is encoded in |pkt_numlen| bytes.
*/
static size_t pkt_num_bits(size_t pkt_numlen) {
switch (pkt_numlen) {
case 1:
return 8;
case 2:
return 16;
case 3:
return 24;
case 4:
return 32;
default:
ngtcp2_unreachable();
}
}

/*
* pktns_pkt_num_is_duplicate returns nonzero if |pkt_num| is
* duplicated packet number.
Expand Down Expand Up @@ -6020,9 +5999,7 @@ static int conn_verify_fixed_bit(ngtcp2_conn *conn, ngtcp2_pkt_hd *hd) {
case NGTCP2_PKT_INITIAL:
case NGTCP2_PKT_0RTT:
case NGTCP2_PKT_HANDSHAKE:
/* TODO we cannot determine whether a token comes from NEW_TOKEN
frame or Retry packet. RFC 9287 requires that a token from
NEW_TOKEN. */
/* RFC 9287 requires that a token from NEW_TOKEN. */
if (!(conn->flags & NGTCP2_CONN_FLAG_INITIAL_PKT_PROCESSED) &&
(conn->local.settings.token_type != NGTCP2_TOKEN_TYPE_NEW_TOKEN ||
!conn->local.settings.tokenlen)) {
Expand Down Expand Up @@ -6145,7 +6122,8 @@ conn_recv_handshake_pkt(ngtcp2_conn *conn, const ngtcp2_path *path,
return NGTCP2_ERR_DISCARD_PKT;
}

if (hd.type == NGTCP2_PKT_VERSION_NEGOTIATION) {
switch (hd.type) {
case NGTCP2_PKT_VERSION_NEGOTIATION:
hdpktlen = (size_t)nread;

ngtcp2_log_rx_pkt_hd(&conn->log, &hd);
Expand Down Expand Up @@ -6181,7 +6159,7 @@ conn_recv_handshake_pkt(ngtcp2_conn *conn, const ngtcp2_path *path,
return NGTCP2_ERR_DISCARD_PKT;
}
return NGTCP2_ERR_RECV_VERSION_NEGOTIATION;
} else if (hd.type == NGTCP2_PKT_RETRY) {
case NGTCP2_PKT_RETRY:
hdpktlen = (size_t)nread;

ngtcp2_log_rx_pkt_hd(&conn->log, &hd);
Expand Down Expand Up @@ -6402,10 +6380,7 @@ conn_recv_handshake_pkt(ngtcp2_conn *conn, const ngtcp2_path *path,

break;
default:
/* unknown packet type */
ngtcp2_log_info(&conn->log, NGTCP2_LOG_EVENT_PKT,
"packet was ignored because of unknown packet type");
return (ngtcp2_ssize)pktlen;
ngtcp2_unreachable();
}

hp_mask = conn->callbacks.hp_mask;
Expand Down Expand Up @@ -6438,7 +6413,7 @@ conn_recv_handshake_pkt(ngtcp2_conn *conn, const ngtcp2_path *path,
payloadlen = hd.len - hd.pkt_numlen;

hd.pkt_num = ngtcp2_pkt_adjust_pkt_num(pktns->rx.max_pkt_num, hd.pkt_num,
pkt_num_bits(hd.pkt_numlen));
hd.pkt_numlen);
if (hd.pkt_num > NGTCP2_MAX_PKT_NUM) {
ngtcp2_log_info(&conn->log, NGTCP2_LOG_EVENT_PKT,
"pkn=%" PRId64 " is greater than maximum pkn", hd.pkt_num);
Expand Down Expand Up @@ -6624,14 +6599,8 @@ conn_recv_handshake_pkt(ngtcp2_conn *conn, const ngtcp2_path *path,

pktns_increase_ecn_counts(pktns, pi);

/* TODO Initial and Handshake are always acknowledged without
delay. */
if (require_ack &&
(++pktns->acktr.rx_npkt >= conn->local.settings.ack_thresh ||
(pi->ecn & NGTCP2_ECN_MASK) == NGTCP2_ECN_CE)) {
ngtcp2_acktr_immediate_ack(&pktns->acktr);
}

/* Initial and Handshake are always acknowledged without delay. No
need to call ngtcp2_acktr_immediate_ack(). */
rv = ngtcp2_conn_sched_ack(conn, &pktns->acktr, hd.pkt_num, require_ack,
pkt_ts);
if (rv != 0) {
Expand Down Expand Up @@ -7057,7 +7026,7 @@ static int conn_recv_stream(ngtcp2_conn *conn, const ngtcp2_stream *fr) {
if (strm == NULL) {
return NGTCP2_ERR_NOMEM;
}
/* TODO Perhaps, call new_stream callback? */

rv = ngtcp2_conn_init_stream(conn, strm, fr->stream_id, NULL);
if (rv != 0) {
ngtcp2_objalloc_strm_release(&conn->strm_objalloc, strm);
Expand Down Expand Up @@ -7464,7 +7433,7 @@ static int conn_recv_stop_sending(ngtcp2_conn *conn,
return 0;
}

/* Frame is received reset before we create ngtcp2_strm
/* STOP_SENDING frame is received before we create ngtcp2_strm
object. */
strm = ngtcp2_objalloc_strm_get(&conn->strm_objalloc);
if (strm == NULL) {
Expand All @@ -7482,6 +7451,10 @@ static int conn_recv_stop_sending(ngtcp2_conn *conn,
}
}

if (strm->flags & NGTCP2_STRM_FLAG_STOP_SENDING_RECVED) {
return 0;
}

ngtcp2_strm_set_app_error_code(strm, fr->app_error_code);

/* No RESET_STREAM is required if we have sent FIN and all data have
Expand All @@ -7494,7 +7467,9 @@ static int conn_recv_stop_sending(ngtcp2_conn *conn,
}
}

strm->flags |= NGTCP2_STRM_FLAG_SHUT_WR | NGTCP2_STRM_FLAG_RESET_STREAM;
strm->flags |= NGTCP2_STRM_FLAG_SHUT_WR |
NGTCP2_STRM_FLAG_STOP_SENDING_RECVED |
NGTCP2_STRM_FLAG_RESET_STREAM;

ngtcp2_strm_streamfrq_clear(strm);

Expand Down Expand Up @@ -8751,12 +8726,8 @@ conn_recv_delayed_handshake_pkt(ngtcp2_conn *conn, const ngtcp2_pkt_info *pi,

pktns_increase_ecn_counts(pktns, pi);

if (require_ack &&
(++pktns->acktr.rx_npkt >= conn->local.settings.ack_thresh ||
(pi->ecn & NGTCP2_ECN_MASK) == NGTCP2_ECN_CE)) {
ngtcp2_acktr_immediate_ack(&pktns->acktr);
}

/* Initial and Handshake are always acknowledged without delay. No
need to call ngtcp2_acktr_immediate_ack(). */
rv = ngtcp2_conn_sched_ack(conn, &pktns->acktr, hd->pkt_num, require_ack,
pkt_ts);
if (rv != 0) {
Expand Down Expand Up @@ -9020,7 +8991,7 @@ static ngtcp2_ssize conn_recv_pkt(ngtcp2_conn *conn, const ngtcp2_path *path,
payloadlen = pktlen - hdpktlen;

hd.pkt_num = ngtcp2_pkt_adjust_pkt_num(pktns->rx.max_pkt_num, hd.pkt_num,
pkt_num_bits(hd.pkt_numlen));
hd.pkt_numlen);
if (hd.pkt_num > NGTCP2_MAX_PKT_NUM) {
ngtcp2_log_info(&conn->log, NGTCP2_LOG_EVENT_PKT,
"pkn=%" PRId64 " is greater than maximum pkn", hd.pkt_num);
Expand Down Expand Up @@ -12551,7 +12522,8 @@ static int conn_shutdown_stream_read(ngtcp2_conn *conn, ngtcp2_strm *strm,
uint64_t app_error_code) {
ngtcp2_strm_set_app_error_code(strm, app_error_code);

if (strm->flags & NGTCP2_STRM_FLAG_STOP_SENDING) {
if (strm->flags &
(NGTCP2_STRM_FLAG_STOP_SENDING | NGTCP2_STRM_FLAG_RESET_STREAM_RECVED)) {
return 0;
}
if ((strm->flags & NGTCP2_STRM_FLAG_SHUT_RD) &&
Expand Down
3 changes: 1 addition & 2 deletions deps/ngtcp2/ngtcp2/lib/ngtcp2_log.c
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,7 @@ void ngtcp2_log_init(ngtcp2_log *log, const ngtcp2_cid *scid,
* Source Connection ID in hex string.
*
* <EVENT>:
* Event. pkt=packet, frm=frame, ldc=loss-detection, cry=crypto,
* con=connection(catch all)
* Event. See ngtcp2_log_event.
*
* # Frame event
*
Expand Down
2 changes: 1 addition & 1 deletion deps/ngtcp2/ngtcp2/lib/ngtcp2_net.h
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@
#if defined(WIN32)
/* Windows requires ws2_32 library for ntonl family functions. We
define inline functions for those function so that we don't have
dependeny on that lib. */
dependency on that lib. */

# ifdef _MSC_VER
# define STIN static __inline
Expand Down
6 changes: 3 additions & 3 deletions deps/ngtcp2/ngtcp2/lib/ngtcp2_pkt.c
Original file line number Diff line number Diff line change
Expand Up @@ -558,7 +558,7 @@ ngtcp2_ssize ngtcp2_pkt_decode_stream_frame(ngtcp2_stream *dest,
uint8_t type;
size_t len = 1 + 1;
const uint8_t *p;
size_t datalen;
size_t datalen = 0;
size_t ndatalen = 0;
size_t n;
uint64_t vi;
Expand Down Expand Up @@ -2139,9 +2139,9 @@ int ngtcp2_pkt_decode_retry(ngtcp2_pkt_retry *dest, const uint8_t *payload,
}

int64_t ngtcp2_pkt_adjust_pkt_num(int64_t max_pkt_num, int64_t pkt_num,
size_t n) {
size_t pkt_numlen) {
int64_t expected = max_pkt_num + 1;
int64_t win = (int64_t)1 << n;
int64_t win = (int64_t)1 << (pkt_numlen * 8);
int64_t hwin = win / 2;
int64_t mask = win - 1;
int64_t cand = (expected & ~mask) | pkt_num;
Expand Down
4 changes: 2 additions & 2 deletions deps/ngtcp2/ngtcp2/lib/ngtcp2_pkt.h
Original file line number Diff line number Diff line change
Expand Up @@ -1120,12 +1120,12 @@ ngtcp2_ssize ngtcp2_pkt_encode_datagram_frame(uint8_t *out, size_t outlen,

/*
* ngtcp2_pkt_adjust_pkt_num find the full 64 bits packet number for
* |pkt_num|, which is expected to be least significant |n| bits. The
* |pkt_num|, which is encoded in |pkt_numlen| bytes. The
* |max_pkt_num| is the highest successfully authenticated packet
* number.
*/
int64_t ngtcp2_pkt_adjust_pkt_num(int64_t max_pkt_num, int64_t pkt_num,
size_t n);
size_t pkt_numlen);

/*
* ngtcp2_pkt_validate_ack checks that ack is malformed or not.
Expand Down
18 changes: 12 additions & 6 deletions deps/ngtcp2/ngtcp2/lib/ngtcp2_ppe.c
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ void ngtcp2_ppe_init(ngtcp2_ppe *ppe, uint8_t *out, size_t outlen,
ppe->pkt_num_offset = 0;
ppe->pkt_numlen = 0;
ppe->pkt_num = 0;
ppe->sample_offset = 0;
ppe->cc = cc;
}

Expand Down Expand Up @@ -69,8 +68,6 @@ int ngtcp2_ppe_encode_hd(ngtcp2_ppe *ppe, const ngtcp2_pkt_hd *hd) {
return (int)rv;
}

ppe->sample_offset = ppe->pkt_num_offset + 4;

buf->last += rv;

ppe->pkt_numlen = hd->pkt_numlen;
Expand Down Expand Up @@ -101,6 +98,14 @@ int ngtcp2_ppe_encode_frame(ngtcp2_ppe *ppe, ngtcp2_frame *fr) {
return 0;
}

/*
* ppe_sample_offset returns the offset to sample for packet number
* encryption.
*/
static size_t ppe_sample_offset(ngtcp2_ppe *ppe) {
return ppe->pkt_num_offset + 4;
}

ngtcp2_ssize ngtcp2_ppe_final(ngtcp2_ppe *ppe, const uint8_t **ppkt) {
ngtcp2_buf *buf = &ppe->buf;
ngtcp2_crypto_cc *cc = ppe->cc;
Expand Down Expand Up @@ -132,9 +137,10 @@ ngtcp2_ssize ngtcp2_ppe_final(ngtcp2_ppe *ppe, const uint8_t **ppkt) {
buf->last = payload + payloadlen + cc->aead.max_overhead;

/* TODO Check that we have enough space to get sample */
assert(ppe->sample_offset + NGTCP2_HP_SAMPLELEN <= ngtcp2_buf_len(buf));
assert(ppe_sample_offset(ppe) + NGTCP2_HP_SAMPLELEN <= ngtcp2_buf_len(buf));

rv = cc->hp_mask(mask, &cc->hp, &cc->hp_ctx, buf->begin + ppe->sample_offset);
rv = cc->hp_mask(mask, &cc->hp, &cc->hp_ctx,
buf->begin + ppe_sample_offset(ppe));
if (rv != 0) {
return NGTCP2_ERR_CALLBACK_FAILURE;
}
Expand Down Expand Up @@ -197,7 +203,7 @@ size_t ngtcp2_ppe_padding_hp_sample(ngtcp2_ppe *ppe) {
assert(cc->aead.max_overhead);

max_samplelen =
ngtcp2_buf_len(buf) + cc->aead.max_overhead - ppe->sample_offset;
ngtcp2_buf_len(buf) + cc->aead.max_overhead - ppe_sample_offset(ppe);
if (max_samplelen < NGTCP2_HP_SAMPLELEN) {
len = NGTCP2_HP_SAMPLELEN - max_samplelen;
assert(ngtcp2_ppe_left(ppe) >= len);
Expand Down
3 changes: 0 additions & 3 deletions deps/ngtcp2/ngtcp2/lib/ngtcp2_ppe.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,6 @@ typedef struct ngtcp2_ppe {
/* pkt_numlen is the number of bytes used to encode a packet
number */
size_t pkt_numlen;
/* sample_offset is the offset to sample for packet number
encryption. */
size_t sample_offset;
/* pkt_num is the packet number written in buf. */
int64_t pkt_num;
/* nonce is the buffer to store nonce. It should be equal or longer
Expand Down
Loading