local coroutine_yield = coroutine.yield
local print = print;
local out_put = function () end --print;
-local out_put = print;
local out_error = print;
--// extern libs //--
return receivestat, sendstat
end
-wrapserver = function( listener, socket, ip, serverport, mode, sslctx ) -- this function wraps a server
+wrapserver = function( listener, socket, ip, serverport, mode, sslctx, wrapper_function ) -- this function wraps a server
local dispatch, disconnect = listener.listener, listener.disconnect -- dangerous
local wrapclient, err
out_put("Starting a new server on "..tostring(serverport).." with ssl: "..tostring(sslctx));
-
if sslctx then
if not ssl_newcontext then
return nil, "luasec not found"
out_error( "server.lua: ", err )
return nil, err
end
+ end
+
+ if wrapper_function then
+ wrapclient = wrapper_function
+ elseif sslctx then
wrapclient = wrapsslclient
- wrapclient = wraptlsclient
else
wrapclient = wraptcpclient
end
-
+
local accept = socket.accept
local close = socket.close
end
end
-addserver = function( listeners, port, addr, mode, sslctx ) -- this function provides a way for other scripts to reg a server
+addserver = function( listeners, port, addr, mode, sslctx, wrapper_function ) -- this function provides a way for other scripts to reg a server
local err
if type( listeners ) ~= "table" then
err = "invalid listener table"
out_error( "server.lua: ", err )
return nil, err
end
- local handler, err = wrapserver( listeners, server, addr, port, mode, sslctx ) -- wrap new server socket
+ local handler, err = wrapserver( listeners, server, addr, port, mode, sslctx, wrapper_function ) -- wrap new server socket
if not handler then
server:close( )
return nil, err
closeall = closeall,
addtimer = addtimer,
wraptcpclient = wraptcpclient,
+ wrapsslclient = wrapsslclient,
wraptlsclient = wraptlsclient,
}