|  | @@ -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");
 | 
	
		
			
				|  |  |  
 |