Software /
code /
prosody
Diff
net/server_epoll.lua @ 9306:35c128b42509
net.server_epoll: Factor Direct TLS handling out of connection initialization
Eventually it should be possible to create a socket that has a TLS
context but that does not automatically start TLS on connect.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 13 Sep 2018 17:28:50 +0200 |
parent | 9301:2f9687c09e6e |
child | 9309:33d500c25d76 |
line wrap: on
line diff
--- a/net/server_epoll.lua Thu Sep 13 16:18:59 2018 +0100 +++ b/net/server_epoll.lua Thu Sep 13 17:28:50 2018 +0200 @@ -454,6 +454,7 @@ self.onreadable = nil; self._tls = true; self:on("status", "ssl-handshake-complete"); + self.init = nil; -- Restore default method self:init(); elseif err == "wantread" then log("debug", "TLS handshake on %s to wait until readable", self); @@ -488,6 +489,9 @@ if client.getsockname then conn.sockname, conn.sockport = client:getsockname(); end + if tls_ctx then + conn.init = interface.starttls; + end return conn; end @@ -507,12 +511,8 @@ -- Initialization function interface:init() - if self.tls_ctx and not self._tls then - return self:starttls(); - else - self:setwritetimeout(); - return self:setflags(true, true); - end + self:setwritetimeout(); + return self:setflags(true, true); end function interface:pause()