net.server_{select,event}: addclient: Add argument for overriding socket type
authorKim Alvefur <zash@zash.se>
Mon, 23 Dec 2013 16:55:41 +0000 (17:55 +0100)
committerKim Alvefur <zash@zash.se>
Mon, 23 Dec 2013 16:55:41 +0000 (17:55 +0100)
net/server_event.lua
net/server_select.lua

index 7575044a8563778f4b388036d5cd2380596deca4..bc67d175da1d2eeb90082cf4badf576ef7642164 100644 (file)
@@ -742,12 +742,19 @@ do
                --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
index 71db5006bd7cc8e4fcc4f6769dbbf93e90b22e64..537ff44027249492d38b62db12d34e1618f074e9 100644 (file)
@@ -942,7 +942,7 @@ local wrapclient = function( socket, ip, serverport, listeners, pattern, sslctx
        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 @@ local addclient = function( address, port, listeners, pattern, sslctx )
        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