From 67d21bbcf30ed04c65bdf575dc85056fc8fd57c4 Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Sun, 14 Aug 2016 01:09:55 +0200 Subject: net.server_epoll: Wrap calling of ondisconnect listener in additional indirection --- net/server_epoll.lua | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'net/server_epoll.lua') 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 -- cgit v1.2.3