aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/or/dirvote.c17
-rw-r--r--src/or/main.c2
-rw-r--r--src/or/networkstatus.c2
-rw-r--r--src/or/or.h4
4 files changed, 16 insertions, 9 deletions
diff --git a/src/or/dirvote.c b/src/or/dirvote.c
index f28a7311bd..c5c92e6a06 100644
--- a/src/or/dirvote.c
+++ b/src/or/dirvote.c
@@ -1061,12 +1061,17 @@ static struct {
/** Set voting_schedule to hold the timing for the next vote we should be
* doing. */
void
-dirvote_recalculate_timing(time_t now)
+dirvote_recalculate_timing(or_options_t *options, time_t now)
{
int interval, vote_delay, dist_delay;
time_t start;
time_t end;
- networkstatus_vote_t *consensus = networkstatus_get_live_consensus(now);
+ networkstatus_vote_t *consensus;
+
+ if (!authdir_mode_v3(options))
+ return;
+
+ consensus = networkstatus_get_live_consensus(now);
memset(&voting_schedule, 0, sizeof(voting_schedule));
@@ -1106,8 +1111,10 @@ dirvote_recalculate_timing(time_t now)
/** Entry point: Take whatever voting actions are pending as of <b>now</b>. */
void
-dirvote_act(time_t now)
+dirvote_act(or_options_t *options, time_t now)
{
+ if (!authdir_mode_v3(options))
+ return;
if (!voting_schedule.voting_starts) {
char *keys = list_v3_auth_ids();
authority_cert_t *c = get_my_v3_authority_cert();
@@ -1115,7 +1122,7 @@ dirvote_act(time_t now)
"Mine is %s.",
keys, hex_str(c->cache_info.identity_digest, DIGEST_LEN));
tor_free(keys);
- dirvote_recalculate_timing(now);
+ dirvote_recalculate_timing(options, now);
}
if (voting_schedule.voting_starts < now && !voting_schedule.have_voted) {
log_notice(LD_DIR, "Time to vote.");
@@ -1150,7 +1157,7 @@ dirvote_act(time_t now)
voting_schedule.have_published_consensus = 1;
/* XXXX020 we will want to try again later if we haven't got enough
* signatures yet. */
- dirvote_recalculate_timing(now);
+ dirvote_recalculate_timing(options, now);
}
}
diff --git a/src/or/main.c b/src/or/main.c
index cfe4745642..37aefb46fc 100644
--- a/src/or/main.c
+++ b/src/or/main.c
@@ -1006,7 +1006,7 @@ run_scheduled_events(time_t now)
/** 2c. Let directory voting happen. */
if (authdir_mode_v3(options))
- dirvote_act(now);
+ dirvote_act(options, now);
/** 3a. Every second, we examine pending circuits and prune the
* ones which have been pending for more than a few seconds.
diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c
index eac77f2f0c..e8f8e4f27f 100644
--- a/src/or/networkstatus.c
+++ b/src/or/networkstatus.c
@@ -984,7 +984,7 @@ networkstatus_set_current_consensus(const char *consensus, int from_cache,
current_consensus = c;
update_consensus_networkstatus_fetch_time(now);
- dirvote_recalculate_timing(now);
+ dirvote_recalculate_timing(get_options(), now);
routerstatus_list_update_named_server_map();
if (!from_cache) {
diff --git a/src/or/or.h b/src/or/or.h
index 003f597ce1..f37e8865bb 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -2932,8 +2932,8 @@ typedef struct vote_timing_t {
/* vote scheduling */
void dirvote_get_preferred_voting_intervals(vote_timing_t *timing_out);
time_t dirvote_get_start_of_next_interval(time_t now, int interval);
-void dirvote_recalculate_timing(time_t now);
-void dirvote_act(time_t now);
+void dirvote_recalculate_timing(or_options_t *options, time_t now);
+void dirvote_act(or_options_t *options, time_t now);
/* invoked on timers and by outside triggers. */
struct pending_vote_t * dirvote_add_vote(const char *vote_body,