diff options
author | oyyd <oyydoibh@gmail.com> | 2019-05-17 21:19:40 +0800 |
---|---|---|
committer | oyyd <oyydoibh@gmail.com> | 2019-05-23 10:37:12 +0800 |
commit | d2cabee64c60a7d6e2023dfb60c26cb66dc2eaa4 (patch) | |
tree | 0058544caf7e64e54282dd14024fd35ce4a0ef78 /src | |
parent | 78f2bb1c82f13102a0e9b46d9008a5c66dd1215f (diff) | |
download | android-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')
-rw-r--r-- | src/tls_wrap.cc | 8 |
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; |