mirror repository of the tor core protocol in case of issues
Go to file
Mashael AlSabah 12fa6e23cb Improve fairness when activating streams in circuit_resume_edge_reading_helper
The reason the "streams problem" occurs is due to the complicated
interaction between Tor's congestion control and libevent. At some point
during the experiment, the circuit window is exhausted, which blocks all
edge streams. When a circuit level sendme is received at Exit, it
resumes edge reading by looping over linked list of edge streams, and
calling connection_start_reading() to inform libevent to resume reading.
When the streams are activated again, Tor gets the chance to service the
first three streams activated before the circuit window is exhausted
again, which causes all streams to be blocked again. As an experiment,
we reversed the order in which the streams are activated, and indeed the
first three streams, rather than the last three, got service, while the
others starved.

 Our solution is to change the order in which streams are activated. We
choose a random edge connection from the linked list, and then we
activate streams starting from that chosen stream. When we reach the end
of the list, then we continue from the head of the list until our chosen
stream (treating the linked list as a circular linked list). It would
probably be better to actually remember which streams have received
service recently, but this way is simple and effective.
2010-11-29 15:34:21 -05:00
changes Merge branch 'exitstats' into maint-0.2.2 2010-11-29 15:28:22 -05:00
contrib bump to 0.2.2.19-alpha 2010-11-21 18:00:12 -05:00
doc Make the coducmentation for SingleHop stuff slightly more dire 2010-11-15 14:09:32 -05:00
src Improve fairness when activating streams in circuit_resume_edge_reading_helper 2010-11-29 15:34:21 -05:00
.gitignore Remove everything related to os x expert package 2010-11-10 04:04:29 +01:00
acinclude.m4 Fix warnings with new versions of autoconf 2010-10-11 12:36:02 +02:00
autogen.sh r14641@catbus: nickm | 2007-08-17 17:53:14 -0400 2007-08-17 21:55:24 +00:00
ChangeLog pick a more accurate release date 2010-11-22 22:44:20 -05:00
configure.in bump to 0.2.2.19-alpha 2010-11-21 18:00:12 -05:00
Doxyfile.in Remove all svn metadata minus what I missed. 2009-05-05 17:05:46 +02:00
INSTALL we changed autogen.sh's behavior, so update the INSTALL file 2008-01-23 19:08:53 +00:00
LICENSE move to maxmind geoip db 2010-05-06 07:15:22 -04:00
Makefile.am Remove everything related to os x expert package 2010-11-10 04:04:29 +01:00
README we have two faqs for now 2010-02-22 00:41:48 -05:00
ReleaseNotes release notes entry for 0.2.1.26 2010-05-05 03:19:41 -04:00
tor.spec.in Update rpm spec file so that it will build without manual intervention on all rpm-based distributions 2010-09-30 21:48:29 -04:00

Tor protects your privacy on the internet by hiding the connection
between your Internet address and the services you use. We believe Tor
is reasonably secure, but please ensure you read the instructions and
configure it properly.

To build Tor from source:
        ./configure && make && make install

Home page:
        https://www.torproject.org/

Download new versions:
        https://www.torproject.org/download.html

Documentation, including links to installation and setup instructions:
        https://www.torproject.org/documentation.html

Making applications work with Tor:
        https://wiki.torproject.org/noreply/TheOnionRouter/TorifyHOWTO

Frequently Asked Questions:
        https://www.torproject.org/faq.html
        https://wiki.torproject.org/noreply/TheOnionRouter/TorFAQ