Modify http.lua to do a host lookup first, to determine the right

address family to use (previously tcp was the default).
This commit is contained in:
Benjamin Podszun 2014-02-11 13:44:25 +01:00
parent 6d5e40c324
commit 4785d9e6fc

View File

@ -107,8 +107,16 @@ end
local metat = { __index = {} }
function _M.open(host, port, create)
-- create socket with user connect function, or with default
local c = socket.try((create or socket.tcp)())
-- create socket with user connect function, or do a lookup to default to
-- either tcp or tcp6 instead
if not create then
create = socket.tcp
local addrinfo, err = socket.dns.getaddrinfo(host)
if addrinfo and addrinfo[1] and addrinfo[1].family == "inet6" then
create = socket.tcp6
end
end
local c = socket.try(create())
local h = base.setmetatable({ c = c }, metat)
-- create finalized try
h.try = socket.newtry(function() h:close() end)
@ -353,4 +361,4 @@ _M.request = socket.protect(function(reqt, body)
else return trequest(reqt) end
end)
return _M
return _M