aboutsummaryrefslogtreecommitdiff
path: root/changes
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2010-09-13 17:04:13 -0400
committerNick Mathewson <nickm@torproject.org>2010-09-13 18:59:50 -0400
commit424ca963ad7b08822b82491fbeba05438ddf5da2 (patch)
tree13872e0c322fa630cd6f6662edaad9d665ac6bf6 /changes
parentb582eb32b820e53dcd8ac9db58f6000b88cf2e4e (diff)
downloadtor-424ca963ad7b08822b82491fbeba05438ddf5da2.tar.gz
tor-424ca963ad7b08822b82491fbeba05438ddf5da2.zip
Make circuit_resume_edge_reading_helper treat streams more fairly.
Previously[*], the function would start with the first stream on the circuit, and let it package as many cells as it wanted before proceeding to the next stream in turn. If a circuit had many live streams that all wanted to package data, the oldest would get preference, and the newest would get ignored. Now, we figure out how many cells we're willing to send per stream, and try to allocate them fairly. Roger diagnosed this in the comments for bug 1298. [*] This bug has existed since before the first-ever public release of Tor. It was added by r152 of Tor on 26 Jan 2003, which was the first commit to implement streams (then called "topics"). This is not the oldest bug to be fixed in 0.2.2.x: that honor goes to the windowing bug in r54, which got fixed in e50b7768 by Roger with diagnosis by Karsten. This is, however, the most long-lived bug to be fixed in 0.2.2.x: the r54 bug was fixed 2580 days after it was introduced, whereas I am writing this commit message 2787 days after r152.
Diffstat (limited to 'changes')
-rw-r--r--changes/bug193710
1 files changed, 10 insertions, 0 deletions
diff --git a/changes/bug1937 b/changes/bug1937
new file mode 100644
index 0000000000..b1fed6b2be
--- /dev/null
+++ b/changes/bug1937
@@ -0,0 +1,10 @@
+ o Major bugfixes
+ - When receiving a circuit-level SENDME for a blocked circuit, try
+ to package cells fairly from all the streams that had previously
+ been blocked on that circuit. Previously, we had started with
+ the oldest stream, and allowed each stream to potentially
+ exhaust the circuit's package window. This gave older streams
+ on any given circuit priority over newer ones. Fixes bug 1937.
+ Detected by Camilo Viecco. This bug was introduced before the
+ first Tor release, in svn commit r152: it is the new winner of
+ the longest-lived bug prize.