| 
					
				 | 
			
			
				@@ -2425,13 +2425,24 @@ mark_my_descriptor_dirty(const char *reason) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * if our previous bandwidth estimate was exactly 0. */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #define MAX_BANDWIDTH_CHANGE_FREQ (3*60*60) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** Maximum uptime to republish our descriptor because of large shifts in 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * estimated bandwidth. */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#define MAX_UPTIME_BANDWIDTH_CHANGE (24*60*60) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** Check whether bandwidth has changed a lot since the last time we announced 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * bandwidth. If so, mark our descriptor dirty. */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * bandwidth while the uptime is smaller than MAX_UPTIME_BANDWIDTH_CHANGE. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * If so, mark our descriptor dirty. */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 check_descriptor_bandwidth_changed(time_t now) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   static time_t last_changed = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   uint64_t prev, cur; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /* If the relay uptime is bigger than MAX_UPTIME_BANDWIDTH_CHANGE, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * the next regularly scheduled descriptor update (18h) will be enough */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (get_uptime() > MAX_UPTIME_BANDWIDTH_CHANGE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (!router_get_my_routerinfo()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |