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;
|
blocked_link_ = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Downstream::add_request_headers_sum(size_t amount) {
|
||||||
|
request_headers_sum_ += amount;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace shrpx
|
} // namespace shrpx
|
||||||
|
|
|
@ -143,6 +143,7 @@ public:
|
||||||
void set_request_method(std::string method);
|
void set_request_method(std::string method);
|
||||||
const std::string &get_request_method() const;
|
const std::string &get_request_method() const;
|
||||||
void set_request_path(std::string path);
|
void set_request_path(std::string path);
|
||||||
|
void add_request_headers_sum(size_t amount);
|
||||||
void
|
void
|
||||||
set_request_start_time(std::chrono::high_resolution_clock::time_point time);
|
set_request_start_time(std::chrono::high_resolution_clock::time_point time);
|
||||||
const std::chrono::high_resolution_clock::time_point &
|
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) {
|
int htp_uricb(http_parser *htp, const char *data, size_t len) {
|
||||||
auto upstream = static_cast<HttpsUpstream *>(htp->data);
|
auto upstream = static_cast<HttpsUpstream *>(htp->data);
|
||||||
auto downstream = upstream->get_downstream();
|
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);
|
downstream->append_request_path(data, len);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue