mirror of
https://github.com/nodejs/node.git
synced 2026-11-09 15:11:11 -05:00
src: use BaseObjectPtr to store SNI context
Rather than relying on a link to the JS object, store a pointer to the C++ object directly. PR-URL: https://github.com/nodejs/node/pull/30548 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: David Carlier <devnexen@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Tobias Nießen <tniessen@tnie.de>
This commit is contained in:
3 files changed
+11
-6
No files matched your search
+9
-3
@@ -2991,9 +2991,15 @@ void SSLWrap<Base>::CertCbDone(const FunctionCallbackInfo<Value>& args) {
|
||||
goto fire_cb;
|
||||
|
||||
if (cons->HasInstance(ctx)) {
|
||||
SecureContext* sc;
|
||||
ASSIGN_OR_RETURN_UNWRAP(&sc, ctx.As<Object>());
|
||||
w->sni_context_.Reset(env->isolate(), ctx);
|
||||
SecureContext* sc = Unwrap<SecureContext>(ctx.As<Object>());
|
||||
CHECK_NOT_NULL(sc);
|
||||
// XXX: There is a method w->SetSNIContext(sc), and you might think that
|
||||
// it makes sense to call that here and make setting w->sni_context_ part
|
||||
// of it. In fact, that passes the test suite, although SetSNIContext()
|
||||
// performs a lot more operations.
|
||||
// If anybody is familiar enough with the TLS code to know whether it makes
|
||||
// sense, please do so or document why it doesn't.
|
||||
w->sni_context_ = BaseObjectPtr<SecureContext>(sc);
|
||||
|
||||
int rv;
|
||||
|
||||
|
||||
+1
-1
@@ -310,7 +310,7 @@ class SSLWrap {
|
||||
ClientHelloParser hello_parser_;
|
||||
|
||||
v8::Global<v8::ArrayBufferView> ocsp_response_;
|
||||
v8::Global<v8::Value> sni_context_;
|
||||
BaseObjectPtr<SecureContext> sni_context_;
|
||||
|
||||
friend class SecureContext;
|
||||
};
|
||||
|
||||
+1
-2
@@ -1065,10 +1065,9 @@ int TLSWrap::SelectSNIContextCallback(SSL* s, int* ad, void* arg) {
|
||||
return SSL_TLSEXT_ERR_NOACK;
|
||||
}
|
||||
|
||||
p->sni_context_.Reset(env->isolate(), ctx);
|
||||
|
||||
SecureContext* sc = Unwrap<SecureContext>(ctx.As<Object>());
|
||||
CHECK_NOT_NULL(sc);
|
||||
p->sni_context_ = BaseObjectPtr<SecureContext>(sc);
|
||||
p->SetSNIContext(sc);
|
||||
return SSL_TLSEXT_ERR_OK;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user