]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Do not cannibalize a circuit that has run out of RELAY_EARLY cells. Partial bug...
authorNick Mathewson <nickm@torproject.org>
Mon, 29 Dec 2008 19:55:13 +0000 (19:55 +0000)
committerNick Mathewson <nickm@torproject.org>
Mon, 29 Dec 2008 19:55:13 +0000 (19:55 +0000)
svn:r17814

ChangeLog
src/or/circuitlist.c

index 94ae9b98784e0f974c61dd3378fca58c3f047ec3..c4f5fe378720e52fa7d5f67dc43984e7c119012d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -14,6 +14,10 @@ Changes in version 0.2.1.10-alpha - 2009-01-??
   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 @@ Changes in version 0.2.1.3-alpha - 2008-08-03
       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
index 4e5d603e1edd7b5cd0709c633d4f034fdfbfeae2..c807aaa4572b3c1187a247148d0b5976352d9c4d 100644 (file)
@@ -896,7 +896,8 @@ circuit_find_to_cannibalize(uint8_t purpose, extend_info_t *info,
       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;