From 911e6a5b18c28489067d3c4536b14df42300d6c2 Mon Sep 17 00:00:00 2001 From: Bryan Roe Date: Fri, 5 Feb 2021 11:22:25 -0800 Subject: [PATCH] Fixed bug where ALPN/sni was queried on non TLS connections --- microscript/ILibDuktape_net.c | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/microscript/ILibDuktape_net.c b/microscript/ILibDuktape_net.c index 86b2a53..7ce3a3a 100644 --- a/microscript/ILibDuktape_net.c +++ b/microscript/ILibDuktape_net.c @@ -873,21 +873,23 @@ void ILibDuktape_net_server_OnConnect(ILibAsyncServerSocket_ServerModule AsyncSe session = Duktape_PushBuffer(ptr->ctx, sizeof(ILibDuktape_net_server_session)); // [emit][this][connection][socket][buffer] duk_put_prop_string(ptr->ctx, -2, ILibDuktape_net_Server_Session_buffer); // [emit][this][connection][socket] - const unsigned char *alpn = NULL; - size_t alpnLen = 0; - SSL_SESSION_get0_alpn_selected(SSL_get_session(ILibAsyncServerSocket_GetSSL(ConnectionToken)), &alpn, &alpnLen); - if (alpnLen != 0) + if (isTLS) { - duk_push_lstring(ptr->ctx, alpn, alpnLen); + const unsigned char *alpn = NULL; + size_t alpnLen = 0; + SSL_SESSION_get0_alpn_selected(SSL_get_session(ILibAsyncServerSocket_GetSSL(ConnectionToken)), &alpn, &alpnLen); + if (alpnLen != 0) + { + duk_push_lstring(ptr->ctx, alpn, alpnLen); + } + else + { + duk_push_null(ptr->ctx); + } + duk_put_prop_string(ptr->ctx, -2, "alpnProtocol"); + duk_push_string(ptr->ctx, SSL_get_servername(ILibAsyncServerSocket_GetSSL(ConnectionToken), TLSEXT_NAMETYPE_host_name)); + duk_put_prop_string(ptr->ctx, -2, "servername"); } - else - { - duk_push_null(ptr->ctx); - } - duk_put_prop_string(ptr->ctx, -2, "alpnProtocol"); - duk_push_string(ptr->ctx, SSL_get_servername(ILibAsyncServerSocket_GetSSL(ConnectionToken), TLSEXT_NAMETYPE_host_name)); - duk_put_prop_string(ptr->ctx, -2, "servername"); - struct sockaddr_in6 local; ILibAsyncSocket_GetLocalInterface(ConnectionToken, (struct sockaddr*)&local);