|  | @@ -46,39 +46,42 @@ N - Destroy and truncated cells should have reasons.
 | 
	
		
			
				|  |  |      - Specify
 | 
	
		
			
				|  |  |      - Implement
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -N - Only use a routerdesc if you recognize its hash.
 | 
	
		
			
				|  |  | +N . Only use a routerdesc if you recognize its hash.
 | 
	
		
			
				|  |  |      o (Must defer till dirservers are upgraded to latest code, which
 | 
	
		
			
				|  |  |        actually generates these hashes.)
 | 
	
		
			
				|  |  | -    - Of course, authdirservers must not do this.
 | 
	
		
			
				|  |  | +    . Of course, authdirservers must not do this.
 | 
	
		
			
				|  |  |      o If we have a routerdesc for Bob, and he says, "I'm 0.1.0.x", don't
 | 
	
		
			
				|  |  |        fetch a new one if it was published in the last 2 hours.
 | 
	
		
			
				|  |  | -      - How does this interact with the 'recognized hash' rule?
 | 
	
		
			
				|  |  | -    - Do not ask for any routers until we have 2 networkstatuses.
 | 
	
		
			
				|  |  | -    - Client side:
 | 
	
		
			
				|  |  | -      - Keep a record of which hash is most desirable for each router inside
 | 
	
		
			
				|  |  | +      X Don't, actually. This is the authorities' job to straighten out.
 | 
	
		
			
				|  |  | +    o Do not ask for any routers until we have 2 networkstatuses.
 | 
	
		
			
				|  |  | +    . Client side:
 | 
	
		
			
				|  |  | +      o Keep a record of which hash is most desirable for each router inside
 | 
	
		
			
				|  |  |          local_routerstatus_t.
 | 
	
		
			
				|  |  | -        - If any hash is listed by two or more networkstatuses, the most
 | 
	
		
			
				|  |  | +        o If any hash is listed by two or more networkstatuses, the most
 | 
	
		
			
				|  |  |            recent such hash is most desirable.
 | 
	
		
			
				|  |  | -        - Otherwise, the most recent is desirable.
 | 
	
		
			
				|  |  | -      - Once we've accepted a router, it's okay.
 | 
	
		
			
				|  |  | -      - Do not accept a router that no networkstatus lists. (This should maybe
 | 
	
		
			
				|  |  | +        o Otherwise, the most recent is desirable.
 | 
	
		
			
				|  |  | +      o Once we've accepted a router, it's okay.
 | 
	
		
			
				|  |  | +      o Do not accept a router that no networkstatus lists. (This should maybe
 | 
	
		
			
				|  |  |          get stricter.)
 | 
	
		
			
				|  |  | -      - Download by fingerprint.
 | 
	
		
			
				|  |  | -      - Reset failure count to zero when hash changes.
 | 
	
		
			
				|  |  | -    - Mirrors and authorities:
 | 
	
		
			
				|  |  | -      - Every time we hear a new networkstatus, we want every hash it lists.
 | 
	
		
			
				|  |  | -      - Make sure that we are always willing to keep at least N routerinfos
 | 
	
		
			
				|  |  | +      o Download by descriptor digest.
 | 
	
		
			
				|  |  | +      o Reset failure count to zero when hash changes.
 | 
	
		
			
				|  |  | +      . Test
 | 
	
		
			
				|  |  | +      - Do we want to rate-limit downloads of each identity?
 | 
	
		
			
				|  |  | +    . Mirrors and authorities:
 | 
	
		
			
				|  |  | +      o Every time we hear a new networkstatus, we want every hash it lists.
 | 
	
		
			
				|  |  | +      o Make sure that we are always willing to keep at least N routerinfos
 | 
	
		
			
				|  |  |          per router, where N = number of authorities.
 | 
	
		
			
				|  |  | -        - Do whatever else is needed to be sure that we don't request
 | 
	
		
			
				|  |  | +        o Do whatever else is needed to be sure that we don't request
 | 
	
		
			
				|  |  |            hashes that would be immediately discarded, or discard hashes
 | 
	
		
			
				|  |  |            that would be immediately re-requested.
 | 
	
		
			
				|  |  | -      - Only fetch routerinfo from an authority that mentions is.
 | 
	
		
			
				|  |  | -        - Only ask each authority once.
 | 
	
		
			
				|  |  | -        - Retry soon after failure.
 | 
	
		
			
				|  |  | -        - We need one bit per routerstatus for "should we download from
 | 
	
		
			
				|  |  | +      o Only fetch routerinfo from an authority that mentions is.
 | 
	
		
			
				|  |  | +        o Only ask each authority once.
 | 
	
		
			
				|  |  | +        o Retry soon after failure.
 | 
	
		
			
				|  |  | +        o We need one bit per routerstatus for "should we download from
 | 
	
		
			
				|  |  |            this guy."
 | 
	
		
			
				|  |  |        - Verify that we are actually storing retained old descriptors to our
 | 
	
		
			
				|  |  |          cache.
 | 
	
		
			
				|  |  | +      - Test.
 | 
	
		
			
				|  |  |      - Non-directories don't need to keep descriptors in memory.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  N - Should router info have a pointer to routerstatus?
 |