net.server_{select,event}: addclient: Add argument for overriding socket type
authorKim Alvefur <zash@zash.se>
Mon, 23 Dec 2013 17:55:41 +0100
changeset 6821 ae9d1289a868
parent 6820 07f43c7aa059
child 6822 ffb2b5e31456
net.server_{select,event}: addclient: Add argument for overriding socket type
net/server_event.lua
net/server_select.lua
--- a/net/server_event.lua	Wed Dec 18 18:11:17 2013 -0500
+++ b/net/server_event.lua	Mon Dec 23 17:55:41 2013 +0100
@@ -742,12 +742,19 @@
 		--function handleclient( client, ip, port, server, pattern, listener, _, sslctx )  -- creates an client interface
 	end
 
-	function addclient( addr, serverport, listener, pattern, sslctx )
+	function addclient( addr, serverport, listener, pattern, sslctx, typ )
 		if sslctx and not has_luasec then
 			debug "need luasec, but not available"
 			return nil, "luasec not found"
 		end
-		local client, err = socket.tcp()  -- creating new socket
+		if not typ then
+			typ = "tcp"
+		end
+		local create = socket[typ]
+		if type( create ) ~= "function"  then
+			return nil, "invalid socket type"
+		end
+		local client, err = create()  -- creating new socket
 		if not client then
 			debug( "cannot create socket:", err )
 			return nil, err
--- a/net/server_select.lua	Wed Dec 18 18:11:17 2013 -0500
+++ b/net/server_select.lua	Mon Dec 23 17:55:41 2013 +0100
@@ -942,7 +942,7 @@
 	return handler, socket
 end
 
-local addclient = function( address, port, listeners, pattern, sslctx )
+local addclient = function( address, port, listeners, pattern, sslctx, typ )
 	local err
 	if type( listeners ) ~= "table" then
 		err = "invalid listener table"
@@ -953,12 +953,19 @@
 	elseif sslctx and not has_luasec then
 		err = "luasec not found"
 	end
+	if not typ then
+		typ = "tcp"
+	end
+	local create = luasocket[typ]
+	if type( create ) ~= "function"  then
+		err = "invalid socket type"
+	end
 	if err then
 		out_error( "server.lua, addclient: ", err )
 		return nil, err
 	end
 
-	local client, err = luasocket.tcp( )
+	local client, err = create( )
 	if err then
 		return nil, err
 	end