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
commitf2d9638627e4a4f03953ee30c2166c81e778b9c6 (patch)
treeaab061d1c4968d87d7750fb0cfb3750445c52c2b /net
parentnet.resolvers.basic: Suffix IPv4 TCP socket types with '4' to match eg 'tcp6' (diff)
downloadprosody-f2d9638627e4a4f03953ee30c2166c81e778b9c6.tar.xz
prosody-f2d9638627e4a4f03953ee30c2166c81e778b9c6.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 7a9bd7a37..75a8883c7 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);