local function prepare_fd(target)
-- Open fd for appending
- local file, code, msg = nixio.open(target, "r+")
- if not file and code == nixio.const.ENOENT then
- file, code, msg = nixio.open(target, "w")
- if file then
- file:flush()
- end
- end
+ local oflags = nixio.open_flags("wronly", "creat")
+ local file, code, msg = nixio.open(target, oflags)
if not file then
return file, code, msg
end
-- Acquire lock
- local stat, code, msg = file:lock("ex", "nb")
+ local stat, code, msg = file:lock("tlock")
if not stat then
return stat, code, msg
end
end
if cbs.on_header then
- cbs.on_header(file, code, resp)
+ local stat = {cbs.on_header(file, code, resp)}
+ if stat[1] == false then
+ file:close()
+ sock:close()
+ return unpack(stat)
+ end
end
local chunked = resp.headers["Transfer-Encoding"] == "chunked"