From 68f948425a7f0665fbbea3b35393f23eec256516 Mon Sep 17 00:00:00 2001 From: Matthew Wild Date: Wed, 14 Oct 2009 14:09:51 +0100 Subject: net.server: Better handling of closing sockets during send --- net/server.lua | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'net/server.lua') diff --git a/net/server.lua b/net/server.lua index a6c57e41..3873a5f0 100644 --- a/net/server.lua +++ b/net/server.lua @@ -363,17 +363,20 @@ wrapconnection = function( server, listeners, socket, ip, serverport, clientport send( socket, table_concat( bufferqueue, "", 1, bufferqueuelen ), 1, bufferlen ) -- forced send end end - if not handler then return true; end - _ = shutdown and shutdown( socket ) - socket:close( ) - _sendlistlen = removesocket( _sendlist, socket, _sendlistlen ) - _socketlist[ socket ] = nil + if socket then + _ = shutdown and shutdown( socket ) + socket:close( ) + _sendlistlen = removesocket( _sendlist, socket, _sendlistlen ) + _socketlist[ socket ] = nil + socket = nil + else + out_put "server.lua: socket already closed" + end if handler then _writetimes[ handler ] = nil _closelist[ handler ] = nil handler = nil end - socket = nil mem_free( ) if server then server.remove( ) -- cgit v1.2.3