http2: send out pending data earlier

If there’s a lot of data waiting on a given stream, send
it out early, if possible. This helps trigger the backpressure
mechanism introduced in 8a4a1931b8b98 at a better time.

PR-URL: https://github.com/nodejs/node/pull/29398
Reviewed-By: David Carlier <devnexen@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
Anna Henningsen 2019-09-02 01:36:03 +02:00 committed by Rich Trott
parent 7b350bb3d4
commit 1cde519287

View File

@ -1188,7 +1188,10 @@ int Http2Session::OnDataChunkReceived(nghttp2_session* handle,
stream->inbound_consumed_data_while_paused_ += avail;
// If we have a gathered a lot of data for output, try sending it now.
if (session->outgoing_length_ > 4096) session->SendPendingData();
if (session->outgoing_length_ > 4096 ||
stream->available_outbound_length_ > 4096) {
session->SendPendingData();
}
} while (len != 0);
// If we are currently waiting for a write operation to finish, we should