nghttpx: Move backend outbuf threshold to each downstream type
This commit is contained in:
parent
a37bc88f40
commit
660e1ec44d
|
@ -199,8 +199,6 @@ public:
|
|||
|
||||
// Change the priority of downstream
|
||||
int change_priority(int32_t pri);
|
||||
|
||||
static const size_t OUTPUT_UPPER_THRES = 64*1024;
|
||||
private:
|
||||
Headers request_headers_;
|
||||
Headers response_headers_;
|
||||
|
|
|
@ -522,8 +522,8 @@ StreamData* Http2DownstreamConnection::detach_stream_data()
|
|||
bool Http2DownstreamConnection::get_output_buffer_full()
|
||||
{
|
||||
if(request_body_buf_) {
|
||||
return
|
||||
evbuffer_get_length(request_body_buf_) >= Downstream::OUTPUT_UPPER_THRES;
|
||||
return http2session_->get_outbuf_length() +
|
||||
evbuffer_get_length(request_body_buf_) >= Http2Session::OUTBUF_MAX_THRES;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -697,7 +697,7 @@ ssize_t send_callback(nghttp2_session *session,
|
|||
auto bev = http2session->get_bev();
|
||||
auto output = bufferevent_get_output(bev);
|
||||
// Check buffer length and return WOULDBLOCK if it is large enough.
|
||||
if(evbuffer_get_length(output) > Downstream::OUTPUT_UPPER_THRES) {
|
||||
if(evbuffer_get_length(output) > Http2Session::OUTBUF_MAX_THRES) {
|
||||
return NGHTTP2_ERR_WOULDBLOCK;
|
||||
}
|
||||
|
||||
|
@ -1369,4 +1369,13 @@ int Http2Session::terminate_session(nghttp2_error_code error_code)
|
|||
return 0;
|
||||
}
|
||||
|
||||
size_t Http2Session::get_outbuf_length() const
|
||||
{
|
||||
if(bev_) {
|
||||
return evbuffer_get_length(bufferevent_get_output(bev_));
|
||||
} else {
|
||||
return OUTBUF_MAX_THRES;
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace shrpx
|
||||
|
|
|
@ -104,6 +104,8 @@ public:
|
|||
int start_settings_timer();
|
||||
void stop_settings_timer();
|
||||
|
||||
size_t get_outbuf_length() const;
|
||||
|
||||
enum {
|
||||
// Disconnected
|
||||
DISCONNECTED,
|
||||
|
@ -118,6 +120,8 @@ public:
|
|||
// Connected to downstream
|
||||
CONNECTED
|
||||
};
|
||||
|
||||
static const size_t OUTBUF_MAX_THRES = 64*1024;
|
||||
private:
|
||||
std::set<Http2DownstreamConnection*> dconns_;
|
||||
std::set<StreamData*> streams_;
|
||||
|
|
|
@ -37,6 +37,10 @@ using namespace nghttp2;
|
|||
|
||||
namespace shrpx {
|
||||
|
||||
namespace {
|
||||
const size_t OUTBUF_MAX_THRES = 64*1024;
|
||||
} // namespace
|
||||
|
||||
// Workaround for the inability for Bufferevent to remove timeout from
|
||||
// bufferevent. Specify this long timeout instead of removing.
|
||||
namespace {
|
||||
|
@ -371,7 +375,7 @@ void HttpDownstreamConnection::force_resume_read()
|
|||
bool HttpDownstreamConnection::get_output_buffer_full()
|
||||
{
|
||||
auto output = bufferevent_get_output(bev_);
|
||||
return evbuffer_get_length(output) >= Downstream::OUTPUT_UPPER_THRES;
|
||||
return evbuffer_get_length(output) >= OUTBUF_MAX_THRES;
|
||||
}
|
||||
|
||||
namespace {
|
||||
|
|
Loading…
Reference in New Issue