net/server.lua

changeset 658
1952fdcf1017
parent 657
7f1946174d4b
child 659
c424bec771d9
--- a/net/server.lua	Sat Dec 27 21:18:12 2008 +0000
+++ b/net/server.lua	Sat Dec 27 21:20:09 2008 +0000
@@ -94,14 +94,14 @@
 	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));
-	
+	out_put(traceback())
 	if sslctx then
 		if not ssl_newcontext then
 			return nil, "luasec not found"
@@ -116,12 +116,16 @@
 			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
 
@@ -768,7 +772,7 @@
 	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"
@@ -797,7 +801,7 @@
 		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
@@ -877,5 +881,6 @@
 	closeall = closeall,
 	addtimer = addtimer,
 	wraptcpclient = wraptcpclient,
+	wrapsslclient = wrapsslclient,
 	wraptlsclient = wraptlsclient,
 }

mercurial