summaryrefslogtreecommitdiff
path: root/src/tls_wrap.cc
diff options
context:
space:
mode:
authoroyyd <oyydoibh@gmail.com>2019-05-17 21:19:40 +0800
committeroyyd <oyydoibh@gmail.com>2019-05-23 10:37:12 +0800
commitd2cabee64c60a7d6e2023dfb60c26cb66dc2eaa4 (patch)
tree0058544caf7e64e54282dd14024fd35ce4a0ef78 /src/tls_wrap.cc
parent78f2bb1c82f13102a0e9b46d9008a5c66dd1215f (diff)
downloadandroid-node-v8-d2cabee64c60a7d6e2023dfb60c26cb66dc2eaa4.tar.gz
android-node-v8-d2cabee64c60a7d6e2023dfb60c26cb66dc2eaa4.tar.bz2
android-node-v8-d2cabee64c60a7d6e2023dfb60c26cb66dc2eaa4.zip
tls: set tlsSocket.servername as early as possible
This commit makes `TLSSocket` set the `servername` property on `SSL_CTX_set_tlsext_servername_callback` so that we could get it later even if errors happen. Fixes: https://github.com/nodejs/node/issues/27699 PR-URL: https://github.com/nodejs/node/pull/27759 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Sam Roberts <vieuxtech@gmail.com>
Diffstat (limited to 'src/tls_wrap.cc')
-rw-r--r--src/tls_wrap.cc8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/tls_wrap.cc b/src/tls_wrap.cc
index cd6321b969..a1944df056 100644
--- a/src/tls_wrap.cc
+++ b/src/tls_wrap.cc
@@ -1033,6 +1033,14 @@ int TLSWrap::SelectSNIContextCallback(SSL* s, int* ad, void* arg) {
Local<Object> object = p->object();
Local<Value> ctx;
+ // Set the servername as early as possible
+ Local<Object> owner = p->GetOwner();
+ if (!owner->Set(env->context(),
+ env->servername_string(),
+ OneByteString(env->isolate(), servername)).FromMaybe(false)) {
+ return SSL_TLSEXT_ERR_NOACK;
+ }
+
if (!object->Get(env->context(), env->sni_context_string()).ToLocal(&ctx))
return SSL_TLSEXT_ERR_NOACK;