projects
/
prosody.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge 0.10->trunk
[prosody.git]
/
net
/
server_select.lua
diff --git
a/net/server_select.lua
b/net/server_select.lua
index 1ce3c8c7a4ea3ea484ff2018a1f1a5c68c1916db..4a36617cf2f34bfaea531621b3a4f0dcfed8f339 100644
(file)
--- a/
net/server_select.lua
+++ b/
net/server_select.lua
@@
-51,6
+51,7
@@
local coroutine_yield = coroutine.yield
local has_luasec, luasec = pcall ( require , "ssl" )
local luasocket = use "socket" or require "socket"
local luasocket_gettime = luasocket.gettime
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 //--
--// extern lib methods //--
@@
-401,6
+402,7
@@
wrapconnection = function( server, listeners, socket, ip, serverport, clientport
handler.clientport = function( )
return clientport
end
handler.clientport = function( )
return clientport
end
+ handler.port = handler.clientport -- COMPAT server_event
local write = function( self, data )
bufferlen = bufferlen + #data
if bufferlen > maxsendlen then
local write = function( self, data )
bufferlen = bufferlen + #data
if bufferlen > maxsendlen then
@@
-941,13
+943,18
@@
local addclient = function( address, port, listeners, pattern, sslctx, typ )
elseif sslctx and not has_luasec then
err = "luasec not found"
end
elseif sslctx and not has_luasec then
err = "luasec not found"
end
- if not typ then
- typ = "tcp"
+ if getaddrinfo and not typ then
+ local addrinfo, err = getaddrinfo(address)
+ if not addrinfo then return nil, err end
+ if addrinfo[1] and addrinfo[1].family == "inet6" then
+ typ = "tcp6"
+ end
end
end
- local create = luasocket[typ]
+ local create = luasocket[typ
or "tcp"
]
if type( create ) ~= "function" then
err = "invalid socket type"
end
if type( create ) ~= "function" then
err = "invalid socket type"
end
+
if err then
out_error( "server.lua, addclient: ", err )
return nil, err
if err then
out_error( "server.lua, addclient: ", err )
return nil, err