Browse Source

hs: Use hs_service_max_rdv_failures consensus param, defaulting to 2

Roger Dingledine 6 years ago
parent
commit
490ae26b24
2 changed files with 15 additions and 5 deletions
  1. 6 4
      changes/bug24895
  2. 9 1
      src/or/rendservice.c

+ 6 - 4
changes/bug24895

@@ -1,6 +1,8 @@
   o Major bugfixes (onion services):
-    - Fix an "off by 2" error in counting rendezvous failures on the
-      onion service side. While we thought we would stop the rendezvous
-      attempt after one failed circuit, we were actually making three
-      circuit attempts before giving up. Fixes bug 24895; bugfix on 0.0.6.
+    - Fix an "off by 2" error in counting rendezvous failures on the onion
+      service side. While we thought we would stop the rendezvous attempt
+      after one failed circuit, we were actually making three circuit attempts
+      before giving up. Now switch to a default of 2, and allow the consensus
+      parameter "hs_service_max_rdv_failures" to override. Fixes bug 24895;
+      bugfix on 0.0.6.
 

+ 9 - 1
src/or/rendservice.c

@@ -111,13 +111,21 @@ struct rend_service_port_config_s {
 /** How many seconds should we spend trying to connect to a requested
  * rendezvous point before giving up? */
 #define MAX_REND_TIMEOUT 30
+/* Default, minimum and maximum values for the maximum rendezvous failures
+ * consensus parameter. */
+#define MAX_REND_FAILURES_DEFAULT 2
+#define MAX_REND_FAILURES_MIN 1
+#define MAX_REND_FAILURES_MAX 10
 
 /** How many times will a hidden service operator attempt to connect to
  * a requested rendezvous point before giving up? */
 static int
 get_max_rend_failures(void)
 {
-  return 1;
+  return networkstatus_get_param(NULL, "hs_service_max_rdv_failures",
+                                 MAX_REND_FAILURES_DEFAULT,
+                                 MAX_REND_FAILURES_MIN,
+                                 MAX_REND_FAILURES_MAX);
 }
 
 /* Hidden service directory file names: