From 018fe7d11e148538f29418c5e2ff91ff314c3a11 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Fri, 8 Feb 2013 16:31:46 -0500 Subject: Improve comment about our random stream choice algorithm --- src/or/relay.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/or/relay.c b/src/or/relay.c index cbb2aca10d..3da426e6bb 100644 --- a/src/or/relay.c +++ b/src/or/relay.c @@ -1795,9 +1795,17 @@ circuit_resume_edge_reading_helper(edge_connection_t *first_conn, num_streams++; if (tor_weak_random_one_in_n(&stream_choice_rng, num_streams)) { chosen_stream = conn; - /* Invariant: chosen_stream has been chosen uniformly at random from - * among the first num_streams streams on first_conn. */ } + /* Invariant: chosen_stream has been chosen uniformly at random from + * among the first num_streams streams on first_conn. + * + * (Note that we iterate over every stream on the circuit, so that after + * we've considered the first stream, we've chosen it with P=1; and + * after we consider the second stream, we've switched to it with P=1/2 + * and stayed with the first stream with P=1/2; and after we've + * considered the third stream, we've switched to it with P=1/3 and + * remained with one of the first two streams with P=(2/3), giving each + * one P=(1/2)(2/3) )=(1/3).) */ } } -- cgit v1.2.3-54-g00ecf