diff options
author | Kim Alvefur <zash@zash.se> | 2019-09-01 01:58:38 +0200 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2019-09-01 01:58:38 +0200 |
commit | 61dd9fbc74ceb1399473a82d0397e9ad2326703b (patch) | |
tree | 3a720d3bef1fa783f79dc4fa935a2b7b399da489 | |
parent | 9a6332e037265977a9ba8075ede746af0ab32961 (diff) | |
download | prosody-61dd9fbc74ceb1399473a82d0397e9ad2326703b.tar.gz prosody-61dd9fbc74ceb1399473a82d0397e9ad2326703b.zip |
net.server: Handle server name (SNI) as extra argument
Code added in 75d2874502c3, 9a905888b96c and adc0672b700e uses this field.
See #409 and #1408
-rw-r--r-- | net/server_epoll.lua | 6 | ||||
-rw-r--r-- | net/server_event.lua | 1 | ||||
-rw-r--r-- | net/server_select.lua | 3 |
3 files changed, 10 insertions, 0 deletions
diff --git a/net/server_epoll.lua b/net/server_epoll.lua index 96e7b201..f48086e3 100644 --- a/net/server_epoll.lua +++ b/net/server_epoll.lua @@ -575,6 +575,12 @@ local function wrapsocket(client, server, read_size, listeners, tls_ctx, extra) extra = extra; }, interface_mt); + if extra then + if extra.servername then + conn.servername = extra.servername; + end + end + conn:updatenames(); return conn; end diff --git a/net/server_event.lua b/net/server_event.lua index 950a7a5c..2b791291 100644 --- a/net/server_event.lua +++ b/net/server_event.lua @@ -516,6 +516,7 @@ local function handleclient( client, ip, port, server, pattern, listener, sslctx _sslctx = sslctx; -- parameters _usingssl = false; -- client is using ssl; extra = extra; + servername = extra and extra.servername; } if not has_luasec then interface.starttls = false; end interface.id = tostring(interface):match("%x+$"); diff --git a/net/server_select.lua b/net/server_select.lua index de183331..e15f5298 100644 --- a/net/server_select.lua +++ b/net/server_select.lua @@ -317,6 +317,9 @@ wrapconnection = function( server, listeners, socket, ip, serverport, clientport local handler = bufferqueue -- saves a table ^_^ handler.extra = extra + if extra then + handler.servername = extra.servername + end handler.dispatch = function( ) return dispatch |