- From: 陈智昌 <willchan@chromium.org>
- Date: Tue, 1 Jul 2014 11:48:31 -0700
- To: Martin Thomson <martin.thomson@gmail.com>
- Cc: Jesse Wilson <jesse@swank.ca>, HTTP Working Group <ietf-http-wg@w3.org>
Received on Tuesday, 1 July 2014 18:48:58 UTC
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