|  | @@ -2533,8 +2533,6 @@ routers_update_status_from_networkstatus(smartlist_t *routers, int reset_failure
 | 
	
		
			
				|  |  |    if (!routerstatus_list)
 | 
	
		
			
				|  |  |      return;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  log_fn(LOG_NOTICE, "Here, %d %d", reset_failures, assume_recognized);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |    SMARTLIST_FOREACH(routers, routerinfo_t *, router,
 | 
	
		
			
				|  |  |    {
 | 
	
		
			
				|  |  |      rs = router_get_combined_status_by_digest(router->identity_digest);
 | 
	
	
		
			
				|  | @@ -2864,11 +2862,19 @@ router_reset_descriptor_download_failures(void)
 | 
	
		
			
				|  |  |  int
 | 
	
		
			
				|  |  |  router_differences_are_cosmetic(routerinfo_t *r1, routerinfo_t *r2)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | +  tor_assert(r1 && r2);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    /* post-0.1.1.6 servers know what they're doing. */
 | 
	
		
			
				|  |  |    if (tor_version_as_new_as(r1->platform, "0.1.1.6-alpha") ||
 | 
	
		
			
				|  |  |        tor_version_as_new_as(r1->platform, "0.1.1.6-alpha"))
 | 
	
		
			
				|  |  |      return 0;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +  if (r1->published_on > r2->published_on) {
 | 
	
		
			
				|  |  | +    routerinfo_t *ri_tmp = r2;
 | 
	
		
			
				|  |  | +    r2 = r1;
 | 
	
		
			
				|  |  | +    r1 = ri_tmp;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    /* If any key fields differ, they're different. */
 | 
	
		
			
				|  |  |    if (strcasecmp(r1->address, r2->address) ||
 | 
	
		
			
				|  |  |        strcasecmp(r1->nickname, r2->nickname) ||
 | 
	
	
		
			
				|  | @@ -2901,8 +2907,12 @@ router_differences_are_cosmetic(routerinfo_t *r1, routerinfo_t *r2)
 | 
	
		
			
				|  |  |      return 0;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    /* Did more than 6 hours pass? */
 | 
	
		
			
				|  |  | -  if (r1->published_on + 6*60*60 < r2->published_on ||
 | 
	
		
			
				|  |  | -      r2->published_on + 6*60*60 < r1->published_on)
 | 
	
		
			
				|  |  | +  if (r1->published_on + 6*60*60 < r2->published_on)
 | 
	
		
			
				|  |  | +    return 0;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  /* Did uptime fail to increase by approximately the amount we would think,
 | 
	
		
			
				|  |  | +   * give or take 30 minutes? */
 | 
	
		
			
				|  |  | +  if (abs(r2->uptime - (r1->uptime + (r2->published_on-r1->published_on)))>30*60)
 | 
	
		
			
				|  |  |      return 0;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    /* Otherwise, the difference is cosmetic. */
 |