diff options
author | Kim Alvefur <zash@zash.se> | 2016-08-14 01:09:55 +0200 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2016-08-14 01:09:55 +0200 |
commit | bf7da12bdfdfc10679e69640a76d0c2e314cba0c (patch) | |
tree | 689e53c2fd4e5aefa3861d1426dcee70f07ab091 /net | |
parent | 421ef192cadda2c474419071ab8560cdf7de51c4 (diff) | |
download | prosody-bf7da12bdfdfc10679e69640a76d0c2e314cba0c.tar.gz prosody-bf7da12bdfdfc10679e69640a76d0c2e314cba0c.zip |
net.server_epoll: Wrap calling of ondisconnect listener in additional indirection
Diffstat (limited to 'net')
-rw-r--r-- | net/server_epoll.lua | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/net/server_epoll.lua b/net/server_epoll.lua index 7bc93b33..fa79837d 100644 --- a/net/server_epoll.lua +++ b/net/server_epoll.lua @@ -155,7 +155,7 @@ function interface:setreadtimeout(t) if self:onreadtimeout() then return cfg.read_timeout; else - self.listeners.ondisconnect(self, "read timeout"); + self:ondisconnect("read timeout"); self:destroy(); end end); @@ -330,7 +330,7 @@ function interface:starttls(ctx) self:setflags(false, false); local conn, err = luasec.wrap(self.conn, ctx or self.tls); if not conn then - self.listeners.ondisconnect(self, err); + self:ondisconnect(err); self:destroy(); end conn:settimeout(0); @@ -365,7 +365,7 @@ function interface:tlshandskake() self:setreadtimeout(false); self:setwritetimeout(cfg.handshake_timeout); else - self.listeners.ondisconnect(self, err); + self:ondisconnect(err); self:destroy(); end end @@ -430,9 +430,17 @@ function interface:pausefor(t) end); end +function interface:ondisconnect(err) + if self.listeners.ondisconnect then + self.listeners.ondisconnect(self, err); + end +end + function interface:onconnect() self.onwriteable = nil; - self.listeners.onconnect(self); + if self.listeners.onconnect then + self.listeners.onconnect(self); + end self:setflags(true); return self:onwriteable(); end |