Re: HTTP/2 response completed before its request

On Tue, Jul 1, 2014 at 11:41 AM, Martin Thomson <martin.thomson@gmail.com>
wrote:

> On 1 July 2014 10:55, William Chan (陈智昌) <willchan@chromium.org> wrote:
> > This same theoretical problem happens for HTTP/1.X over TCP. If the peers
> > don't call read() to pull the TCP data into user space, the kernel's TCP
> > stack will eventually shrink the receive window to 0. Of course, the TCP
> > receive windows will generally be larger than HTTP/2's initial windows
> > (64K).
>
> The stall is half of the problem, but do you cancel the send as well?
> If the server has provided a response and closed the stream, there is
> no point in continuing to send them data.  Especially if they forget
> to send window updates.
>
> RST_STREAM seems appropriate, but what do you think is the right code?
>

I think Jesse didn't explicitly say that the response didn't complete. The
application code at the client that issued the request hasn't started
reading the response. It's not pumping both the write and reads, just the
writes. Therefore, its receive window can shrink to 0 and stall the
server's sending of the response. Both the request and responses are
stalled on flow control.

Received on Tuesday, 1 July 2014 18:48:58 UTC