diff options
author | Kim Alvefur <zash@zash.se> | 2016-08-18 17:07:14 +0200 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2016-08-18 17:07:14 +0200 |
commit | 1d3dc4eccaad91b332b1204a871bea89889dab62 (patch) | |
tree | 25a707d29f86fe1964aa8271c978dd901fdadc1b /net | |
parent | 459216b098b3c53ab2ad936d0ec6837fdf5145ac (diff) | |
download | prosody-1d3dc4eccaad91b332b1204a871bea89889dab62.tar.gz prosody-1d3dc4eccaad91b332b1204a871bea89889dab62.zip |
net.server_epoll: TLS handshake timeout
Diffstat (limited to 'net')
-rw-r--r-- | net/server_epoll.lua | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/net/server_epoll.lua b/net/server_epoll.lua index 15c39ae8..2374ab57 100644 --- a/net/server_epoll.lua +++ b/net/server_epoll.lua @@ -30,6 +30,7 @@ local cfg = { tcp_backlog = 128; accept_retry_interval = 10; read_retry_delay = 1e-06; + handshake_timeout = 60; }; local fds = createtable(10, 0); -- FD -> conn @@ -385,10 +386,13 @@ function interface:starttls(ctx) self.onwriteable = interface.tlshandskake; self.onreadable = interface.tlshandskake; self:setflags(true, true); + self:setwritetimeout(cfg.handshake_timeout); end end function interface:tlshandskake() + self:setwritetimeout(false); + self:setreadtimeout(false); local ok, err = self.conn:dohandshake(); if ok then log("debug", "TLS handshake on %s complete", tostring(self)); @@ -406,12 +410,10 @@ function interface:tlshandskake() elseif err == "wantread" then log("debug", "TLS handshake on %s to wait until readable", tostring(self)); self:setflags(true, false); - self:setwritetimeout(false); self:setreadtimeout(cfg.handshake_timeout); elseif err == "wantwrite" then log("debug", "TLS handshake on %s to wait until writable", tostring(self)); self:setflags(false, true); - self:setreadtimeout(false); self:setwritetimeout(cfg.handshake_timeout); else log("debug", "TLS handshake error on %s: %s", tostring(self), err); |