|
@@ -57,6 +57,7 @@
|
|
|
#include "routerlist.h"
|
|
|
#include "routerparse.h"
|
|
|
#include "scheduler.h"
|
|
|
+#include "shared_random.h"
|
|
|
#include "statefile.h"
|
|
|
#include "status.h"
|
|
|
#include "util_process.h"
|
|
@@ -2441,6 +2442,13 @@ do_main_loop(void)
|
|
|
cpu_init();
|
|
|
}
|
|
|
|
|
|
+ /* Setup shared random protocol subsystem. */
|
|
|
+ if (authdir_mode_publishes_statuses(get_options())) {
|
|
|
+ if (sr_init(1) < 0) {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/* set up once-a-second callback. */
|
|
|
if (! second_timer) {
|
|
|
struct timeval one_second;
|
|
@@ -3204,6 +3212,9 @@ tor_cleanup(void)
|
|
|
accounting_record_bandwidth_usage(now, get_or_state());
|
|
|
or_state_mark_dirty(get_or_state(), 0); /* force an immediate save. */
|
|
|
or_state_save(now);
|
|
|
+ if (authdir_mode(options)) {
|
|
|
+ sr_save_and_cleanup();
|
|
|
+ }
|
|
|
if (authdir_mode_tests_reachability(options))
|
|
|
rep_hist_record_mtbf_data(now, 0);
|
|
|
keypin_close_journal();
|
|
@@ -3362,6 +3373,7 @@ sandbox_init_filter(void)
|
|
|
OPEN_DATADIR_SUFFIX("cached-extrainfo.new", ".tmp");
|
|
|
OPEN_DATADIR("cached-extrainfo.tmp.tmp");
|
|
|
OPEN_DATADIR_SUFFIX("state", ".tmp");
|
|
|
+ OPEN_DATADIR_SUFFIX("sr-state", ".tmp");
|
|
|
OPEN_DATADIR_SUFFIX("unparseable-desc", ".tmp");
|
|
|
OPEN_DATADIR_SUFFIX("v3-status-votes", ".tmp");
|
|
|
OPEN_DATADIR("key-pinning-journal");
|
|
@@ -3414,6 +3426,7 @@ sandbox_init_filter(void)
|
|
|
RENAME_SUFFIX("cached-extrainfo", ".new");
|
|
|
RENAME_SUFFIX("cached-extrainfo.new", ".tmp");
|
|
|
RENAME_SUFFIX("state", ".tmp");
|
|
|
+ RENAME_SUFFIX("sr-state", ".tmp");
|
|
|
RENAME_SUFFIX("unparseable-desc", ".tmp");
|
|
|
RENAME_SUFFIX("v3-status-votes", ".tmp");
|
|
|
|