Take into account that pending_local_max_concurrent_stream could be too large
pending_local_max_concurrent_stream is, once local settings applied, becomes NGHTTP2_INITIAL_MAX_CONCURRENT_STREAMS, which is very large number. When adjusting number of streams, we have to take min of local effective SETTINGS_MAX_CONCURRENT_STREAMS and pending one.
This commit is contained in:
parent
2778e4aafc
commit
1ac028e166
|
@ -889,15 +889,22 @@ void nghttp2_session_keep_closed_stream(nghttp2_session *session,
|
||||||
void nghttp2_session_adjust_closed_stream(nghttp2_session *session,
|
void nghttp2_session_adjust_closed_stream(nghttp2_session *session,
|
||||||
ssize_t offset)
|
ssize_t offset)
|
||||||
{
|
{
|
||||||
|
size_t num_stream_max;
|
||||||
|
|
||||||
|
num_stream_max =
|
||||||
|
nghttp2_min
|
||||||
|
(session->local_settings[NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS],
|
||||||
|
session->pending_local_max_concurrent_stream);
|
||||||
|
|
||||||
DEBUGF(fprintf(stderr, "stream: adjusting kept closed streams "
|
DEBUGF(fprintf(stderr, "stream: adjusting kept closed streams "
|
||||||
"num_closed_streams=%zu, num_incoming_streams=%zu, "
|
"num_closed_streams=%zu, num_incoming_streams=%zu, "
|
||||||
"max_concurrent_streams=%u\n",
|
"max_concurrent_streams=%u\n",
|
||||||
session->num_closed_streams, session->num_incoming_streams,
|
session->num_closed_streams, session->num_incoming_streams,
|
||||||
session->pending_local_max_concurrent_stream));
|
num_stream_max));
|
||||||
|
|
||||||
while(session->num_closed_streams > 0 &&
|
while(session->num_closed_streams > 0 &&
|
||||||
session->num_closed_streams + session->num_incoming_streams + offset
|
session->num_closed_streams + session->num_incoming_streams + offset
|
||||||
> session->pending_local_max_concurrent_stream) {
|
> num_stream_max) {
|
||||||
nghttp2_stream *head_stream;
|
nghttp2_stream *head_stream;
|
||||||
|
|
||||||
head_stream = session->closed_stream_head;
|
head_stream = session->closed_stream_head;
|
||||||
|
|
Loading…
Reference in New Issue