From 89a474d4580b6c3f042acd979a9efaf25f64294f Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Wed, 2 Mar 2016 16:28:11 +0100 Subject: mod_c2s: Remove connection object from session object when connection disconnected to prevent accidental use (see #590) --- plugins/mod_c2s.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/mod_c2s.lua b/plugins/mod_c2s.lua index 8524c37e..30a017c0 100644 --- a/plugins/mod_c2s.lua +++ b/plugins/mod_c2s.lua @@ -258,6 +258,7 @@ function listener.ondisconnect(conn, err) if session then (session.log or log)("info", "Client disconnected: %s", err or "connection closed"); sm_destroy_session(session, err); + session.conn = nil; sessions[conn] = nil; end end -- cgit v1.2.3 From 52f557decefd36b894629eaab6063a0a28a05599 Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Wed, 2 Mar 2016 16:30:05 +0100 Subject: net.server_event: Prevent resuming connections without readcallback, eg closed connections (fixes #590) --- net/server_event.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/server_event.lua b/net/server_event.lua index 45938a13..a60de08e 100644 --- a/net/server_event.lua +++ b/net/server_event.lua @@ -289,7 +289,7 @@ do function interface_mt:resume() self:_lock(self.nointerface, false, self.nowriting); - if not self.eventread then + if self.readcallback and not self.eventread then self.eventread = addevent( base, self.conn, EV_READ, self.readcallback, cfg.READ_TIMEOUT ); -- register callback end end -- cgit v1.2.3 From e83b7f442b4988bcb62f4e73234d5e25929ea1b7 Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Wed, 2 Mar 2016 16:30:46 +0100 Subject: net.server_event: Return true from conn:resume() to indicate success --- net/server_event.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/net/server_event.lua b/net/server_event.lua index a60de08e..d505825d 100644 --- a/net/server_event.lua +++ b/net/server_event.lua @@ -291,6 +291,7 @@ do self:_lock(self.nointerface, false, self.nowriting); if self.readcallback and not self.eventread then self.eventread = addevent( base, self.conn, EV_READ, self.readcallback, cfg.READ_TIMEOUT ); -- register callback + return true; end end -- cgit v1.2.3