util.httpstream: Added support for chunked transfer encoding.

vault/0.11
Waqas Hussain 16 years ago
parent 8e491a46d7
commit c5bcc70db6
  1. 13
      util/httpstream.lua

@ -80,7 +80,18 @@ local function parser(success_cb, parser_type, options_cb)
local body;
if have_body then
local len = tonumber(headers["content-length"]);
if len then -- TODO check for invalid len
if headers["transfer-encoding"] == "chunked" then
body = "";
while true do
local chunk_size = readline():match("^%x+");
if not chunk_size then coroutine.yield("invalid-chunk-size"); end
chunk_size = tonumber(chunk_size, 16)
if chunk_size == 0 then break; end
body = body..readlength(chunk_size);
if readline() ~= "" then coroutine.yield("invalid-chunk-ending"); end
end
local trailers = readheaders();
elseif len then -- TODO check for invalid len
body = readlength(len);
else -- read to end
repeat

Loading…
Cancel
Save