net/server_select.lua
changeset 6822 ffb2b5e31456
parent 6821 ae9d1289a868
child 6823 40d50c239564
child 7044 aff786e7b4ce
--- 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 //--
 
@@ -954,12 +955,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