_socketlist[ socket ] = nil\r
handler = nil\r
socket = nil\r
- --mem_free( )\r
+ mem_free( )\r
out_put "server.lua: closed server handler and removed sockets from list"\r
end\r
handler.ip = function( )\r
send( socket, table_concat( bufferqueue, "", 1, bufferqueuelen ), 1, bufferlen ) -- forced send\r
end\r
end\r
+ if not handler then return true; end\r
_ = shutdown and shutdown( socket )\r
socket:close( )\r
_sendlistlen = removesocket( _sendlist, socket, _sendlistlen )\r
handler = nil\r
end\r
socket = nil\r
- --mem_free( )\r
+ mem_free( )\r
if server then\r
server.remove( )\r
end\r
end\r
end\r
local _sendbuffer = function( ) -- this function sends data\r
- local buffer = table_concat( bufferqueue, "", 1, bufferqueuelen )\r
- local succ, err, byte = send( socket, buffer, 1, bufferlen )\r
- local count = ( succ or byte or 0 ) * STAT_UNIT\r
- sendtraffic = sendtraffic + count\r
- _sendtraffic = _sendtraffic + count\r
- _ = _cleanqueue and clean( bufferqueue )\r
- --out_put( "server.lua: sended '", buffer, "', bytes: ", tostring(succ), ", error: ", tostring(err), ", part: ", tostring(byte), ", to: ", tostring(ip), ":", tostring(clientport) )\r
+ local succ, err, byte, buffer, count;\r
+ local count;\r
+ if socket then\r
+ buffer = table_concat( bufferqueue, "", 1, bufferqueuelen )\r
+ succ, err, byte = send( socket, buffer, 1, bufferlen )\r
+ count = ( succ or byte or 0 ) * STAT_UNIT\r
+ sendtraffic = sendtraffic + count\r
+ _sendtraffic = _sendtraffic + count\r
+ _ = _cleanqueue and clean( bufferqueue )\r
+ --out_put( "server.lua: sended '", buffer, "', bytes: ", tostring(succ), ", error: ", tostring(err), ", part: ", tostring(byte), ", to: ", tostring(ip), ":", tostring(clientport) )\r
+ else\r
+ succ, err, count = false, "closed", 0;\r
+ end\r
if succ then -- sending succesful\r
bufferqueuelen = 0\r
bufferlen = 0\r
socket, err = ssl_wrap( socket, sslctx ) -- wrap socket\r
if err then\r
out_put( "server.lua: ssl error: ", tostring(err) )\r
- --mem_free( )\r
+ mem_free( )\r
return nil, nil, err -- fatal error\r
end\r
socket:settimeout( 0 )\r
_readlistlen = removesocket( _readlist, socket, _readlistlen )\r
_socketlist[ socket ] = nil\r
socket:close( )\r
- --mem_free( )\r
+ mem_free( )\r
end\r
\r
----------------------------------// PUBLIC //--\r
_sendlist = { }\r
_timerlist = { }\r
_socketlist = { }\r
- --mem_free( )\r
+ mem_free( )\r
end\r
\r
getsettings = function( )\r