\r
local connections = 0\r
\r
- local dispatch, disconnect = listeners.incoming or listeners.listener, listeners.disconnect\r
+ local dispatch, disconnect = listeners.onincoming, listeners.ondisconnect\r
\r
local err\r
\r
for _, handler in pairs( _socketlist ) do\r
if handler.serverport == serverport then\r
handler.disconnect( handler, "server closed" )\r
- handler.close( true )\r
+ handler:close( true )\r
end\r
end\r
socket:close( )\r
\r
local ssl\r
\r
- local dispatch = listeners.incoming or listeners.listener\r
+ local dispatch = listeners.onincoming\r
local status = listeners.status\r
- local disconnect = listeners.disconnect\r
+ local disconnect = listeners.ondisconnect\r
\r
local bufferqueue = { } -- buffer array\r
local bufferqueuelen = 0 -- end of buffer array\r
handler.disconnect = function( )\r
return disconnect\r
end\r
- handler.setlistener = function( listeners )\r
- dispatch = listeners.incoming\r
- disconnect = listeners.disconnect\r
+ handler.setlistener = function( self, listeners )\r
+ dispatch = listeners.onincoming\r
+ disconnect = listeners.ondisconnect\r
end\r
handler.getstats = function( )\r
return readtraffic, sendtraffic\r
handler.clientport = function( )\r
return clientport\r
end\r
- local write = function( data )\r
+ local write = function( self, data )\r
bufferlen = bufferlen + string_len( data )\r
if bufferlen > maxsendlen then\r
_closelist[ handler ] = "send buffer exceeded" -- cannot close the client at the moment, have to wait to the end of the cycle\r
return true\r
end\r
handler.write = write\r
- handler.bufferqueue = function( )\r
+ handler.bufferqueue = function( self )\r
return bufferqueue\r
end\r
- handler.socket = function( )\r
+ handler.socket = function( self )\r
return socket\r
end\r
- handler.pattern = function( new )\r
+ handler.pattern = function( self, new )\r
pattern = new or pattern\r
return pattern\r
end\r
- handler.setsend = function ( newsend )\r
+ handler.setsend = function ( self, newsend )\r
send = newsend or send\r
return send\r
end\r
- handler.bufferlen = function( readlen, sendlen )\r
+ handler.bufferlen = function( self, readlen, sendlen )\r
maxsendlen = sendlen or maxsendlen\r
maxreadlen = readlen or maxreadlen\r
return maxreadlen, maxsendlen\r
end\r
- handler.lock = function( switch )\r
+ handler.lock = function( self, switch )\r
if switch == true then\r
handler.write = idfalse\r
local tmp = _sendlistlen\r
bufferqueuelen = 0\r
bufferlen = 0\r
_sendlistlen = removesocket( _sendlist, socket, _sendlistlen ) -- delete socket from writelist\r
- _ = needtls and handler.starttls(true)\r
+ _ = needtls and handler:starttls(true)\r
_writetimes[ handler ] = nil\r
_ = toclose and handler.close( )\r
return true\r
\r
-- Set the sslctx\r
local handshake;\r
- function handler.set_sslctx(new_sslctx)\r
+ function handler.set_sslctx(self, new_sslctx)\r
ssl = true\r
sslctx = new_sslctx;\r
local wrote\r
end\r
end\r
disconnect( handler, "ssl handshake failed" )\r
- _ = handler and handler.close( true ) -- forced disconnect\r
+ _ = handler and handler:close( true ) -- forced disconnect\r
return false -- handshake failed\r
end\r
)\r
end\r
if sslctx then -- ssl?\r
- handler.set_sslctx(sslctx);\r
+ handler:set_sslctx(sslctx);\r
if startssl then -- ssl now?\r
--out_put("server.lua: ", "starting ssl handshake")\r
local err\r
else\r
-- We're not automatically doing SSL, so we're not secure (yet)\r
ssl = false\r
- handler.starttls = function( now )\r
+ handler.starttls = function( self, now )\r
if not now then\r
--out_put "server.lua: we need to do tls, but delaying until later"\r
needtls = true\r
\r
----------------------------------// PUBLIC //--\r
\r
-addserver = function( listeners, port, addr, pattern, sslctx, maxconnections, startssl ) -- this function provides a way for other scripts to reg a server\r
+addserver = function( addr, port, listeners, pattern, sslctx, startssl ) -- this function provides a way for other scripts to reg a server\r
local err\r
--out_put("server.lua: autossl on ", port, " is ", startssl)\r
if type( listeners ) ~= "table" then\r
out_error( "server.lua, port ", port, ": ", err )\r
return nil, err\r
end\r
- local handler, err = wrapserver( listeners, server, addr, port, pattern, sslctx, maxconnections, startssl ) -- wrap new server socket\r
+ local handler, err = wrapserver( listeners, server, addr, port, pattern, sslctx, _maxclientsperserver, startssl ) -- wrap new server socket\r
if not handler then\r
server:close( )\r
return nil, err\r
if not handler then\r
return nil, "no server found on port '" .. tostring( port ) .. "'"\r
end\r
- handler.close( )\r
+ handler:close( )\r
_server[ port ] = nil\r
return true\r
end\r
\r
closeall = function( )\r
for _, handler in pairs( _socketlist ) do\r
- handler.close( )\r
+ handler:close( )\r
_socketlist[ _ ] = nil\r
end\r
_readlistlen = 0\r
end\r
for handler, err in pairs( _closelist ) do\r
handler.disconnect( )( handler, err )\r
- handler.close( true ) -- forced disconnect\r
+ handler:close( true ) -- forced disconnect\r
end\r
clean( _closelist )\r
_currenttime = os_time( )\r
if os_difftime( _currenttime - timestamp ) > _sendtimeout then\r
--_writetimes[ handler ] = nil\r
handler.disconnect( )( handler, "send timeout" )\r
- handler.close( true ) -- forced disconnect\r
+ handler:close( true ) -- forced disconnect\r
end\r
end\r
for handler, timestamp in pairs( _readtimes ) do\r
if os_difftime( _currenttime - timestamp ) > _readtimeout then\r
--_readtimes[ handler ] = nil\r
handler.disconnect( )( handler, "read timeout" )\r
- handler.close( ) -- forced disconnect?\r
+ handler:close( ) -- forced disconnect?\r
end\r
end\r
end\r