in net/http/body.cpp [210:228]
virtual ssize_t read(void *buf, size_t count) override {
ssize_t ret = 0;
while (count > 0 && !m_finish) {
ret += read_from_line_buf(buf, count);
//read remain from stream
if (m_chunked_remain > 0 && count > 0) {
auto r = read_from_stream(buf, count);
if (r < 0) return r;
ret += r;
if (m_chunked_remain > 0 && r == 0) break;
}
// get new chunk header
if (m_chunked_remain == 0) {
auto r = get_new_chunk();
if (r < 0) return r;
}
}
return ret;
}