aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
Diffstat (limited to 'net')
-rw-r--r--net/server_epoll.lua24
1 files changed, 16 insertions, 8 deletions
diff --git a/net/server_epoll.lua b/net/server_epoll.lua
index 7a9bd7a3..75a8883c 100644
--- a/net/server_epoll.lua
+++ b/net/server_epoll.lua
@@ -625,14 +625,22 @@ local function wrapclient(conn, addr, port, listeners, read_size, tls_ctx)
end
-- New outgoing TCP connection
-local function addclient(addr, port, listeners, read_size, tls_ctx)
- local n = inet_pton(addr);
- if not n then return nil, "invalid-ip"; end
- local create
- if #n == 16 then
- create = socket.tcp6 or socket.tcp;
- else
- create = socket.tcp4 or socket.tcp;
+local function addclient(addr, port, listeners, read_size, tls_ctx, typ)
+ local create;
+ if not typ then
+ local n = inet_pton(addr);
+ if not n then return nil, "invalid-ip"; end
+ if #n == 16 then
+ typ = "tcp6";
+ else
+ typ = "tcp4";
+ end
+ end
+ if typ then
+ create = socket[typ];
+ end
+ if type(create) ~= "function" then
+ return nil, "invalid socket type";
end
local conn, err = create();
conn:settimeout(0);