aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2018-10-12 16:26:19 +0200
committerKim Alvefur <zash@zash.se>2018-10-12 16:26:19 +0200
commitb59d36968ad515fd9571437d5e75351cd7d7a2c7 (patch)
treeaab061d1c4968d87d7750fb0cfb3750445c52c2b /net
parent8970cc5f06d303923811d6692516b09974cc4447 (diff)
downloadprosody-b59d36968ad515fd9571437d5e75351cd7d7a2c7.tar.gz
prosody-b59d36968ad515fd9571437d5e75351cd7d7a2c7.zip
net.server_epoll: Add support for the conn_type argument to addclient
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);