]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
nickm wants us to prioritize tap in a currently-rare edge case
authorRoger Dingledine <arma@torproject.org>
Wed, 4 Sep 2013 23:43:46 +0000 (19:43 -0400)
committerRoger Dingledine <arma@torproject.org>
Thu, 5 Sep 2013 03:21:46 +0000 (23:21 -0400)
src/or/onion.c

index cabd05559b8b0b5a53f67938938269a6b9465cea..41fe7b6eea8e7b0f9dee20ee9594bc00b5ea56b6 100644 (file)
@@ -217,8 +217,21 @@ decide_next_handshake_type(void)
   if (!ol_entries[ONION_HANDSHAKE_TYPE_NTOR])
     return ONION_HANDSHAKE_TYPE_TAP; /* no ntors? try tap */
 
-  if (!ol_entries[ONION_HANDSHAKE_TYPE_TAP])
+  if (!ol_entries[ONION_HANDSHAKE_TYPE_TAP]) {
+
+    /* Nick wants us to prioritize new tap requests when there aren't
+     * any in the queue and we've processed k ntor cells since the last
+     * tap cell. This strategy is maybe a good idea, since it starves tap
+     * less in the case where tap is rare, or maybe a poor idea, since it
+     * makes the new tap cell unfairly jump in front of ntor cells that
+     * got here first. In any case this edge case will only become relevant
+     * once tap is rare. We should reevaluate whether we like this decision
+     * once tap gets more rare. */
+    if (ol_entries[ONION_HANDSHAKE_TYPE_NTOR])
+      ++recently_chosen_ntors;
+
     return ONION_HANDSHAKE_TYPE_NTOR; /* no taps? try ntor */
+  }
 
   /* They both have something queued. Pick ntor if we haven't done that
    * too much lately. */