aboutsummaryrefslogtreecommitdiffstats
path: root/net/server_event.lua
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2013-12-23 17:57:53 +0100
committerKim Alvefur <zash@zash.se>2013-12-23 17:57:53 +0100
commitd5879e21874bb44b65f58cb21dfd7d5d4dc817b7 (patch)
tree3d7304efa0bb54dab83cad5bf127e08fa61219c2 /net/server_event.lua
parent58bb5f01fdc000bb77fb9e65d2b9eb51ad0d9a28 (diff)
downloadprosody-d5879e21874bb44b65f58cb21dfd7d5d4dc817b7.tar.gz
prosody-d5879e21874bb44b65f58cb21dfd7d5d4dc817b7.zip
net.server_{select,event}: addclient: Use getaddrinfo to detect IP address type if no socket type argument given. (Argument must be given for non-TCP)
Diffstat (limited to 'net/server_event.lua')
-rw-r--r--net/server_event.lua9
1 files changed, 8 insertions, 1 deletions
diff --git a/net/server_event.lua b/net/server_event.lua
index bc67d175..6c8a7632 100644
--- a/net/server_event.lua
+++ b/net/server_event.lua
@@ -46,6 +46,7 @@ local t_concat = table.concat
local has_luasec, ssl = pcall ( require , "ssl" )
local socket = use "socket" or require "socket"
+local getaddrinfo = socket.dns.getaddrinfo
local log = require ("util.logger").init("socket")
@@ -748,7 +749,13 @@ do
return nil, "luasec not found"
end
if not typ then
- typ = "tcp"
+ local addrinfo, err = getaddrinfo(addr)
+ if not addrinfo then return nil, err end
+ if addrinfo[1] and addrinfo[1].family == "inet6" then
+ typ = "tcp6"
+ else
+ typ = "tcp"
+ end
end
local create = socket[typ]
if type( create ) ~= "function" then