diff --git a/src/crypto/crypto_tls.cc b/src/crypto/crypto_tls.cc index 43a661cca7c313..5e1a1f2fbf01c9 100644 --- a/src/crypto/crypto_tls.cc +++ b/src/crypto/crypto_tls.cc @@ -223,7 +223,7 @@ int SelectALPNCallback( const unsigned char* in, unsigned int inlen, void* arg) { - TLSWrap* w = static_cast(arg); + TLSWrap* w = static_cast(SSL_get_app_data(s)); if (w->alpn_callback_enabled_) { Environment* env = w->env(); HandleScope handle_scope(env->isolate()); @@ -1293,7 +1293,8 @@ void TLSWrap::EnableALPNCb(const FunctionCallbackInfo& args) { wrap->alpn_callback_enabled_ = true; SSL* ssl = wrap->ssl_.get(); - SSL_CTX_set_alpn_select_cb(SSL_get_SSL_CTX(ssl), SelectALPNCallback, wrap); + SSL_CTX* ssl_ctx = SSL_get_SSL_CTX(ssl); + SSL_CTX_set_alpn_select_cb(ssl_ctx, SelectALPNCallback, nullptr); } void TLSWrap::GetServername(const FunctionCallbackInfo& args) { @@ -1589,7 +1590,8 @@ void TLSWrap::SetALPNProtocols(const FunctionCallbackInfo& args) { } else { w->alpn_protos_ = std::vector( protos.data(), protos.data() + protos.length()); - SSL_CTX_set_alpn_select_cb(SSL_get_SSL_CTX(ssl), SelectALPNCallback, w); + SSL_CTX* ssl_ctx = SSL_get_SSL_CTX(ssl); + SSL_CTX_set_alpn_select_cb(ssl_ctx, SelectALPNCallback, nullptr); } }