[tor-commits] [tor/master] hs: Set rendezvous circuit timestamp_dirty all the time

nickm at torproject.org nickm at torproject.org
Wed Sep 6 18:22:04 UTC 2017


commit a52a32c855b2ed59cb915ad687d80f1294c6f0a3
Author: David Goulet <dgoulet at torproject.org>
Date:   Thu Aug 31 11:40:22 2017 -0400

    hs: Set rendezvous circuit timestamp_dirty all the time
    
    We used to check if it was set to 0 which is what unused circuit have but when
    the rendezvous circuit was cannibalized, the timestamp_dirty is not 0 but we
    still need to reset it so we can actually use it without having the chance of
    expiring the next second (or very soon).
    
    Fixes #23123
    
    Signed-off-by: David Goulet <dgoulet at torproject.org>
---
 src/or/hs_service.c  | 7 ++++---
 src/or/rendservice.c | 7 ++++---
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/or/hs_service.c b/src/or/hs_service.c
index 5ff118222..d004bae23 100644
--- a/src/or/hs_service.c
+++ b/src/or/hs_service.c
@@ -2590,9 +2590,10 @@ service_rendezvous_circ_has_opened(origin_circuit_t *circ)
   tor_assert(circ->hs_ident);
   tor_assert(TO_CIRCUIT(circ)->purpose == CIRCUIT_PURPOSE_S_CONNECT_REND);
 
-  /* Declare the circuit dirty to avoid reuse, and for path-bias */
-  if (!TO_CIRCUIT(circ)->timestamp_dirty)
-    TO_CIRCUIT(circ)->timestamp_dirty = time(NULL);
+  /* Declare the circuit dirty to avoid reuse, and for path-bias. We set the
+   * timestamp regardless of its content because that circuit could have been
+   * cannibalized so in any cases, we are about to use that circuit more. */
+  TO_CIRCUIT(circ)->timestamp_dirty = time(NULL);
   pathbias_count_use_attempt(circ);
 
   /* Get the corresponding service and intro point. */
diff --git a/src/or/rendservice.c b/src/or/rendservice.c
index c17d77f97..9edb7cc4b 100644
--- a/src/or/rendservice.c
+++ b/src/or/rendservice.c
@@ -3332,9 +3332,10 @@ rend_service_rendezvous_has_opened(origin_circuit_t *circuit)
                                                     NULL);
   rend_cookie = circuit->rend_data->rend_cookie;
 
-  /* Declare the circuit dirty to avoid reuse, and for path-bias */
-  if (!circuit->base_.timestamp_dirty)
-    circuit->base_.timestamp_dirty = time(NULL);
+  /* Declare the circuit dirty to avoid reuse, and for path-bias. We set the
+   * timestamp regardless of its content because that circuit could have been
+   * cannibalized so in any cases, we are about to use that circuit more. */
+  circuit->base_.timestamp_dirty = time(NULL);
 
   /* This may be redundant */
   pathbias_count_use_attempt(circuit);





More information about the tor-commits mailing list