From 437fd63c6ff097d6a09d162ef9b6a104d73fa723 Mon Sep 17 00:00:00 2001
From: Kim Alvefur <zash@zash.se>
Date: Wed, 26 Sep 2018 14:25:59 +0200
Subject: net.server: Call a 'onattach' callback when replacing listeners

---
 net/server_epoll.lua  | 1 +
 net/server_event.lua  | 4 ++++
 net/server_select.lua | 3 +++
 3 files changed, 8 insertions(+)

diff --git a/net/server_epoll.lua b/net/server_epoll.lua
index 04922f6e..23b3f376 100644
--- a/net/server_epoll.lua
+++ b/net/server_epoll.lua
@@ -139,6 +139,7 @@ end
 function interface:setlistener(listeners)
 	self:on("detach");
 	self.listeners = listeners;
+	self:on("attach");
 end
 
 -- Call a listener callback
diff --git a/net/server_event.lua b/net/server_event.lua
index 6daf0944..8ee2f28d 100644
--- a/net/server_event.lua
+++ b/net/server_event.lua
@@ -424,7 +424,9 @@ function interface_mt:setlistener(listener)
 	self.onreadtimeout = listener.onreadtimeout;
 	self.onstatus = listener.onstatus;
 	self.ondetach = listener.ondetach;
+	self.onattach = listener.onattach;
 	self.ondrain = listener.ondrain;
+	self:onattach();
 end
 
 -- Stub handlers
@@ -446,6 +448,8 @@ function interface_mt:ondrain()
 end
 function interface_mt:ondetach()
 end
+function interface_mt:onattach()
+end
 function interface_mt:onstatus()
 end
 
diff --git a/net/server_select.lua b/net/server_select.lua
index 2cd095fe..1b535bb7 100644
--- a/net/server_select.lua
+++ b/net/server_select.lua
@@ -331,6 +331,9 @@ wrapconnection = function( server, listeners, socket, ip, serverport, clientport
 		drain = listeners.ondrain
 		handler.onreadtimeout = listeners.onreadtimeout
 		detach = listeners.ondetach
+		if listeners.onattach then
+			listeners.onattach(self)
+		end
 	end
 	handler.getstats = function( )
 		return readtraffic, sendtraffic
-- 
cgit v1.2.3