[or-cvs] r17814: {tor} Do not cannibalize a circuit that has run out of RELAY_EARLY (in tor/trunk: . src/or)
nickm at seul.org
nickm at seul.org
Mon Dec 29 19:55:13 UTC 2008
Author: nickm
Date: 2008-12-29 14:55:13 -0500 (Mon, 29 Dec 2008)
New Revision: 17814
Modified:
tor/trunk/ChangeLog
tor/trunk/src/or/circuitlist.c
Log:
Do not cannibalize a circuit that has run out of RELAY_EARLY cells. Partial bug 878 fix.
Modified: tor/trunk/ChangeLog
===================================================================
--- tor/trunk/ChangeLog 2008-12-29 17:38:11 UTC (rev 17813)
+++ tor/trunk/ChangeLog 2008-12-29 19:55:13 UTC (rev 17814)
@@ -14,6 +14,10 @@
o Minor bugfixes:
- Make get_interface_address() function work properly again; stop
guessing the wrong parts of our address as our address.
+ - Do not cannibalize a circuit if we're out of RELAY_EARLY cells to
+ send on that circuit. Otherwise we might violate the proposal-110
+ limit. Bugfix on 0.2.1.3-alpha. Partial fix for Bug 878. Diagnosis
+ thanks to Karsten.
o Code simplifications and refactoring:
- Change our header file guard macros to be less likely to conflict
@@ -635,11 +639,6 @@
reason is NO_ROUTE (that is, our network is down).
o Major features:
- - Implement most of proposal 110: The first K cells to be sent
- along a circuit are marked as special "early" cells; only K "early"
- cells will be allowed. Once this code is universal, we can block
- certain kinds of DOS attack by requiring that EXTEND commands must
- be sent using an "early" cell.
o Major bugfixes:
- Try to attach connections immediately upon receiving a RENDEZVOUS2
Modified: tor/trunk/src/or/circuitlist.c
===================================================================
--- tor/trunk/src/or/circuitlist.c 2008-12-29 17:38:11 UTC (rev 17813)
+++ tor/trunk/src/or/circuitlist.c 2008-12-29 19:55:13 UTC (rev 17814)
@@ -896,7 +896,8 @@
origin_circuit_t *circ = TO_ORIGIN_CIRCUIT(_circ);
if ((!need_uptime || circ->build_state->need_uptime) &&
(!need_capacity || circ->build_state->need_capacity) &&
- (internal == circ->build_state->is_internal)) {
+ (internal == circ->build_state->is_internal) &&
+ circ->remaining_relay_early_cells) {
if (info) {
/* need to make sure we don't duplicate hops */
crypt_path_t *hop = circ->cpath;
More information about the tor-commits
mailing list