net/server_select.lua
changeset 5966 958ad646c0f2
parent 5965 99d55f12a26f
child 5967 3b7206981317
--- a/net/server_select.lua	Mon Dec 23 17:55:41 2013 +0100
+++ b/net/server_select.lua	Mon Dec 23 17:57:53 2013 +0100
@@ -51,6 +51,7 @@
 local has_luasec, luasec = pcall ( require , "ssl" )
 local luasocket = use "socket" or require "socket"
 local luasocket_gettime = luasocket.gettime
+local getaddrinfo = luasocket.dns.getaddrinfo
 
 --// extern lib methods //--
 
@@ -942,12 +943,19 @@
 		err = "luasec not found"
 	end
 	if not typ then
-		typ = "tcp"
+		local addrinfo, err = getaddrinfo(address)
+		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 = luasocket[typ]
 	if type( create ) ~= "function"  then
 		err = "invalid socket type"
 	end
+
 	if err then
 		out_error( "server.lua, addclient: ", err )
 		return nil, err