@@ -213,17 +213,22 @@ void TLSWrap::SSLInfoCallback(const SSL* ssl_, int where, int ret) {
213213 Local<Object> object = c->object ();
214214
215215 if (where & SSL_CB_HANDSHAKE_START) {
216- Local<Value> callback = object->Get (env->onhandshakestart_string ());
217- if (callback->IsFunction ()) {
216+ Local<Value> callback;
217+
218+ if (object->Get (env->context (), env->onhandshakestart_string ())
219+ .ToLocal (&callback) && callback->IsFunction ()) {
218220 Local<Value> argv[] = { env->GetNow () };
219221 c->MakeCallback (callback.As <Function>(), arraysize (argv), argv);
220222 }
221223 }
222224
223225 if (where & SSL_CB_HANDSHAKE_DONE) {
226+ Local<Value> callback;
227+
224228 c->established_ = true ;
225- Local<Value> callback = object->Get (env->onhandshakedone_string ());
226- if (callback->IsFunction ()) {
229+
230+ if (object->Get (env->context (), env->onhandshakedone_string ())
231+ .ToLocal (&callback) && callback->IsFunction ()) {
227232 c->MakeCallback (callback.As <Function>(), 0 , nullptr );
228233 }
229234 }
@@ -814,7 +819,10 @@ int TLSWrap::SelectSNIContextCallback(SSL* s, int* ad, void* arg) {
814819
815820 // Call the SNI callback and use its return value as context
816821 Local<Object> object = p->object ();
817- Local<Value> ctx = object->Get (env->sni_context_string ());
822+ Local<Value> ctx;
823+
824+ if (!object->Get (env->context (), env->sni_context_string ()).ToLocal (&ctx))
825+ return SSL_TLSEXT_ERR_NOACK;
818826
819827 // Not an object, probably undefined or null
820828 if (!ctx->IsObject ())
0 commit comments