|  | @@ -34,6 +34,7 @@
 | 
	
		
			
				|  |  |  #include "config.h"
 | 
	
		
			
				|  |  |  #include "confparse.h"
 | 
	
		
			
				|  |  |  #include "connection.h"
 | 
	
		
			
				|  |  | +#include "control.h"
 | 
	
		
			
				|  |  |  #include "entrynodes.h"
 | 
	
		
			
				|  |  |  #include "hibernate.h"
 | 
	
		
			
				|  |  |  #include "rephist.h"
 | 
	
	
		
			
				|  | @@ -404,10 +405,15 @@ or_state_load(void)
 | 
	
		
			
				|  |  |      log_info(LD_GENERAL, "Loaded state from \"%s\"", fname);
 | 
	
		
			
				|  |  |      /* Warn the user if their clock has been set backwards,
 | 
	
		
			
				|  |  |       * they could be tricked into using old consensuses */
 | 
	
		
			
				|  |  | -    time_t apparent_skew = new_state->LastWritten - time(NULL);
 | 
	
		
			
				|  |  | -    if (apparent_skew > 0)
 | 
	
		
			
				|  |  | +    time_t apparent_skew = time(NULL) - new_state->LastWritten;
 | 
	
		
			
				|  |  | +    if (apparent_skew < 0) {
 | 
	
		
			
				|  |  | +      /* Initialize bootstrap event reporting because we might call
 | 
	
		
			
				|  |  | +       * clock_skew_warning() before the bootstrap state is
 | 
	
		
			
				|  |  | +       * initialized, causing an asserttion failure. */
 | 
	
		
			
				|  |  | +      control_event_bootstrap(BOOTSTRAP_STATUS_STARTING, 0);
 | 
	
		
			
				|  |  |        clock_skew_warning(NULL, (long)apparent_skew, 1, LD_GENERAL,
 | 
	
		
			
				|  |  |                           "local state file", fname);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |    } else {
 | 
	
		
			
				|  |  |      log_info(LD_GENERAL, "Initialized state");
 | 
	
		
			
				|  |  |    }
 |