ChangeLog
上传用户:awang829
上传日期:2019-07-14
资源大小:2356k
文件大小:411k
源码类别:

网络

开发平台:

Unix_Linux

  1. Changes in version 0.2.1.20 - 2009-10-15
  2.   o Major bugfixes:
  3.     - Send circuit or stream sendme cells when our window has decreased
  4.       by 100 cells, not when it has decreased by 101 cells. Bug uncovered
  5.       by Karsten when testing the "reduce circuit window" performance
  6.       patch. Bugfix on the 54th commit on Tor -- from July 2002,
  7.       before the release of Tor 0.0.0. This is the new winner of the
  8.       oldest-bug prize.
  9.     - Fix a remotely triggerable memory leak when a consensus document
  10.       contains more than one signature from the same voter. Bugfix on
  11.       0.2.0.3-alpha.
  12.     - Avoid segfault in rare cases when finishing an introduction circuit
  13.       as a client and finding out that we don't have an introduction key
  14.       for it. Fixes bug 1073. Reported by Aaron Swartz.
  15.   o Major features:
  16.     - Tor now reads the "circwindow" parameter out of the consensus,
  17.       and uses that value for its circuit package window rather than the
  18.       default of 1000 cells. Begins the implementation of proposal 168.
  19.   o New directory authorities:
  20.     - Set up urras (run by Jacob Appelbaum) as the seventh v3 directory
  21.       authority.
  22.     - Move moria1 and tonga to alternate IP addresses.
  23.   o Minor bugfixes:
  24.     - Fix a signed/unsigned compile warning in 0.2.1.19.
  25.     - Fix possible segmentation fault on directory authorities. Bugfix on
  26.       0.2.1.14-rc.
  27.     - Fix an extremely rare infinite recursion bug that could occur if
  28.       we tried to log a message after shutting down the log subsystem.
  29.       Found by Matt Edman. Bugfix on 0.2.0.16-alpha.
  30.     - Fix an obscure bug where hidden services on 64-bit big-endian
  31.       systems might mis-read the timestamp in v3 introduce cells, and
  32.       refuse to connect back to the client. Discovered by "rotor".
  33.       Bugfix on 0.2.1.6-alpha.
  34.     - We were triggering a CLOCK_SKEW controller status event whenever
  35.       we connect via the v2 connection protocol to any relay that has
  36.       a wrong clock. Instead, we should only inform the controller when
  37.       it's a trusted authority that claims our clock is wrong. Bugfix
  38.       on 0.2.0.20-rc; starts to fix bug 1074. Reported by SwissTorExit.
  39.     - We were telling the controller about CHECKING_REACHABILITY and
  40.       REACHABILITY_FAILED status events whenever we launch a testing
  41.       circuit or notice that one has failed. Instead, only tell the
  42.       controller when we want to inform the user of overall success or
  43.       overall failure. Bugfix on 0.1.2.6-alpha. Fixes bug 1075. Reported
  44.       by SwissTorExit.
  45.     - Don't warn when we're using a circuit that ends with a node
  46.       excluded in ExcludeExitNodes, but the circuit is not used to access
  47.       the outside world. This should help fix bug 1090. Bugfix on
  48.       0.2.1.6-alpha.
  49.     - Work around a small memory leak in some versions of OpenSSL that
  50.       stopped the memory used by the hostname TLS extension from being
  51.       freed.
  52.   o Minor features:
  53.     - Add a "getinfo status/accepted-server-descriptor" controller
  54.       command, which is the recommended way for controllers to learn
  55.       whether our server descriptor has been successfully received by at
  56.       least on directory authority. Un-recommend good-server-descriptor
  57.       getinfo and status events until we have a better design for them.
  58. Changes in version 0.2.1.19 - 2009-07-28
  59.   Tor 0.2.1.19 fixes a major bug with accessing and providing hidden
  60.   services on Tor 0.2.1.3-alpha through 0.2.1.18.
  61.   o Major bugfixes:
  62.     - Make accessing hidden services on 0.2.1.x work right again.
  63.       Bugfix on 0.2.1.3-alpha; workaround for bug 1038. Diagnosis and
  64.       part of patch provided by "optimist".
  65.   o Minor features:
  66.     - When a relay/bridge is writing out its identity key fingerprint to
  67.       the "fingerprint" file and to its logs, write it without spaces. Now
  68.       it will look like the fingerprints in our bridges documentation,
  69.       and confuse fewer users.
  70.   o Minor bugfixes:
  71.     - Relays no longer publish a new server descriptor if they change
  72.       their MaxAdvertisedBandwidth config option but it doesn't end up
  73.       changing their advertised bandwidth numbers. Bugfix on 0.2.0.28-rc;
  74.       fixes bug 1026. Patch from Sebastian.
  75.     - Avoid leaking memory every time we get a create cell but we have
  76.       so many already queued that we refuse it. Bugfix on 0.2.0.19-alpha;
  77.       fixes bug 1034. Reported by BarkerJr.
  78. Changes in version 0.2.1.18 - 2009-07-24
  79.   Tor 0.2.1.18 lays the foundations for performance improvements,
  80.   adds status events to help users diagnose bootstrap problems, adds
  81.   optional authentication/authorization for hidden services, fixes a
  82.   variety of potential anonymity problems, and includes a huge pile of
  83.   other features and bug fixes.
  84.   o Build fixes:
  85.     - Add LIBS=-lrt to Makefile.am so the Tor RPMs use a static libevent.
  86. Changes in version 0.2.1.17-rc - 2009-07-07
  87.   Tor 0.2.1.17-rc marks the fourth -- and hopefully last -- release
  88.   candidate for the 0.2.1.x series. It lays the groundwork for further
  89.   client performance improvements, and also fixes a big bug with directory
  90.   authorities that were causing them to assign Guard and Stable flags
  91.   poorly.
  92.   The Windows bundles also finally include the geoip database that we
  93.   thought we'd been shipping since 0.2.0.x (oops), and the OS X bundles
  94.   should actually install Torbutton rather than giving you a cryptic
  95.   failure message (oops).
  96.   o Major features:
  97.     - Clients now use the bandwidth values in the consensus, rather than
  98.       the bandwidth values in each relay descriptor. This approach opens
  99.       the door to more accurate bandwidth estimates once the directory
  100.       authorities start doing active measurements. Implements more of
  101.       proposal 141.
  102.   o Major bugfixes:
  103.     - When Tor clients restart after 1-5 days, they discard all their
  104.       cached descriptors as too old, but they still use the cached
  105.       consensus document. This approach is good for robustness, but
  106.       bad for performance: since they don't know any bandwidths, they
  107.       end up choosing at random rather than weighting their choice by
  108.       speed. Fixed by the above feature of putting bandwidths in the
  109.       consensus. Bugfix on 0.2.0.x.
  110.     - Directory authorities were neglecting to mark relays down in their
  111.       internal histories if the relays fall off the routerlist without
  112.       ever being found unreachable. So there were relays in the histories
  113.       that haven't been seen for eight months, and are listed as being
  114.       up for eight months. This wreaked havoc on the "median wfu"
  115.       and "median mtbf" calculations, in turn making Guard and Stable
  116.       flags very wrong, hurting network performance. Fixes bugs 696 and
  117.       969. Bugfix on 0.2.0.6-alpha.
  118.   o Minor bugfixes:
  119.     - Serve the DirPortFrontPage page even when we have been approaching
  120.       our quotas recently. Fixes bug 1013; bugfix on 0.2.1.8-alpha.
  121.     - The control port would close the connection before flushing long
  122.       replies, such as the network consensus, if a QUIT command was issued
  123.       before the reply had completed. Now, the control port flushes all
  124.       pending replies before closing the connection. Also fixed a spurious
  125.       warning when a QUIT command is issued after a malformed or rejected
  126.       AUTHENTICATE command, but before the connection was closed. Patch
  127.       by Marcus Griep. Bugfix on 0.2.0.x; fixes bugs 1015 and 1016.
  128.     - When we can't find an intro key for a v2 hidden service descriptor,
  129.       fall back to the v0 hidden service descriptor and log a bug message.
  130.       Workaround for bug 1024.
  131.     - Fix a log message that did not respect the SafeLogging option.
  132.       Resolves bug 1027.
  133.   o Minor features:
  134.     - If we're a relay and we change our IP address, be more verbose
  135.       about the reason that made us change. Should help track down
  136.       further bugs for relays on dynamic IP addresses.
  137. Changes in version 0.2.0.35 - 2009-06-24
  138.   o Security fix:
  139.     - Avoid crashing in the presence of certain malformed descriptors.
  140.       Found by lark, and by automated fuzzing.
  141.     - Fix an edge case where a malicious exit relay could convince a
  142.       controller that the client's DNS question resolves to an internal IP
  143.       address. Bug found and fixed by "optimist"; bugfix on 0.1.2.8-beta.
  144.   o Major bugfixes:
  145.     - Finally fix the bug where dynamic-IP relays disappear when their
  146.       IP address changes: directory mirrors were mistakenly telling
  147.       them their old address if they asked via begin_dir, so they
  148.       never got an accurate answer about their new address, so they
  149.       just vanished after a day. For belt-and-suspenders, relays that
  150.       don't set Address in their config now avoid using begin_dir for
  151.       all direct connections. Should fix bugs 827, 883, and 900.
  152.     - Fix a timing-dependent, allocator-dependent, DNS-related crash bug
  153.       that would occur on some exit nodes when DNS failures and timeouts
  154.       occurred in certain patterns. Fix for bug 957.
  155.   o Minor bugfixes:
  156.     - When starting with a cache over a few days old, do not leak
  157.       memory for the obsolete router descriptors in it. Bugfix on
  158.       0.2.0.33; fixes bug 672.
  159.     - Hidden service clients didn't use a cached service descriptor that
  160.       was older than 15 minutes, but wouldn't fetch a new one either,
  161.       because there was already one in the cache. Now, fetch a v2
  162.       descriptor unless the same descriptor was added to the cache within
  163.       the last 15 minutes. Fixes bug 997; reported by Marcus Griep.
  164. Changes in version 0.2.1.16-rc - 2009-06-20
  165.   Tor 0.2.1.16-rc speeds up performance for fast exit relays, and fixes
  166.   a bunch of minor bugs.
  167.   o Security fixes:
  168.     - Fix an edge case where a malicious exit relay could convince a
  169.       controller that the client's DNS question resolves to an internal IP
  170.       address. Bug found and fixed by "optimist"; bugfix on 0.1.2.8-beta.
  171.   o Major performance improvements (on 0.2.0.x):
  172.     - Disable and refactor some debugging checks that forced a linear scan
  173.       over the whole server-side DNS cache. These accounted for over 50%
  174.       of CPU time on a relatively busy exit node's gprof profile. Found
  175.       by Jacob.
  176.     - Disable some debugging checks that appeared in exit node profile
  177.       data.
  178.   o Minor features:
  179.     - Update to the "June 3 2009" ip-to-country file.
  180.     - Do not have tor-resolve automatically refuse all .onion addresses;
  181.       if AutomapHostsOnResolve is set in your torrc, this will work fine.
  182.   o Minor bugfixes (on 0.2.0.x):
  183.     - Log correct error messages for DNS-related network errors on
  184.       Windows.
  185.     - Fix a race condition that could cause crashes or memory corruption
  186.       when running as a server with a controller listening for log
  187.       messages.
  188.     - Avoid crashing when we have a policy specified in a DirPolicy or
  189.       SocksPolicy or ReachableAddresses option with ports set on it,
  190.       and we re-load the policy. May fix bug 996.
  191.     - Hidden service clients didn't use a cached service descriptor that
  192.       was older than 15 minutes, but wouldn't fetch a new one either,
  193.       because there was already one in the cache. Now, fetch a v2
  194.       descriptor unless the same descriptor was added to the cache within
  195.       the last 15 minutes. Fixes bug 997; reported by Marcus Griep.
  196.   o Minor bugfixes (on 0.2.1.x):
  197.     - Don't warn users about low port and hibernation mix when they
  198.       provide a *ListenAddress directive to fix that. Bugfix on
  199.       0.2.1.15-rc.
  200.     - When switching back and forth between bridge mode, do not start
  201.       gathering GeoIP data until two hours have passed.
  202.     - Do not complain that the user has requested an excluded node as
  203.       an exit when the node is not really an exit. This could happen
  204.       because the circuit was for testing, or an introduction point.
  205.       Fix for bug 984.
  206. Changes in version 0.2.1.15-rc - 2009-05-25
  207.   Tor 0.2.1.15-rc marks the second release candidate for the 0.2.1.x
  208.   series. It fixes a major bug on fast exit relays, as well as a variety
  209.   of more minor bugs.
  210.   o Major bugfixes (on 0.2.0.x):
  211.     - Fix a timing-dependent, allocator-dependent, DNS-related crash bug
  212.       that would occur on some exit nodes when DNS failures and timeouts
  213.       occurred in certain patterns. Fix for bug 957.
  214.   o Minor bugfixes (on 0.2.0.x):
  215.     - Actually return -1 in the error case for read_bandwidth_usage().
  216.       Harmless bug, since we currently don't care about the return value
  217.       anywhere. Bugfix on 0.2.0.9-alpha.
  218.     - Provide a more useful log message if bug 977 (related to buffer
  219.       freelists) ever reappears, and do not crash right away.
  220.     - Fix an assertion failure on 64-bit platforms when we allocated
  221.       memory right up to the end of a memarea, then realigned the memory
  222.       one step beyond the end. Fixes a possible cause of bug 930.
  223.     - Protect the count of open sockets with a mutex, so we can't
  224.       corrupt it when two threads are closing or opening sockets at once.
  225.       Fix for bug 939. Bugfix on 0.2.0.1-alpha.
  226.     - Don't allow a bridge to publish its router descriptor to a
  227.       non-bridge directory authority. Fixes part of bug 932.
  228.     - When we change to or from being a bridge, reset our counts of
  229.       client usage by country. Fixes bug 932.
  230.     - Fix a bug that made stream bandwidth get misreported to the
  231.       controller.
  232.     - Stop using malloc_usable_size() to use more area than we had
  233.       actually allocated: it was safe, but made valgrind really unhappy.
  234.     - Fix a memory leak when v3 directory authorities load their keys
  235.       and cert from disk. Bugfix on 0.2.0.1-alpha.
  236.   o Minor bugfixes (on 0.2.1.x):
  237.     - Fix use of freed memory when deciding to mark a non-addable
  238.       descriptor as never-downloadable. Bugfix on 0.2.1.9-alpha.
  239. Changes in version 0.2.1.14-rc - 2009-04-12
  240.   Tor 0.2.1.14-rc marks the first release candidate for the 0.2.1.x
  241.   series. It begins fixing some major performance problems, and also
  242.   finally addresses the bug that was causing relays on dynamic IP
  243.   addresses to fall out of the directory.
  244.   o Major features:
  245.     - Clients replace entry guards that were chosen more than a few months
  246.       ago. This change should significantly improve client performance,
  247.       especially once more people upgrade, since relays that have been
  248.       a guard for a long time are currently overloaded.
  249.   o Major bugfixes (on 0.2.0):
  250.     - Finally fix the bug where dynamic-IP relays disappear when their
  251.       IP address changes: directory mirrors were mistakenly telling
  252.       them their old address if they asked via begin_dir, so they
  253.       never got an accurate answer about their new address, so they
  254.       just vanished after a day. For belt-and-suspenders, relays that
  255.       don't set Address in their config now avoid using begin_dir for
  256.       all direct connections. Should fix bugs 827, 883, and 900.
  257.     - Relays were falling out of the networkstatus consensus for
  258.       part of a day if they changed their local config but the
  259.       authorities discarded their new descriptor as "not sufficiently
  260.       different". Now directory authorities accept a descriptor as changed
  261.       if bandwidthrate or bandwidthburst changed. Partial fix for bug 962;
  262.       patch by Sebastian.
  263.     - Avoid crashing in the presence of certain malformed descriptors.
  264.       Found by lark, and by automated fuzzing.
  265.   o Minor features:
  266.     - When generating circuit events with verbose nicknames for
  267.       controllers, try harder to look up nicknames for routers on a
  268.       circuit. (Previously, we would look in the router descriptors we had
  269.       for nicknames, but not in the consensus.) Partial fix for bug 941.
  270.     - If the bridge config line doesn't specify a port, assume 443.
  271.       This makes bridge lines a bit smaller and easier for users to
  272.       understand.
  273.     - Raise the minimum bandwidth to be a relay from 20000 bytes to 20480
  274.       bytes (aka 20KB/s), to match our documentation. Also update
  275.       directory authorities so they always assign the Fast flag to relays
  276.       with 20KB/s of capacity. Now people running relays won't suddenly
  277.       find themselves not seeing any use, if the network gets faster
  278.       on average.
  279.     - Update to the "April 3 2009" ip-to-country file.
  280.   o Minor bugfixes:
  281.     - Avoid trying to print raw memory to the logs when we decide to
  282.       give up on downloading a given relay descriptor. Bugfix on
  283.       0.2.1.9-alpha.
  284.     - In tor-resolve, when the Tor client to use is specified by
  285.       <hostname>:<port>, actually use the specified port rather than
  286.       defaulting to 9050. Bugfix on 0.2.1.6-alpha.
  287.     - Make directory usage recording work again. Bugfix on 0.2.1.6-alpha.
  288.     - When starting with a cache over a few days old, do not leak
  289.       memory for the obsolete router descriptors in it. Bugfix on
  290.       0.2.0.33.
  291.     - Avoid double-free on list of successfully uploaded hidden
  292.       service discriptors. Fix for bug 948. Bugfix on 0.2.1.6-alpha.
  293.     - Change memarea_strndup() implementation to work even when
  294.       duplicating a string at the end of a page. This bug was
  295.       harmless for now, but could have meant crashes later. Fix by
  296.       lark. Bugfix on 0.2.1.1-alpha.
  297.     - Limit uploaded directory documents to be 16M rather than 500K.
  298.       The directory authorities were refusing v3 consensus votes from
  299.       other authorities, since the votes are now 504K. Fixes bug 959;
  300.       bugfix on 0.0.2pre17 (where we raised it from 50K to 500K ;).
  301.     - Directory authorities should never send a 503 "busy" response to
  302.       requests for votes or keys. Bugfix on 0.2.0.8-alpha; exposed by
  303.       bug 959.
  304. Changes in version 0.2.1.13-alpha - 2009-03-09
  305.   Tor 0.2.1.13-alpha includes another big pile of minor bugfixes and
  306.   cleanups. We're finally getting close to a release candidate.
  307.   o Major bugfixes:
  308.     - Correctly update the list of which countries we exclude as
  309.       exits, when the GeoIP file is loaded or reloaded. Diagnosed by
  310.       lark. Bugfix on 0.2.1.6-alpha.
  311.   o Minor bugfixes (on 0.2.0.x and earlier):
  312.     - Automatically detect MacOSX versions earlier than 10.4.0, and
  313.       disable kqueue from inside Tor when running with these versions.
  314.       We previously did this from the startup script, but that was no
  315.       help to people who didn't use the startup script. Resolves bug 863.
  316.     - When we had picked an exit node for a connection, but marked it as
  317.       "optional", and it turned out we had no onion key for the exit,
  318.       stop wanting that exit and try again. This situation may not
  319.       be possible now, but will probably become feasible with proposal
  320.       158. Spotted by rovv. Fixes another case of bug 752.
  321.     - Clients no longer cache certificates for authorities they do not
  322.       recognize. Bugfix on 0.2.0.9-alpha.
  323.     - When we can't transmit a DNS request due to a network error, retry
  324.       it after a while, and eventually transmit a failing response to
  325.       the RESOLVED cell. Bugfix on 0.1.2.5-alpha.
  326.     - If the controller claimed responsibility for a stream, but that
  327.       stream never finished making its connection, it would live
  328.       forever in circuit_wait state. Now we close it after SocksTimeout
  329.       seconds. Bugfix on 0.1.2.7-alpha; reported by Mike Perry.
  330.     - Drop begin cells to a hidden service if they come from the middle
  331.       of a circuit. Patch from lark.
  332.     - When we erroneously receive two EXTEND cells for the same circuit
  333.       ID on the same connection, drop the second. Patch from lark.
  334.     - Fix a crash that occurs on exit nodes when a nameserver request
  335.       timed out. Bugfix on 0.1.2.1-alpha; our CLEAR debugging code had
  336.       been suppressing the bug since 0.1.2.10-alpha. Partial fix for
  337.       bug 929.
  338.     - Do not assume that a stack-allocated character array will be
  339.       64-bit aligned on platforms that demand that uint64_t access is
  340.       aligned. Possible fix for bug 604.
  341.     - Parse dates and IPv4 addresses in a locale- and libc-independent
  342.       manner, to avoid platform-dependent behavior on malformed input.
  343.     - Build correctly when configured to build outside the main source
  344.       path. Patch from Michael Gold.
  345.     - We were already rejecting relay begin cells with destination port
  346.       of 0. Now also reject extend cells with destination port or address
  347.       of 0. Suggested by lark.
  348.   o Minor bugfixes (on 0.2.1.x):
  349.     - Don't re-extend introduction circuits if we ran out of RELAY_EARLY
  350.       cells. Bugfix on 0.2.1.3-alpha. Fixes more of bug 878.
  351.     - If we're an exit node, scrub the IP address to which we are exiting
  352.       in the logs. Bugfix on 0.2.1.8-alpha.
  353.   o Minor features:
  354.     - On Linux, use the prctl call to re-enable core dumps when the user
  355.       is option is set.
  356.     - New controller event NEWCONSENSUS that lists the networkstatus
  357.       lines for every recommended relay. Now controllers like Torflow
  358.       can keep up-to-date on which relays they should be using.
  359.     - Update to the "February 26 2009" ip-to-country file.
  360. Changes in version 0.2.0.34 - 2009-02-08
  361.   Tor 0.2.0.34 features several more security-related fixes. You should
  362.   upgrade, especially if you run an exit relay (remote crash) or a
  363.   directory authority (remote infinite loop), or you're on an older
  364.   (pre-XP) or not-recently-patched Windows (remote exploit).
  365.   This release marks end-of-life for Tor 0.1.2.x. Those Tor versions
  366.   have many known flaws, and nobody should be using them. You should
  367.   upgrade. If you're using a Linux or BSD and its packages are obsolete,
  368.   stop using those packages and upgrade anyway.
  369.   o Security fixes:
  370.     - Fix an infinite-loop bug on handling corrupt votes under certain
  371.       circumstances. Bugfix on 0.2.0.8-alpha.
  372.     - Fix a temporary DoS vulnerability that could be performed by
  373.       a directory mirror. Bugfix on 0.2.0.9-alpha; reported by lark.
  374.     - Avoid a potential crash on exit nodes when processing malformed
  375.       input. Remote DoS opportunity. Bugfix on 0.2.0.33.
  376.     - Do not accept incomplete ipv4 addresses (like 192.168.0) as valid.
  377.       Spec conformance issue. Bugfix on Tor 0.0.2pre27.
  378.   o Minor bugfixes:
  379.     - Fix compilation on systems where time_t is a 64-bit integer.
  380.       Patch from Matthias Drochner.
  381.     - Don't consider expiring already-closed client connections. Fixes
  382.       bug 893. Bugfix on 0.0.2pre20.
  383. Changes in version 0.2.1.12-alpha - 2009-02-08
  384.   Tor 0.2.1.12-alpha features several more security-related fixes. You
  385.   should upgrade, especially if you run an exit relay (remote crash) or
  386.   a directory authority (remote infinite loop), or you're on an older
  387.   (pre-XP) or not-recently-patched Windows (remote exploit). It also
  388.   includes a big pile of minor bugfixes and cleanups.
  389.   o Security fixes:
  390.     - Fix an infinite-loop bug on handling corrupt votes under certain
  391.       circumstances. Bugfix on 0.2.0.8-alpha.
  392.     - Fix a temporary DoS vulnerability that could be performed by
  393.       a directory mirror. Bugfix on 0.2.0.9-alpha; reported by lark.
  394.     - Avoid a potential crash on exit nodes when processing malformed
  395.       input. Remote DoS opportunity. Bugfix on 0.2.1.7-alpha.
  396.   o Minor bugfixes:
  397.     - Let controllers actually ask for the "clients_seen" event for
  398.       getting usage summaries on bridge relays. Bugfix on 0.2.1.10-alpha;
  399.       reported by Matt Edman.
  400.     - Fix a compile warning on OSX Panther. Fixes bug 913; bugfix against
  401.       0.2.1.11-alpha.
  402.     - Fix a bug in address parsing that was preventing bridges or hidden
  403.       service targets from being at IPv6 addresses.
  404.     - Solve a bug that kept hardware crypto acceleration from getting
  405.       enabled when accounting was turned on. Fixes bug 907. Bugfix on
  406.       0.0.9pre6.
  407.     - Remove a bash-ism from configure.in to build properly on non-Linux
  408.       platforms. Bugfix on 0.2.1.1-alpha.
  409.     - Fix code so authorities _actually_ send back X-Descriptor-Not-New
  410.       headers. Bugfix on 0.2.0.10-alpha.
  411.     - Don't consider expiring already-closed client connections. Fixes
  412.       bug 893. Bugfix on 0.0.2pre20.
  413.     - Fix another interesting corner-case of bug 891 spotted by rovv:
  414.       Previously, if two hosts had different amounts of clock drift, and
  415.       one of them created a new connection with just the wrong timing,
  416.       the other might decide to deprecate the new connection erroneously.
  417.       Bugfix on 0.1.1.13-alpha.
  418.     - Resolve a very rare crash bug that could occur when the user forced
  419.       a nameserver reconfiguration during the middle of a nameserver
  420.       probe. Fixes bug 526. Bugfix on 0.1.2.1-alpha.
  421.     - Support changing value of ServerDNSRandomizeCase during SIGHUP.
  422.       Bugfix on 0.2.1.7-alpha.
  423.     - If we're using bridges and our network goes away, be more willing
  424.       to forgive our bridges and try again when we get an application
  425.       request. Bugfix on 0.2.0.x.
  426.   o Minor features:
  427.     - Support platforms where time_t is 64 bits long. (Congratulations,
  428.       NetBSD!) Patch from Matthias Drochner.
  429.     - Add a 'getinfo status/clients-seen' controller command, in case
  430.       controllers want to hear clients_seen events but connect late.
  431.   o Build changes:
  432.     - Disable GCC's strict alias optimization by default, to avoid the
  433.       likelihood of its introducing subtle bugs whenever our code violates
  434.       the letter of C99's alias rules.
  435. Changes in version 0.2.0.33 - 2009-01-21
  436.   Tor 0.2.0.33 fixes a variety of bugs that were making relays less
  437.   useful to users. It also finally fixes a bug where a relay or client
  438.   that's been off for many days would take a long time to bootstrap.
  439.   This update also fixes an important security-related bug reported by
  440.   Ilja van Sprundel. You should upgrade. (We'll send out more details
  441.   about the bug once people have had some time to upgrade.)
  442.   o Security fixes:
  443.     - Fix a heap-corruption bug that may be remotely triggerable on
  444.       some platforms. Reported by Ilja van Sprundel.
  445.   o Major bugfixes:
  446.     - When a stream at an exit relay is in state "resolving" or
  447.       "connecting" and it receives an "end" relay cell, the exit relay
  448.       would silently ignore the end cell and not close the stream. If
  449.       the client never closes the circuit, then the exit relay never
  450.       closes the TCP connection. Bug introduced in Tor 0.1.2.1-alpha;
  451.       reported by "wood".
  452.     - When sending CREATED cells back for a given circuit, use a 64-bit
  453.       connection ID to find the right connection, rather than an addr:port
  454.       combination. Now that we can have multiple OR connections between
  455.       the same ORs, it is no longer possible to use addr:port to uniquely
  456.       identify a connection.
  457.     - Bridge relays that had DirPort set to 0 would stop fetching
  458.       descriptors shortly after startup, and then briefly resume
  459.       after a new bandwidth test and/or after publishing a new bridge
  460.       descriptor. Bridge users that try to bootstrap from them would
  461.       get a recent networkstatus but would get descriptors from up to
  462.       18 hours earlier, meaning most of the descriptors were obsolete
  463.       already. Reported by Tas; bugfix on 0.2.0.13-alpha.
  464.     - Prevent bridge relays from serving their 'extrainfo' document
  465.       to anybody who asks, now that extrainfo docs include potentially
  466.       sensitive aggregated client geoip summaries. Bugfix on
  467.       0.2.0.13-alpha.
  468.     - If the cached networkstatus consensus is more than five days old,
  469.       discard it rather than trying to use it. In theory it could be
  470.       useful because it lists alternate directory mirrors, but in practice
  471.       it just means we spend many minutes trying directory mirrors that
  472.       are long gone from the network. Also discard router descriptors as
  473.       we load them if they are more than five days old, since the onion
  474.       key is probably wrong by now. Bugfix on 0.2.0.x. Fixes bug 887.
  475.   o Minor bugfixes:
  476.     - Do not mark smartlist_bsearch_idx() function as ATTR_PURE. This bug
  477.       could make gcc generate non-functional binary search code. Bugfix
  478.       on 0.2.0.10-alpha.
  479.     - Build correctly on platforms without socklen_t.
  480.     - Compile without warnings on solaris.
  481.     - Avoid potential crash on internal error during signature collection.
  482.       Fixes bug 864. Patch from rovv.
  483.     - Correct handling of possible malformed authority signing key
  484.       certificates with internal signature types. Fixes bug 880.
  485.       Bugfix on 0.2.0.3-alpha.
  486.     - Fix a hard-to-trigger resource leak when logging credential status.
  487.       CID 349.
  488.     - When we can't initialize DNS because the network is down, do not
  489.       automatically stop Tor from starting. Instead, we retry failed
  490.       dns_init() every 10 minutes, and change the exit policy to reject
  491.       *:* until one succeeds. Fixes bug 691.
  492.     - Use 64 bits instead of 32 bits for connection identifiers used with
  493.       the controller protocol, to greatly reduce risk of identifier reuse.
  494.     - When we're choosing an exit node for a circuit, and we have
  495.       no pending streams, choose a good general exit rather than one that
  496.       supports "all the pending streams". Bugfix on 0.1.1.x. Fix by rovv.
  497.     - Fix another case of assuming, when a specific exit is requested,
  498.       that we know more than the user about what hosts it allows.
  499.       Fixes one case of bug 752. Patch from rovv.
  500.     - Clip the MaxCircuitDirtiness config option to a minimum of 10
  501.       seconds. Warn the user if lower values are given in the
  502.       configuration. Bugfix on 0.1.0.1-rc. Patch by Sebastian.
  503.     - Clip the CircuitBuildTimeout to a minimum of 30 seconds. Warn the
  504.       user if lower values are given in the configuration. Bugfix on
  505.       0.1.1.17-rc. Patch by Sebastian.
  506.     - Fix a memory leak when we decline to add a v2 rendezvous descriptor to
  507.       the cache because we already had a v0 descriptor with the same ID.
  508.       Bugfix on 0.2.0.18-alpha.
  509.     - Fix a race condition when freeing keys shared between main thread
  510.       and CPU workers that could result in a memory leak. Bugfix on
  511.       0.1.0.1-rc. Fixes bug 889.
  512.     - Send a valid END cell back when a client tries to connect to a
  513.       nonexistent hidden service port. Bugfix on 0.1.2.15. Fixes bug
  514.       840. Patch from rovv.
  515.     - Check which hops rendezvous stream cells are associated with to
  516.       prevent possible guess-the-streamid injection attacks from
  517.       intermediate hops. Fixes another case of bug 446. Based on patch
  518.       from rovv.
  519.     - If a broken client asks a non-exit router to connect somewhere,
  520.       do not even do the DNS lookup before rejecting the connection.
  521.       Fixes another case of bug 619. Patch from rovv.
  522.     - When a relay gets a create cell it can't decrypt (e.g. because it's
  523.       using the wrong onion key), we were dropping it and letting the
  524.       client time out. Now actually answer with a destroy cell. Fixes
  525.       bug 904. Bugfix on 0.0.2pre8.
  526.   o Minor bugfixes (hidden services):
  527.     - Do not throw away existing introduction points on SIGHUP. Bugfix on
  528.       0.0.6pre1. Patch by Karsten. Fixes bug 874.
  529.   o Minor features:
  530.     - Report the case where all signatures in a detached set are rejected
  531.       differently than the case where there is an error handling the
  532.       detached set.
  533.     - When we realize that another process has modified our cached
  534.       descriptors, print out a more useful error message rather than
  535.       triggering an assertion. Fixes bug 885. Patch from Karsten.
  536.     - Implement the 0x20 hack to better resist DNS poisoning: set the
  537.       case on outgoing DNS requests randomly, and reject responses that do
  538.       not match the case correctly. This logic can be disabled with the
  539.       ServerDNSRamdomizeCase setting, if you are using one of the 0.3%
  540.       of servers that do not reliably preserve case in replies. See
  541.       "Increased DNS Forgery Resistance through 0x20-Bit Encoding"
  542.       for more info.
  543.     - Check DNS replies for more matching fields to better resist DNS
  544.       poisoning.
  545.     - Never use OpenSSL compression: it wastes RAM and CPU trying to
  546.       compress cells, which are basically all encrypted, compressed, or
  547.       both.
  548. Changes in version 0.2.1.11-alpha - 2009-01-20
  549.   Tor 0.2.1.11-alpha finishes fixing the "if your Tor is off for a
  550.   week it will take a long time to bootstrap again" bug. It also fixes
  551.   an important security-related bug reported by Ilja van Sprundel. You
  552.   should upgrade. (We'll send out more details about the bug once people
  553.   have had some time to upgrade.)
  554.   o Security fixes:
  555.     - Fix a heap-corruption bug that may be remotely triggerable on
  556.       some platforms. Reported by Ilja van Sprundel.
  557.   o Major bugfixes:
  558.     - Discard router descriptors as we load them if they are more than
  559.       five days old. Otherwise if Tor is off for a long time and then
  560.       starts with cached descriptors, it will try to use the onion
  561.       keys in those obsolete descriptors when building circuits. Bugfix
  562.       on 0.2.0.x. Fixes bug 887.
  563.   o Minor features:
  564.     - Try to make sure that the version of Libevent we're running with
  565.       is binary-compatible with the one we built with. May address bug
  566.       897 and others.
  567.     - Make setting ServerDNSRandomizeCase to 0 actually work. Bugfix
  568.       for bug 905. Bugfix on 0.2.1.7-alpha.
  569.     - Add a new --enable-local-appdata configuration switch to change
  570.       the default location of the datadir on win32 from APPDATA to
  571.       LOCAL_APPDATA. In the future, we should migrate to LOCAL_APPDATA
  572.       entirely. Patch from coderman.
  573.   o Minor bugfixes:
  574.     - Make outbound DNS packets respect the OutboundBindAddress setting.
  575.       Fixes the bug part of bug 798. Bugfix on 0.1.2.2-alpha.
  576.     - When our circuit fails at the first hop (e.g. we get a destroy
  577.       cell back), avoid using that OR connection anymore, and also
  578.       tell all the one-hop directory requests waiting for it that they
  579.       should fail. Bugfix on 0.2.1.3-alpha.
  580.     - In the torify(1) manpage, mention that tsocks will leak your
  581.       DNS requests.
  582. Changes in version 0.2.1.10-alpha - 2009-01-06
  583.   Tor 0.2.1.10-alpha fixes two major bugs in bridge relays (one that
  584.   would make the bridge relay not so useful if it had DirPort set to 0,
  585.   and one that could let an attacker learn a little bit of information
  586.   about the bridge's users), and a bug that would cause your Tor relay
  587.   to ignore a circuit create request it can't decrypt (rather than reply
  588.   with an error). It also fixes a wide variety of other bugs.
  589.   o Major bugfixes:
  590.     - If the cached networkstatus consensus is more than five days old,
  591.       discard it rather than trying to use it. In theory it could
  592.       be useful because it lists alternate directory mirrors, but in
  593.       practice it just means we spend many minutes trying directory
  594.       mirrors that are long gone from the network. Helps bug 887 a bit;
  595.       bugfix on 0.2.0.x.
  596.     - Bridge relays that had DirPort set to 0 would stop fetching
  597.       descriptors shortly after startup, and then briefly resume
  598.       after a new bandwidth test and/or after publishing a new bridge
  599.       descriptor. Bridge users that try to bootstrap from them would
  600.       get a recent networkstatus but would get descriptors from up to
  601.       18 hours earlier, meaning most of the descriptors were obsolete
  602.       already. Reported by Tas; bugfix on 0.2.0.13-alpha.
  603.     - Prevent bridge relays from serving their 'extrainfo' document
  604.       to anybody who asks, now that extrainfo docs include potentially
  605.       sensitive aggregated client geoip summaries. Bugfix on
  606.       0.2.0.13-alpha.
  607.   o Minor features:
  608.     - New controller event "clients_seen" to report a geoip-based summary
  609.       of which countries we've seen clients from recently. Now controllers
  610.       like Vidalia can show bridge operators that they're actually making
  611.       a difference.
  612.     - Build correctly against versions of OpenSSL 0.9.8 or later built
  613.       without support for deprecated functions.
  614.     - Update to the "December 19 2008" ip-to-country file.
  615.   o Minor bugfixes (on 0.2.0.x):
  616.     - Authorities now vote for the Stable flag for any router whose
  617.       weighted MTBF is at least 5 days, regardless of the mean MTBF.
  618.     - Do not remove routers as too old if we do not have any consensus
  619.       document. Bugfix on 0.2.0.7-alpha.
  620.     - Do not accept incomplete ipv4 addresses (like 192.168.0) as valid.
  621.       Spec conformance issue. Bugfix on Tor 0.0.2pre27.
  622.     - When an exit relay resolves a stream address to a local IP address,
  623.       do not just keep retrying that same exit relay over and
  624.       over. Instead, just close the stream. Addresses bug 872. Bugfix
  625.       on 0.2.0.32. Patch from rovv.
  626.     - If a hidden service sends us an END cell, do not consider
  627.       retrying the connection; just close it. Patch from rovv.
  628.     - When we made bridge authorities stop serving bridge descriptors over
  629.       unencrypted links, we also broke DirPort reachability testing for
  630.       bridges. So bridges with a non-zero DirPort were printing spurious
  631.       warns to their logs. Bugfix on 0.2.0.16-alpha. Fixes bug 709.
  632.     - When a relay gets a create cell it can't decrypt (e.g. because it's
  633.       using the wrong onion key), we were dropping it and letting the
  634.       client time out. Now actually answer with a destroy cell. Fixes
  635.       bug 904. Bugfix on 0.0.2pre8.
  636.     - Squeeze 2-5% out of client performance (according to oprofile) by
  637.       improving the implementation of some policy-manipulation functions.
  638.   o Minor bugfixes (on 0.2.1.x):
  639.     - Make get_interface_address() function work properly again; stop
  640.       guessing the wrong parts of our address as our address.
  641.     - Do not cannibalize a circuit if we're out of RELAY_EARLY cells to
  642.       send on that circuit. Otherwise we might violate the proposal-110
  643.       limit. Bugfix on 0.2.1.3-alpha. Partial fix for bug 878. Diagnosis
  644.       thanks to Karsten.
  645.     - When we're sending non-EXTEND cells to the first hop in a circuit,
  646.       for example to use an encrypted directory connection, we don't need
  647.       to use RELAY_EARLY cells: the first hop knows what kind of cell
  648.       it is, and nobody else can even see the cell type. Conserving
  649.       RELAY_EARLY cells makes it easier to cannibalize circuits like
  650.       this later.
  651.     - Stop logging nameserver addresses in reverse order.
  652.     - If we are retrying a directory download slowly over and over, do
  653.       not automatically give up after the 254th failure. Bugfix on
  654.       0.2.1.9-alpha.
  655.     - Resume reporting accurate "stream end" reasons to the local control
  656.       port. They were lost in the changes for Proposal 148. Bugfix on
  657.       0.2.1.9-alpha.
  658.   o Deprecated and removed features:
  659.     - The old "tor --version --version" command, which would print out
  660.       the subversion "Id" of most of the source files, is now removed. It
  661.       turned out to be less useful than we'd expected, and harder to
  662.       maintain.
  663.   o Code simplifications and refactoring:
  664.     - Change our header file guard macros to be less likely to conflict
  665.       with system headers. Adam Langley noticed that we were conflicting
  666.       with log.h on Android.
  667.     - Tool-assisted documentation cleanup. Nearly every function or
  668.       static variable in Tor should have its own documentation now.
  669. Changes in version 0.2.1.9-alpha - 2008-12-25
  670.   Tor 0.2.1.9-alpha fixes many more bugs, some of them security-related.
  671.   o New directory authorities:
  672.     - gabelmoo (the authority run by Karsten Loesing) now has a new
  673.       IP address.
  674.   o Security fixes:
  675.     - Never use a connection with a mismatched address to extend a
  676.       circuit, unless that connection is canonical. A canonical
  677.       connection is one whose address is authenticated by the router's
  678.       identity key, either in a NETINFO cell or in a router descriptor.
  679.     - Avoid a possible memory corruption bug when receiving hidden service
  680.       descriptors. Bugfix on 0.2.1.6-alpha.
  681.   o Major bugfixes:
  682.     - Fix a logic error that would automatically reject all but the first
  683.       configured DNS server. Bugfix on 0.2.1.5-alpha. Possible fix for
  684.       part of bug 813/868. Bug spotted by coderman.
  685.     - When a stream at an exit relay is in state "resolving" or
  686.       "connecting" and it receives an "end" relay cell, the exit relay
  687.       would silently ignore the end cell and not close the stream. If
  688.       the client never closes the circuit, then the exit relay never
  689.       closes the TCP connection. Bug introduced in 0.1.2.1-alpha;
  690.       reported by "wood".
  691.     - When we can't initialize DNS because the network is down, do not
  692.       automatically stop Tor from starting. Instead, retry failed
  693.       dns_init() every 10 minutes, and change the exit policy to reject
  694.       *:* until one succeeds. Fixes bug 691.
  695.   o Minor features:
  696.     - Give a better error message when an overzealous init script says
  697.       "sudo -u username tor --user username". Makes Bug 882 easier for
  698.       users to diagnose.
  699.     - When a directory authority gives us a new guess for our IP address,
  700.       log which authority we used. Hopefully this will help us debug
  701.       the recent complaints about bad IP address guesses.
  702.     - Detect svn revision properly when we're using git-svn.
  703.     - Try not to open more than one descriptor-downloading connection
  704.       to an authority at once. This should reduce load on directory
  705.       authorities. Fixes bug 366.
  706.     - Add cross-certification to newly generated certificates, so that
  707.       a signing key is enough information to look up a certificate.
  708.       Partial implementation of proposal 157.
  709.     - Start serving certificates by <identity digest, signing key digest>
  710.       pairs. Partial implementation of proposal 157.
  711.     - Clients now never report any stream end reason except 'MISC'.
  712.       Implements proposal 148.
  713.     - On platforms with a maximum syslog string length, truncate syslog
  714.       messages to that length ourselves, rather than relying on the
  715.       system to do it for us.
  716.     - Optimize out calls to time(NULL) that occur for every IO operation,
  717.       or for every cell. On systems where time() is a slow syscall,
  718.       this fix will be slightly helpful.
  719.     - Exit servers can now answer resolve requests for ip6.arpa addresses.
  720.     - When we download a descriptor that we then immediately (as
  721.       a directory authority) reject, do not retry downloading it right
  722.       away. Should save some bandwidth on authorities. Fix for bug
  723.       888. Patch by Sebastian Hahn.
  724.     - When a download gets us zero good descriptors, do not notify
  725.       Tor that new directory information has arrived.
  726.     - Avoid some nasty corner cases in the logic for marking connections
  727.       as too old or obsolete or noncanonical for circuits.  Partial
  728.       bugfix on bug 891.
  729.   o Minor features (controller):
  730.     - New CONSENSUS_ARRIVED event to note when a new consensus has
  731.       been fetched and validated.
  732.     - When we realize that another process has modified our cached
  733.       descriptors file, print out a more useful error message rather
  734.       than triggering an assertion. Fixes bug 885. Patch from Karsten.
  735.     - Add an internal-use-only __ReloadTorrcOnSIGHUP option for
  736.       controllers to prevent SIGHUP from reloading the
  737.       configuration. Fixes bug 856.
  738.   o Minor bugfixes:
  739.     - Resume using the correct "REASON=" stream when telling the
  740.       controller why we closed a stream. Bugfix in 0.2.1.1-alpha.
  741.     - When a canonical connection appears later in our internal list
  742.       than a noncanonical one for a given OR ID, always use the
  743.       canonical one. Bugfix on 0.2.0.12-alpha. Fixes bug 805.
  744.       Spotted by rovv.
  745.     - Clip the MaxCircuitDirtiness config option to a minimum of 10
  746.       seconds. Warn the user if lower values are given in the
  747.       configuration. Bugfix on 0.1.0.1-rc. Patch by Sebastian.
  748.     - Clip the CircuitBuildTimeout to a minimum of 30 seconds. Warn the
  749.       user if lower values are given in the configuration. Bugfix on
  750.       0.1.1.17-rc. Patch by Sebastian.
  751.     - Fix a race condition when freeing keys shared between main thread
  752.       and CPU workers that could result in a memory leak. Bugfix on
  753.       0.1.0.1-rc. Fixes bug 889.
  754.   o Minor bugfixes (hidden services):
  755.     - Do not throw away existing introduction points on SIGHUP (bugfix on
  756.       0.0.6pre1); also, do not stall hidden services because we're
  757.       throwing away introduction points; bugfix on 0.2.1.7-alpha. Spotted
  758.       by John Brooks. Patch by Karsten. Fixes bug 874.
  759.     - Fix a memory leak when we decline to add a v2 rendezvous
  760.       descriptor to the cache because we already had a v0 descriptor
  761.       with the same ID. Bugfix on 0.2.0.18-alpha.
  762.   o Deprecated and removed features:
  763.     - RedirectExits has been removed. It was deprecated since
  764.       0.2.0.3-alpha.
  765.     - Finally remove deprecated "EXTENDED_FORMAT" controller feature. It
  766.       has been called EXTENDED_EVENTS since 0.1.2.4-alpha.
  767.     - Cell pools are now always enabled; --disable-cell-pools is ignored.
  768.   o Code simplifications and refactoring:
  769.     - Rename the confusing or_is_obsolete field to the more appropriate
  770.       is_bad_for_new_circs, and move it to or_connection_t where it
  771.       belongs.
  772.     - Move edge-only flags from connection_t to edge_connection_t: not
  773.       only is this better coding, but on machines of plausible alignment,
  774.       it should save 4-8 bytes per connection_t. "Every little bit helps."
  775.     - Rename ServerDNSAllowBrokenResolvConf to ServerDNSAllowBrokenConfig
  776.       for consistency; keep old option working for backward compatibility.
  777.     - Simplify the code for finding connections to use for a circuit.
  778. Changes in version 0.2.1.8-alpha - 2008-12-08
  779.   Tor 0.2.1.8-alpha fixes some crash bugs in earlier alpha releases,
  780.   builds better on unusual platforms like Solaris and old OS X, and
  781.   fixes a variety of other issues.
  782.   o Major features:
  783.     - New DirPortFrontPage option that takes an html file and publishes
  784.       it as "/" on the DirPort. Now relay operators can provide a
  785.       disclaimer without needing to set up a separate webserver. There's
  786.       a sample disclaimer in contrib/tor-exit-notice.html.
  787.   o Security fixes:
  788.     - When the client is choosing entry guards, now it selects at most
  789.       one guard from a given relay family. Otherwise we could end up with
  790.       all of our entry points into the network run by the same operator.
  791.       Suggested by Camilo Viecco. Fix on 0.1.1.11-alpha.
  792.   o Major bugfixes:
  793.     - Fix a DOS opportunity during the voting signature collection process
  794.       at directory authorities. Spotted by rovv. Bugfix on 0.2.0.x.
  795.     - Fix a possible segfault when establishing an exit connection. Bugfix
  796.       on 0.2.1.5-alpha.
  797.   o Minor bugfixes:
  798.     - Get file locking working on win32. Bugfix on 0.2.1.6-alpha. Fixes
  799.       bug 859.
  800.     - Made Tor a little less aggressive about deleting expired
  801.       certificates. Partial fix for bug 854.
  802.     - Stop doing unaligned memory access that generated bus errors on
  803.       sparc64. Bugfix on 0.2.0.10-alpha. Fix for bug 862.
  804.     - Fix a crash bug when changing EntryNodes from the controller. Bugfix
  805.       on 0.2.1.6-alpha. Fix for bug 867. Patched by Sebastian.
  806.     - Make USR2 log-level switch take effect immediately. Bugfix on
  807.       0.1.2.8-beta.
  808.     - If one win32 nameserver fails to get added, continue adding the
  809.       rest, and don't automatically fail.
  810.     - Use fcntl() for locking when flock() is not available. Should fix
  811.       compilation on Solaris. Should fix Bug 873. Bugfix on 0.2.1.6-alpha.
  812.     - Do not mark smartlist_bsearch_idx() function as ATTR_PURE. This bug
  813.       could make gcc generate non-functional binary search code. Bugfix
  814.       on 0.2.0.10-alpha.
  815.     - Build correctly on platforms without socklen_t.
  816.     - Avoid potential crash on internal error during signature collection.
  817.       Fixes bug 864. Patch from rovv.
  818.     - Do not use C's stdio library for writing to log files. This will
  819.       improve logging performance by a minute amount, and will stop
  820.       leaking fds when our disk is full. Fixes bug 861.
  821.     - Stop erroneous use of O_APPEND in cases where we did not in fact
  822.       want to re-seek to the end of a file before every last write().
  823.     - Correct handling of possible malformed authority signing key
  824.       certificates with internal signature types. Fixes bug 880. Bugfix
  825.       on 0.2.0.3-alpha.
  826.     - Fix a hard-to-trigger resource leak when logging credential status.
  827.       CID 349.
  828.   o Minor features:
  829.     - Directory mirrors no longer fetch the v1 directory or
  830.       running-routers files. They are obsolete, and nobody asks for them
  831.       anymore. This is the first step to making v1 authorities obsolete.
  832.   o Minor features (controller):
  833.     - Return circuit purposes in response to GETINFO circuit-status. Fixes
  834.       bug 858.
  835. Changes in version 0.2.0.32 - 2008-11-20
  836.   Tor 0.2.0.32 fixes a major security problem in Debian and Ubuntu
  837.   packages (and maybe other packages) noticed by Theo de Raadt, fixes
  838.   a smaller security flaw that might allow an attacker to access local
  839.   services, further improves hidden service performance, and fixes a
  840.   variety of other issues.
  841.   o Security fixes:
  842.     - The "User" and "Group" config options did not clear the
  843.       supplementary group entries for the Tor process. The "User" option
  844.       is now more robust, and we now set the groups to the specified
  845.       user's primary group. The "Group" option is now ignored. For more
  846.       detailed logging on credential switching, set CREDENTIAL_LOG_LEVEL
  847.       in common/compat.c to LOG_NOTICE or higher. Patch by Jacob Appelbaum
  848.       and Steven Murdoch. Bugfix on 0.0.2pre14. Fixes bug 848 and 857.
  849.     - The "ClientDNSRejectInternalAddresses" config option wasn't being
  850.       consistently obeyed: if an exit relay refuses a stream because its
  851.       exit policy doesn't allow it, we would remember what IP address
  852.       the relay said the destination address resolves to, even if it's
  853.       an internal IP address. Bugfix on 0.2.0.7-alpha; patch by rovv.
  854.   o Major bugfixes:
  855.     - Fix a DOS opportunity during the voting signature collection process
  856.       at directory authorities. Spotted by rovv. Bugfix on 0.2.0.x.
  857.   o Major bugfixes (hidden services):
  858.     - When fetching v0 and v2 rendezvous service descriptors in parallel,
  859.       we were failing the whole hidden service request when the v0
  860.       descriptor fetch fails, even if the v2 fetch is still pending and
  861.       might succeed. Similarly, if the last v2 fetch fails, we were
  862.       failing the whole hidden service request even if a v0 fetch is
  863.       still pending. Fixes bug 814. Bugfix on 0.2.0.10-alpha.
  864.     - When extending a circuit to a hidden service directory to upload a
  865.       rendezvous descriptor using a BEGIN_DIR cell, almost 1/6 of all
  866.       requests failed, because the router descriptor has not been
  867.       downloaded yet. In these cases, do not attempt to upload the
  868.       rendezvous descriptor, but wait until the router descriptor is
  869.       downloaded and retry. Likewise, do not attempt to fetch a rendezvous
  870.       descriptor from a hidden service directory for which the router
  871.       descriptor has not yet been downloaded. Fixes bug 767. Bugfix
  872.       on 0.2.0.10-alpha.
  873.   o Minor bugfixes:
  874.     - Fix several infrequent memory leaks spotted by Coverity.
  875.     - When testing for libevent functions, set the LDFLAGS variable
  876.       correctly. Found by Riastradh.
  877.     - Avoid a bug where the FastFirstHopPK 0 option would keep Tor from
  878.       bootstrapping with tunneled directory connections. Bugfix on
  879.       0.1.2.5-alpha. Fixes bug 797. Found by Erwin Lam.
  880.     - When asked to connect to A.B.exit:80, if we don't know the IP for A
  881.       and we know that server B rejects most-but-not all connections to
  882.       port 80, we would previously reject the connection. Now, we assume
  883.       the user knows what they were asking for. Fixes bug 752. Bugfix
  884.       on 0.0.9rc5. Diagnosed by BarkerJr.
  885.     - If we overrun our per-second write limits a little, count this as
  886.       having used up our write allocation for the second, and choke
  887.       outgoing directory writes. Previously, we had only counted this when
  888.       we had met our limits precisely. Fixes bug 824. Patch from by rovv.
  889.       Bugfix on 0.2.0.x (??).
  890.     - Remove the old v2 directory authority 'lefkada' from the default
  891.       list. It has been gone for many months.
  892.     - Stop doing unaligned memory access that generated bus errors on
  893.       sparc64. Bugfix on 0.2.0.10-alpha. Fixes bug 862.
  894.     - Make USR2 log-level switch take effect immediately. Bugfix on
  895.       0.1.2.8-beta.
  896.   o Minor bugfixes (controller):
  897.     - Make DNS resolved events into "CLOSED", not "FAILED". Bugfix on
  898.       0.1.2.5-alpha. Fix by Robert Hogan. Resolves bug 807.
  899. Changes in version 0.2.1.7-alpha - 2008-11-08
  900.   Tor 0.2.1.7-alpha fixes a major security problem in Debian and Ubuntu
  901.   packages (and maybe other packages) noticed by Theo de Raadt, fixes
  902.   a smaller security flaw that might allow an attacker to access local
  903.   services, adds better defense against DNS poisoning attacks on exit
  904.   relays, further improves hidden service performance, and fixes a
  905.   variety of other issues.
  906.   o Security fixes:
  907.     - The "ClientDNSRejectInternalAddresses" config option wasn't being
  908.       consistently obeyed: if an exit relay refuses a stream because its
  909.       exit policy doesn't allow it, we would remember what IP address
  910.       the relay said the destination address resolves to, even if it's
  911.       an internal IP address. Bugfix on 0.2.0.7-alpha; patch by rovv.
  912.     - The "User" and "Group" config options did not clear the
  913.       supplementary group entries for the Tor process. The "User" option
  914.       is now more robust, and we now set the groups to the specified
  915.       user's primary group. The "Group" option is now ignored. For more
  916.       detailed logging on credential switching, set CREDENTIAL_LOG_LEVEL
  917.       in common/compat.c to LOG_NOTICE or higher. Patch by Jacob Appelbaum
  918.       and Steven Murdoch. Bugfix on 0.0.2pre14. Fixes bug 848.
  919.     - Do not use or believe expired v3 authority certificates. Patch
  920.       from Karsten. Bugfix in 0.2.0.x. Fixes bug 851.
  921.   o Minor features:
  922.     - Now NodeFamily and MyFamily config options allow spaces in
  923.       identity fingerprints, so it's easier to paste them in.
  924.       Suggested by Lucky Green.
  925.     - Implement the 0x20 hack to better resist DNS poisoning: set the
  926.       case on outgoing DNS requests randomly, and reject responses that do
  927.       not match the case correctly. This logic can be disabled with the
  928.       ServerDNSRandomizeCase setting, if you are using one of the 0.3%
  929.       of servers that do not reliably preserve case in replies. See
  930.       "Increased DNS Forgery Resistance through 0x20-Bit Encoding"
  931.       for more info.
  932.     - Preserve case in replies to DNSPort requests in order to support
  933.       the 0x20 hack for resisting DNS poisoning attacks.
  934.   o Hidden service performance improvements:
  935.     - When the client launches an introduction circuit, retry with a
  936.       new circuit after 30 seconds rather than 60 seconds.
  937.     - Launch a second client-side introduction circuit in parallel
  938.       after a delay of 15 seconds (based on work by Christian Wilms).
  939.     - Hidden services start out building five intro circuits rather
  940.       than three, and when the first three finish they publish a service
  941.       descriptor using those. Now we publish our service descriptor much
  942.       faster after restart.
  943.   o Minor bugfixes:
  944.     - Minor fix in the warning messages when you're having problems
  945.       bootstrapping; also, be more forgiving of bootstrap problems when
  946.       we're still making incremental progress on a given bootstrap phase.
  947.     - When we're choosing an exit node for a circuit, and we have
  948.       no pending streams, choose a good general exit rather than one that
  949.       supports "all the pending streams". Bugfix on 0.1.1.x. Fix by rovv.
  950.     - Send a valid END cell back when a client tries to connect to a
  951.       nonexistent hidden service port. Bugfix on 0.1.2.15. Fixes bug
  952.       840. Patch from rovv.
  953.     - If a broken client asks a non-exit router to connect somewhere,
  954.       do not even do the DNS lookup before rejecting the connection.
  955.       Fixes another case of bug 619. Patch from rovv.
  956.     - Fix another case of assuming, when a specific exit is requested,
  957.       that we know more than the user about what hosts it allows.
  958.       Fixes another case of bug 752. Patch from rovv.
  959.     - Check which hops rendezvous stream cells are associated with to
  960.       prevent possible guess-the-streamid injection attacks from
  961.       intermediate hops. Fixes another case of bug 446. Based on patch
  962.       from rovv.
  963.     - Avoid using a negative right-shift when comparing 32-bit
  964.       addresses. Possible fix for bug 845 and bug 811.
  965.     - Make the assert_circuit_ok() function work correctly on circuits that
  966.       have already been marked for close.
  967.     - Fix read-off-the-end-of-string error in unit tests when decoding
  968.       introduction points.
  969.     - Fix uninitialized size field for memory area allocation: may improve
  970.       memory performance during directory parsing.
  971.     - Treat duplicate certificate fetches as failures, so that we do
  972.       not try to re-fetch an expired certificate over and over and over.
  973.     - Do not say we're fetching a certificate when we'll in fact skip it
  974.       because of a pending download.
  975. Changes in version 0.2.1.6-alpha - 2008-09-30
  976.   Tor 0.2.1.6-alpha further improves performance and robustness of
  977.   hidden services, starts work on supporting per-country relay selection,
  978.   and fixes a variety of smaller issues.
  979.   o Major features:
  980.     - Implement proposal 121: make it possible to build hidden services
  981.       that only certain clients are allowed to connect to. This is
  982.       enforced at several points, so that unauthorized clients are unable
  983.       to send INTRODUCE cells to the service, or even (depending on the
  984.       type of authentication) to learn introduction points. This feature
  985.       raises the bar for certain kinds of active attacks against hidden
  986.       services. Code by Karsten Loesing.
  987.     - Relays now store and serve v2 hidden service descriptors by default,
  988.       i.e., the new default value for HidServDirectoryV2 is 1. This is
  989.       the last step in proposal 114, which aims to make hidden service
  990.       lookups more reliable.
  991.     - Start work to allow node restrictions to include country codes. The
  992.       syntax to exclude nodes in a country with country code XX is
  993.       "ExcludeNodes {XX}". Patch from Robert Hogan. It still needs some
  994.       refinement to decide what config options should take priority if
  995.       you ask to both use a particular node and exclude it.
  996.     - Allow ExitNodes list to include IP ranges and country codes, just
  997.       like the Exclude*Nodes lists. Patch from Robert Hogan.
  998.   o Major bugfixes:
  999.     - Fix a bug when parsing ports in tor_addr_port_parse() that caused
  1000.       Tor to fail to start if you had it configured to use a bridge
  1001.       relay. Fixes bug 809. Bugfix on 0.2.1.5-alpha.
  1002.     - When extending a circuit to a hidden service directory to upload a
  1003.       rendezvous descriptor using a BEGIN_DIR cell, almost 1/6 of all
  1004.       requests failed, because the router descriptor had not been
  1005.       downloaded yet. In these cases, we now wait until the router
  1006.       descriptor is downloaded, and then retry. Likewise, clients
  1007.       now skip over a hidden service directory if they don't yet have
  1008.       its router descriptor, rather than futilely requesting it and
  1009.       putting mysterious complaints in the logs. Fixes bug 767. Bugfix
  1010.       on 0.2.0.10-alpha.
  1011.     - When fetching v0 and v2 rendezvous service descriptors in parallel,
  1012.       we were failing the whole hidden service request when the v0
  1013.       descriptor fetch fails, even if the v2 fetch is still pending and
  1014.       might succeed. Similarly, if the last v2 fetch fails, we were
  1015.       failing the whole hidden service request even if a v0 fetch is
  1016.       still pending. Fixes bug 814. Bugfix on 0.2.0.10-alpha.
  1017.     - DNS replies need to have names matching their requests, but
  1018.       these names should be in the questions section, not necessarily
  1019.       in the answers section. Fixes bug 823. Bugfix on 0.2.1.5-alpha.
  1020.   o Minor features:
  1021.     - Update to the "September 1 2008" ip-to-country file.
  1022.     - Allow ports 465 and 587 in the default exit policy again. We had
  1023.       rejected them in 0.1.0.15, because back in 2005 they were commonly
  1024.       misconfigured and ended up as spam targets. We hear they are better
  1025.       locked down these days.
  1026.     - Use a lockfile to make sure that two Tor processes are not
  1027.       simultaneously running with the same datadir.
  1028.     - Serve the latest v3 networkstatus consensus via the control
  1029.       port. Use "getinfo dir/status-vote/current/consensus" to fetch it.
  1030.     - Better logging about stability/reliability calculations on directory
  1031.       servers.
  1032.     - Drop the requirement to have an open dir port for storing and
  1033.       serving v2 hidden service descriptors.
  1034.     - Directory authorities now serve a /tor/dbg-stability.txt URL to
  1035.       help debug WFU and MTBF calculations.
  1036.     - Implement most of Proposal 152: allow specialized servers to permit
  1037.       single-hop circuits, and clients to use those servers to build
  1038.       single-hop circuits when using a specialized controller. Patch
  1039.       from Josh Albrecht. Resolves feature request 768.
  1040.     - Add a -p option to tor-resolve for specifying the SOCKS port: some
  1041.       people find host:port too confusing.
  1042.     - Make TrackHostExit mappings expire a while after their last use, not
  1043.       after their creation. Patch from Robert Hogan.
  1044.     - Provide circuit purposes along with circuit events to the controller.
  1045.   o Minor bugfixes:
  1046.     - Fix compile on OpenBSD 4.4-current. Bugfix on 0.2.1.5-alpha.
  1047.       Reported by Tas.
  1048.     - Fixed some memory leaks -- some quite frequent, some almost
  1049.       impossible to trigger -- based on results from Coverity.
  1050.     - When testing for libevent functions, set the LDFLAGS variable
  1051.       correctly. Found by Riastradh.
  1052.     - Fix an assertion bug in parsing policy-related options; possible fix
  1053.       for bug 811.
  1054.     - Catch and report a few more bootstrapping failure cases when Tor
  1055.       fails to establish a TCP connection. Cleanup on 0.2.1.x.
  1056.     - Avoid a bug where the FastFirstHopPK 0 option would keep Tor from
  1057.       bootstrapping with tunneled directory connections. Bugfix on
  1058.       0.1.2.5-alpha. Fixes bug 797. Found by Erwin Lam.
  1059.     - When asked to connect to A.B.exit:80, if we don't know the IP for A
  1060.       and we know that server B rejects most-but-not all connections to
  1061.       port 80, we would previously reject the connection. Now, we assume
  1062.       the user knows what they were asking for. Fixes bug 752. Bugfix
  1063.       on 0.0.9rc5. Diagnosed by BarkerJr.
  1064.     - If we are not using BEGIN_DIR cells, don't attempt to contact hidden
  1065.       service directories if they have no advertised dir port. Bugfix
  1066.       on 0.2.0.10-alpha.
  1067.     - If we overrun our per-second write limits a little, count this as
  1068.       having used up our write allocation for the second, and choke
  1069.       outgoing directory writes. Previously, we had only counted this when
  1070.       we had met our limits precisely. Fixes bug 824. Patch by rovv.
  1071.       Bugfix on 0.2.0.x (??).
  1072.     - Avoid a "0 divided by 0" calculation when calculating router uptime
  1073.       at directory authorities. Bugfix on 0.2.0.8-alpha.
  1074.     - Make DNS resolved controller events into "CLOSED", not
  1075.       "FAILED". Bugfix on 0.1.2.5-alpha. Fix by Robert Hogan. Resolves
  1076.       bug 807.
  1077.     - Fix a bug where an unreachable relay would establish enough
  1078.       reachability testing circuits to do a bandwidth test -- if
  1079.       we already have a connection to the middle hop of the testing
  1080.       circuit, then it could establish the last hop by using the existing
  1081.       connection. Bugfix on 0.1.2.2-alpha, exposed when we made testing
  1082.       circuits no longer use entry guards in 0.2.1.3-alpha.
  1083.     - If we have correct permissions on $datadir, we complain to stdout
  1084.       and fail to start. But dangerous permissions on
  1085.       $datadir/cached-status/ would cause us to open a log and complain
  1086.       there. Now complain to stdout and fail to start in both cases. Fixes
  1087.       bug 820, reported by seeess.
  1088.     - Remove the old v2 directory authority 'lefkada' from the default
  1089.       list. It has been gone for many months.
  1090.   o Code simplifications and refactoring:
  1091.     - Revise the connection_new functions so that a more typesafe variant
  1092.       exists. This will work better with Coverity, and let us find any
  1093.       actual mistakes we're making here.
  1094.     - Refactor unit testing logic so that dmalloc can be used sensibly
  1095.       with unit tests to check for memory leaks.
  1096.     - Move all hidden-service related fields from connection and circuit
  1097.       structure to substructures: this way they won't eat so much memory.
  1098. Changes in version 0.2.0.31 - 2008-09-03
  1099.   Tor 0.2.0.31 addresses two potential anonymity issues, starts to fix
  1100.   a big bug we're seeing where in rare cases traffic from one Tor stream
  1101.   gets mixed into another stream, and fixes a variety of smaller issues.
  1102.   o Major bugfixes:
  1103.     - Make sure that two circuits can never exist on the same connection
  1104.       with the same circuit ID, even if one is marked for close. This
  1105.       is conceivably a bugfix for bug 779. Bugfix on 0.1.0.4-rc.
  1106.     - Relays now reject risky extend cells: if the extend cell includes
  1107.       a digest of all zeroes, or asks to extend back to the relay that
  1108.       sent the extend cell, tear down the circuit. Ideas suggested
  1109.       by rovv.
  1110.     - If not enough of our entry guards are available so we add a new
  1111.       one, we might use the new one even if it overlapped with the
  1112.       current circuit's exit relay (or its family). Anonymity bugfix
  1113.       pointed out by rovv.
  1114.   o Minor bugfixes:
  1115.     - Recover 3-7 bytes that were wasted per memory chunk. Fixes bug
  1116.       794; bug spotted by rovv. Bugfix on 0.2.0.1-alpha.
  1117.     - Correctly detect the presence of the linux/netfilter_ipv4.h header
  1118.       when building against recent kernels. Bugfix on 0.1.2.1-alpha.
  1119.     - Pick size of default geoip filename string correctly on windows.
  1120.       Fixes bug 806. Bugfix on 0.2.0.30.
  1121.     - Make the autoconf script accept the obsolete --with-ssl-dir
  1122.       option as an alias for the actually-working --with-openssl-dir
  1123.       option. Fix the help documentation to recommend --with-openssl-dir.
  1124.       Based on a patch by "Dave". Bugfix on 0.2.0.1-alpha.
  1125.     - When using the TransPort option on OpenBSD, and using the User
  1126.       option to change UID and drop privileges, make sure to open
  1127.       /dev/pf before dropping privileges. Fixes bug 782. Patch from
  1128.       Christopher Davis. Bugfix on 0.1.2.1-alpha.
  1129.     - Try to attach connections immediately upon receiving a RENDEZVOUS2
  1130.       or RENDEZVOUS_ESTABLISHED cell. This can save a second or two
  1131.       on the client side when connecting to a hidden service. Bugfix
  1132.       on 0.0.6pre1. Found and fixed by Christian Wilms; resolves bug 743.
  1133.     - When closing an application-side connection because its circuit is
  1134.       getting torn down, generate the stream event correctly. Bugfix on
  1135.       0.1.2.x. Anonymous patch.
  1136. Changes in version 0.2.1.5-alpha - 2008-08-31
  1137.   Tor 0.2.1.5-alpha moves us closer to handling IPv6 destinations, puts
  1138.   in a lot of the infrastructure for adding authorization to hidden
  1139.   services, lays the groundwork for having clients read their load
  1140.   balancing information out of the networkstatus consensus rather than
  1141.   the individual router descriptors, addresses two potential anonymity
  1142.   issues, and fixes a variety of smaller issues.
  1143.   o Major features:
  1144.     - Convert many internal address representations to optionally hold
  1145.       IPv6 addresses.
  1146.     - Generate and accept IPv6 addresses in many protocol elements.
  1147.     - Make resolver code handle nameservers located at ipv6 addresses.
  1148.     - Begin implementation of proposal 121 ("Client authorization for
  1149.       hidden services"): configure hidden services with client
  1150.       authorization, publish descriptors for them, and configure
  1151.       authorization data for hidden services at clients. The next
  1152.       step is to actually access hidden services that perform client
  1153.       authorization.
  1154.     - More progress toward proposal 141: Network status consensus
  1155.       documents and votes now contain bandwidth information for each
  1156.       router and a summary of that router's exit policy. Eventually this
  1157.       will be used by clients so that they do not have to download every
  1158.       known descriptor before building circuits.
  1159.   o Major bugfixes (on 0.2.0.x and before):
  1160.     - When sending CREATED cells back for a given circuit, use a 64-bit
  1161.       connection ID to find the right connection, rather than an addr:port
  1162.       combination. Now that we can have multiple OR connections between
  1163.       the same ORs, it is no longer possible to use addr:port to uniquely
  1164.       identify a connection.
  1165.     - Relays now reject risky extend cells: if the extend cell includes
  1166.       a digest of all zeroes, or asks to extend back to the relay that
  1167.       sent the extend cell, tear down the circuit. Ideas suggested
  1168.       by rovv.
  1169.     - If not enough of our entry guards are available so we add a new
  1170.       one, we might use the new one even if it overlapped with the
  1171.       current circuit's exit relay (or its family). Anonymity bugfix
  1172.       pointed out by rovv.
  1173.   o Minor bugfixes:
  1174.     - Recover 3-7 bytes that were wasted per memory chunk. Fixes bug
  1175.       794; bug spotted by rovv. Bugfix on 0.2.0.1-alpha.
  1176.     - When using the TransPort option on OpenBSD, and using the User
  1177.       option to change UID and drop privileges, make sure to open /dev/pf
  1178.       before dropping privileges. Fixes bug 782. Patch from Christopher
  1179.       Davis. Bugfix on 0.1.2.1-alpha.
  1180.     - Correctly detect the presence of the linux/netfilter_ipv4.h header
  1181.       when building against recent kernels. Bugfix on 0.1.2.1-alpha.
  1182.     - Add a missing safe_str() call for a debug log message.
  1183.     - Use 64 bits instead of 32 bits for connection identifiers used with
  1184.       the controller protocol, to greatly reduce risk of identifier reuse.
  1185.     - Make the autoconf script accept the obsolete --with-ssl-dir
  1186.       option as an alias for the actually-working --with-openssl-dir
  1187.       option. Fix the help documentation to recommend --with-openssl-dir.
  1188.       Based on a patch by "Dave". Bugfix on 0.2.0.1-alpha.
  1189.   o Minor features:
  1190.     - Rate-limit too-many-sockets messages: when they happen, they happen
  1191.       a lot. Resolves bug 748.
  1192.     - Resist DNS poisoning a little better by making sure that names in
  1193.       answer sections match.
  1194.     - Print the SOCKS5 error message string as well as the error code
  1195.       when a tor-resolve request fails. Patch from Jacob.
  1196. Changes in version 0.2.1.4-alpha - 2008-08-04
  1197.   Tor 0.2.1.4-alpha fixes a pair of crash bugs in 0.2.1.3-alpha.
  1198.   o Major bugfixes:
  1199.     - The address part of exit policies was not correctly written
  1200.       to router descriptors. This generated router descriptors that failed
  1201.       their self-checks. Noticed by phobos, fixed by Karsten. Bugfix
  1202.       on 0.2.1.3-alpha.
  1203.     - Tor triggered a false assert when extending a circuit to a relay
  1204.       but we already have a connection open to that relay. Noticed by
  1205.       phobos, fixed by Karsten. Bugfix on 0.2.1.3-alpha.
  1206.   o Minor bugfixes:
  1207.     - Fix a hidden service logging bug: in some edge cases, the router
  1208.       descriptor of a previously picked introduction point becomes
  1209.       obsolete and we need to give up on it rather than continually
  1210.       complaining that it has become obsolete. Observed by xiando. Bugfix
  1211.       on 0.2.1.3-alpha.
  1212.   o Removed features:
  1213.     - Take out the TestVia config option, since it was a workaround for
  1214.       a bug that was fixed in Tor 0.1.1.21.
  1215. Changes in version 0.2.1.3-alpha - 2008-08-03
  1216.   Tor 0.2.1.3-alpha implements most of the pieces to prevent
  1217.   infinite-length circuit attacks (see proposal 110); fixes a bug that
  1218.   might cause exit relays to corrupt streams they send back; allows
  1219.   address patterns (e.g. 255.128.0.0/16) to appear in ExcludeNodes and
  1220.   ExcludeExitNodes config options; and fixes a big pile of bugs.
  1221.   o Bootstrapping bugfixes (on 0.2.1.x-alpha):
  1222.     - Send a bootstrap problem "warn" event on the first problem if the
  1223.       reason is NO_ROUTE (that is, our network is down).
  1224.   o Major features:
  1225.     - Implement most of proposal 110: The first K cells to be sent
  1226.       along a circuit are marked as special "early" cells; only K "early"
  1227.       cells will be allowed. Once this code is universal, we can block
  1228.       certain kinds of DOS attack by requiring that EXTEND commands must
  1229.       be sent using an "early" cell.
  1230.   o Major bugfixes:
  1231.     - Try to attach connections immediately upon receiving a RENDEZVOUS2
  1232.       or RENDEZVOUS_ESTABLISHED cell. This can save a second or two
  1233.       on the client side when connecting to a hidden service. Bugfix
  1234.       on 0.0.6pre1. Found and fixed by Christian Wilms; resolves bug 743.
  1235.     - Ensure that two circuits can never exist on the same connection
  1236.       with the same circuit ID, even if one is marked for close. This
  1237.       is conceivably a bugfix for bug 779; fixes a bug on 0.1.0.4-rc.
  1238.   o Minor features:
  1239.     - When relays do their initial bandwidth measurement, don't limit
  1240.       to just our entry guards for the test circuits. Otherwise we tend
  1241.       to have multiple test circuits going through a single entry guard,
  1242.       which makes our bandwidth test less accurate. Fixes part of bug 654;
  1243.       patch contributed by Josh Albrecht.
  1244.     - Add an ExcludeExitNodes option so users can list a set of nodes
  1245.       that should be be excluded from the exit node position, but
  1246.       allowed elsewhere. Implements proposal 151.
  1247.     - Allow address patterns (e.g., 255.128.0.0/16) to appear in
  1248.       ExcludeNodes and ExcludeExitNodes lists.
  1249.     - Change the implementation of ExcludeNodes and ExcludeExitNodes to
  1250.       be more efficient. Formerly it was quadratic in the number of
  1251.       servers; now it should be linear. Fixes bug 509.
  1252.     - Save 16-22 bytes per open circuit by moving the n_addr, n_port,
  1253.       and n_conn_id_digest fields into a separate structure that's
  1254.       only needed when the circuit has not yet attached to an n_conn.
  1255.   o Minor bugfixes:
  1256.     - Change the contrib/tor.logrotate script so it makes the new
  1257.       logs as "_tor:_tor" rather than the default, which is generally
  1258.       "root:wheel". Fixes bug 676, reported by Serge Koksharov.
  1259.     - Stop using __attribute__((nonnull)) with GCC: it can give us useful
  1260.       warnings (occasionally), but it can also cause the compiler to
  1261.       eliminate error-checking code. Suggested by Peter Gutmann.
  1262.     - When a hidden service is giving up on an introduction point candidate
  1263.       that was not included in the last published rendezvous descriptor,
  1264.       don't reschedule publication of the next descriptor. Fixes bug 763.
  1265.       Bugfix on 0.0.9.3.
  1266.     - Mark RendNodes, RendExcludeNodes, HiddenServiceNodes, and
  1267.       HiddenServiceExcludeNodes as obsolete: they never worked properly,
  1268.       and nobody claims to be using them. Fixes bug 754. Bugfix on
  1269.       0.1.0.1-rc. Patch from Christian Wilms.
  1270.     - Fix a small alignment and memory-wasting bug on buffer chunks.
  1271.       Spotted by rovv.
  1272.   o Minor bugfixes (controller):
  1273.     - When closing an application-side connection because its circuit
  1274.       is getting torn down, generate the stream event correctly.
  1275.       Bugfix on 0.1.2.x. Anonymous patch.
  1276.   o Removed features:
  1277.     - Remove all backward-compatibility code to support relays running
  1278.       versions of Tor so old that they no longer work at all on the
  1279.       Tor network.
  1280. Changes in version 0.2.0.30 - 2008-07-15
  1281.   o Minor bugfixes:
  1282.     - Stop using __attribute__((nonnull)) with GCC: it can give us useful
  1283.       warnings (occasionally), but it can also cause the compiler to
  1284.       eliminate error-checking code. Suggested by Peter Gutmann.
  1285. Changes in version 0.2.0.29-rc - 2008-07-08
  1286.   Tor 0.2.0.29-rc fixes two big bugs with using bridges, fixes more
  1287.   hidden-service performance bugs, and fixes a bunch of smaller bugs.
  1288.   o Major bugfixes:
  1289.     - If you have more than one bridge but don't know their keys,
  1290.       you would only launch a request for the descriptor of the first one
  1291.       on your list. (Tor considered launching requests for the others, but
  1292.       found that it already had a connection on the way for $0000...0000
  1293.       so it didn't open another.) Bugfix on 0.2.0.x.
  1294.     - If you have more than one bridge but don't know their keys, and the
  1295.       connection to one of the bridges failed, you would cancel all
  1296.       pending bridge connections. (After all, they all have the same
  1297.       digest.) Bugfix on 0.2.0.x.
  1298.     - When a hidden service was trying to establish an introduction point,
  1299.       and Tor had built circuits preemptively for such purposes, we
  1300.       were ignoring all the preemptive circuits and launching a new one
  1301.       instead. Bugfix on 0.2.0.14-alpha.
  1302.     - When a hidden service was trying to establish an introduction point,
  1303.       and Tor *did* manage to reuse one of the preemptively built
  1304.       circuits, it didn't correctly remember which one it used,
  1305.       so it asked for another one soon after, until there were no
  1306.       more preemptive circuits, at which point it launched one from
  1307.       scratch. Bugfix on 0.0.9.x.
  1308.     - Make directory servers include the X-Your-Address-Is: http header in
  1309.       their responses even for begin_dir conns. Now clients who only
  1310.       ever use begin_dir connections still have a way to learn their IP
  1311.       address. Fixes bug 737; bugfix on 0.2.0.22-rc. Reported by goldy.
  1312.   o Minor bugfixes:
  1313.     - Fix a macro/CPP interaction that was confusing some compilers:
  1314.       some GCCs don't like #if/#endif pairs inside macro arguments.
  1315.       Fixes bug 707.
  1316.     - Fix macro collision between OpenSSL 0.9.8h and Windows headers.
  1317.       Fixes bug 704; fix from Steven Murdoch.
  1318.     - When opening /dev/null in finish_daemonize(), do not pass the
  1319.       O_CREAT flag. Fortify was complaining, and correctly so. Fixes
  1320.       bug 742; fix from Michael Scherer. Bugfix on 0.0.2pre19.
  1321.     - Correctly detect transparent proxy support on Linux hosts that
  1322.       require in.h to be included before netfilter_ipv4.h. Patch
  1323.       from coderman.
  1324.     - Disallow session resumption attempts during the renegotiation
  1325.       stage of the v2 handshake protocol. Clients should never be trying
  1326.       session resumption at this point, but apparently some did, in
  1327.       ways that caused the handshake to fail. Bugfix on 0.2.0.20-rc. Bug
  1328.       found by Geoff Goodell.
  1329. Changes in version 0.2.1.2-alpha - 2008-06-20
  1330.   Tor 0.2.1.2-alpha includes a new "TestingTorNetwork" config option to
  1331.   make it easier to set up your own private Tor network; fixes several
  1332.   big bugs with using more than one bridge relay; fixes a big bug with
  1333.   offering hidden services quickly after Tor starts; and uses a better
  1334.   API for reporting potential bootstrapping problems to the controller.
  1335.   o Major features:
  1336.     - New TestingTorNetwork config option to allow adjustment of
  1337.       previously constant values that, while reasonable, could slow
  1338.       bootstrapping. Implements proposal 135. Patch from Karsten.
  1339.   o Major bugfixes:
  1340.     - If you have more than one bridge but don't know their digests,
  1341.       you would only learn a request for the descriptor of the first one
  1342.       on your list. (Tor considered launching requests for the others, but
  1343.       found that it already had a connection on the way for $0000...0000
  1344.       so it didn't open another.) Bugfix on 0.2.0.x.
  1345.     - If you have more than one bridge but don't know their digests,
  1346.       and the connection to one of the bridges failed, you would cancel
  1347.       all pending bridge connections. (After all, they all have the
  1348.       same digest.) Bugfix on 0.2.0.x.
  1349.     - When establishing a hidden service, introduction points that
  1350.       originate from cannibalized circuits are completely ignored and not
  1351.       included in rendezvous service descriptors. This might be another
  1352.       reason for delay in making a hidden service available. Bugfix
  1353.       from long ago (0.0.9.x?)
  1354.   o Minor features:
  1355.     - Allow OpenSSL to use dynamic locks if it wants.
  1356.     - When building a consensus, do not include routers that are down.
  1357.       This will cut down 30% to 40% on consensus size. Implements
  1358.       proposal 138.
  1359.     - In directory authorities' approved-routers files, allow
  1360.       fingerprints with or without space.
  1361.     - Add a "GETINFO /status/bootstrap-phase" controller option, so the
  1362.       controller can query our current bootstrap state in case it attaches
  1363.       partway through and wants to catch up.
  1364.     - Send an initial "Starting" bootstrap status event, so we have a
  1365.       state to start out in.
  1366.   o Minor bugfixes:
  1367.     - Asking for a conditional consensus at .../consensus/<fingerprints>
  1368.       would crash a dirserver if it did not already have a
  1369.       consensus. Bugfix on 0.2.1.1-alpha.
  1370.     - Clean up some macro/CPP interactions: some GCC versions don't like
  1371.       #if/#endif pairs inside macro arguments. Fixes bug 707. Bugfix on
  1372.       0.2.0.x.
  1373.   o Bootstrapping bugfixes (on 0.2.1.1-alpha):
  1374.     - Directory authorities shouldn't complain about bootstrapping
  1375.       problems just because they do a lot of reachability testing and
  1376.       some of the connection attempts fail.
  1377.     - Start sending "count" and "recommendation" key/value pairs in
  1378.       bootstrap problem status events, so the controller can hear about
  1379.       problems even before Tor decides they're worth reporting for sure.
  1380.     - If you're using bridges, generate "bootstrap problem" warnings
  1381.       as soon as you run out of working bridges, rather than waiting
  1382.       for ten failures -- which will never happen if you have less than
  1383.       ten bridges.
  1384.     - If we close our OR connection because there's been a circuit
  1385.       pending on it for too long, we were telling our bootstrap status
  1386.       events "REASON=NONE". Now tell them "REASON=TIMEOUT".
  1387. Changes in version 0.2.1.1-alpha - 2008-06-13
  1388.   Tor 0.2.1.1-alpha fixes a lot of memory fragmentation problems that
  1389.   were making the Tor process bloat especially on Linux; makes our TLS
  1390.   handshake blend in better; sends "bootstrap phase" status events to
  1391.   the controller, so it can keep the user informed of progress (and
  1392.   problems) fetching directory information and establishing circuits;
  1393.   and adds a variety of smaller features.
  1394.   o Major features:
  1395.     - More work on making our TLS handshake blend in: modify the list
  1396.       of ciphers advertised by OpenSSL in client mode to even more
  1397.       closely resemble a common web browser. We cheat a little so that
  1398.       we can advertise ciphers that the locally installed OpenSSL doesn't
  1399.       know about.
  1400.     - Start sending "bootstrap phase" status events to the controller,
  1401.       so it can keep the user informed of progress fetching directory
  1402.       information and establishing circuits. Also inform the controller
  1403.       if we think we're stuck at a particular bootstrap phase. Implements
  1404.       proposal 137.
  1405.     - Resume using OpenSSL's RAND_poll() for better (and more portable)
  1406.       cross-platform entropy collection again. We used to use it, then
  1407.       stopped using it because of a bug that could crash systems that
  1408.       called RAND_poll when they had a lot of fds open. It looks like the
  1409.       bug got fixed in late 2006. Our new behavior is to call RAND_poll()
  1410.       at startup, and to call RAND_poll() when we reseed later only if
  1411.       we have a non-buggy OpenSSL version.
  1412.   o Major bugfixes:
  1413.     - When we choose to abandon a new entry guard because we think our
  1414.       older ones might be better, close any circuits pending on that
  1415.       new entry guard connection. This fix should make us recover much
  1416.       faster when our network is down and then comes back. Bugfix on
  1417.       0.1.2.8-beta; found by lodger.
  1418.   o Memory fixes and improvements:
  1419.     - Add a malloc_good_size implementation to OpenBSD_malloc_linux.c,
  1420.       to avoid unused RAM in buffer chunks and memory pools.
  1421.     - Speed up parsing and cut down on memory fragmentation by using
  1422.       stack-style allocations for parsing directory objects. Previously,
  1423.       this accounted for over 40% of allocations from within Tor's code
  1424.       on a typical directory cache.
  1425.     - Use a Bloom filter rather than a digest-based set to track which
  1426.       descriptors we need to keep around when we're cleaning out old
  1427.       router descriptors. This speeds up the computation significantly,
  1428.       and may reduce fragmentation.
  1429.     - Reduce the default smartlist size from 32 to 16; it turns out that
  1430.       most smartlists hold around 8-12 elements tops.
  1431.     - Make dumpstats() log the fullness and size of openssl-internal
  1432.       buffers.
  1433.     - If the user has applied the experimental SSL_MODE_RELEASE_BUFFERS
  1434.       patch to their OpenSSL, turn it on to save memory on servers. This
  1435.       patch will (with any luck) get included in a mainline distribution
  1436.       before too long.
  1437.     - Never use OpenSSL compression: it wastes RAM and CPU trying to
  1438.       compress cells, which are basically all encrypted, compressed,
  1439.       or both.
  1440.   o Minor bugfixes:
  1441.     - Stop reloading the router list from disk for no reason when we
  1442.       run out of reachable directory mirrors. Once upon a time reloading
  1443.       it would set the 'is_running' flag back to 1 for them. It hasn't
  1444.       done that for a long time.
  1445.     - In very rare situations new hidden service descriptors were
  1446.       published earlier than 30 seconds after the last change to the
  1447.       service. (We currently think that a hidden service descriptor
  1448.       that's been stable for 30 seconds is worth publishing.)
  1449.   o Minor features:
  1450.     - Allow separate log levels to be configured for different logging
  1451.       domains. For example, this allows one to log all notices, warnings,
  1452.       or errors, plus all memory management messages of level debug or
  1453.       higher, with: Log [MM] debug-err [*] notice-err file /var/log/tor.
  1454.     - Add a couple of extra warnings to --enable-gcc-warnings for GCC 4.3,
  1455.       and stop using a warning that had become unfixably verbose under
  1456.       GCC 4.3.
  1457.     - New --hush command-line option similar to --quiet. While --quiet
  1458.       disables all logging to the console on startup, --hush limits the
  1459.       output to messages of warning and error severity.
  1460.     - Servers support a new URL scheme for consensus downloads that
  1461.       allows the client to specify which authorities are trusted.
  1462.       The server then only sends the consensus if the client will trust
  1463.       it. Otherwise a 404 error is sent back. Clients use this
  1464.       new scheme when the server supports it (meaning it's running
  1465.       0.2.1.1-alpha or later). Implements proposal 134.
  1466.     - New configure/torrc options (--enable-geoip-stats,
  1467.       DirRecordUsageByCountry) to record how many IPs we've served
  1468.       directory info to in each country code, how many status documents
  1469.       total we've sent to each country code, and what share of the total
  1470.       directory requests we should expect to see.
  1471.     - Use the TLS1 hostname extension to more closely resemble browser
  1472.       behavior.
  1473.     - Lots of new unit tests.
  1474.     - Add a macro to implement the common pattern of iterating through
  1475.       two parallel lists in lockstep.
  1476. Changes in version 0.2.0.28-rc - 2008-06-13
  1477.   Tor 0.2.0.28-rc fixes an anonymity-related bug, fixes a hidden-service
  1478.   performance bug, and fixes a bunch of smaller bugs.
  1479.   o Anonymity fixes:
  1480.     - Fix a bug where, when we were choosing the 'end stream reason' to
  1481.       put in our relay end cell that we send to the exit relay, Tor
  1482.       clients on Windows were sometimes sending the wrong 'reason'. The
  1483.       anonymity problem is that exit relays may be able to guess whether
  1484.       the client is running Windows, thus helping partition the anonymity
  1485.       set. Down the road we should stop sending reasons to exit relays,
  1486.       or otherwise prevent future versions of this bug.
  1487.   o Major bugfixes:
  1488.     - While setting up a hidden service, some valid introduction circuits
  1489.       were overlooked and abandoned. This might be the reason for
  1490.       the long delay in making a hidden service available. Bugfix on
  1491.       0.2.0.14-alpha.
  1492.   o Minor features:
  1493.     - Update to the "June 9 2008" ip-to-country file.
  1494.     - Run 'make test' as part of 'make dist', so we stop releasing so
  1495.       many development snapshots that fail their unit tests.
  1496.   o Minor bugfixes:
  1497.     - When we're checking if we have enough dir info for each relay
  1498.       to begin establishing circuits, make sure that we actually have
  1499.       the descriptor listed in the consensus, not just any descriptor.
  1500.       Bugfix on 0.1.2.x.
  1501.     - Bridge relays no longer print "xx=0" in their extrainfo document
  1502.       for every single country code in the geoip db. Bugfix on
  1503.       0.2.0.27-rc.
  1504.     - Only warn when we fail to load the geoip file if we were planning to
  1505.       include geoip stats in our extrainfo document. Bugfix on 0.2.0.27-rc.
  1506.     - If we change our MaxAdvertisedBandwidth and then reload torrc,
  1507.       Tor won't realize it should publish a new relay descriptor. Fixes
  1508.       bug 688, reported by mfr. Bugfix on 0.1.2.x.
  1509.     - When we haven't had any application requests lately, don't bother
  1510.       logging that we have expired a bunch of descriptors. Bugfix
  1511.       on 0.1.2.x.
  1512.     - Make relay cells written on a connection count as non-padding when
  1513.       tracking how long a connection has been in use. Bugfix on
  1514.       0.2.0.1-alpha. Spotted by lodger.
  1515.     - Fix unit tests in 0.2.0.27-rc.
  1516.     - Fix compile on Windows.
  1517. Changes in version 0.2.0.27-rc - 2008-06-03
  1518.   Tor 0.2.0.27-rc adds a few features we left out of the earlier
  1519.   release candidates. In particular, we now include an IP-to-country
  1520.   GeoIP database, so controllers can easily look up what country a
  1521.   given relay is in, and so bridge relays can give us some sanitized
  1522.   summaries about which countries are making use of bridges. (See proposal
  1523.   126-geoip-fetching.txt for details.)
  1524.   o Major features:
  1525.     - Include an IP-to-country GeoIP file in the tarball, so bridge
  1526.       relays can report sanitized summaries of the usage they're seeing.
  1527.   o Minor features:
  1528.     - Add a "PURPOSE=" argument to "STREAM NEW" events, as suggested by
  1529.       Robert Hogan. Fixes the first part of bug 681.
  1530.     - Make bridge authorities never serve extrainfo docs.
  1531.     - Add support to detect Libevent versions in the 1.4.x series
  1532.       on mingw.
  1533.     - Fix build on gcc 4.3 with --enable-gcc-warnings set.
  1534.     - Include a new contrib/tor-exit-notice.html file that exit relay
  1535.       operators can put on their website to help reduce abuse queries.
  1536.   o Minor bugfixes:
  1537.     - When tunneling an encrypted directory connection, and its first
  1538.       circuit fails, do not leave it unattached and ask the controller
  1539.       to deal. Fixes the second part of bug 681.
  1540.     - Make bridge authorities correctly expire old extrainfo documents
  1541.       from time to time.
  1542. Changes in version 0.2.0.26-rc - 2008-05-13
  1543.   Tor 0.2.0.26-rc fixes a major security vulnerability caused by a bug
  1544.   in Debian's OpenSSL packages. All users running any 0.2.0.x version
  1545.   should upgrade, whether they're running Debian or not.
  1546.   o Major security fixes:
  1547.     - Use new V3 directory authority keys on the tor26, gabelmoo, and
  1548.       moria1 V3 directory authorities. The old keys were generated with
  1549.       a vulnerable version of Debian's OpenSSL package, and must be
  1550.       considered compromised. Other authorities' keys were not generated
  1551.       with an affected version of OpenSSL.
  1552.   o Major bugfixes:
  1553.     - List authority signatures as "unrecognized" based on DirServer
  1554.       lines, not on cert cache. Bugfix on 0.2.0.x.
  1555.   o Minor features:
  1556.     - Add a new V3AuthUseLegacyKey option to make it easier for
  1557.       authorities to change their identity keys if they have to.
  1558. Changes in version 0.2.0.25-rc - 2008-04-23
  1559.   Tor 0.2.0.25-rc makes Tor work again on OS X and certain BSDs.
  1560.   o Major bugfixes:
  1561.     - Remember to initialize threading before initializing logging.
  1562.       Otherwise, many BSD-family implementations will crash hard on
  1563.       startup. Fixes bug 671. Bugfix on 0.2.0.24-rc.
  1564.   o Minor bugfixes:
  1565.     - Authorities correctly free policies on bad servers on
  1566.       exit. Fixes bug 672. Bugfix on 0.2.0.x.
  1567. Changes in version 0.2.0.24-rc - 2008-04-22
  1568.   Tor 0.2.0.24-rc adds dizum (run by Alex de Joode) as the new sixth
  1569.   v3 directory authority, makes relays with dynamic IP addresses and no
  1570.   DirPort notice more quickly when their IP address changes, fixes a few
  1571.   rare crashes and memory leaks, and fixes a few other miscellaneous bugs.
  1572.   o New directory authorities:
  1573.     - Take lefkada out of the list of v3 directory authorities, since
  1574.       it has been down for months.
  1575.     - Set up dizum (run by Alex de Joode) as the new sixth v3 directory
  1576.       authority.
  1577.   o Major bugfixes:
  1578.     - Detect address changes more quickly on non-directory mirror
  1579.       relays. Bugfix on 0.2.0.18-alpha; fixes bug 652.
  1580.   o Minor features (security):
  1581.     - Reject requests for reverse-dns lookup of names that are in
  1582.       a private address space. Patch from lodger.
  1583.     - Non-exit relays no longer allow DNS requests. Fixes bug 619. Patch
  1584.       from lodger.
  1585.   o Minor bugfixes (crashes):
  1586.     - Avoid a rare assert that can trigger when Tor doesn't have much
  1587.       directory information yet and it tries to fetch a v2 hidden
  1588.       service descriptor. Fixes bug 651, reported by nwf.
  1589.     - Initialize log mutex before initializing dmalloc. Otherwise,
  1590.       running with dmalloc would crash. Bugfix on 0.2.0.x-alpha.
  1591.     - Use recursive pthread mutexes in order to avoid deadlock when
  1592.       logging debug-level messages to a controller. Bug spotted by nwf,
  1593.       bugfix on 0.2.0.16-alpha.
  1594.   o Minor bugfixes (resource management):
  1595.     - Keep address policies from leaking memory: start their refcount
  1596.       at 1, not 2. Bugfix on 0.2.0.16-alpha.
  1597.     - Free authority certificates on exit, so they don't look like memory
  1598.       leaks. Bugfix on 0.2.0.19-alpha.
  1599.     - Free static hashtables for policy maps and for TLS connections on
  1600.       shutdown, so they don't look like memory leaks. Bugfix on 0.2.0.x.
  1601.     - Avoid allocating extra space when computing consensuses on 64-bit
  1602.       platforms. Bug spotted by aakova.
  1603.   o Minor bugfixes (misc):
  1604.     - Do not read the configuration file when we've only been told to
  1605.       generate a password hash. Fixes bug 643. Bugfix on 0.0.9pre5. Fix
  1606.       based on patch from Sebastian Hahn.
  1607.     - Exit relays that are used as a client can now reach themselves
  1608.       using the .exit notation, rather than just launching an infinite
  1609.       pile of circuits. Fixes bug 641. Reported by Sebastian Hahn.
  1610.     - When attempting to open a logfile fails, tell us why.
  1611.     - Fix a dumb bug that was preventing us from knowing that we should
  1612.       preemptively build circuits to handle expected directory requests.
  1613.       Fixes bug 660. Bugfix on 0.1.2.x.
  1614.     - Warn less verbosely about clock skew from netinfo cells from
  1615.       untrusted sources. Fixes bug 663.
  1616.     - Make controller stream events for DNS requests more consistent,
  1617.       by adding "new stream" events for DNS requests, and removing
  1618.       spurious "stream closed" events" for cached reverse resolves.
  1619.       Patch from mwenge. Fixes bug 646.
  1620.     - Correctly notify one-hop connections when a circuit build has
  1621.       failed. Possible fix for bug 669. Found by lodger.
  1622. Changes in version 0.2.0.23-rc - 2008-03-24
  1623.   Tor 0.2.0.23-rc is the fourth release candidate for the 0.2.0 series. It
  1624.   makes bootstrapping faster if the first directory mirror you contact
  1625.   is down. The bundles also include the new Vidalia 0.1.2 release.
  1626.   o Major bugfixes:
  1627.     - When a tunneled directory request is made to a directory server
  1628.       that's down, notice after 30 seconds rather than 120 seconds. Also,
  1629.       fail any begindir streams that are pending on it, so they can
  1630.       retry elsewhere. This was causing multi-minute delays on bootstrap.
  1631. Changes in version 0.2.0.22-rc - 2008-03-18
  1632.   Tor 0.2.0.22-rc is the third release candidate for the 0.2.0 series. It
  1633.   enables encrypted directory connections by default for non-relays, fixes
  1634.   some broken TLS behavior we added in 0.2.0.20-rc, and resolves many
  1635.   other bugs. The bundles also include Vidalia 0.1.1 and Torbutton 1.1.17.
  1636.   o Major features:
  1637.     - Enable encrypted directory connections by default for non-relays,
  1638.       so censor tools that block Tor directory connections based on their
  1639.       plaintext patterns will no longer work. This means Tor works in
  1640.       certain censored countries by default again.
  1641.   o Major bugfixes:
  1642.     - Make sure servers always request certificates from clients during
  1643.       TLS renegotiation. Reported by lodger; bugfix on 0.2.0.20-rc.
  1644.     - Do not enter a CPU-eating loop when a connection is closed in
  1645.       the middle of client-side TLS renegotiation. Fixes bug 622. Bug
  1646.       diagnosed by lodger; bugfix on 0.2.0.20-rc.
  1647.     - Fix assertion failure that could occur when a blocked circuit
  1648.       became unblocked, and it had pending client DNS requests. Bugfix
  1649.       on 0.2.0.1-alpha. Fixes bug 632.
  1650.   o Minor bugfixes (on 0.1.2.x):
  1651.     - Generate "STATUS_SERVER" events rather than misspelled
  1652.       "STATUS_SEVER" events. Caught by mwenge.
  1653.     - When counting the number of bytes written on a TLS connection,
  1654.       look at the BIO actually used for writing to the network, not
  1655.       at the BIO used (sometimes) to buffer data for the network.
  1656.       Looking at different BIOs could result in write counts on the
  1657.       order of ULONG_MAX. Fixes bug 614.
  1658.     - On Windows, correctly detect errors when listing the contents of
  1659.       a directory. Fix from lodger.
  1660.   o Minor bugfixes (on 0.2.0.x):
  1661.     - Downgrade "sslv3 alert handshake failure" message to INFO.
  1662.     - If we set RelayBandwidthRate and RelayBandwidthBurst very high but
  1663.       left BandwidthRate and BandwidthBurst at the default, we would be
  1664.       silently limited by those defaults. Now raise them to match the
  1665.       RelayBandwidth* values.
  1666.     - Fix the SVK version detection logic to work correctly on a branch.
  1667.     - Make --enable-openbsd-malloc work correctly on Linux with alpha
  1668.       CPUs. Fixes bug 625.
  1669.     - Logging functions now check that the passed severity is sane.
  1670.     - Use proper log levels in the testsuite call of
  1671.       get_interface_address6().
  1672.     - When using a nonstandard malloc, do not use the platform values for
  1673.       HAVE_MALLOC_GOOD_SIZE or HAVE_MALLOC_USABLE_SIZE.
  1674.     - Make the openbsd malloc code use 8k pages on alpha CPUs and
  1675.       16k pages on ia64.
  1676.     - Detect mismatched page sizes when using --enable-openbsd-malloc.
  1677.     - Avoid double-marked-for-close warning when certain kinds of invalid
  1678.       .in-addr.arpa addresses are passed to the DNSPort. Part of a fix
  1679.       for bug 617. Bugfix on 0.2.0.1-alpha.
  1680.     - Make sure that the "NULL-means-reject *:*" convention is followed by
  1681.       all the policy manipulation functions, avoiding some possible crash
  1682.       bugs. Bug found by lodger. Bugfix on 0.2.0.16-alpha.
  1683.     - Fix the implementation of ClientDNSRejectInternalAddresses so that it
  1684.       actually works, and doesn't warn about every single reverse lookup.
  1685.       Fixes the other part of bug 617.  Bugfix on 0.2.0.1-alpha.
  1686.   o Minor features:
  1687.     - Only log guard node status when guard node status has changed.
  1688.     - Downgrade the 3 most common "INFO" messages to "DEBUG". This will
  1689.       make "INFO" 75% less verbose.
  1690. Changes in version 0.2.0.21-rc - 2008-03-02
  1691.   Tor 0.2.0.21-rc is the second release candidate for the 0.2.0 series. It
  1692.   makes Tor work well with Vidalia again, fixes a rare assert bug,
  1693.   and fixes a pair of more minor bugs. The bundles also include Vidalia
  1694.   0.1.0 and Torbutton 1.1.16.
  1695.   o Major bugfixes:
  1696.     - The control port should declare that it requires password auth
  1697.       when HashedControlSessionPassword is set too. Patch from Matt Edman;
  1698.       bugfix on 0.2.0.20-rc. Fixes bug 615.
  1699.     - Downgrade assert in connection_buckets_decrement() to a log message.
  1700.       This may help us solve bug 614, and in any case will make its
  1701.       symptoms less severe. Bugfix on 0.2.0.20-rc. Reported by fredzupy.
  1702.     - We were sometimes miscounting the number of bytes read from the
  1703.       network, causing our rate limiting to not be followed exactly.
  1704.       Bugfix on 0.2.0.16-alpha. Reported by lodger.
  1705.   o Minor bugfixes:
  1706.     - Fix compilation with OpenSSL 0.9.8 and 0.9.8a. All other supported
  1707.       OpenSSL versions should have been working fine. Diagnosis and patch
  1708.       from lodger, Karsten Loesing, and Sebastian Hahn. Fixes bug 616.
  1709.       Bugfix on 0.2.0.20-rc.
  1710. Changes in version 0.2.0.20-rc - 2008-02-24
  1711.   Tor 0.2.0.20-rc is the first release candidate for the 0.2.0 series. It
  1712.   makes more progress towards normalizing Tor's TLS handshake, makes
  1713.   hidden services work better again, helps relays bootstrap if they don't
  1714.   know their IP address, adds optional support for linking in openbsd's
  1715.   allocator or tcmalloc, allows really fast relays to scale past 15000
  1716.   sockets, and fixes a bunch of minor bugs reported by Veracode.
  1717.   o Major features:
  1718.     - Enable the revised TLS handshake based on the one designed by
  1719.       Steven Murdoch in proposal 124, as revised in proposal 130. It
  1720.       includes version negotiation for OR connections as described in
  1721.       proposal 105. The new handshake is meant to be harder for censors
  1722.       to fingerprint, and it adds the ability to detect certain kinds of
  1723.       man-in-the-middle traffic analysis attacks. The version negotiation
  1724.       feature will allow us to improve Tor's link protocol more safely
  1725.       in the future.
  1726.     - Choose which bridge to use proportional to its advertised bandwidth,
  1727.       rather than uniformly at random. This should speed up Tor for
  1728.       bridge users. Also do this for people who set StrictEntryNodes.
  1729.     - When a TrackHostExits-chosen exit fails too many times in a row,
  1730.       stop using it. Bugfix on 0.1.2.x; fixes bug 437.
  1731.   o Major bugfixes:
  1732.     - Resolved problems with (re-)fetching hidden service descriptors.
  1733.       Patch from Karsten Loesing; fixes problems with 0.2.0.18-alpha
  1734.       and 0.2.0.19-alpha.
  1735.     - If we only ever used Tor for hidden service lookups or posts, we
  1736.       would stop building circuits and start refusing connections after
  1737.       24 hours, since we falsely believed that Tor was dormant. Reported
  1738.       by nwf; bugfix on 0.1.2.x.
  1739.     - Servers that don't know their own IP address should go to the
  1740.       authorities for their first directory fetch, even if their DirPort
  1741.       is off or if they don't know they're reachable yet. This will help
  1742.       them bootstrap better. Bugfix on 0.2.0.18-alpha; fixes bug 609.
  1743.     - When counting the number of open sockets, count not only the number
  1744.       of sockets we have received from the socket() call, but also
  1745.       the number we've gotten from accept() and socketpair(). This bug
  1746.       made us fail to count all sockets that we were using for incoming
  1747.       connections. Bugfix on 0.2.0.x.
  1748.     - Fix code used to find strings within buffers, when those strings
  1749.       are not in the first chunk of the buffer. Bugfix on 0.2.0.x.
  1750.     - Fix potential segfault when parsing HTTP headers. Bugfix on 0.2.0.x.
  1751.     - Add a new __HashedControlSessionPassword option for controllers
  1752.       to use for one-off session password hashes that shouldn't get
  1753.       saved to disk by SAVECONF --- Vidalia users were accumulating a
  1754.       pile of HashedControlPassword lines in their torrc files, one for
  1755.       each time they had restarted Tor and then clicked Save. Make Tor
  1756.       automatically convert "HashedControlPassword" to this new option but
  1757.       only when it's given on the command line. Partial fix for bug 586.
  1758.   o Minor features (performance):
  1759.     - Tune parameters for cell pool allocation to minimize amount of
  1760.       RAM overhead used.
  1761.     - Add OpenBSD malloc code from phk as an optional malloc
  1762.       replacement on Linux: some glibc libraries do very poorly
  1763.       with Tor's memory allocation patterns. Pass
  1764.       --enable-openbsd-malloc to get the replacement malloc code.
  1765.     - Add a --with-tcmalloc option to the configure script to link
  1766.       against tcmalloc (if present). Does not yet search for
  1767.       non-system include paths.
  1768.     - Stop imposing an arbitrary maximum on the number of file descriptors
  1769.       used for busy servers. Bug reported by Olaf Selke; patch from
  1770.       Sebastian Hahn.
  1771.   o Minor features (other):
  1772.     - When SafeLogging is disabled, log addresses along with all TLS
  1773.       errors.
  1774.     - When building with --enable-gcc-warnings, check for whether Apple's
  1775.       warning "-Wshorten-64-to-32" is available.
  1776.     - Add a --passphrase-fd argument to the tor-gencert command for
  1777.       scriptability.
  1778.   o Minor bugfixes (memory leaks and code problems):
  1779.     - We were leaking a file descriptor if Tor started with a zero-length
  1780.       cached-descriptors file. Patch by freddy77; bugfix on 0.1.2.
  1781.     - Detect size overflow in zlib code. Reported by Justin Ferguson and
  1782.       Dan Kaminsky.
  1783.     - We were comparing the raw BridgePassword entry with a base64'ed
  1784.       version of it, when handling a "/tor/networkstatus-bridges"
  1785.       directory request. Now compare correctly. Noticed by Veracode.
  1786.     - Recover from bad tracked-since value in MTBF-history file.
  1787.       Should fix bug 537.
  1788.     - Alter the code that tries to recover from unhandled write
  1789.       errors, to not try to flush onto a socket that's given us
  1790.       unhandled errors. Bugfix on 0.1.2.x.
  1791.     - Make Unix controlsockets work correctly on OpenBSD. Patch from
  1792.       tup. Bugfix on 0.2.0.3-alpha.
  1793.   o Minor bugfixes (other):
  1794.     - If we have an extra-info document for our server, always make
  1795.       it available on the control port, even if we haven't gotten
  1796.       a copy of it from an authority yet. Patch from mwenge.
  1797.     - Log the correct memory chunk sizes for empty RAM chunks in mempool.c.
  1798.     - Directory mirrors no longer include a guess at the client's IP
  1799.       address if the connection appears to be coming from the same /24
  1800.       network; it was producing too many wrong guesses.
  1801.     - Make the new hidden service code respect the SafeLogging setting.
  1802.       Bugfix on 0.2.0.x. Patch from Karsten.
  1803.     - When starting as an authority, do not overwrite all certificates
  1804.       cached from other authorities. Bugfix on 0.2.0.x. Fixes bug 606.
  1805.     - If we're trying to flush the last bytes on a connection (for
  1806.       example, when answering a directory request), reset the
  1807.       time-to-give-up timeout every time we manage to write something
  1808.       on the socket. Bugfix on 0.1.2.x.
  1809.     - Change the behavior of "getinfo status/good-server-descriptor"
  1810.       so it doesn't return failure when any authority disappears.
  1811.     - Even though the man page said that "TrackHostExits ." should
  1812.       work, nobody had ever implemented it. Bugfix on 0.1.0.x.
  1813.     - Report TLS "zero return" case as a "clean close" and "IO error"
  1814.       as a "close". Stop calling closes "unexpected closes": existing
  1815.       Tors don't use SSL_close(), so having a connection close without
  1816.       the TLS shutdown handshake is hardly unexpected.
  1817.     - Send NAMESERVER_STATUS messages for a single failed nameserver
  1818.       correctly.
  1819.   o Code simplifications and refactoring:
  1820.     - Remove the tor_strpartition function: its logic was confused,
  1821.       and it was only used for one thing that could be implemented far
  1822.       more easily.
  1823. Changes in version 0.2.0.19-alpha - 2008-02-09
  1824.   Tor 0.2.0.19-alpha makes more progress towards normalizing Tor's TLS
  1825.   handshake, makes path selection for relays more secure and IP address
  1826.   guessing more robust, and generally fixes a lot of bugs in preparation
  1827.   for calling the 0.2.0 branch stable.