mirror of
https://github.com/lunarmodules/luasocket.git
synced 2024-12-26 04:28:20 +01:00
Remove global PORT. Fix https redirect.
This commit is contained in:
parent
944305dc21
commit
5b4b915879
@ -112,12 +112,15 @@ the HTTP module:
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li> <tt>PORT</tt>: default port used for connections;
|
|
||||||
<li> <tt>PROXY</tt>: default proxy used for connections;
|
<li> <tt>PROXY</tt>: default proxy used for connections;
|
||||||
<li> <tt>TIMEOUT</tt>: sets the timeout for all I/O operations;
|
<li> <tt>TIMEOUT</tt>: sets the timeout for all I/O operations;
|
||||||
<li> <tt>USERAGENT</tt>: default user agent reported to server.
|
<li> <tt>USERAGENT</tt>: default user agent reported to server.
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
<p class=note id="post">
|
||||||
|
Note: These constants are global. Changing them will also
|
||||||
|
change the behavior other code that might be using LuaSocket.
|
||||||
|
</p>
|
||||||
|
|
||||||
<!-- http.request ++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
|
<!-- http.request ++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
|
||||||
|
|
||||||
|
28
src/http.lua
28
src/http.lua
@ -23,11 +23,14 @@ local _M = socket.http
|
|||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
-- connection timeout in seconds
|
-- connection timeout in seconds
|
||||||
_M.TIMEOUT = 60
|
_M.TIMEOUT = 60
|
||||||
-- default port for document retrieval
|
|
||||||
_M.PORT = 80
|
|
||||||
-- user agent field sent in request
|
-- user agent field sent in request
|
||||||
_M.USERAGENT = socket._VERSION
|
_M.USERAGENT = socket._VERSION
|
||||||
|
|
||||||
|
-- supported schemes
|
||||||
|
local SCHEMES = { ["http"] = true }
|
||||||
|
-- default port for document retrieval
|
||||||
|
local PORT = 80
|
||||||
|
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
-- Reads MIME headers from a connection, unfolding where needed
|
-- Reads MIME headers from a connection, unfolding where needed
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
@ -114,7 +117,7 @@ function _M.open(host, port, create)
|
|||||||
h.try = socket.newtry(function() h:close() end)
|
h.try = socket.newtry(function() h:close() end)
|
||||||
-- set timeout before connecting
|
-- set timeout before connecting
|
||||||
h.try(c:settimeout(_M.TIMEOUT))
|
h.try(c:settimeout(_M.TIMEOUT))
|
||||||
h.try(c:connect(host, port or _M.PORT))
|
h.try(c:connect(host, port or PORT))
|
||||||
-- here everything worked
|
-- here everything worked
|
||||||
return h
|
return h
|
||||||
end
|
end
|
||||||
@ -240,7 +243,7 @@ end
|
|||||||
-- default url parts
|
-- default url parts
|
||||||
local default = {
|
local default = {
|
||||||
host = "",
|
host = "",
|
||||||
port = _M.PORT,
|
port = PORT,
|
||||||
path ="/",
|
path ="/",
|
||||||
scheme = "http"
|
scheme = "http"
|
||||||
}
|
}
|
||||||
@ -250,9 +253,10 @@ local function adjustrequest(reqt)
|
|||||||
local nreqt = reqt.url and url.parse(reqt.url, default) or {}
|
local nreqt = reqt.url and url.parse(reqt.url, default) or {}
|
||||||
-- explicit components override url
|
-- explicit components override url
|
||||||
for i,v in base.pairs(reqt) do nreqt[i] = v end
|
for i,v in base.pairs(reqt) do nreqt[i] = v end
|
||||||
if nreqt.port == "" then nreqt.port = 80 end
|
if nreqt.port == "" then nreqt.port = PORT end
|
||||||
socket.try(nreqt.host and nreqt.host ~= "",
|
if not (nreqt.host and nreqt.host ~= "") then
|
||||||
"invalid host '" .. base.tostring(nreqt.host) .. "'")
|
socket.try(nil, "invalid host '" .. base.tostring(nreqt.host) .. "'")
|
||||||
|
end
|
||||||
-- compute uri if user hasn't overriden
|
-- compute uri if user hasn't overriden
|
||||||
nreqt.uri = reqt.uri or adjusturi(nreqt)
|
nreqt.uri = reqt.uri or adjusturi(nreqt)
|
||||||
-- adjust headers in request
|
-- adjust headers in request
|
||||||
@ -263,9 +267,13 @@ local function adjustrequest(reqt)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local function shouldredirect(reqt, code, headers)
|
local function shouldredirect(reqt, code, headers)
|
||||||
return headers.location and
|
local location = headers.location
|
||||||
string.gsub(headers.location, "%s", "") ~= "" and
|
if not location then return false end
|
||||||
(reqt.redirect ~= false) and
|
location = string.gsub(location, "%s", "")
|
||||||
|
if location == "" then return false end
|
||||||
|
local scheme = string.match(location, "^([%w][%w%+%-%.]*)%:")
|
||||||
|
if scheme and not SCHEMES[scheme] then return false end
|
||||||
|
return (reqt.redirect ~= false) and
|
||||||
(code == 301 or code == 302 or code == 303 or code == 307) and
|
(code == 301 or code == 302 or code == 303 or code == 307) and
|
||||||
(not reqt.method or reqt.method == "GET" or reqt.method == "HEAD")
|
(not reqt.method or reqt.method == "GET" or reqt.method == "HEAD")
|
||||||
and (not reqt.nredirects or reqt.nredirects < 5)
|
and (not reqt.nredirects or reqt.nredirects < 5)
|
||||||
|
Loading…
Reference in New Issue
Block a user