net.server_event: Add SNI support (#409)
authorKim Alvefur <zash@zash.se>
Sun, 10 Mar 2019 19:32:54 +0100
changeset 9854 9a905888b96c
parent 9853 70e56f126177
child 9855 75d2874502c3
net.server_event: Add SNI support (#409) Snippet adapted from server_epoll
net/server_event.lua
--- a/net/server_event.lua	Fri Sep 14 01:30:56 2018 +0200
+++ b/net/server_event.lua	Sun Mar 10 19:32:54 2019 +0100
@@ -164,6 +164,15 @@
 		debug( "fatal error while ssl wrapping:", err )
 		return false
 	end
+
+	if self.conn.sni then
+		if self.servername then
+			self.conn:sni(self.servername);
+		elseif self._server and self._server.hosts then
+			self.conn:sni(self._server.hosts, true);
+		end
+	end
+
 	self.conn:settimeout( 0 )  -- set non blocking
 	local handshakecallback = coroutine_wrap(function( event )
 		local _, err
@@ -665,6 +674,7 @@
 
 		_ip = addr, _port = port, _pattern = pattern,
 		_sslctx = sslctx;
+		hosts = {};
 	}
 	interface.id = tostring(interface):match("%x+$");
 	interface.readcallback = function( event )  -- server handler, called on incoming connections