[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[or-cvs] [tor/master] put in the full 0.2.1 release notes



Author: Roger Dingledine <arma@xxxxxxxxxxxxxx>
Date: Fri, 24 Jul 2009 17:25:51 -0400
Subject: put in the full 0.2.1 release notes
Commit: 6b334bb81361e4248d8f4a00f4609fdf76249b76

---
 ReleaseNotes |  568 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 568 insertions(+), 0 deletions(-)

diff --git a/ReleaseNotes b/ReleaseNotes
index 013ccb3..f4e1a00 100644
--- a/ReleaseNotes
+++ b/ReleaseNotes
@@ -3,6 +3,574 @@ This document summarizes new features and bugfixes in each stable release
 of Tor. If you want to see more detailed descriptions of the changes in
 each development snapshot, see the ChangeLog file.
 
+Changes in version 0.2.1.18 - 2009-07-24
+  o Major features (clients):
+    - Start sending "bootstrap phase" status events to the controller,
+      so it can keep the user informed of progress fetching directory
+      information and establishing circuits. Also inform the controller
+      if we think we're stuck at a particular bootstrap phase. Implements
+      proposal 137.
+    - Clients replace entry guards that were chosen more than a few months
+      ago. This change should significantly improve client performance,
+      especially once more people upgrade, since relays that have been
+      a guard for a long time are currently overloaded.
+    - Network status consensus documents and votes now contain bandwidth
+      information for each relay. Clients use the bandwidth values
+      in the consensus, rather than the bandwidth values in each
+      relay descriptor. This approach opens the door to more accurate
+      bandwidth estimates once the directory authorities start doing
+      active measurements. Implements part of proposal 141.
+
+  o Major features (relays):
+    - Disable and refactor some debugging checks that forced a linear scan
+      over the whole server-side DNS cache. These accounted for over 50%
+      of CPU time on a relatively busy exit node's gprof profile. Also,
+      disable some debugging checks that appeared in exit node profile
+      data. Found by Jacob.
+    - New DirPortFrontPage option that takes an html file and publishes
+      it as "/" on the DirPort. Now relay operators can provide a
+      disclaimer without needing to set up a separate webserver. There's
+      a sample disclaimer in contrib/tor-exit-notice.html.
+
+  o Major features (hidden services):
+    - Make it possible to build hidden services that only certain clients
+      are allowed to connect to. This is enforced at several points,
+      so that unauthorized clients are unable to send INTRODUCE cells
+      to the service, or even (depending on the type of authentication)
+      to learn introduction points. This feature raises the bar for
+      certain kinds of active attacks against hidden services. Design
+      and code by Karsten Loesing. Implements proposal 121.
+    - Relays now store and serve v2 hidden service descriptors by default,
+      i.e., the new default value for HidServDirectoryV2 is 1. This is
+      the last step in proposal 114, which aims to make hidden service
+      lookups more reliable.
+
+  o Major features (path selection):
+    - ExitNodes and Exclude*Nodes config options now allow you to restrict
+      by country code ("{US}") or IP address or address pattern
+      ("255.128.0.0/16"). Patch from Robert Hogan. It still needs some
+      refinement to decide what config options should take priority if
+      you ask to both use a particular node and exclude it.
+
+  o Major features (misc):
+    - When building a consensus, do not include routers that are down.
+      This cuts down 30% to 40% on consensus size. Implements proposal
+      138.
+    - New TestingTorNetwork config option to allow adjustment of
+      previously constant values that could slow bootstrapping. Implements
+      proposal 135. Patch from Karsten.
+    - Convert many internal address representations to optionally hold
+      IPv6 addresses. Generate and accept IPv6 addresses in many protocol
+      elements. Make resolver code handle nameservers located at IPv6
+      addresses.
+    - More work on making our TLS handshake blend in: modify the list
+      of ciphers advertised by OpenSSL in client mode to even more
+      closely resemble a common web browser. We cheat a little so that
+      we can advertise ciphers that the locally installed OpenSSL doesn't
+      know about.
+    - Use the TLS1 hostname extension to more closely resemble browser
+      behavior.
+
+  o Security fixes (anonymity/entropy):
+    - Never use a connection with a mismatched address to extend a
+      circuit, unless that connection is canonical. A canonical
+      connection is one whose address is authenticated by the router's
+      identity key, either in a NETINFO cell or in a router descriptor.
+    - Implement most of proposal 110: The first K cells to be sent
+      along a circuit are marked as special "early" cells; only K "early"
+      cells will be allowed. Once this code is universal, we can block
+      certain kinds of denial-of-service attack by requiring that EXTEND
+      commands must be sent using an "early" cell.
+    - Resume using OpenSSL's RAND_poll() for better (and more portable)
+      cross-platform entropy collection again. We used to use it, then
+      stopped using it because of a bug that could crash systems that
+      called RAND_poll when they had a lot of fds open. It looks like the
+      bug got fixed in late 2006. Our new behavior is to call RAND_poll()
+      at startup, and to call RAND_poll() when we reseed later only if
+      we have a non-buggy OpenSSL version.
+    - When the client is choosing entry guards, now it selects at most
+      one guard from a given relay family. Otherwise we could end up with
+      all of our entry points into the network run by the same operator.
+      Suggested by Camilo Viecco. Fix on 0.1.1.11-alpha.
+    - Do not use or believe expired v3 authority certificates. Patch
+      from Karsten. Bugfix in 0.2.0.x. Fixes bug 851.
+    - Drop begin cells to a hidden service if they come from the middle
+      of a circuit. Patch from lark.
+    - When we erroneously receive two EXTEND cells for the same circuit
+      ID on the same connection, drop the second. Patch from lark.
+    - Authorities now vote for the Stable flag for any router whose
+      weighted MTBF is at least 5 days, regardless of the mean MTBF.
+    - Clients now never report any stream end reason except 'MISC'.
+      Implements proposal 148.
+
+  o Major bugfixes (crashes):
+    - Parse dates and IPv4 addresses in a locale- and libc-independent
+      manner, to avoid platform-dependent behavior on malformed input.
+    - Fix a crash that occurs on exit nodes when a nameserver request
+      timed out. Bugfix on 0.1.2.1-alpha; our CLEAR debugging code had
+      been suppressing the bug since 0.1.2.10-alpha. Partial fix for
+      bug 929.
+    - Do not assume that a stack-allocated character array will be
+      64-bit aligned on platforms that demand that uint64_t access is
+      aligned. Possible fix for bug 604.
+    - Resolve a very rare crash bug that could occur when the user forced
+      a nameserver reconfiguration during the middle of a nameserver
+      probe. Fixes bug 526. Bugfix on 0.1.2.1-alpha.
+    - Avoid a "0 divided by 0" calculation when calculating router uptime
+      at directory authorities. Bugfix on 0.2.0.8-alpha.
+    - Fix an assertion bug in parsing policy-related options; possible fix
+      for bug 811.
+    - Rate-limit too-many-sockets messages: when they happen, they happen
+      a lot and end up filling up the disk. Resolves bug 748.
+    - Fix a race condition that could cause crashes or memory corruption
+      when running as a server with a controller listening for log
+      messages.
+    - Avoid crashing when we have a policy specified in a DirPolicy or
+      SocksPolicy or ReachableAddresses option with ports set on it,
+      and we re-load the policy. May fix bug 996.
+    - Fix an assertion failure on 64-bit platforms when we allocated
+      memory right up to the end of a memarea, then realigned the memory
+      one step beyond the end. Fixes a possible cause of bug 930.
+    - Protect the count of open sockets with a mutex, so we can't
+      corrupt it when two threads are closing or opening sockets at once.
+      Fix for bug 939. Bugfix on 0.2.0.1-alpha.
+
+  o Major bugfixes (clients):
+    - Discard router descriptors as we load them if they are more than
+      five days old. Otherwise if Tor is off for a long time and then
+      starts with cached descriptors, it will try to use the onion keys
+      in those obsolete descriptors when building circuits. Fixes bug 887.
+    - When we choose to abandon a new entry guard because we think our
+      older ones might be better, close any circuits pending on that
+      new entry guard connection. This fix should make us recover much
+      faster when our network is down and then comes back. Bugfix on
+      0.1.2.8-beta; found by lodger.
+    - When Tor clients restart after 1-5 days, they discard all their
+      cached descriptors as too old, but they still use the cached
+      consensus document. This approach is good for robustness, but
+      bad for performance: since they don't know any bandwidths, they
+      end up choosing at random rather than weighting their choice by
+      speed. Fixed by the above feature of putting bandwidths in the
+      consensus.
+
+  o Major bugfixes (relays):
+    - Relays were falling out of the networkstatus consensus for
+      part of a day if they changed their local config but the
+      authorities discarded their new descriptor as "not sufficiently
+      different". Now directory authorities accept a descriptor as changed
+      if BandwidthRate or BandwidthBurst changed. Partial fix for bug 962;
+      patch by Sebastian.
+    - Ensure that two circuits can never exist on the same connection
+      with the same circuit ID, even if one is marked for close. This
+      is conceivably a bugfix for bug 779; fixes a bug on 0.1.0.4-rc.
+    - Directory authorities were neglecting to mark relays down in their
+      internal histories if the relays fall off the routerlist without
+      ever being found unreachable. So there were relays in the histories
+      that haven't been seen for eight months, and are listed as being
+      up for eight months. This wreaked havoc on the "median wfu" and
+      "median mtbf" calculations, in turn making Guard and Stable flags
+      wrong, hurting network performance. Fixes bugs 696 and 969. Bugfix
+      on 0.2.0.6-alpha.
+
+  o Major bugfixes (hidden services):
+    - When establishing a hidden service, introduction points that
+      originate from cannibalized circuits were completely ignored
+      and not included in rendezvous service descriptors. This might
+      have been another reason for delay in making a hidden service
+      available. Bugfix from long ago (0.0.9.x?)
+
+  o Major bugfixes (memory and resource management):
+    - Fixed some memory leaks -- some quite frequent, some almost
+      impossible to trigger -- based on results from Coverity.
+    - Speed up parsing and cut down on memory fragmentation by using
+      stack-style allocations for parsing directory objects. Previously,
+      this accounted for over 40% of allocations from within Tor's code
+      on a typical directory cache.
+    - Use a Bloom filter rather than a digest-based set to track which
+      descriptors we need to keep around when we're cleaning out old
+      router descriptors. This speeds up the computation significantly,
+      and may reduce fragmentation.
+
+  o New/changed config options:
+    - Now NodeFamily and MyFamily config options allow spaces in
+      identity fingerprints, so it's easier to paste them in.
+      Suggested by Lucky Green.
+    - Allow ports 465 and 587 in the default exit policy again. We had
+      rejected them in 0.1.0.15, because back in 2005 they were commonly
+      misconfigured and ended up as spam targets. We hear they are better
+      locked down these days.
+    - Make TrackHostExit mappings expire a while after their last use, not
+      after their creation. Patch from Robert Hogan.
+    - Add an ExcludeExitNodes option so users can list a set of nodes
+      that should be be excluded from the exit node position, but
+      allowed elsewhere. Implements proposal 151.
+    - New --hush command-line option similar to --quiet. While --quiet
+      disables all logging to the console on startup, --hush limits the
+      output to messages of warning and error severity.
+    - New configure/torrc options (--enable-geoip-stats,
+      DirRecordUsageByCountry) to record how many IPs we've served
+      directory info to in each country code, how many status documents
+      total we've sent to each country code, and what share of the total
+      directory requests we should expect to see.
+    - Make outbound DNS packets respect the OutboundBindAddress setting.
+      Fixes the bug part of bug 798. Bugfix on 0.1.2.2-alpha.
+    - Allow separate log levels to be configured for different logging
+      domains. For example, this allows one to log all notices, warnings,
+      or errors, plus all memory management messages of level debug or
+      higher, with: Log [MM] debug-err [*] notice-err file /var/log/tor.
+    - Update to the "June 3 2009" ip-to-country file.
+
+  o Minor features (relays):
+    - Raise the minimum rate limiting to be a relay from 20000 bytes
+      to 20480 bytes (aka 20KB/s), to match our documentation. Also
+      update directory authorities so they always assign the Fast flag
+      to relays with 20KB/s of capacity. Now people running relays won't
+      suddenly find themselves not seeing any use, if the network gets
+      faster on average.
+    - If we're a relay and we change our IP address, be more verbose
+      about the reason that made us change. Should help track down
+      further bugs for relays on dynamic IP addresses.
+    - Exit servers can now answer resolve requests for ip6.arpa addresses.
+    - Implement most of Proposal 152: allow specialized servers to permit
+      single-hop circuits, and clients to use those servers to build
+      single-hop circuits when using a specialized controller. Patch
+      from Josh Albrecht. Resolves feature request 768.
+    - When relays do their initial bandwidth measurement, don't limit
+      to just our entry guards for the test circuits. Otherwise we tend
+      to have multiple test circuits going through a single entry guard,
+      which makes our bandwidth test less accurate. Fixes part of bug 654;
+      patch contributed by Josh Albrecht.
+
+  o Minor features (directory authorities):
+    - Try not to open more than one descriptor-downloading connection
+      to an authority at once. This should reduce load on directory
+      authorities. Fixes bug 366.
+    - Add cross-certification to newly generated certificates, so that
+      a signing key is enough information to look up a certificate. Start
+      serving certificates by <identity digest, signing key digest>
+      pairs. Implements proposal 157.
+    - When a directory authority downloads a descriptor that it then
+      immediately rejects, do not retry downloading it right away. Should
+      save some bandwidth on authorities. Fix for bug 888. Patch by
+      Sebastian Hahn.
+    - Directory authorities now serve a /tor/dbg-stability.txt URL to
+      help debug WFU and MTBF calculations.
+    - In directory authorities' approved-routers files, allow
+      fingerprints with or without space.
+
+  o Minor features (directory mirrors):
+    - When a download gets us zero good descriptors, do not notify
+      Tor that new directory information has arrived.
+    - Servers support a new URL scheme for consensus downloads that
+      allows the client to specify which authorities are trusted.
+      The server then only sends the consensus if the client will trust
+      it. Otherwise a 404 error is sent back. Clients use this
+      new scheme when the server supports it (meaning it's running
+      0.2.1.1-alpha or later). Implements proposal 134.
+
+  o Minor features (bridges):
+    - If the bridge config line doesn't specify a port, assume 443.
+      This makes bridge lines a bit smaller and easier for users to
+      understand.
+    - If we're using bridges and our network goes away, be more willing
+      to forgive our bridges and try again when we get an application
+      request.
+
+  o Minor features (hidden services):
+    - When the client launches an introduction circuit, retry with a
+      new circuit after 30 seconds rather than 60 seconds.
+    - Launch a second client-side introduction circuit in parallel
+      after a delay of 15 seconds (based on work by Christian Wilms).
+    - Hidden services start out building five intro circuits rather
+      than three, and when the first three finish they publish a service
+      descriptor using those. Now we publish our service descriptor much
+      faster after restart.
+    - Drop the requirement to have an open dir port for storing and
+      serving v2 hidden service descriptors.
+
+  o Minor features (build and packaging):
+    - On Linux, use the prctl call to re-enable core dumps when the User
+      option is set.
+    - Try to make sure that the version of Libevent we're running with
+      is binary-compatible with the one we built with. May address bug
+      897 and others.
+    - Add a new --enable-local-appdata configuration switch to change
+      the default location of the datadir on win32 from APPDATA to
+      LOCAL_APPDATA. In the future, we should migrate to LOCAL_APPDATA
+      entirely. Patch from coderman.
+    - Build correctly against versions of OpenSSL 0.9.8 or later that
+      are built without support for deprecated functions.
+    - On platforms with a maximum syslog string length, truncate syslog
+      messages to that length ourselves, rather than relying on the
+      system to do it for us.
+    - Automatically detect MacOSX versions earlier than 10.4.0, and
+      disable kqueue from inside Tor when running with these versions.
+      We previously did this from the startup script, but that was no
+      help to people who didn't use the startup script. Resolves bug 863.
+    - Build correctly when configured to build outside the main source
+      path. Patch from Michael Gold.
+    - Disable GCC's strict alias optimization by default, to avoid the
+      likelihood of its introducing subtle bugs whenever our code violates
+      the letter of C99's alias rules.
+    - Change the contrib/tor.logrotate script so it makes the new
+      logs as "_tor:_tor" rather than the default, which is generally
+      "root:wheel". Fixes bug 676, reported by Serge Koksharov.
+    - Change our header file guard macros to be less likely to conflict
+      with system headers. Adam Langley noticed that we were conflicting
+      with log.h on Android.
+    - Add a couple of extra warnings to --enable-gcc-warnings for GCC 4.3,
+      and stop using a warning that had become unfixably verbose under
+      GCC 4.3.
+    - Use a lockfile to make sure that two Tor processes are not
+      simultaneously running with the same datadir.
+    - Allow OpenSSL to use dynamic locks if it wants.
+    - Add LIBS=-lrt to Makefile.am so the Tor RPMs use a static libevent.
+
+  o Minor features (controllers):
+    - When generating circuit events with verbose nicknames for
+      controllers, try harder to look up nicknames for routers on a
+      circuit. (Previously, we would look in the router descriptors we had
+      for nicknames, but not in the consensus.) Partial fix for bug 941.
+    - New controller event NEWCONSENSUS that lists the networkstatus
+      lines for every recommended relay. Now controllers like Torflow
+      can keep up-to-date on which relays they should be using.
+    - New controller event "clients_seen" to report a geoip-based summary
+      of which countries we've seen clients from recently. Now controllers
+      like Vidalia can show bridge operators that they're actually making
+      a difference.
+    - Add a 'getinfo status/clients-seen' controller command, in case
+      controllers want to hear clients_seen events but connect late.
+    - New CONSENSUS_ARRIVED event to note when a new consensus has
+      been fetched and validated.
+    - Add an internal-use-only __ReloadTorrcOnSIGHUP option for
+      controllers to prevent SIGHUP from reloading the configuration.
+      Fixes bug 856.
+    - Return circuit purposes in response to GETINFO circuit-status.
+      Fixes bug 858.
+    - Serve the latest v3 networkstatus consensus via the control
+      port. Use "getinfo dir/status-vote/current/consensus" to fetch it.
+    - Add a "GETINFO /status/bootstrap-phase" controller option, so the
+      controller can query our current bootstrap state in case it attaches
+      partway through and wants to catch up.
+    - Provide circuit purposes along with circuit events to the controller.
+
+  o Minor features (tools):
+    - Do not have tor-resolve automatically refuse all .onion addresses;
+      if AutomapHostsOnResolve is set in your torrc, this will work fine.
+    - Add a -p option to tor-resolve for specifying the SOCKS port: some
+      people find host:port too confusing.
+    - Print the SOCKS5 error message string as well as the error code
+      when a tor-resolve request fails. Patch from Jacob.
+
+  o Minor bugfixes (memory and resource management):
+    - Clients no longer cache certificates for authorities they do not
+      recognize. Bugfix on 0.2.0.9-alpha.
+    - Do not use C's stdio library for writing to log files. This will
+      improve logging performance by a minute amount, and will stop
+      leaking fds when our disk is full. Fixes bug 861.
+    - Stop erroneous use of O_APPEND in cases where we did not in fact
+      want to re-seek to the end of a file before every last write().
+    - Fix a small alignment and memory-wasting bug on buffer chunks.
+      Spotted by rovv.
+    - Add a malloc_good_size implementation to OpenBSD_malloc_linux.c,
+      to avoid unused RAM in buffer chunks and memory pools.
+    - Reduce the default smartlist size from 32 to 16; it turns out that
+      most smartlists hold around 8-12 elements tops.
+    - Make dumpstats() log the fullness and size of openssl-internal
+      buffers.
+    - If the user has applied the experimental SSL_MODE_RELEASE_BUFFERS
+      patch to their OpenSSL, turn it on to save memory on servers. This
+      patch will (with any luck) get included in a mainline distribution
+      before too long.
+    - Fix a memory leak when v3 directory authorities load their keys
+      and cert from disk. Bugfix on 0.2.0.1-alpha.
+    - Stop using malloc_usable_size() to use more area than we had
+      actually allocated: it was safe, but made valgrind really unhappy.
+    - Make the assert_circuit_ok() function work correctly on circuits that
+      have already been marked for close.
+    - Fix uninitialized size field for memory area allocation: may improve
+      memory performance during directory parsing.
+
+  o Minor bugfixes (clients):
+    - Stop reloading the router list from disk for no reason when we
+      run out of reachable directory mirrors. Once upon a time reloading
+      it would set the 'is_running' flag back to 1 for them. It hasn't
+      done that for a long time.
+    - When we had picked an exit node for a connection, but marked it as
+      "optional", and it turned out we had no onion key for the exit,
+      stop wanting that exit and try again. This situation may not
+      be possible now, but will probably become feasible with proposal
+      158. Spotted by rovv. Fixes another case of bug 752.
+    - Fix a bug in address parsing that was preventing bridges or hidden
+      service targets from being at IPv6 addresses.
+    - Do not remove routers as too old if we do not have any consensus
+      document. Bugfix on 0.2.0.7-alpha.
+    - When an exit relay resolves a stream address to a local IP address,
+      do not just keep retrying that same exit relay over and
+      over. Instead, just close the stream. Addresses bug 872. Bugfix
+      on 0.2.0.32. Patch from rovv.
+    - Made Tor a little less aggressive about deleting expired
+      certificates. Partial fix for bug 854.
+    - Treat duplicate certificate fetches as failures, so that we do
+      not try to re-fetch an expired certificate over and over and over.
+    - Do not say we're fetching a certificate when we'll in fact skip it
+      because of a pending download.
+    - If we have correct permissions on $datadir, we complain to stdout
+      and fail to start. But dangerous permissions on
+      $datadir/cached-status/ would cause us to open a log and complain
+      there. Now complain to stdout and fail to start in both cases. Fixes
+      bug 820, reported by seeess.
+
+  o Minor bugfixes (bridges):
+    - When we made bridge authorities stop serving bridge descriptors over
+      unencrypted links, we also broke DirPort reachability testing for
+      bridges. So bridges with a non-zero DirPort were printing spurious
+      warns to their logs. Bugfix on 0.2.0.16-alpha. Fixes bug 709.
+    - Don't allow a bridge to publish its router descriptor to a
+      non-bridge directory authority. Fixes part of bug 932.
+    - When we change to or from being a bridge, reset our counts of
+      client usage by country. Fixes bug 932.
+
+  o Minor bugfixes (relays):
+    - Log correct error messages for DNS-related network errors on
+      Windows.
+    - Actually return -1 in the error case for read_bandwidth_usage().
+      Harmless bug, since we currently don't care about the return value
+      anywhere. Bugfix on 0.2.0.9-alpha.
+    - Provide a more useful log message if bug 977 (related to buffer
+      freelists) ever reappears, and do not crash right away.
+    - We were already rejecting relay begin cells with destination port
+      of 0. Now also reject extend cells with destination port or address
+      of 0. Suggested by lark.
+    - When we can't transmit a DNS request due to a network error, retry
+      it after a while, and eventually transmit a failing response to
+      the RESOLVED cell. Bugfix on 0.1.2.5-alpha.
+    - Solve a bug that kept hardware crypto acceleration from getting
+      enabled when accounting was turned on. Fixes bug 907. Bugfix on
+      0.0.9pre6.
+    - When a canonical connection appears later in our internal list
+      than a noncanonical one for a given OR ID, always use the
+      canonical one. Bugfix on 0.2.0.12-alpha. Fixes bug 805.
+      Spotted by rovv.
+    - Avoid some nasty corner cases in the logic for marking connections
+      as too old or obsolete or noncanonical for circuits. Partial
+      bugfix on bug 891.
+    - Fix another interesting corner-case of bug 891 spotted by rovv:
+      Previously, if two hosts had different amounts of clock drift, and
+      one of them created a new connection with just the wrong timing,
+      the other might decide to deprecate the new connection erroneously.
+      Bugfix on 0.1.1.13-alpha.
+    - If one win32 nameserver fails to get added, continue adding the
+      rest, and don't automatically fail.
+    - Fix a bug where an unreachable relay would establish enough
+      reachability testing circuits to do a bandwidth test -- if
+      we already have a connection to the middle hop of the testing
+      circuit, then it could establish the last hop by using the existing
+      connection. Bugfix on 0.1.2.2-alpha, exposed when we made testing
+      circuits no longer use entry guards in 0.2.1.3-alpha.
+
+  o Minor bugfixes (directory authorities):
+    - Limit uploaded directory documents to be 16M rather than 500K.
+      The directory authorities were refusing v3 consensus votes from
+      other authorities, since the votes are now 504K. Fixes bug 959;
+      bugfix on 0.0.2pre17 (where we raised it from 50K to 500K ;).
+    - Directory authorities should never send a 503 "busy" response to
+      requests for votes or keys. Bugfix on 0.2.0.8-alpha; exposed by
+      bug 959.
+    - Fix code so authorities _actually_ send back X-Descriptor-Not-New
+      headers. Bugfix on 0.2.0.10-alpha.
+
+  o Minor bugfixes (hidden services):
+    - When we can't find an intro key for a v2 hidden service descriptor,
+      fall back to the v0 hidden service descriptor and log a bug message.
+      Workaround for bug 1024.
+    - In very rare situations new hidden service descriptors were
+      published earlier than 30 seconds after the last change to the
+      service. (We currently think that a hidden service descriptor
+      that's been stable for 30 seconds is worth publishing.)
+    - If a hidden service sends us an END cell, do not consider
+      retrying the connection; just close it. Patch from rovv.
+    - If we are not using BEGIN_DIR cells, don't attempt to contact hidden
+      service directories if they have no advertised dir port. Bugfix
+      on 0.2.0.10-alpha.
+
+  o Minor bugfixes (tools):
+    - In the torify(1) manpage, mention that tsocks will leak your
+      DNS requests.
+
+  o Minor bugfixes (controllers):
+    - If the controller claimed responsibility for a stream, but that
+      stream never finished making its connection, it would live
+      forever in circuit_wait state. Now we close it after SocksTimeout
+      seconds. Bugfix on 0.1.2.7-alpha; reported by Mike Perry.
+    - Make DNS resolved controller events into "CLOSED", not
+      "FAILED". Bugfix on 0.1.2.5-alpha. Fix by Robert Hogan. Resolves
+      bug 807.
+    - The control port would close the connection before flushing long
+      replies, such as the network consensus, if a QUIT command was issued
+      before the reply had completed. Now, the control port flushes all
+      pending replies before closing the connection. Also fix a spurious
+      warning when a QUIT command is issued after a malformed or rejected
+      AUTHENTICATE command, but before the connection was closed. Patch
+      by Marcus Griep. Fixes bugs 1015 and 1016.
+    - Fix a bug that made stream bandwidth get misreported to the
+      controller.
+
+  o Deprecated and removed features:
+    - The old "tor --version --version" command, which would print out
+      the subversion "Id" of most of the source files, is now removed. It
+      turned out to be less useful than we'd expected, and harder to
+      maintain.
+    - RedirectExits has been removed. It was deprecated since
+      0.2.0.3-alpha.
+    - Finally remove deprecated "EXTENDED_FORMAT" controller feature. It
+      has been called EXTENDED_EVENTS since 0.1.2.4-alpha.
+    - Cell pools are now always enabled; --disable-cell-pools is ignored.
+    - Directory mirrors no longer fetch the v1 directory or
+      running-routers files. They are obsolete, and nobody asks for them
+      anymore. This is the first step to making v1 authorities obsolete.
+    - Take out the TestVia config option, since it was a workaround for
+      a bug that was fixed in Tor 0.1.1.21.
+    - Mark RendNodes, RendExcludeNodes, HiddenServiceNodes, and
+      HiddenServiceExcludeNodes as obsolete: they never worked properly,
+      and nobody seems to be using them. Fixes bug 754. Bugfix on
+      0.1.0.1-rc. Patch from Christian Wilms.
+    - Remove all backward-compatibility code for relays running
+      versions of Tor so old that they no longer work at all on the
+      Tor network.
+
+  o Code simplifications and refactoring:
+    - Tool-assisted documentation cleanup. Nearly every function or
+      static variable in Tor should have its own documentation now.
+    - Rename the confusing or_is_obsolete field to the more appropriate
+      is_bad_for_new_circs, and move it to or_connection_t where it
+      belongs.
+    - Move edge-only flags from connection_t to edge_connection_t: not
+      only is this better coding, but on machines of plausible alignment,
+      it should save 4-8 bytes per connection_t. "Every little bit helps."
+    - Rename ServerDNSAllowBrokenResolvConf to ServerDNSAllowBrokenConfig
+      for consistency; keep old option working for backward compatibility.
+    - Simplify the code for finding connections to use for a circuit.
+    - Revise the connection_new functions so that a more typesafe variant
+      exists. This will work better with Coverity, and let us find any
+      actual mistakes we're making here.
+    - Refactor unit testing logic so that dmalloc can be used sensibly
+      with unit tests to check for memory leaks.
+    - Move all hidden-service related fields from connection and circuit
+      structure to substructures: this way they won't eat so much memory.
+    - Squeeze 2-5% out of client performance (according to oprofile) by
+      improving the implementation of some policy-manipulation functions.
+    - Change the implementation of ExcludeNodes and ExcludeExitNodes to
+      be more efficient. Formerly it was quadratic in the number of
+      servers; now it should be linear. Fixes bug 509.
+    - Save 16-22 bytes per open circuit by moving the n_addr, n_port,
+      and n_conn_id_digest fields into a separate structure that's
+      only needed when the circuit has not yet attached to an n_conn.
+    - Optimize out calls to time(NULL) that occur for every IO operation,
+      or for every cell. On systems like Windows where time() is a
+      slow syscall, this fix will be slightly helpful.
+
+
 Changes in version 0.2.0.35 - 2009-06-24
   o Security fix:
     - Avoid crashing in the presence of certain malformed descriptors.
-- 
1.5.6.5