|  | @@ -1631,7 +1631,9 @@ networkstatus_set_current_consensus(const char *consensus,
 | 
	
		
			
				|  |  |    if (r != 1 && dl_certs)
 | 
	
		
			
				|  |  |      authority_certs_fetch_missing(c, now);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  if (flav == usable_consensus_flavor()) {
 | 
	
		
			
				|  |  | +  const int is_usable_flavor = flav == usable_consensus_flavor();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  if (is_usable_flavor) {
 | 
	
		
			
				|  |  |      notify_control_networkstatus_changed(current_consensus, c);
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    if (flav == FLAV_NS) {
 | 
	
	
		
			
				|  | @@ -1674,20 +1676,12 @@ networkstatus_set_current_consensus(const char *consensus,
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  /* Reset the failure count only if this consensus is actually valid. */
 | 
	
		
			
				|  |  | -  if (c->valid_after <= now && now <= c->valid_until) {
 | 
	
		
			
				|  |  | -    download_status_reset(&consensus_dl_status[flav]);
 | 
	
		
			
				|  |  | -  } else {
 | 
	
		
			
				|  |  | -    if (!from_cache)
 | 
	
		
			
				|  |  | -      download_status_failed(&consensus_dl_status[flav], 0);
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | +  if (is_usable_flavor) {
 | 
	
		
			
				|  |  | +    nodelist_set_consensus(c);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  if (flav == usable_consensus_flavor()) {
 | 
	
		
			
				|  |  |      /* XXXXNM Microdescs: needs a non-ns variant. ???? NM*/
 | 
	
		
			
				|  |  |      update_consensus_networkstatus_fetch_time(now);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    nodelist_set_consensus(current_consensus);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |      dirvote_recalculate_timing(options, now);
 | 
	
		
			
				|  |  |      routerstatus_list_update_named_server_map();
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1711,6 +1705,14 @@ networkstatus_set_current_consensus(const char *consensus,
 | 
	
		
			
				|  |  |          current_consensus);
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +  /* Reset the failure count only if this consensus is actually valid. */
 | 
	
		
			
				|  |  | +  if (c->valid_after <= now && now <= c->valid_until) {
 | 
	
		
			
				|  |  | +    download_status_reset(&consensus_dl_status[flav]);
 | 
	
		
			
				|  |  | +  } else {
 | 
	
		
			
				|  |  | +    if (!from_cache)
 | 
	
		
			
				|  |  | +      download_status_failed(&consensus_dl_status[flav], 0);
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    if (directory_caches_dir_info(options)) {
 | 
	
		
			
				|  |  |      dirserv_set_cached_consensus_networkstatus(consensus,
 | 
	
		
			
				|  |  |                                                 flavor,
 |