|  | @@ -4,9 +4,8 @@ Changes in version 0.2.0.8-alpha - 2007-10-12
 | 
	
		
			
				|  |  |        cached-routers. Initialize cached-descriptors from cached-routers
 | 
	
		
			
				|  |  |        if the old format is around. The new format allows us to store
 | 
	
		
			
				|  |  |        annotations along with descriptors.
 | 
	
		
			
				|  |  | -    - Use annotations to record the time we received each descriptor.
 | 
	
		
			
				|  |  | -    - Use annotations to record the source for each descriptor.
 | 
	
		
			
				|  |  | -    - Use annotations to record the purpose of each descriptor.
 | 
	
		
			
				|  |  | +    - Use annotations to record the time we received each descriptor, its
 | 
	
		
			
				|  |  | +      source, and its purpose.
 | 
	
		
			
				|  |  |      - Disable the SETROUTERPURPOSE controller command: it is now
 | 
	
		
			
				|  |  |        obsolete.
 | 
	
		
			
				|  |  |      - Controllers should now specify cache=no or cache=yes when using
 | 
	
	
		
			
				|  | @@ -26,13 +25,18 @@ Changes in version 0.2.0.8-alpha - 2007-10-12
 | 
	
		
			
				|  |  |        stay up" is a good requirement for long-lived connections.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    o Major features (v3 directory system):
 | 
	
		
			
				|  |  | -    - Caches now download v3 network status documents as needed.
 | 
	
		
			
				|  |  | -    - Caches now download descriptors listed in their v3 network status
 | 
	
		
			
				|  |  | -      documents.
 | 
	
		
			
				|  |  | +    - Caches now download v3 network status documents as needed,
 | 
	
		
			
				|  |  | +      and download the descriptors listed in them.
 | 
	
		
			
				|  |  |      - All hosts now attempt to download and keep fresh v3 authority
 | 
	
		
			
				|  |  |        certificates, and re-attempt after failures.
 | 
	
		
			
				|  |  |      - More internal-consistency checks for vote parsing.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +  o Major bugfixes (crashes):
 | 
	
		
			
				|  |  | +    - If a connection is shut down abruptly because of something that
 | 
	
		
			
				|  |  | +      happened inside connection_flushed_some(), do not call
 | 
	
		
			
				|  |  | +      connection_finished_flushing(). Should fix bug 451. Bugfix on
 | 
	
		
			
				|  |  | +      0.1.2.7-alpha.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    o Major bugfixes (performance):
 | 
	
		
			
				|  |  |      - Fix really bad O(n^2) performance when parsing a long list of
 | 
	
		
			
				|  |  |        routers: Instead of searching the entire list for an "extra-info "
 | 
	
	
		
			
				|  | @@ -40,17 +44,11 @@ Changes in version 0.2.0.8-alpha - 2007-10-12
 | 
	
		
			
				|  |  |        we read, just scan lines forward until we find one we like.
 | 
	
		
			
				|  |  |        Bugfix on 0.2.0.1.
 | 
	
		
			
				|  |  |      - When we add data to a write buffer in response to the data on that
 | 
	
		
			
				|  |  | -      write buffer getting low because of a flush, do not consider the newly
 | 
	
		
			
				|  |  | -      added data as a candidate for immediate flushing, but rather make it
 | 
	
		
			
				|  |  | -      wait until the next round of writing.  Otherwise, we flush and refill
 | 
	
		
			
				|  |  | -      recursively, and a single greedy TLS connection can eat all of our
 | 
	
		
			
				|  |  | -      bandwidth.  Bugfix on 0.1.2.7-alpha.
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  o Major bugfixes (crashes):
 | 
	
		
			
				|  |  | -    - If a connection is shut down abruptly because of something that
 | 
	
		
			
				|  |  | -      happened inside connection_flushed_some(), do not call
 | 
	
		
			
				|  |  | -      connection_finished_flushing().  Should fix bug 451. Bugfix on
 | 
	
		
			
				|  |  | -      0.1.2.7-alpha.
 | 
	
		
			
				|  |  | +      write buffer getting low because of a flush, do not consider the
 | 
	
		
			
				|  |  | +      newly added data as a candidate for immediate flushing, but rather
 | 
	
		
			
				|  |  | +      make it wait until the next round of writing. Otherwise, we flush
 | 
	
		
			
				|  |  | +      and refill recursively, and a single greedy TLS connection can
 | 
	
		
			
				|  |  | +      eat all of our bandwidth. Bugfix on 0.1.2.7-alpha.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    o Minor features (v3 authority system):
 | 
	
		
			
				|  |  |      - Add more ways for tools to download the votes that lead to the
 | 
	
	
		
			
				|  | @@ -65,16 +63,13 @@ Changes in version 0.2.0.8-alpha - 2007-10-12
 | 
	
		
			
				|  |  |        two Tor servers on the same IP address, except if it's the location
 | 
	
		
			
				|  |  |        of a directory authority, in which case allow five. Bugfix on
 | 
	
		
			
				|  |  |        0.2.0.3-alpha.
 | 
	
		
			
				|  |  | -    - When looking for a circuit to cannibalize, consider family as well
 | 
	
		
			
				|  |  | -      as identity.  Fixes bug 438.  Bugfix on 0.1.0.x (which introduced
 | 
	
		
			
				|  |  | -      circuit cannibalization).
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    o Minor bugfixes (controller):
 | 
	
		
			
				|  |  |      - When sending a status event to the controller telling it that an
 | 
	
		
			
				|  |  |        OR address is readable, set the port correctly. (Previously we
 | 
	
		
			
				|  |  |        were reporting the dir port.) Bugfix on 0.1.2.x.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  o Minor bugfixes (v3 directory code):
 | 
	
		
			
				|  |  | +  o Minor bugfixes (v3 directory system):
 | 
	
		
			
				|  |  |      - Fix logic to look up a cert by its signing key digest. Bugfix on
 | 
	
		
			
				|  |  |        0.2.0.7-alpha.
 | 
	
		
			
				|  |  |      - Only change the reply to a vote to "OK" if it's not already
 | 
	
	
		
			
				|  | @@ -93,37 +88,36 @@ Changes in version 0.2.0.8-alpha - 2007-10-12
 | 
	
		
			
				|  |  |        instead of Java's) and optimize our digest hashing algorithm to take
 | 
	
		
			
				|  |  |        advantage of 64-bit platforms and to remove some possibly-costly
 | 
	
		
			
				|  |  |        voodoo.
 | 
	
		
			
				|  |  | +    - Fix a minor memory leak whenever we parse guards from our state
 | 
	
		
			
				|  |  | +      file. Bugfix on 0.2.0.7-alpha.
 | 
	
		
			
				|  |  | +    - Fix a minor memory leak whenever we write out a file. Bugfix on
 | 
	
		
			
				|  |  | +      0.2.0.7-alpha.
 | 
	
		
			
				|  |  | +    - Fix a minor memory leak whenever a controller sends the PROTOCOLINFO
 | 
	
		
			
				|  |  | +      command. Bugfix on 0.2.0.5-alpha.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    o Minor bugfixes (portability):
 | 
	
		
			
				|  |  | -    - On some platforms, accept() can return a broken address.  Detect
 | 
	
		
			
				|  |  | -      this more quietly, and deal accordingly.  (Fixes bug 483.)
 | 
	
		
			
				|  |  | +    - On some platforms, accept() can return a broken address. Detect
 | 
	
		
			
				|  |  | +      this more quietly, and deal accordingly. Fixes bug 483.
 | 
	
		
			
				|  |  | +    - Stop calling tor_strlower() on uninitialized memory in some cases.
 | 
	
		
			
				|  |  | +      Bugfix in 0.2.0.7-alpha.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    o Minor bugfixes (usability):
 | 
	
		
			
				|  |  |      - Treat some 403 responses from directory servers as INFO rather than
 | 
	
		
			
				|  |  |        WARN-severity events.
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  o Minor bugfixes (DNS):
 | 
	
		
			
				|  |  |      - It's not actually an error to find a non-pending entry in the DNS
 | 
	
		
			
				|  |  | -      cache when canceling a pending resolve.  Don't log unless stuff
 | 
	
		
			
				|  |  | -      is fishy.  Resolves bug 463.
 | 
	
		
			
				|  |  | +      cache when canceling a pending resolve. Don't log unless stuff is
 | 
	
		
			
				|  |  | +      fishy. Resolves bug 463.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    o Minor bugfixes (anonymity):
 | 
	
		
			
				|  |  |      - Never report that we've used more bandwidth than we're willing to
 | 
	
		
			
				|  |  |        relay: it leaks how much non-relay traffic we're using. Resolves
 | 
	
		
			
				|  |  |        bug 516.
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  o Minor bugfixes (of some sort):
 | 
	
		
			
				|  |  | -    - Stop calling tor_strlower() on uninitialized memory in some cases.
 | 
	
		
			
				|  |  | -      Bugfix in 0.2.0.7-alpha.
 | 
	
		
			
				|  |  | -    - Fix a minor memory leak whenever we parse guards from our state
 | 
	
		
			
				|  |  | -      file. Bugfix on 0.2.0.7-alpha.
 | 
	
		
			
				|  |  | -    - Fix a minor memory leak whenever we write out a file. Bugfix on
 | 
	
		
			
				|  |  | -      0.2.0.7-alpha.
 | 
	
		
			
				|  |  | -    - Fix a minor memory leak whenever a controller sends the PROTOCOLINFO
 | 
	
		
			
				|  |  | -      command. Bugfix on 0.2.0.5-alpha.
 | 
	
		
			
				|  |  | +    - When looking for a circuit to cannibalize, consider family as well
 | 
	
		
			
				|  |  | +      as identity. Fixes bug 438. Bugfix on 0.1.0.x (which introduced
 | 
	
		
			
				|  |  | +      circuit cannibalization).
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    o Code simplifications and refactoring:
 | 
	
		
			
				|  |  | -    - Make a bunch of functions static.  Remove some dead code.
 | 
	
		
			
				|  |  | +    - Make a bunch of functions static. Remove some dead code.
 | 
	
		
			
				|  |  |      - Pull out about a third of the really big routerlist.c; put it in a
 | 
	
		
			
				|  |  |        new module, networkstatus.c.
 | 
	
		
			
				|  |  |      - Merge the extra fields in local_routerstatus_t back into
 |