On Mon, 05 Nov 2012 02:01:21 +0000, Roger Dingledine wrote:
On Mon, Nov 05, 2012 at 06:57:48AM +0100, Andreas Krey wrote:
With no per-stream window a single stalled stream would block the circuit forever.
Wait, what?
Can you define 'stalled' here?
'Receiver of the stream does not read anymore, for whatever reason.'
...
With no per-stream window, the circuit will round-robin between the streams that want to send a cell, just as it does now.
But where does the data go when the end (socks client or the server the exit node is talking to) isn't accepting any more (and tor can't write to the TCP socket)?
The sending side is pushing stream data into the circuit, and the receiving side (tor process) must either collect it locally (thereby growing the memory footprint), or not allow new circuit window, thereby affecting the other streams on the circuit.
Or did I miss another per-stream feedback/flow control mechanism?
Andreas