mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-28 14:23:30 +01:00
Extend get_voting_interval() so that it's callable by relays.
In the past, only authorities and clients had to use that function because of the SRV subsystem. However, because of its use in rep_hist_hs_stats_init() it will now also be used by relays when bootstrapping without a consensus. Make it do something sensible. Another approach (instead of using magic values) would be to wait initialization of HSv3 stats until we get a consensus but that seems messy to schedule. Another approach would be to make dirauth_sched_get_configured_interval() also work for relays (particularly when TestingNetwork is enabled), but that also seems a good amount of work.
This commit is contained in:
parent
f2eff17126
commit
d0be2ae7f9
@ -33,12 +33,11 @@ srv_to_control_string(const sr_srv_t *srv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If we have no consensus and we are not an authority, assume that this is
|
* If we have no consensus and we are not an authority, assume that this is the
|
||||||
* the voting interval. We should never actually use this: only authorities
|
* voting interval. This can be used while bootstrapping as a relay and we are
|
||||||
* should be trying to figure out the schedule when they don't have a
|
* asked to initialize HS stats (see rep_hist_hs_stats_init()) */
|
||||||
* consensus.
|
|
||||||
**/
|
|
||||||
#define DEFAULT_NETWORK_VOTING_INTERVAL (3600)
|
#define DEFAULT_NETWORK_VOTING_INTERVAL (3600)
|
||||||
|
#define TESTING_DEFAULT_NETWORK_VOTING_INTERVAL (20)
|
||||||
|
|
||||||
/* This is an unpleasing workaround for tests. Our unit tests assume that we
|
/* This is an unpleasing workaround for tests. Our unit tests assume that we
|
||||||
* are scheduling all of our shared random stuff as if we were a directory
|
* are scheduling all of our shared random stuff as if we were a directory
|
||||||
@ -69,11 +68,13 @@ get_voting_interval(void)
|
|||||||
* It's better than falling back to the non-consensus case. */
|
* It's better than falling back to the non-consensus case. */
|
||||||
interval = (int)(consensus->fresh_until - consensus->valid_after);
|
interval = (int)(consensus->fresh_until - consensus->valid_after);
|
||||||
} else {
|
} else {
|
||||||
/* We should never be reaching this point, since a client should never
|
/* We can reach this as a relay when bootstrapping and we are asked to
|
||||||
* call this code unless they have some kind of a consensus. All we can
|
* initialize HS stats (see rep_hist_hs_stats_init()). */
|
||||||
* do is hope that this network is using the default voting interval. */
|
if (get_options()->TestingTorNetwork) {
|
||||||
tor_assert_nonfatal_unreached_once();
|
interval = TESTING_DEFAULT_NETWORK_VOTING_INTERVAL;
|
||||||
interval = DEFAULT_NETWORK_VOTING_INTERVAL;
|
} else {
|
||||||
|
interval = DEFAULT_NETWORK_VOTING_INTERVAL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
tor_assert(interval > 0);
|
tor_assert(interval > 0);
|
||||||
return interval;
|
return interval;
|
||||||
|
Loading…
Reference in New Issue
Block a user