summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDavid Goulet <dgoulet@torproject.org>2018-04-25 10:49:32 -0400
committerDavid Goulet <dgoulet@torproject.org>2018-05-01 10:06:13 -0400
commit6ee6533fd89018036f11c5ee62897f8a2b6c39c0 (patch)
treef0f14ed5a9128733d2a6425b9fa00f71d11a545e /src
parent2963e65c30d1c1463e71385439246e0df1e363c5 (diff)
downloadtor-6ee6533fd89018036f11c5ee62897f8a2b6c39c0.tar.gz
tor-6ee6533fd89018036f11c5ee62897f8a2b6c39c0.zip
dirvote: Free vote commits in the dirauth module
In order to make sr_commit_free() only used by the dirauth module, this commits moves the commits free from a vote object into the dirvote.c file which is now only for the module. The function does nothing if the module is disabled. Signed-off-by: David Goulet <dgoulet@torproject.org>
Diffstat (limited to 'src')
-rw-r--r--src/or/dirauth/dirvote.c13
-rw-r--r--src/or/dirauth/dirvote.h7
-rw-r--r--src/or/networkstatus.c4
3 files changed, 21 insertions, 3 deletions
diff --git a/src/or/dirauth/dirvote.c b/src/or/dirauth/dirvote.c
index 3ec4d67416..53a896eb4d 100644
--- a/src/or/dirauth/dirvote.c
+++ b/src/or/dirauth/dirvote.c
@@ -3899,3 +3899,16 @@ dirvote_parse_sr_commits(networkstatus_t *ns, smartlist_t *tokens)
}
}
+/* For the given vote, free the shared random commits if any. */
+void
+dirvote_clear_commits(networkstatus_t *ns)
+{
+ tor_assert(ns->type == NS_TYPE_VOTE);
+
+ if (ns->sr_info.commits) {
+ SMARTLIST_FOREACH(ns->sr_info.commits, sr_commit_t *, c,
+ sr_commit_free(c));
+ smartlist_free(ns->sr_info.commits);
+ }
+}
+
diff --git a/src/or/dirauth/dirvote.h b/src/or/dirauth/dirvote.h
index 4514c6daf0..9682c60364 100644
--- a/src/or/dirauth/dirvote.h
+++ b/src/or/dirauth/dirvote.h
@@ -100,6 +100,7 @@ void dirvote_act(const or_options_t *options, time_t now);
void dirvote_free_all(void);
void dirvote_parse_sr_commits(networkstatus_t *ns, smartlist_t *tokens);
+void dirvote_clear_commits(networkstatus_t *ns);
#else /* HAVE_MODULE_DIRAUTH */
@@ -122,6 +123,12 @@ dirvote_parse_sr_commits(networkstatus_t *ns, smartlist_t *tokens)
(void) tokens;
}
+static inline void
+dirvote_clear_commits(networkstatus_t *ns)
+{
+ (void) ns;
+}
+
#endif /* HAVE_MODULE_DIRAUTH */
void dirvote_recalculate_timing(const or_options_t *options, time_t now);
diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c
index fa8d0bcf13..5ca320d284 100644
--- a/src/or/networkstatus.c
+++ b/src/or/networkstatus.c
@@ -366,9 +366,7 @@ networkstatus_vote_free_(networkstatus_t *ns)
digestmap_free(ns->desc_digest_map, NULL);
if (ns->sr_info.commits) {
- SMARTLIST_FOREACH(ns->sr_info.commits, sr_commit_t *, c,
- sr_commit_free(c));
- smartlist_free(ns->sr_info.commits);
+ dirvote_clear_commits(ns);
}
tor_free(ns->sr_info.previous_srv);
tor_free(ns->sr_info.current_srv);