Skip to content

Commit 787dd3a

Browse files
deps: update ngtcp2 to 1.24.0
1 parent b59def5 commit 787dd3a

19 files changed

Lines changed: 316 additions & 236 deletions

deps/ngtcp2/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto_ossl.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,18 @@ NGTCP2_EXTERN SSL *ngtcp2_crypto_ossl_ctx_get_ssl(ngtcp2_crypto_ossl_ctx *ctx);
145145
*/
146146
NGTCP2_EXTERN int ngtcp2_crypto_ossl_init(void);
147147

148+
/**
149+
* @function
150+
*
151+
* `ngtcp2_crypto_ossl_free` frees the resources allocated by
152+
* `ngtcp2_crypto_ossl_init`. It is safe to call this function even
153+
* if `ngtcp2_crypto_ossl_init` fails or is not called at all. This
154+
* function might be useful to make some leak detection tools happy.
155+
*
156+
* .. version-added:: 1.24.0
157+
*/
158+
NGTCP2_EXTERN void ngtcp2_crypto_ossl_free(void);
159+
148160
/**
149161
* @function
150162
*

deps/ngtcp2/ngtcp2/crypto/ossl/ossl.c

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,60 @@ int ngtcp2_crypto_ossl_init(void) {
7979
return 0;
8080
}
8181

82+
void ngtcp2_crypto_ossl_free(void) {
83+
if (crypto_hkdf) {
84+
EVP_KDF_free(crypto_hkdf);
85+
crypto_hkdf = NULL;
86+
}
87+
88+
if (crypto_sha384) {
89+
EVP_MD_free(crypto_sha384);
90+
crypto_sha384 = NULL;
91+
}
92+
93+
if (crypto_sha256) {
94+
EVP_MD_free(crypto_sha256);
95+
crypto_sha256 = NULL;
96+
}
97+
98+
#ifndef NGTCP2_NO_CHACHA_POLY1305
99+
if (crypto_chacha20) {
100+
EVP_CIPHER_free(crypto_chacha20);
101+
crypto_chacha20 = NULL;
102+
}
103+
104+
if (crypto_chacha20_poly1305) {
105+
EVP_CIPHER_free(crypto_chacha20_poly1305);
106+
crypto_chacha20_poly1305 = NULL;
107+
}
108+
#endif /* !defined(NGTCP2_NO_CHACHA_POLY1305) */
109+
110+
if (crypto_aes_256_ecb) {
111+
EVP_CIPHER_free(crypto_aes_256_ecb);
112+
crypto_aes_256_ecb = NULL;
113+
}
114+
115+
if (crypto_aes_128_ecb) {
116+
EVP_CIPHER_free(crypto_aes_128_ecb);
117+
crypto_aes_128_ecb = NULL;
118+
}
119+
120+
if (crypto_aes_128_ccm) {
121+
EVP_CIPHER_free(crypto_aes_128_ccm);
122+
crypto_aes_128_ccm = NULL;
123+
}
124+
125+
if (crypto_aes_256_gcm) {
126+
EVP_CIPHER_free(crypto_aes_256_gcm);
127+
crypto_aes_256_gcm = NULL;
128+
}
129+
130+
if (crypto_aes_128_gcm) {
131+
EVP_CIPHER_free(crypto_aes_128_gcm);
132+
crypto_aes_128_gcm = NULL;
133+
}
134+
}
135+
82136
static const EVP_CIPHER *crypto_aead_aes_128_gcm(void) {
83137
if (crypto_aes_128_gcm) {
84138
return crypto_aes_128_gcm;

deps/ngtcp2/ngtcp2/examples/http3_server_proto_codec.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -603,9 +603,9 @@ std::expected<void, Error> ProtoCodec::start_response(Stream *stream) {
603603
nghttp3_pri pri;
604604

605605
if (auto rv =
606-
nghttp3_conn_get_stream_priority(httpconn_, &pri, stream->stream_id);
606+
nghttp3_conn_get_stream_priority2(httpconn_, &pri, stream->stream_id);
607607
rv != 0) {
608-
std::println(stderr, "nghttp3_conn_get_stream_priority: {}",
608+
std::println(stderr, "nghttp3_conn_get_stream_priority2: {}",
609609
nghttp3_strerror(rv));
610610
return std::unexpected{Error::HTTP3};
611611
}

deps/ngtcp2/ngtcp2/examples/tls_client_context_ossl.cc

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -36,23 +36,16 @@
3636
#include "client_base.h"
3737
#include "template.h"
3838

39-
namespace {
40-
auto _ = [] {
41-
if (ngtcp2_crypto_ossl_init() != 0) {
42-
assert(0);
43-
abort();
44-
}
45-
46-
return 0;
47-
}();
48-
} // namespace
49-
5039
extern Config config;
5140

41+
TLSClientContext::TLSClientContext() { ngtcp2_crypto_ossl_init(); }
42+
5243
TLSClientContext::~TLSClientContext() {
5344
if (ssl_ctx_) {
5445
SSL_CTX_free(ssl_ctx_);
5546
}
47+
48+
ngtcp2_crypto_ossl_free();
5649
}
5750

5851
SSL_CTX *TLSClientContext::get_native_handle() const { return ssl_ctx_; }

deps/ngtcp2/ngtcp2/examples/tls_client_context_ossl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ using namespace ngtcp2;
3737

3838
class TLSClientContext {
3939
public:
40-
TLSClientContext() = default;
40+
TLSClientContext();
4141
~TLSClientContext();
4242

4343
std::expected<void, Error> init(const char *private_key_file,

deps/ngtcp2/ngtcp2/examples/tls_server_context_ossl.cc

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,23 +37,16 @@
3737
#include "server_base.h"
3838
#include "template.h"
3939

40-
namespace {
41-
auto _ = [] {
42-
if (ngtcp2_crypto_ossl_init() != 0) {
43-
assert(0);
44-
abort();
45-
}
46-
47-
return 0;
48-
}();
49-
} // namespace
50-
5140
extern Config config;
5241

42+
TLSServerContext::TLSServerContext() { ngtcp2_crypto_ossl_init(); }
43+
5344
TLSServerContext::~TLSServerContext() {
5445
if (ssl_ctx_) {
5546
SSL_CTX_free(ssl_ctx_);
5647
}
48+
49+
ngtcp2_crypto_ossl_free();
5750
}
5851

5952
SSL_CTX *TLSServerContext::get_native_handle() const { return ssl_ctx_; }

deps/ngtcp2/ngtcp2/examples/tls_server_context_ossl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ using namespace ngtcp2;
3737

3838
class TLSServerContext {
3939
public:
40-
TLSServerContext() = default;
40+
TLSServerContext();
4141
~TLSServerContext();
4242

4343
std::expected<void, Error> init(const char *private_key_file,

deps/ngtcp2/ngtcp2/lib/includes/ngtcp2/ngtcp2.h

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3485,6 +3485,24 @@ typedef int (*ngtcp2_stream_stop_sending)(ngtcp2_conn *conn, int64_t stream_id,
34853485
void *user_data,
34863486
void *stream_user_data);
34873487

3488+
/**
3489+
* @functypedef
3490+
*
3491+
* :type:`ngtcp2_recv_stop_sending` is invoked when a STOP_SENDING frame
3492+
* is received from a remote endpoint for a stream identified by
3493+
* |stream_id|. |app_error_code| is the application error code carried
3494+
* by the STOP_SENDING frame. This callback is called at most
3495+
* once per stream.
3496+
*
3497+
* The callback function must return 0 if it succeeds. Returning
3498+
* :macro:`NGTCP2_ERR_CALLBACK_FAILURE` makes the library call return
3499+
* immediately.
3500+
*/
3501+
typedef int (*ngtcp2_recv_stop_sending)(ngtcp2_conn *conn, int64_t stream_id,
3502+
uint64_t app_error_code,
3503+
void *user_data,
3504+
void *stream_user_data);
3505+
34883506
/**
34893507
* @functypedef
34903508
*
@@ -3626,7 +3644,8 @@ typedef int (*ngtcp2_get_path_challenge_data2)(ngtcp2_conn *conn,
36263644
#define NGTCP2_CALLBACKS_V1 1
36273645
#define NGTCP2_CALLBACKS_V2 2
36283646
#define NGTCP2_CALLBACKS_V3 3
3629-
#define NGTCP2_CALLBACKS_VERSION NGTCP2_CALLBACKS_V3
3647+
#define NGTCP2_CALLBACKS_V4 4
3648+
#define NGTCP2_CALLBACKS_VERSION NGTCP2_CALLBACKS_V4
36303649

36313650
/**
36323651
* @struct
@@ -3964,6 +3983,16 @@ typedef struct ngtcp2_callbacks {
39643983
* .. version-added:: 1.22.0
39653984
*/
39663985
ngtcp2_get_path_challenge_data2 get_path_challenge_data2;
3986+
/* The following fields have been added since
3987+
NGTCP2_CALLBACKS_V3. */
3988+
/**
3989+
* :member:`recv_stop_sending` is a callback function which is invoked
3990+
* when a STOP_SENDING frame is received from a remote endpoint. This
3991+
* callback function is optional.
3992+
*
3993+
* .. version-added:: 1.24.0
3994+
*/
3995+
ngtcp2_recv_stop_sending recv_stop_sending;
39673996
} ngtcp2_callbacks;
39683997

39693998
/**

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
*
3737
* Version number of the ngtcp2 library release.
3838
*/
39-
#define NGTCP2_VERSION "1.23.0"
39+
#define NGTCP2_VERSION "1.24.0"
4040

4141
/**
4242
* @macro
@@ -46,6 +46,6 @@
4646
* number, 8 bits for minor and 8 bits for patch. Version 1.2.3
4747
* becomes 0x010203.
4848
*/
49-
#define NGTCP2_VERSION_NUM 0x011700
49+
#define NGTCP2_VERSION_NUM 0x011800
5050

5151
#endif /* !defined(NGTCP2_VERSION_H) */

deps/ngtcp2/ngtcp2/lib/ngtcp2_bbr.c

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -289,9 +289,8 @@ static void bbr_handle_recovery(ngtcp2_cc_bbr *bbr, ngtcp2_conn_stat *cstat,
289289

290290
static void bbr_on_init(ngtcp2_cc_bbr *bbr, ngtcp2_conn_stat *cstat,
291291
ngtcp2_tstamp initial_ts) {
292-
ngtcp2_window_filter_init(&bbr->max_bw_filter, NGTCP2_BBR_MAX_BW_FILTERLEN);
293-
ngtcp2_window_filter_init(&bbr->extra_acked_filter,
294-
NGTCP2_BBR_EXTRA_ACKED_FILTERLEN);
292+
ngtcp2_wf_init(&bbr->max_bw_filter, NGTCP2_BBR_MAX_BW_FILTERLEN);
293+
ngtcp2_wf_init(&bbr->extra_acked_filter, NGTCP2_BBR_EXTRA_ACKED_FILTERLEN);
295294

296295
bbr->min_rtt =
297296
cstat->first_rtt_sample_ts == UINT64_MAX ? UINT64_MAX : cstat->smoothed_rtt;
@@ -590,10 +589,10 @@ static void bbr_update_max_bw(ngtcp2_cc_bbr *bbr, const ngtcp2_conn_stat *cstat,
590589

591590
if (cstat->delivery_rate_sec && (cstat->delivery_rate_sec >= bbr->max_bw ||
592591
!bbr->rst->rs.is_app_limited)) {
593-
ngtcp2_window_filter_update(&bbr->max_bw_filter, cstat->delivery_rate_sec,
594-
bbr->cycle_count);
592+
ngtcp2_wf_update(&bbr->max_bw_filter, cstat->delivery_rate_sec,
593+
bbr->cycle_count);
595594

596-
bbr->max_bw = ngtcp2_window_filter_get_best(&bbr->max_bw_filter);
595+
bbr->max_bw = ngtcp2_wf_get_best(&bbr->max_bw_filter);
597596
}
598597
}
599598

@@ -667,15 +666,14 @@ static void bbr_update_ack_aggregation(ngtcp2_cc_bbr *bbr,
667666
}
668667

669668
if (bbr->full_bw_reached) {
670-
bbr->extra_acked_filter.window_length = NGTCP2_BBR_EXTRA_ACKED_FILTERLEN;
669+
bbr->extra_acked_filter.win = NGTCP2_BBR_EXTRA_ACKED_FILTERLEN;
671670
} else {
672-
bbr->extra_acked_filter.window_length = 1;
671+
bbr->extra_acked_filter.win = 1;
673672
}
674673

675-
ngtcp2_window_filter_update(&bbr->extra_acked_filter, extra,
676-
bbr->round_count);
674+
ngtcp2_wf_update(&bbr->extra_acked_filter, extra, bbr->round_count);
677675

678-
bbr->extra_acked = ngtcp2_window_filter_get_best(&bbr->extra_acked_filter);
676+
bbr->extra_acked = ngtcp2_wf_get_best(&bbr->extra_acked_filter);
679677
}
680678

681679
static void bbr_enter_drain(ngtcp2_cc_bbr *bbr) {

0 commit comments

Comments
 (0)