qicosmos / cinatra

modern c++(c++20), cross-platform, header-only, easy to use http framework

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

http_client的chunked传输的一点bug

FlushHip opened this issue · comments

read_buf_.consume(length + CRCF.size());
read_chunk_head(keep_alive);
} else {
callback({}, 200, chunked_result_);
clear_chunk_buffer();
do_read();

else下面应该加上read_buf_.consume(CRCF.size())。消耗掉crlf,不然如果两个请求共用一个连接会出现协议解析错误。

稍后提一个pr修复下。

还有一处重复代码:

if (size > 0) {
char buffer[20];
auto p = i64toa_jeaiii(size, buffer);
add_header("cinatra_start_pos", std::string(buffer, p - buffer));
} else {
int64_t file_size = fs::file_size(dest_file, code);
if (!code && file_size > 0) {
char buffer[20];
auto p = i64toa_jeaiii(file_size, buffer);
add_header("cinatra_start_pos", std::string(buffer, p - buffer));
}
}

if (size > 0) {
char buffer[20];
auto p = i64toa_jeaiii(size, buffer);
add_header("cinatra_start_pos", std::string(buffer, p - buffer));
} else {
int64_t file_size = fs::file_size(dest_file, code);
if (!code && file_size > 0) {
char buffer[20];
auto p = i64toa_jeaiii(file_size, buffer);
add_header("cinatra_start_pos", std::string(buffer, p - buffer));
}
}