+ 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