# HG changeset patch # User Matthew Wild # Date 1255525791 -3600 # Node ID 4a15b176fca8dfe475b16064742323d75fe39f42 # Parent 632039101699d65ec64a27cdb39be2c0d6b42df7 net.server: Better handling of closing sockets during send diff -r 632039101699 -r 4a15b176fca8 net/server.lua --- a/net/server.lua Wed Oct 14 14:07:50 2009 +0100 +++ b/net/server.lua Wed Oct 14 14:09:51 2009 +0100 @@ -363,17 +363,20 @@ 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( )