From b5eff9a9018c37698bbb850452a5c8bf504051a4 Mon Sep 17 00:00:00 2001 From: Matthew Wild Date: Fri, 24 May 2013 18:14:09 +0100 Subject: net.server_select: Support for listener.onreadtimeout() [see also e67891ad18d6] --- net/server_select.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'net/server_select.lua') diff --git a/net/server_select.lua b/net/server_select.lua index 7eb330a8..0e7f41f8 100644 --- a/net/server_select.lua +++ b/net/server_select.lua @@ -861,16 +861,16 @@ loop = function(once) -- this is the main loop of the program _starttime = _currenttime for handler, timestamp in pairs( _writetimes ) do if os_difftime( _currenttime - timestamp ) > _sendtimeout then - --_writetimes[ handler ] = nil handler.disconnect( )( handler, "send timeout" ) handler:force_close() -- forced disconnect end end for handler, timestamp in pairs( _readtimes ) do if os_difftime( _currenttime - timestamp ) > _readtimeout then - --_readtimes[ handler ] = nil - handler.disconnect( )( handler, "read timeout" ) - handler:close( ) -- forced disconnect? + if not(handler.onreadtimeout) or handler:onreadtimeout() ~= true then + handler.disconnect( )( handler, "read timeout" ) + handler:close( ) -- forced disconnect? + end end end end -- cgit v1.2.3 From 8c7ccc03685804776dfc90cba17ec3d766479740 Mon Sep 17 00:00:00 2001 From: Matthew Wild Date: Fri, 24 May 2013 18:33:16 +0100 Subject: net.server_select: Default checkinterval to 30s, so that read timeouts are actually detected --- net/server_select.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'net/server_select.lua') diff --git a/net/server_select.lua b/net/server_select.lua index 0e7f41f8..1665524f 100644 --- a/net/server_select.lua +++ b/net/server_select.lua @@ -145,7 +145,7 @@ _tcpbacklog = 128 -- some kind of hint to the OS _maxsendlen = 51000 * 1024 -- max len of send buffer _maxreadlen = 25000 * 1024 -- max len of read buffer -_checkinterval = 1200000 -- interval in secs to check idle clients +_checkinterval = 30 -- interval in secs to check idle clients _sendtimeout = 60000 -- allowed send idle time in secs _readtimeout = 6 * 60 * 60 -- allowed read idle time in secs -- cgit v1.2.3