QPID-2703 revealed that the CPP Broker can be made to extend the window size beyond that requested by the client's message.flow command. To reproduce the problem, the client must perform the following steps:
1) Receive messages
2) Perform message stop
3) Perform message flow
4) Complete messages received by step 1)
5) Observe the window is the sum of that requested by step 3 + the recredit of messages from 1)
The window handling behaviour of the CPP Broker was the reason that
QPID-2703 was not apparent against the CPP Broker but was against the Java Broker which does not expand the window in this way.
The attached Python test demonstrates the issue by receiving more uncompleted message commands than the window should allow. Obviously it can be argued that the python test does not have the expected order of commands, but there is nothing stopping a client from performing such a sequence (e.g. the Qpid Java Client) so the broker should enforce the requested window size regardless.