nghttpx: Take into account request URI in header size in https frontend
This commit is contained in:
parent
ea8a566d98
commit
9dc5259593
|
@ -1211,4 +1211,8 @@ void Downstream::detach_blocked_link(BlockedLink *l) {
|
|||
blocked_link_ = nullptr;
|
||||
}
|
||||
|
||||
void Downstream::add_request_headers_sum(size_t amount) {
|
||||
request_headers_sum_ += amount;
|
||||
}
|
||||
|
||||
} // namespace shrpx
|
||||
|
|
|
@ -143,6 +143,7 @@ public:
|
|||
void set_request_method(std::string method);
|
||||
const std::string &get_request_method() const;
|
||||
void set_request_path(std::string path);
|
||||
void add_request_headers_sum(size_t amount);
|
||||
void
|
||||
set_request_start_time(std::chrono::high_resolution_clock::time_point time);
|
||||
const std::chrono::high_resolution_clock::time_point &
|
||||
|
|
|
@ -78,6 +78,17 @@ namespace {
|
|||
int htp_uricb(http_parser *htp, const char *data, size_t len) {
|
||||
auto upstream = static_cast<HttpsUpstream *>(htp->data);
|
||||
auto downstream = upstream->get_downstream();
|
||||
if (downstream->get_request_headers_sum() + len >
|
||||
get_config()->header_field_buffer) {
|
||||
if (LOG_ENABLED(INFO)) {
|
||||
ULOG(INFO, upstream) << "Too large URI size="
|
||||
<< downstream->get_request_headers_sum() + len;
|
||||
}
|
||||
assert(downstream->get_request_state() == Downstream::INITIAL);
|
||||
downstream->set_request_state(Downstream::HTTP1_REQUEST_HEADER_TOO_LARGE);
|
||||
return -1;
|
||||
}
|
||||
downstream->add_request_headers_sum(len);
|
||||
downstream->append_request_path(data, len);
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue