On 07/08/2015 02:22 AM, Rafael Schloming wrote:
a value of zero is actually what
signals that the receiver needs to take some action here, and arguably an
initial value of zero is correct since it is signaling that the receiver
needs to take action (in this case issue credit).
My interpretation is that if 0 is sent as the initial value, the sender
cannot legally send any transfers without first expanding the window by
sending a flow with a non-zero value.
Further I think the sender should not take the lack of credit as grounds
to set a window of 0. The receiver knows it has not issued credit. (At
the link level, the sender can also indicate that it has messages
awaiting link credit).
In the case where the sender's implementation involves a fixed amount of
buffer space and requires messages to be settled before it can send
more, the receiver would not be able to know that without getting some
signal. So to my mind that is the only case for which it would make
sense to send an outgoing window of 0. (I'm not sure how useful this is
in practice and I don't believe it applies to proton at present anyway).
I think as it stands proton is violating the spec, and should be changed
to send a non-zero outgoing window.