[tor-commits] [tor/master] prop224: Refactor hs_get_time_period_num() to not use absolute time.

nickm at torproject.org nickm at torproject.org
Wed Aug 9 00:36:38 UTC 2017


commit cf58451a8ba03e869a805f973ef5b5f3f6d82b6b
Author: George Kadianakis <desnacked at riseup.net>
Date:   Mon Jul 24 13:31:17 2017 +0300

    prop224: Refactor hs_get_time_period_num() to not use absolute time.
    
    Instead use the SRV protocol duration to calculate the rotation offset
    that was previously hardcoded to 12 hours.
---
 src/or/hs_common.c | 13 +++++++++----
 src/or/hs_common.h |  2 --
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/src/or/hs_common.c b/src/or/hs_common.c
index 0d81063cf..0ae196d93 100644
--- a/src/or/hs_common.c
+++ b/src/or/hs_common.c
@@ -196,13 +196,18 @@ uint64_t
 hs_get_time_period_num(time_t now)
 {
   uint64_t time_period_num;
+
+  /* Start by calculating minutes since the epoch */
   uint64_t time_period_length = get_time_period_length();
   uint64_t minutes_since_epoch = now / 60;
 
-  /* Now subtract half a day to fit the prop224 time period schedule (see
-   * section [TIME-PERIODS]). */
-  tor_assert(minutes_since_epoch > HS_TIME_PERIOD_ROTATION_OFFSET);
-  minutes_since_epoch -= HS_TIME_PERIOD_ROTATION_OFFSET;
+  /* Apply the rotation offset as specified by prop224 (section
+   * [TIME-PERIODS]), so that new time periods synchronize nicely with SRV
+   * publication */
+  unsigned int time_period_rotation_offset = sr_state_get_phase_duration();
+  time_period_rotation_offset /= 60; /* go from seconds to minutes */
+  tor_assert(minutes_since_epoch > time_period_rotation_offset);
+  minutes_since_epoch -= time_period_rotation_offset;
 
   /* Calculate the time period */
   time_period_num = minutes_since_epoch / time_period_length;
diff --git a/src/or/hs_common.h b/src/or/hs_common.h
index 519485d57..268a69bb5 100644
--- a/src/or/hs_common.h
+++ b/src/or/hs_common.h
@@ -52,8 +52,6 @@
 #define HS_TIME_PERIOD_LENGTH_MIN 30 /* minutes */
 /* The minimum time period length as seen in prop224 section [TIME-PERIODS] */
 #define HS_TIME_PERIOD_LENGTH_MAX (60 * 24 * 10) /* 10 days or 14400 minutes */
-/* The time period rotation offset as seen in prop224 section [TIME-PERIODS] */
-#define HS_TIME_PERIOD_ROTATION_OFFSET (12 * 60) /* minutes */
 
 /* Prefix of the onion address checksum. */
 #define HS_SERVICE_ADDR_CHECKSUM_PREFIX ".onion checksum"





More information about the tor-commits mailing list