mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 12:23:32 +01:00
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.
This commit is contained in:
parent
2cd5f9a2fc
commit
cf58451a8b
@ -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;
|
||||
|
@ -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"
|
||||
|
Loading…
Reference in New Issue
Block a user