Merge from fonosfera
This commit is contained in:
parent
4d75b51157
commit
43aca0def5
1 changed files with 30 additions and 13 deletions
|
@ -171,8 +171,10 @@ function request_to_file(uri, target, options, cbs)
|
|||
cbs = cbs or {}
|
||||
options.headers = options.headers or {}
|
||||
local hdr = options.headers
|
||||
local file, code, msg
|
||||
|
||||
local file, code, msg = prepare_fd(target)
|
||||
if target then
|
||||
file, code, msg = prepare_fd(target)
|
||||
if not file then
|
||||
return file, code, msg
|
||||
end
|
||||
|
@ -183,33 +185,48 @@ function request_to_file(uri, target, options, cbs)
|
|||
if off > 0 then
|
||||
hdr.Range = hdr.Range or ("bytes=" .. off .. "-")
|
||||
end
|
||||
end
|
||||
|
||||
local code, resp, buffer, sock = httpc.request_raw(uri, options)
|
||||
if not code then
|
||||
-- No success
|
||||
if file then
|
||||
file:close()
|
||||
end
|
||||
return code, resp, buffer
|
||||
elseif hdr.Range and code ~= 206 then
|
||||
-- We wanted a part but we got the while file
|
||||
sock:close()
|
||||
if file then
|
||||
file:close()
|
||||
end
|
||||
return nil, -4, code, resp
|
||||
elseif not hdr.Range and code ~= 200 then
|
||||
-- We encountered an error
|
||||
sock:close()
|
||||
if file then
|
||||
file:close()
|
||||
end
|
||||
return nil, -4, code, resp
|
||||
end
|
||||
|
||||
if cbs.on_header then
|
||||
local stat = {cbs.on_header(file, code, resp)}
|
||||
if stat[1] == false then
|
||||
if file then
|
||||
file:close()
|
||||
end
|
||||
sock:close()
|
||||
return unpack(stat)
|
||||
elseif stat[2] then
|
||||
file = file and stat[2]
|
||||
end
|
||||
end
|
||||
|
||||
if not file then
|
||||
return nil, -5, "no target given"
|
||||
end
|
||||
|
||||
local chunked = resp.headers["Transfer-Encoding"] == "chunked"
|
||||
local stat
|
||||
|
||||
|
|
Loading…
Reference in a new issue