From b7e4d567c748f40c828724a795f220cbfe50f2f6 Mon Sep 17 00:00:00 2001 From: levlam Date: Tue, 22 Nov 2022 15:46:53 +0300 Subject: [PATCH] HttpReader: fix keep-alive flag. --- tdnet/td/net/HttpReader.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/tdnet/td/net/HttpReader.cpp b/tdnet/td/net/HttpReader.cpp index 7cb4e8026..b86039052 100644 --- a/tdnet/td/net/HttpReader.cpp +++ b/tdnet/td/net/HttpReader.cpp @@ -555,8 +555,6 @@ void HttpReader::process_header(MutableSlice header_name, MutableSlice header_va to_lower_inplace(header_name); LOG(DEBUG) << "Process header [" << header_name << "=>" << header_value << "]"; query_->headers_.emplace_back(header_name, header_value); - // TODO: check if protocol is HTTP/1.1 - query_->keep_alive_ = true; if (header_name == "content-length") { auto content_length = to_integer(header_value); if (content_length > MAX_CONTENT_SIZE) { @@ -567,6 +565,8 @@ void HttpReader::process_header(MutableSlice header_name, MutableSlice header_va to_lower_inplace(header_value); if (header_value == "close") { query_->keep_alive_ = false; + } else { + query_->keep_alive_ = true; } } else if (header_name == "content-type") { content_type_ = header_value; @@ -706,8 +706,12 @@ Status HttpReader::parse_head(MutableSlice head) { } else if (type == "POST") { query_->type_ = HttpQuery::Type::Post; } else if (type.size() >= 4 && type.substr(0, 4) == "HTTP") { - if (type == "HTTP/1.1" || type == "HTTP/1.0") { + if (type == "HTTP/1.1") { query_->type_ = HttpQuery::Type::Response; + query_->keep_alive_ = true; + } else if (type == "HTTP/1.0") { + query_->type_ = HttpQuery::Type::Response; + query_->keep_alive_ = false; } else { LOG(INFO) << "Unsupported HTTP version: " << type; return Status::Error(505, "HTTP Version Not Supported"); @@ -748,7 +752,6 @@ Status HttpReader::parse_head(MutableSlice head) { transfer_encoding_ = Slice(); content_encoding_ = Slice(); - query_->keep_alive_ = false; query_->headers_.clear(); query_->files_.clear(); query_->content_ = MutableSlice();