Skip to content

Commit 8a3b11c

Browse files
deps: update ngtcp2 to 1.24.0
PR-URL: #64297 Reviewed-By: Tim Perry <pimterry@gmail.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
1 parent 9f1ae22 commit 8a3b11c

21 files changed

Lines changed: 327 additions & 239 deletions

deps/ngtcp2/ngtcp2.gyp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
'ngtcp2/lib/ngtcp2_unreachable.c',
5050
'ngtcp2/lib/ngtcp2_vec.c',
5151
'ngtcp2/lib/ngtcp2_version.c',
52-
'ngtcp2/lib/ngtcp2_window_filter.c',
52+
'ngtcp2/lib/ngtcp2_wf.c',
5353
'ngtcp2/crypto/shared.c'
5454
],
5555
'ngtcp2_sources_ossl': [

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) */

0 commit comments

Comments
 (0)