]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Bug 24989: Count client hsdir gets towards MaxClientCircuitsPending.
authorMike Perry <mikeperry-git@torproject.org>
Wed, 24 Jan 2018 00:03:24 +0000 (00:03 +0000)
committerNick Mathewson <nickm@torproject.org>
Wed, 11 Apr 2018 14:47:06 +0000 (10:47 -0400)
We removed this by breaking them out from general in #13837.

changes/bug24989 [new file with mode: 0644]
src/or/circuituse.c
src/or/or.h

diff --git a/changes/bug24989 b/changes/bug24989
new file mode 100644 (file)
index 0000000..a0ea6ac
--- /dev/null
@@ -0,0 +1,4 @@
+  o Minor bugfixes (hidden services):
+    - Re-instate counting pending client HSDir fetch circuits against the
+      MaxClientCircuitsPending rate limit. Fixes bug 24989; bugfix on
+      0.3.3.0-alpha-dev.
index bc9c4bccbddd5817e68e0bf83951eb783e2bd8fd..3125fff6508858171a5c35d62d1b1ecc80cb3eb1 100644 (file)
@@ -384,7 +384,7 @@ count_pending_general_client_circuits(void)
   SMARTLIST_FOREACH_BEGIN(circuit_get_global_list(), circuit_t *, circ) {
     if (circ->marked_for_close ||
         circ->state == CIRCUIT_STATE_OPEN ||
-        circ->purpose != CIRCUIT_PURPOSE_C_GENERAL ||
+        !CIRCUIT_PURPOSE_COUNTS_TOWARDS_MAXPENDING(circ->purpose) ||
         !CIRCUIT_IS_ORIGIN(circ))
       continue;
 
index 2397f665110f36e06e1f3db758e4158c977711e9..e54d3806efcba8b232365f9e3468befb5e3c0e41 100644 (file)
@@ -586,6 +586,14 @@ typedef enum {
 /** True iff the circuit_t c is actually an or_circuit_t */
 #define CIRCUIT_IS_ORCIRC(c) (((circuit_t *)(c))->magic == OR_CIRCUIT_MAGIC)
 
+/** True iff this circuit purpose should count towards the global
+ * pending rate limit (set by MaxClientCircuitsPending). We count all
+ * general purpose circuits, as well as the first step of client onion
+ * service connections (HSDir gets). */
+#define CIRCUIT_PURPOSE_COUNTS_TOWARDS_MAXPENDING(p) \
+    ((p) == CIRCUIT_PURPOSE_C_GENERAL || \
+     (p) == CIRCUIT_PURPOSE_C_HSDIR_GET)
+
 /** How many circuits do we want simultaneously in-progress to handle
  * a given stream? */
 #define MIN_CIRCUITS_HANDLING_STREAM 2