Design Issue: Max Concurrent Streams Limit and Unidirectional Streams

https://github.com/http2/http2-spec/issues/78

In the current draft (-02), we state that:

A. Any endpoint can initiate and half-close a fully unidirectional
stream that does not require any action or acknowledgement from the
receiving peer. Once half-closed, these remain in a constant
half-closed state with the receiving peer having the option of sending
frames for that stream at any time for the full duration of the
session.

B. An endpoint MUST NOT exceed the maximum concurrent streams limit
set by it's peer and that streams initiated by the endpoint that are
half-closed in any direction count towards this limit.

C. Unless I missed it somewhere, clients are never required to
half-close PUSH_PROMISE streams.

The potential problem here is simple:

If a client sets a limit of 4 concurrent streams, and the server
initiates 4 separate PUSH_PROMISE streams that the server half-closes
but that are never half-closed by the client, the server will not be
able to initiate new push streams for the duration of the session.

Received on Thursday, 25 April 2013 17:51:34 UTC