From 490ae26b24a6b2b8843515425cedabf99801163a Mon Sep 17 00:00:00 2001 From: Roger Dingledine Date: Fri, 19 Jan 2018 03:00:43 -0500 Subject: [PATCH] hs: Use hs_service_max_rdv_failures consensus param, defaulting to 2 --- changes/bug24895 | 10 ++++++---- src/or/rendservice.c | 10 +++++++++- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/changes/bug24895 b/changes/bug24895 index 7b90f6d260..7edde94a0b 100644 --- a/changes/bug24895 +++ b/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. diff --git a/src/or/rendservice.c b/src/or/rendservice.c index b503eda7ff..da200d1381 100644 --- a/src/or/rendservice.c +++ b/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: