<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://blog.torproject.org" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>stable release</title>
 <link>http://blog.torproject.org/category/tags/stable-release</link>
 <description>The taxonomy view with a depth of 0.</description>
 <language>en</language>
<item>
 <title>Tor 0.2.1.18 and 0.2.1.19 released as stable</title>
 <link>http://blog.torproject.org/blog/tor-02118-and-02119-released-stable</link>
 <description>&lt;p&gt;Tor 0.2.1.18 lays the foundations for performance improvements, adds&lt;br /&gt;
status events to help users diagnose bootstrap problems, adds optional&lt;br /&gt;
authentication/authorization for hidden services, fixes a variety of&lt;br /&gt;
potential anonymity problems, and includes a huge pile of other features&lt;br /&gt;
and bug fixes.&lt;/p&gt;
&lt;p&gt;Tor 0.2.1.19 fixes a major bug with accessing and providing hidden&lt;br /&gt;
services.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.torproject.org/easy-download&quot; title=&quot;https://www.torproject.org/easy-download&quot; rel=&quot;nofollow&quot;&gt;https://www.torproject.org/easy-download&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Changes in version 0.2.1.19 - 2009-07-28&lt;br /&gt;
&lt;strong&gt;Major bugfixes:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;    Make accessing hidden services on 0.2.1.x work right again.&lt;br /&gt;
      Bugfix on 0.2.1.3-alpha; workaround for bug 1038. Diagnosis and&lt;br /&gt;
      part of patch provided by &quot;optimist&quot;.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Minor features:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;    When a relay/bridge is writing out its identity key fingerprint to&lt;br /&gt;
      the &quot;fingerprint&quot; file and to its logs, write it without spaces. Now&lt;br /&gt;
      it will look like the fingerprints in our bridges documentation,&lt;br /&gt;
      and confuse fewer users.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Minor bugfixes:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;    Relays no longer publish a new server descriptor if they change&lt;br /&gt;
      their MaxAdvertisedBandwidth config option but it doesn&#039;t end up&lt;br /&gt;
      changing their advertised bandwidth numbers. Bugfix on 0.2.0.28-rc;&lt;br /&gt;
      fixes bug 1026. Patch from Sebastian.
&lt;/li&gt;
&lt;li&gt;Avoid leaking memory every time we get a create cell but we have&lt;br /&gt;
      so many already queued that we refuse it. Bugfix on 0.2.0.19-alpha;&lt;br /&gt;
      fixes bug 1034. Reported by BarkerJr.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Changes in version 0.2.1.18 - 2009-07-24&lt;br /&gt;
&lt;strong&gt;Major features (clients):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Start sending &quot;bootstrap phase&quot; status events to the controller,&lt;br /&gt;
      so it can keep the user informed of progress fetching directory&lt;br /&gt;
      information and establishing circuits. Also inform the controller&lt;br /&gt;
      if we think we&#039;re stuck at a particular bootstrap phase. Implements&lt;br /&gt;
      proposal 137.
&lt;/li&gt;
&lt;li&gt; Clients replace entry guards that were chosen more than a few months&lt;br /&gt;
      ago. This change should significantly improve client performance,&lt;br /&gt;
      especially once more people upgrade, since relays that have been&lt;br /&gt;
      a guard for a long time are currently overloaded.&lt;/li&gt;
&lt;li&gt;Network status consensus documents and votes now contain bandwidth&lt;br /&gt;
      information for each relay. Clients use the bandwidth values&lt;br /&gt;
      in the consensus, rather than the bandwidth values in each&lt;br /&gt;
      relay descriptor. This approach opens the door to more accurate&lt;br /&gt;
      bandwidth estimates once the directory authorities start doing&lt;br /&gt;
      active measurements. Implements part of proposal 141.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Major features (relays):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Disable and refactor some debugging checks that forced a linear scan&lt;br /&gt;
      over the whole server-side DNS cache. These accounted for over 50%&lt;br /&gt;
      of CPU time on a relatively busy exit node&#039;s gprof profile. Also,&lt;br /&gt;
      disable some debugging checks that appeared in exit node profile&lt;br /&gt;
      data. Found by Jacob.
&lt;/li&gt;
&lt;li&gt;New DirPortFrontPage option that takes an html file and publishes&lt;br /&gt;
      it as &quot;/&quot; on the DirPort. Now relay operators can provide a&lt;br /&gt;
      disclaimer without needing to set up a separate webserver. There&#039;s&lt;br /&gt;
      a sample disclaimer in contrib/tor-exit-notice.html.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Major features (hidden services):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Make it possible to build hidden services that only certain clients&lt;br /&gt;
      are allowed to connect to. This is enforced at several points,&lt;br /&gt;
      so that unauthorized clients are unable to send INTRODUCE cells&lt;br /&gt;
      to the service, or even (depending on the type of authentication)&lt;br /&gt;
      to learn introduction points. This feature raises the bar for&lt;br /&gt;
      certain kinds of active attacks against hidden services. Design&lt;br /&gt;
      and code by Karsten Loesing. Implements proposal 121.
&lt;/li&gt;
&lt;li&gt;Relays now store and serve v2 hidden service descriptors by default,&lt;br /&gt;
      i.e., the new default value for HidServDirectoryV2 is 1. This is&lt;br /&gt;
      the last step in proposal 114, which aims to make hidden service&lt;br /&gt;
      lookups more reliable.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Major features (path selection):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ExitNodes and Exclude*Nodes config options now allow you to restrict&lt;br /&gt;
      by country code (&quot;{US}&quot;) or IP address or address pattern&lt;br /&gt;
      (&quot;255.128.0.0/16&quot;). Patch from Robert Hogan. It still needs some&lt;br /&gt;
      refinement to decide what config options should take priority if&lt;br /&gt;
      you ask to both use a particular node and exclude it.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Major features (misc):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When building a consensus, do not include routers that are down.&lt;br /&gt;
      This cuts down 30% to 40% on consensus size. Implements proposal&lt;br /&gt;
      138.
&lt;/li&gt;
&lt;li&gt; New TestingTorNetwork config option to allow adjustment of&lt;br /&gt;
      previously constant values that could slow bootstrapping. Implements&lt;br /&gt;
      proposal 135. Patch from Karsten.
&lt;/li&gt;
&lt;li&gt;Convert many internal address representations to optionally hold&lt;br /&gt;
      IPv6 addresses. Generate and accept IPv6 addresses in many protocol&lt;br /&gt;
      elements. Make resolver code handle nameservers located at IPv6&lt;br /&gt;
      addresses.&lt;/li&gt;
&lt;li&gt;More work on making our TLS handshake blend in: modify the list&lt;br /&gt;
      of ciphers advertised by OpenSSL in client mode to even more&lt;br /&gt;
      closely resemble a common web browser. We cheat a little so that&lt;br /&gt;
      we can advertise ciphers that the locally installed OpenSSL doesn&#039;t&lt;br /&gt;
      know about.
&lt;/li&gt;
&lt;li&gt;Use the TLS1 hostname extension to more closely resemble browser&lt;br /&gt;
      behavior.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Security fixes (anonymity/entropy):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Never use a connection with a mismatched address to extend a&lt;br /&gt;
      circuit, unless that connection is canonical. A canonical&lt;br /&gt;
      connection is one whose address is authenticated by the router&#039;s&lt;br /&gt;
      identity key, either in a NETINFO cell or in a router descriptor.&lt;/li&gt;
&lt;li&gt;Implement most of proposal 110: The first K cells to be sent&lt;br /&gt;
      along a circuit are marked as special &quot;early&quot; cells; only K &quot;early&quot;&lt;br /&gt;
      cells will be allowed. Once this code is universal, we can block&lt;br /&gt;
      certain kinds of denial-of-service attack by requiring that EXTEND&lt;br /&gt;
      commands must be sent using an &quot;early&quot; cell.&lt;/li&gt;
&lt;li&gt;Resume using OpenSSL&#039;s RAND_poll() for better (and more portable)&lt;br /&gt;
      cross-platform entropy collection again. We used to use it, then&lt;br /&gt;
      stopped using it because of a bug that could crash systems that&lt;br /&gt;
      called RAND_poll when they had a lot of fds open. It looks like the&lt;br /&gt;
      bug got fixed in late 2006. Our new behavior is to call RAND_poll()&lt;br /&gt;
      at startup, and to call RAND_poll() when we reseed later only if&lt;br /&gt;
      we have a non-buggy OpenSSL version.&lt;/li&gt;
&lt;li&gt;When the client is choosing entry guards, now it selects at most&lt;br /&gt;
      one guard from a given relay family. Otherwise we could end up with&lt;br /&gt;
      all of our entry points into the network run by the same operator.&lt;br /&gt;
      Suggested by Camilo Viecco. Fix on 0.1.1.11-alpha.&lt;/li&gt;
&lt;li&gt;Do not use or believe expired v3 authority certificates. Patch&lt;br /&gt;
      from Karsten. Bugfix in 0.2.0.x. Fixes bug 851.
&lt;/li&gt;
&lt;li&gt;Drop begin cells to a hidden service if they come from the middle&lt;br /&gt;
      of a circuit. Patch from lark.
&lt;/li&gt;
&lt;li&gt;When we erroneously receive two EXTEND cells for the same circuit&lt;br /&gt;
      ID on the same connection, drop the second. Patch from lark.
&lt;/li&gt;
&lt;li&gt;Authorities now vote for the Stable flag for any router whose&lt;br /&gt;
      weighted MTBF is at least 5 days, regardless of the mean MTBF.
&lt;/li&gt;
&lt;li&gt;Clients now never report any stream end reason except &#039;MISC&#039;.&lt;br /&gt;
      Implements proposal 148.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Major bugfixes (crashes):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Parse dates and IPv4 addresses in a locale- and libc-independent&lt;br /&gt;
      manner, to avoid platform-dependent behavior on malformed input.
&lt;/li&gt;
&lt;li&gt;Fix a crash that occurs on exit nodes when a nameserver request&lt;br /&gt;
      timed out. Bugfix on 0.1.2.1-alpha; our CLEAR debugging code had&lt;br /&gt;
      been suppressing the bug since 0.1.2.10-alpha. Partial fix for&lt;br /&gt;
      bug 929.&lt;/li&gt;
&lt;li&gt;Do not assume that a stack-allocated character array will be&lt;br /&gt;
      64-bit aligned on platforms that demand that uint64_t access is&lt;br /&gt;
      aligned. Possible fix for bug 604.
 &lt;/li&gt;
&lt;li&gt;Resolve a very rare crash bug that could occur when the user forced&lt;br /&gt;
      a nameserver reconfiguration during the middle of a nameserver&lt;br /&gt;
      probe. Fixes bug 526. Bugfix on 0.1.2.1-alpha.
&lt;/li&gt;
&lt;li&gt;Avoid a &quot;0 divided by 0&quot; calculation when calculating router uptime&lt;br /&gt;
      at directory authorities. Bugfix on 0.2.0.8-alpha.
&lt;/li&gt;
&lt;li&gt;Fix an assertion bug in parsing policy-related options; possible fix&lt;br /&gt;
      for bug 811.
&lt;/li&gt;
&lt;li&gt;Rate-limit too-many-sockets messages: when they happen, they happen&lt;br /&gt;
      a lot and end up filling up the disk. Resolves bug 748.
&lt;/li&gt;
&lt;li&gt;Fix a race condition that could cause crashes or memory corruption&lt;br /&gt;
      when running as a server with a controller listening for log&lt;br /&gt;
      messages.
&lt;/li&gt;
&lt;li&gt;Avoid crashing when we have a policy specified in a DirPolicy or&lt;br /&gt;
      SocksPolicy or ReachableAddresses option with ports set on it,&lt;br /&gt;
      and we re-load the policy. May fix bug 996.
&lt;/li&gt;
&lt;li&gt;Fix an assertion failure on 64-bit platforms when we allocated&lt;br /&gt;
      memory right up to the end of a memarea, then realigned the memory&lt;br /&gt;
      one step beyond the end. Fixes a possible cause of bug 930.
&lt;/li&gt;
&lt;li&gt;Protect the count of open sockets with a mutex, so we can&#039;t&lt;br /&gt;
      corrupt it when two threads are closing or opening sockets at once.&lt;br /&gt;
      Fix for bug 939. Bugfix on 0.2.0.1-alpha.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Major bugfixes (clients):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Discard router descriptors as we load them if they are more than&lt;br /&gt;
      five days old. Otherwise if Tor is off for a long time and then&lt;br /&gt;
      starts with cached descriptors, it will try to use the onion keys&lt;br /&gt;
      in those obsolete descriptors when building circuits. Fixes bug 887.&lt;/li&gt;
&lt;li&gt;When we choose to abandon a new entry guard because we think our&lt;br /&gt;
      older ones might be better, close any circuits pending on that&lt;br /&gt;
      new entry guard connection. This fix should make us recover much&lt;br /&gt;
      faster when our network is down and then comes back. Bugfix on&lt;br /&gt;
      0.1.2.8-beta; found by lodger.&lt;/li&gt;
&lt;li&gt;When Tor clients restart after 1-5 days, they discard all their&lt;br /&gt;
      cached descriptors as too old, but they still use the cached&lt;br /&gt;
      consensus document. This approach is good for robustness, but&lt;br /&gt;
      bad for performance: since they don&#039;t know any bandwidths, they&lt;br /&gt;
      end up choosing at random rather than weighting their choice by&lt;br /&gt;
      speed. Fixed by the above feature of putting bandwidths in the&lt;br /&gt;
      consensus.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Major bugfixes (relays):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Relays were falling out of the networkstatus consensus for&lt;br /&gt;
      part of a day if they changed their local config but the&lt;br /&gt;
      authorities discarded their new descriptor as &quot;not sufficiently&lt;br /&gt;
      different&quot;. Now directory authorities accept a descriptor as changed&lt;br /&gt;
      if BandwidthRate or BandwidthBurst changed. Partial fix for bug 962;&lt;br /&gt;
      patch by Sebastian.
&lt;/li&gt;
&lt;li&gt;Ensure that two circuits can never exist on the same connection&lt;br /&gt;
      with the same circuit ID, even if one is marked for close. This&lt;br /&gt;
      is conceivably a bugfix for bug 779; fixes a bug on 0.1.0.4-rc.
&lt;/li&gt;
&lt;li&gt;Directory authorities were neglecting to mark relays down in their&lt;br /&gt;
      internal histories if the relays fall off the routerlist without&lt;br /&gt;
      ever being found unreachable. So there were relays in the histories&lt;br /&gt;
      that haven&#039;t been seen for eight months, and are listed as being&lt;br /&gt;
      up for eight months. This wreaked havoc on the &quot;median wfu&quot; and&lt;br /&gt;
      &quot;median mtbf&quot; calculations, in turn making Guard and Stable flags&lt;br /&gt;
      wrong, hurting network performance. Fixes bugs 696 and 969. Bugfix&lt;br /&gt;
      on 0.2.0.6-alpha.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Major bugfixes (hidden services):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When establishing a hidden service, introduction points that&lt;br /&gt;
      originate from cannibalized circuits were completely ignored&lt;br /&gt;
      and not included in rendezvous service descriptors. This might&lt;br /&gt;
      have been another reason for delay in making a hidden service&lt;br /&gt;
      available. Bugfix from long ago (0.0.9.x?)
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Major bugfixes (memory and resource management):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed some memory leaks -- some quite frequent, some almost&lt;br /&gt;
      impossible to trigger -- based on results from Coverity.
&lt;/li&gt;
&lt;li&gt;Speed up parsing and cut down on memory fragmentation by using&lt;br /&gt;
      stack-style allocations for parsing directory objects. Previously,&lt;br /&gt;
      this accounted for over 40% of allocations from within Tor&#039;s code&lt;br /&gt;
      on a typical directory cache.
&lt;/li&gt;
&lt;li&gt;Use a Bloom filter rather than a digest-based set to track which&lt;br /&gt;
      descriptors we need to keep around when we&#039;re cleaning out old&lt;br /&gt;
      router descriptors. This speeds up the computation significantly,&lt;br /&gt;
      and may reduce fragmentation.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;New/changed config options:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Now NodeFamily and MyFamily config options allow spaces in&lt;br /&gt;
      identity fingerprints, so it&#039;s easier to paste them in.&lt;br /&gt;
      Suggested by Lucky Green.
    &lt;/li&gt;
&lt;li&gt;Allow ports 465 and 587 in the default exit policy again. We had&lt;br /&gt;
      rejected them in 0.1.0.15, because back in 2005 they were commonly&lt;br /&gt;
      misconfigured and ended up as spam targets. We hear they are better&lt;br /&gt;
      locked down these days.
&lt;/li&gt;
&lt;li&gt;Make TrackHostExit mappings expire a while after their last use, not&lt;br /&gt;
      after their creation. Patch from Robert Hogan.
&lt;/li&gt;
&lt;li&gt;Add an ExcludeExitNodes option so users can list a set of nodes&lt;br /&gt;
      that should be be excluded from the exit node position, but&lt;br /&gt;
      allowed elsewhere. Implements proposal 151.
&lt;/li&gt;
&lt;li&gt; New --hush command-line option similar to --quiet. While --quiet&lt;br /&gt;
      disables all logging to the console on startup, --hush limits the&lt;br /&gt;
      output to messages of warning and error severity.
&lt;/li&gt;
&lt;li&gt;New configure/torrc options (--enable-geoip-stats,&lt;br /&gt;
      DirRecordUsageByCountry) to record how many IPs we&#039;ve served&lt;br /&gt;
      directory info to in each country code, how many status documents&lt;br /&gt;
      total we&#039;ve sent to each country code, and what share of the total&lt;br /&gt;
      directory requests we should expect to see.
&lt;/li&gt;
&lt;li&gt;Make outbound DNS packets respect the OutboundBindAddress setting.&lt;br /&gt;
      Fixes the bug part of bug 798. Bugfix on 0.1.2.2-alpha.
&lt;/li&gt;
&lt;li&gt;Allow separate log levels to be configured for different logging&lt;br /&gt;
      domains. For example, this allows one to log all notices, warnings,&lt;br /&gt;
      or errors, plus all memory management messages of level debug or&lt;br /&gt;
      higher, with: Log [MM] debug-err [*] notice-err file /var/log/tor.
&lt;/li&gt;
&lt;li&gt;Update to the &quot;June 3 2009&quot; ip-to-country file.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Minor features (relays):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Raise the minimum rate limiting to be a relay from 20000 bytes&lt;br /&gt;
      to 20480 bytes (aka 20KB/s), to match our documentation. Also&lt;br /&gt;
      update directory authorities so they always assign the Fast flag&lt;br /&gt;
      to relays with 20KB/s of capacity. Now people running relays won&#039;t&lt;br /&gt;
      suddenly find themselves not seeing any use, if the network gets&lt;br /&gt;
      faster on average.&lt;/li&gt;
&lt;li&gt;If we&#039;re a relay and we change our IP address, be more verbose&lt;br /&gt;
      about the reason that made us change. Should help track down&lt;br /&gt;
      further bugs for relays on dynamic IP addresses.
&lt;/li&gt;
&lt;li&gt;Exit servers can now answer resolve requests for ip6.arpa addresses.
&lt;/li&gt;
&lt;li&gt;Implement most of Proposal 152: allow specialized servers to permit&lt;br /&gt;
      single-hop circuits, and clients to use those servers to build&lt;br /&gt;
      single-hop circuits when using a specialized controller. Patch&lt;br /&gt;
      from Josh Albrecht. Resolves feature request 768.&lt;/li&gt;
&lt;li&gt; When relays do their initial bandwidth measurement, don&#039;t limit&lt;br /&gt;
      to just our entry guards for the test circuits. Otherwise we tend&lt;br /&gt;
      to have multiple test circuits going through a single entry guard,&lt;br /&gt;
      which makes our bandwidth test less accurate. Fixes part of bug 654;&lt;br /&gt;
      patch contributed by Josh Albrecht.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Minor features (directory authorities):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Try not to open more than one descriptor-downloading connection&lt;br /&gt;
      to an authority at once. This should reduce load on directory&lt;br /&gt;
      authorities. Fixes bug 366.&lt;/li&gt;
&lt;li&gt;Add cross-certification to newly generated certificates, so that&lt;br /&gt;
      a signing key is enough information to look up a certificate. Start&lt;br /&gt;
      serving certificates by&lt;br /&gt;
      pairs. Implements proposal 157.
&lt;/li&gt;
&lt;li&gt;When a directory authority downloads a descriptor that it then&lt;br /&gt;
      immediately rejects, do not retry downloading it right away. Should&lt;br /&gt;
      save some bandwidth on authorities. Fix for bug 888. Patch by&lt;br /&gt;
      Sebastian Hahn.
&lt;/li&gt;
&lt;li&gt;Directory authorities now serve a /tor/dbg-stability.txt URL to&lt;br /&gt;
      help debug WFU and MTBF calculations.
&lt;/li&gt;
&lt;li&gt;In directory authorities&#039; approved-routers files, allow&lt;br /&gt;
      fingerprints with or without space.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Minor features (directory mirrors):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When a download gets us zero good descriptors, do not notify&lt;br /&gt;
      Tor that new directory information has arrived.
&lt;/li&gt;
&lt;li&gt;Servers support a new URL scheme for consensus downloads that&lt;br /&gt;
      allows the client to specify which authorities are trusted.&lt;br /&gt;
      The server then only sends the consensus if the client will trust&lt;br /&gt;
      it. Otherwise a 404 error is sent back. Clients use this&lt;br /&gt;
      new scheme when the server supports it (meaning it&#039;s running&lt;br /&gt;
      0.2.1.1-alpha or later). Implements proposal 134.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Minor features (bridges):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If the bridge config line doesn&#039;t specify a port, assume 443.&lt;br /&gt;
      This makes bridge lines a bit smaller and easier for users to&lt;br /&gt;
      understand.
&lt;/li&gt;
&lt;li&gt;If we&#039;re using bridges and our network goes away, be more willing&lt;br /&gt;
      to forgive our bridges and try again when we get an application&lt;br /&gt;
      request.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Minor features (hidden services):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When the client launches an introduction circuit, retry with a&lt;br /&gt;
      new circuit after 30 seconds rather than 60 seconds.
&lt;/li&gt;
&lt;li&gt;Launch a second client-side introduction circuit in parallel&lt;br /&gt;
      after a delay of 15 seconds (based on work by Christian Wilms).
&lt;/li&gt;
&lt;li&gt;Hidden services start out building five intro circuits rather&lt;br /&gt;
      than three, and when the first three finish they publish a service&lt;br /&gt;
      descriptor using those. Now we publish our service descriptor much&lt;br /&gt;
      faster after restart.
&lt;/li&gt;
&lt;li&gt;Drop the requirement to have an open dir port for storing and&lt;br /&gt;
      serving v2 hidden service descriptors.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Minor features (build and packaging):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;On Linux, use the prctl call to re-enable core dumps when the User&lt;br /&gt;
      option is set.
&lt;/li&gt;
&lt;li&gt;Try to make sure that the version of Libevent we&#039;re running with&lt;br /&gt;
      is binary-compatible with the one we built with. May address bug&lt;br /&gt;
      897 and others.
&lt;/li&gt;
&lt;li&gt;Add a new --enable-local-appdata configuration switch to change&lt;br /&gt;
      the default location of the datadir on win32 from APPDATA to&lt;br /&gt;
      LOCAL_APPDATA. In the future, we should migrate to LOCAL_APPDATA&lt;br /&gt;
      entirely. Patch from coderman.
&lt;/li&gt;
&lt;li&gt;Build correctly against versions of OpenSSL 0.9.8 or later that&lt;br /&gt;
      are built without support for deprecated functions.
&lt;/li&gt;
&lt;li&gt;On platforms with a maximum syslog string length, truncate syslog&lt;br /&gt;
      messages to that length ourselves, rather than relying on the&lt;br /&gt;
      system to do it for us.
&lt;/li&gt;
&lt;li&gt;Automatically detect MacOSX versions earlier than 10.4.0, and&lt;br /&gt;
      disable kqueue from inside Tor when running with these versions.&lt;br /&gt;
      We previously did this from the startup script, but that was no&lt;br /&gt;
      help to people who didn&#039;t use the startup script. Resolves bug 863.
&lt;/li&gt;
&lt;li&gt;Build correctly when configured to build outside the main source&lt;br /&gt;
      path. Patch from Michael Gold.
&lt;/li&gt;
&lt;li&gt;Disable GCC&#039;s strict alias optimization by default, to avoid the&lt;br /&gt;
      likelihood of its introducing subtle bugs whenever our code violates&lt;br /&gt;
      the letter of C99&#039;s alias rules.
&lt;/li&gt;
&lt;li&gt;Change the contrib/tor.logrotate script so it makes the new&lt;br /&gt;
      logs as &quot;_tor:_tor&quot; rather than the default, which is generally&lt;br /&gt;
      &quot;root:wheel&quot;. Fixes bug 676, reported by Serge Koksharov.
&lt;/li&gt;
&lt;li&gt;Change our header file guard macros to be less likely to conflict&lt;br /&gt;
      with system headers. Adam Langley noticed that we were conflicting&lt;br /&gt;
      with log.h on Android.
&lt;/li&gt;
&lt;li&gt;Add a couple of extra warnings to --enable-gcc-warnings for GCC 4.3,&lt;br /&gt;
      and stop using a warning that had become unfixably verbose under&lt;br /&gt;
      GCC 4.3.
&lt;/li&gt;
&lt;li&gt;Use a lockfile to make sure that two Tor processes are not&lt;br /&gt;
      simultaneously running with the same datadir.
&lt;/li&gt;
&lt;li&gt;Allow OpenSSL to use dynamic locks if it wants.&lt;/li&gt;
&lt;li&gt;Add LIBS=-lrt to Makefile.am so the Tor RPMs use a static libevent.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Minor features (controllers):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When generating circuit events with verbose nicknames for&lt;br /&gt;
      controllers, try harder to look up nicknames for routers on a&lt;br /&gt;
      circuit. (Previously, we would look in the router descriptors we had&lt;br /&gt;
      for nicknames, but not in the consensus.) Partial fix for bug 941.&lt;/li&gt;
&lt;li&gt;New controller event NEWCONSENSUS that lists the networkstatus&lt;br /&gt;
      lines for every recommended relay. Now controllers like Torflow&lt;br /&gt;
      can keep up-to-date on which relays they should be using.
&lt;/li&gt;
&lt;li&gt;New controller event &quot;clients_seen&quot; to report a geoip-based summary&lt;br /&gt;
      of which countries we&#039;ve seen clients from recently. Now controllers&lt;br /&gt;
      like Vidalia can show bridge operators that they&#039;re actually making&lt;br /&gt;
      a difference.
&lt;/li&gt;
&lt;li&gt;Add a &#039;getinfo status/clients-seen&#039; controller command, in case&lt;br /&gt;
      controllers want to hear clients_seen events but connect late.
&lt;/li&gt;
&lt;li&gt;New CONSENSUS_ARRIVED event to note when a new consensus has&lt;br /&gt;
      been fetched and validated.
&lt;/li&gt;
&lt;li&gt;Add an internal-use-only __ReloadTorrcOnSIGHUP option for&lt;br /&gt;
      controllers to prevent SIGHUP from reloading the configuration.&lt;br /&gt;
      Fixes bug 856.
&lt;/li&gt;
&lt;li&gt;Return circuit purposes in response to GETINFO circuit-status.&lt;br /&gt;
      Fixes bug 858.&lt;/li&gt;
&lt;li&gt;Serve the latest v3 networkstatus consensus via the control&lt;br /&gt;
      port. Use &quot;getinfo dir/status-vote/current/consensus&quot; to fetch it.
&lt;/li&gt;
&lt;li&gt;Add a &quot;GETINFO /status/bootstrap-phase&quot; controller option, so the&lt;br /&gt;
      controller can query our current bootstrap state in case it attaches&lt;br /&gt;
      partway through and wants to catch up.&lt;/li&gt;
&lt;li&gt;Provide circuit purposes along with circuit events to the controller.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Minor features (tools):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Do not have tor-resolve automatically refuse all .onion addresses;&lt;br /&gt;
      if AutomapHostsOnResolve is set in your torrc, this will work fine.
&lt;/li&gt;
&lt;li&gt;Add a -p option to tor-resolve for specifying the SOCKS port: some&lt;br /&gt;
      people find host:port too confusing.
&lt;/li&gt;
&lt;li&gt;Print the SOCKS5 error message string as well as the error code&lt;br /&gt;
      when a tor-resolve request fails. Patch from Jacob.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Minor bugfixes (memory and resource management):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Clients no longer cache certificates for authorities they do not&lt;br /&gt;
      recognize. Bugfix on 0.2.0.9-alpha.&lt;/li&gt;
&lt;li&gt;   Do not use C&#039;s stdio library for writing to log files. This will&lt;br /&gt;
      improve logging performance by a minute amount, and will stop&lt;br /&gt;
      leaking fds when our disk is full. Fixes bug 861.
&lt;/li&gt;
&lt;li&gt;Stop erroneous use of O_APPEND in cases where we did not in fact&lt;br /&gt;
      want to re-seek to the end of a file before every last write().
&lt;/li&gt;
&lt;li&gt;Fix a small alignment and memory-wasting bug on buffer chunks.&lt;br /&gt;
      Spotted by rovv.
&lt;/li&gt;
&lt;li&gt;Add a malloc_good_size implementation to OpenBSD_malloc_linux.c,&lt;br /&gt;
      to avoid unused RAM in buffer chunks and memory pools.
&lt;/li&gt;
&lt;li&gt;Reduce the default smartlist size from 32 to 16; it turns out that&lt;br /&gt;
      most smartlists hold around 8-12 elements tops.
&lt;/li&gt;
&lt;li&gt;Make dumpstats() log the fullness and size of openssl-internal&lt;br /&gt;
      buffers.
&lt;/li&gt;
&lt;li&gt;If the user has applied the experimental SSL_MODE_RELEASE_BUFFERS&lt;br /&gt;
      patch to their OpenSSL, turn it on to save memory on servers. This&lt;br /&gt;
      patch will (with any luck) get included in a mainline distribution&lt;br /&gt;
      before too long.
&lt;/li&gt;
&lt;li&gt;Fix a memory leak when v3 directory authorities load their keys&lt;br /&gt;
      and cert from disk. Bugfix on 0.2.0.1-alpha.
&lt;/li&gt;
&lt;li&gt;Stop using malloc_usable_size() to use more area than we had&lt;br /&gt;
      actually allocated: it was safe, but made valgrind really unhappy.
&lt;/li&gt;
&lt;li&gt;Make the assert_circuit_ok() function work correctly on circuits that&lt;br /&gt;
      have already been marked for close.
&lt;/li&gt;
&lt;li&gt;Fix uninitialized size field for memory area allocation: may improve&lt;br /&gt;
      memory performance during directory parsing.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Minor bugfixes (clients):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Stop reloading the router list from disk for no reason when we&lt;br /&gt;
      run out of reachable directory mirrors. Once upon a time reloading&lt;br /&gt;
      it would set the &#039;is_running&#039; flag back to 1 for them. It hasn&#039;t&lt;br /&gt;
      done that for a long time.
&lt;/li&gt;
&lt;li&gt;When we had picked an exit node for a connection, but marked it as&lt;br /&gt;
      &quot;optional&quot;, and it turned out we had no onion key for the exit,&lt;br /&gt;
      stop wanting that exit and try again. This situation may not&lt;br /&gt;
      be possible now, but will probably become feasible with proposal&lt;br /&gt;
      158. Spotted by rovv. Fixes another case of bug 752.
&lt;/li&gt;
&lt;li&gt;Fix a bug in address parsing that was preventing bridges or hidden&lt;br /&gt;
      service targets from being at IPv6 addresses.
&lt;/li&gt;
&lt;li&gt;Do not remove routers as too old if we do not have any consensus&lt;br /&gt;
      document. Bugfix on 0.2.0.7-alpha.
&lt;/li&gt;
&lt;li&gt;When an exit relay resolves a stream address to a local IP address,&lt;br /&gt;
      do not just keep retrying that same exit relay over and&lt;br /&gt;
      over. Instead, just close the stream. Addresses bug 872. Bugfix&lt;br /&gt;
      on 0.2.0.32. Patch from rovv.
&lt;/li&gt;
&lt;li&gt;Made Tor a little less aggressive about deleting expired&lt;br /&gt;
      certificates. Partial fix for bug 854.
&lt;/li&gt;
&lt;li&gt;Treat duplicate certificate fetches as failures, so that we do&lt;br /&gt;
      not try to re-fetch an expired certificate over and over and over.
&lt;/li&gt;
&lt;li&gt;Do not say we&#039;re fetching a certificate when we&#039;ll in fact skip it&lt;br /&gt;
      because of a pending download.
&lt;/li&gt;
&lt;li&gt;If we have correct permissions on $datadir, we complain to stdout&lt;br /&gt;
      and fail to start. But dangerous permissions on&lt;br /&gt;
      $datadir/cached-status/ would cause us to open a log and complain&lt;br /&gt;
      there. Now complain to stdout and fail to start in both cases. Fixes&lt;br /&gt;
      bug 820, reported by seeess.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Minor bugfixes (bridges):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When we made bridge authorities stop serving bridge descriptors over&lt;br /&gt;
      unencrypted links, we also broke DirPort reachability testing for&lt;br /&gt;
      bridges. So bridges with a non-zero DirPort were printing spurious&lt;br /&gt;
      warns to their logs. Bugfix on 0.2.0.16-alpha. Fixes bug 709.
&lt;/li&gt;
&lt;li&gt; Don&#039;t allow a bridge to publish its router descriptor to a&lt;br /&gt;
      non-bridge directory authority. Fixes part of bug 932.
&lt;/li&gt;
&lt;li&gt;When we change to or from being a bridge, reset our counts of&lt;br /&gt;
      client usage by country. Fixes bug 932.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Minor bugfixes (relays):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Log correct error messages for DNS-related network errors on&lt;br /&gt;
      Windows.
&lt;/li&gt;
&lt;li&gt;Actually return -1 in the error case for read_bandwidth_usage().&lt;br /&gt;
      Harmless bug, since we currently don&#039;t care about the return value&lt;br /&gt;
      anywhere. Bugfix on 0.2.0.9-alpha.
&lt;/li&gt;
&lt;li&gt;Provide a more useful log message if bug 977 (related to buffer&lt;br /&gt;
      freelists) ever reappears, and do not crash right away.
&lt;/li&gt;
&lt;li&gt;We were already rejecting relay begin cells with destination port&lt;br /&gt;
      of 0. Now also reject extend cells with destination port or address&lt;br /&gt;
      of 0. Suggested by lark.
&lt;/li&gt;
&lt;li&gt;When we can&#039;t transmit a DNS request due to a network error, retry&lt;br /&gt;
      it after a while, and eventually transmit a failing response to&lt;br /&gt;
      the RESOLVED cell. Bugfix on 0.1.2.5-alpha.
&lt;/li&gt;
&lt;li&gt;Solve a bug that kept hardware crypto acceleration from getting&lt;br /&gt;
      enabled when accounting was turned on. Fixes bug 907. Bugfix on&lt;br /&gt;
      0.0.9pre6.
&lt;/li&gt;
&lt;li&gt;When a canonical connection appears later in our internal list&lt;br /&gt;
      than a noncanonical one for a given OR ID, always use the&lt;br /&gt;
      canonical one. Bugfix on 0.2.0.12-alpha. Fixes bug 805.&lt;br /&gt;
      Spotted by rovv.
&lt;/li&gt;
&lt;li&gt;Avoid some nasty corner cases in the logic for marking connections&lt;br /&gt;
      as too old or obsolete or noncanonical for circuits. Partial&lt;br /&gt;
      bugfix on bug 891.&lt;/li&gt;
&lt;li&gt;Fix another interesting corner-case of bug 891 spotted by rovv:&lt;br /&gt;
      Previously, if two hosts had different amounts of clock drift, and&lt;br /&gt;
      one of them created a new connection with just the wrong timing,&lt;br /&gt;
      the other might decide to deprecate the new connection erroneously.&lt;br /&gt;
      Bugfix on 0.1.1.13-alpha.
&lt;/li&gt;
&lt;li&gt;If one win32 nameserver fails to get added, continue adding the&lt;br /&gt;
      rest, and don&#039;t automatically fail.
&lt;/li&gt;
&lt;li&gt;Fix a bug where an unreachable relay would establish enough&lt;br /&gt;
      reachability testing circuits to do a bandwidth test -- if&lt;br /&gt;
      we already have a connection to the middle hop of the testing&lt;br /&gt;
      circuit, then it could establish the last hop by using the existing&lt;br /&gt;
      connection. Bugfix on 0.1.2.2-alpha, exposed when we made testing&lt;br /&gt;
      circuits no longer use entry guards in 0.2.1.3-alpha.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Minor bugfixes (directory authorities):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Limit uploaded directory documents to be 16M rather than 500K.&lt;br /&gt;
      The directory authorities were refusing v3 consensus votes from&lt;br /&gt;
      other authorities, since the votes are now 504K. Fixes bug 959;&lt;br /&gt;
      bugfix on 0.0.2pre17 (where we raised it from 50K to 500K  ;) .
&lt;/li&gt;
&lt;li&gt;Directory authorities should never send a 503 &quot;busy&quot; response to&lt;br /&gt;
      requests for votes or keys. Bugfix on 0.2.0.8-alpha; exposed by&lt;br /&gt;
      bug 959.
&lt;/li&gt;
&lt;li&gt;Fix code so authorities _actually_ send back X-Descriptor-Not-New&lt;br /&gt;
      headers. Bugfix on 0.2.0.10-alpha.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Minor bugfixes (hidden services):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When we can&#039;t find an intro key for a v2 hidden service descriptor,&lt;br /&gt;
      fall back to the v0 hidden service descriptor and log a bug message.&lt;br /&gt;
      Workaround for bug 1024.
&lt;/li&gt;
&lt;li&gt;In very rare situations new hidden service descriptors were&lt;br /&gt;
      published earlier than 30 seconds after the last change to the&lt;br /&gt;
      service. (We currently think that a hidden service descriptor&lt;br /&gt;
      that&#039;s been stable for 30 seconds is worth publishing.)
&lt;/li&gt;
&lt;li&gt;If a hidden service sends us an END cell, do not consider&lt;br /&gt;
      retrying the connection; just close it. Patch from rovv.
&lt;/li&gt;
&lt;li&gt;If we are not using BEGIN_DIR cells, don&#039;t attempt to contact hidden&lt;br /&gt;
      service directories if they have no advertised dir port. Bugfix&lt;br /&gt;
      on 0.2.0.10-alpha.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Minor bugfixes (tools):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In the torify(1) manpage, mention that tsocks will leak your&lt;br /&gt;
      DNS requests.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Minor bugfixes (controllers):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If the controller claimed responsibility for a stream, but that&lt;br /&gt;
      stream never finished making its connection, it would live&lt;br /&gt;
      forever in circuit_wait state. Now we close it after SocksTimeout&lt;br /&gt;
      seconds. Bugfix on 0.1.2.7-alpha; reported by Mike Perry.
&lt;/li&gt;
&lt;li&gt;Make DNS resolved controller events into &quot;CLOSED&quot;, not&lt;br /&gt;
      &quot;FAILED&quot;. Bugfix on 0.1.2.5-alpha. Fix by Robert Hogan. Resolves&lt;br /&gt;
      bug 807.
&lt;/li&gt;
&lt;li&gt;The control port would close the connection before flushing long&lt;br /&gt;
      replies, such as the network consensus, if a QUIT command was issued&lt;br /&gt;
      before the reply had completed. Now, the control port flushes all&lt;br /&gt;
      pending replies before closing the connection. Also fix a spurious&lt;br /&gt;
      warning when a QUIT command is issued after a malformed or rejected&lt;br /&gt;
      AUTHENTICATE command, but before the connection was closed. Patch&lt;br /&gt;
      by Marcus Griep. Fixes bugs 1015 and 1016.
&lt;/li&gt;
&lt;li&gt;Fix a bug that made stream bandwidth get misreported to the&lt;br /&gt;
      controller.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Deprecated and removed features:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The old &quot;tor --version --version&quot; command, which would print out&lt;br /&gt;
      the subversion &quot;Id&quot; of most of the source files, is now removed. It&lt;br /&gt;
      turned out to be less useful than we&#039;d expected, and harder to&lt;br /&gt;
      maintain.
&lt;/li&gt;
&lt;li&gt;RedirectExits has been removed. It was deprecated since&lt;br /&gt;
      0.2.0.3-alpha.
&lt;/li&gt;
&lt;li&gt;Finally remove deprecated &quot;EXTENDED_FORMAT&quot; controller feature. It&lt;br /&gt;
      has been called EXTENDED_EVENTS since 0.1.2.4-alpha.
&lt;/li&gt;
&lt;li&gt;Cell pools are now always enabled; --disable-cell-pools is ignored.
&lt;/li&gt;
&lt;li&gt;Directory mirrors no longer fetch the v1 directory or&lt;br /&gt;
      running-routers files. They are obsolete, and nobody asks for them&lt;br /&gt;
      anymore. This is the first step to making v1 authorities obsolete.
&lt;/li&gt;
&lt;li&gt;Take out the TestVia config option, since it was a workaround for&lt;br /&gt;
      a bug that was fixed in Tor 0.1.1.21.
&lt;/li&gt;
&lt;li&gt;Mark RendNodes, RendExcludeNodes, HiddenServiceNodes, and&lt;br /&gt;
      HiddenServiceExcludeNodes as obsolete: they never worked properly,&lt;br /&gt;
      and nobody seems to be using them. Fixes bug 754. Bugfix on&lt;br /&gt;
      0.1.0.1-rc. Patch from Christian Wilms.
&lt;/li&gt;
&lt;li&gt;Remove all backward-compatibility code for relays running&lt;br /&gt;
      versions of Tor so old that they no longer work at all on the&lt;br /&gt;
      Tor network.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Code simplifications and refactoring:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tool-assisted documentation cleanup. Nearly every function or&lt;br /&gt;
      static variable in Tor should have its own documentation now.
&lt;/li&gt;
&lt;li&gt;Rename the confusing or_is_obsolete field to the more appropriate&lt;br /&gt;
      is_bad_for_new_circs, and move it to or_connection_t where it&lt;br /&gt;
      belongs.
&lt;/li&gt;
&lt;li&gt;Move edge-only flags from connection_t to edge_connection_t: not&lt;br /&gt;
      only is this better coding, but on machines of plausible alignment,&lt;br /&gt;
      it should save 4-8 bytes per connection_t. &quot;Every little bit helps.&quot;
&lt;/li&gt;
&lt;li&gt;Rename ServerDNSAllowBrokenResolvConf to ServerDNSAllowBrokenConfig&lt;br /&gt;
      for consistency; keep old option working for backward compatibility.
&lt;/li&gt;
&lt;li&gt;Simplify the code for finding connections to use for a circuit.
&lt;/li&gt;
&lt;li&gt;Revise the connection_new functions so that a more typesafe variant&lt;br /&gt;
      exists. This will work better with Coverity, and let us find any&lt;br /&gt;
      actual mistakes we&#039;re making here.&lt;/li&gt;
&lt;li&gt;Refactor unit testing logic so that dmalloc can be used sensibly&lt;br /&gt;
      with unit tests to check for memory leaks.
&lt;/li&gt;
&lt;li&gt;Move all hidden-service related fields from connection and circuit&lt;br /&gt;
      structure to substructures: this way they won&#039;t eat so much memory.
&lt;/li&gt;
&lt;li&gt;Squeeze 2-5% out of client performance (according to oprofile) by&lt;br /&gt;
      improving the implementation of some policy-manipulation functions.
&lt;/li&gt;
&lt;li&gt;Change the implementation of ExcludeNodes and ExcludeExitNodes to&lt;br /&gt;
      be more efficient. Formerly it was quadratic in the number of&lt;br /&gt;
      servers; now it should be linear. Fixes bug 509.
&lt;/li&gt;
&lt;li&gt;Save 16-22 bytes per open circuit by moving the n_addr, n_port,&lt;br /&gt;
      and n_conn_id_digest fields into a separate structure that&#039;s&lt;br /&gt;
      only needed when the circuit has not yet attached to an n_conn.
&lt;/li&gt;
&lt;li&gt;Optimize out calls to time(NULL) that occur for every IO operation,&lt;br /&gt;
      or for every cell. On systems like Windows where time() is a&lt;br /&gt;
      slow syscall, this fix will be slightly helpful.
&lt;/li&gt;
&lt;/ul&gt;
</description>
 <comments>http://blog.torproject.org/blog/tor-02118-and-02119-released-stable#comments</comments>
 <category domain="http://blog.torproject.org/category/tags/anonymity-fixes">anonymity fixes</category>
 <category domain="http://blog.torproject.org/category/tags/bug-fixes">bug fixes</category>
 <category domain="http://blog.torproject.org/category/tags/deprecated-features">deprecated features</category>
 <category domain="http://blog.torproject.org/category/tags/feature-enhancements">feature enhancements</category>
 <category domain="http://blog.torproject.org/category/tags/stable-release">stable release</category>
 <pubDate>Wed, 05 Aug 2009 23:44:33 -0700</pubDate>
 <dc:creator>phobos</dc:creator>
 <guid isPermaLink="false">160 at http://blog.torproject.org</guid>
</item>
<item>
 <title>Tor 0.2.0.35-stable bundles updated</title>
 <link>http://blog.torproject.org/blog/tor-02035stable-bundles-updated</link>
 <description>&lt;p&gt;Updated Vidalia-bundle packages with Tor 0.2.0.35 are released.  The only thing that&#039;s changed is the update of Vidalia from 0.1.14 to 0.1.15.  You can retrieve the updated packages from &lt;a href=&quot;https://www.torproject.org/easy-download&quot; title=&quot;https://www.torproject.org/easy-download&quot; rel=&quot;nofollow&quot;&gt;https://www.torproject.org/easy-download&lt;/a&gt;&lt;/p&gt;
</description>
 <comments>http://blog.torproject.org/blog/tor-02035stable-bundles-updated#comments</comments>
 <category domain="http://blog.torproject.org/category/tags/stable-release">stable release</category>
 <category domain="http://blog.torproject.org/category/tags/vidalia-release">vidalia release</category>
 <pubDate>Sun, 12 Jul 2009 18:35:00 -0700</pubDate>
 <dc:creator>phobos</dc:creator>
 <guid isPermaLink="false">153 at http://blog.torproject.org</guid>
</item>
<item>
 <title>Tor 0.2.0.35-stable released</title>
 <link>http://blog.torproject.org/blog/tor-02035stable-released</link>
 <description>&lt;p&gt;Tor 0.2.0.35 fixes a big bug that was causing Tor relays with dynamic&lt;br /&gt;
IP addresses to disappear from the network. It also fixes a rare crash&lt;br /&gt;
bug on fast exit relays.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.torproject.org/easy-download&quot; title=&quot;https://www.torproject.org/easy-download&quot; rel=&quot;nofollow&quot;&gt;https://www.torproject.org/easy-download&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Changes in version 0.2.0.35 - 2009-06-24&lt;br /&gt;
&lt;strong&gt;Security fix:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Avoid crashing in the presence of certain malformed descriptors.&lt;br /&gt;
      Found by lark, and by automated fuzzing.&lt;/li&gt;
&lt;li&gt;Fix an edge case where a malicious exit relay could convince a&lt;br /&gt;
      controller that the client&#039;s DNS question resolves to an internal IP&lt;br /&gt;
      address. Bug found and fixed by &quot;optimist&quot;; bugfix on 0.1.2.8-beta.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Major bugfixes:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Finally fix the bug where dynamic-IP relays disappear when their&lt;br /&gt;
      IP address changes: directory mirrors were mistakenly telling&lt;br /&gt;
      them their old address if they asked via begin_dir, so they&lt;br /&gt;
      never got an accurate answer about their new address, so they&lt;br /&gt;
      just vanished after a day. For belt-and-suspenders, relays that&lt;br /&gt;
      don&#039;t set Address in their config now avoid using begin_dir for&lt;br /&gt;
      all direct connections. Should fix bugs 827, 883, and 900.&lt;/li&gt;
&lt;li&gt;Fix a timing-dependent, allocator-dependent, DNS-related crash bug&lt;br /&gt;
      that would occur on some exit nodes when DNS failures and timeouts&lt;br /&gt;
      occurred in certain patterns. Fix for bug 957.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Minor bugfixes:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When starting with a cache over a few days old, do not leak&lt;br /&gt;
      memory for the obsolete router descriptors in it. Bugfix on&lt;br /&gt;
      0.2.0.33; fixes bug 672.&lt;/li&gt;
&lt;li&gt;Hidden service clients didn&#039;t use a cached service descriptor that&lt;br /&gt;
      was older than 15 minutes, but wouldn&#039;t fetch a new one either,&lt;br /&gt;
      because there was already one in the cache. Now, fetch a v2&lt;br /&gt;
      descriptor unless the same descriptor was added to the cache within&lt;br /&gt;
      the last 15 minutes. Fixes bug 997; reported by Marcus Griep.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The original announcement can be found at &lt;a href=&quot;http://archives.seul.org/or/announce/Jun-2009/msg00000.html&quot; title=&quot;http://archives.seul.org/or/announce/Jun-2009/msg00000.html&quot; rel=&quot;nofollow&quot;&gt;http://archives.seul.org/or/announce/Jun-2009/msg00000.html&lt;/a&gt;&lt;/p&gt;
</description>
 <comments>http://blog.torproject.org/blog/tor-02035stable-released#comments</comments>
 <category domain="http://blog.torproject.org/category/tags/bug-fixes">bug fixes</category>
 <category domain="http://blog.torproject.org/category/tags/hidden-service-fixes">hidden service fixes</category>
 <category domain="http://blog.torproject.org/category/tags/stable-release">stable release</category>
 <pubDate>Thu, 25 Jun 2009 17:34:49 -0700</pubDate>
 <dc:creator>phobos</dc:creator>
 <guid isPermaLink="false">146 at http://blog.torproject.org</guid>
</item>
<item>
 <title>Tor 0.2.0.34-stable released</title>
 <link>http://blog.torproject.org/blog/tor-0.2.0.34-stable-released</link>
 <description>&lt;p&gt;Tor 0.2.0.34 features several more security-related fixes. You&lt;br /&gt;
should upgrade, especially if you run an exit relay (remote crash) or&lt;br /&gt;
a directory authority (remote infinite loop), or you&#039;re on an older&lt;br /&gt;
(pre-XP) or not-recently-patched Windows (remote exploit).&lt;/p&gt;
&lt;p&gt;This release marks end-of-life for Tor 0.1.2.x. Those Tor versions have&lt;br /&gt;
many known flaws, and nobody should be using them. You should upgrade. If&lt;br /&gt;
you&#039;re using a Linux or BSD and its packages are obsolete, stop using&lt;br /&gt;
those packages and upgrade anyway.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.torproject.org/download.html&quot; title=&quot;https://www.torproject.org/download.html&quot; rel=&quot;nofollow&quot;&gt;https://www.torproject.org/download.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Changes in version 0.2.0.34 - 2009-02-08&lt;br /&gt;
&lt;strong&gt;Security fixes:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fix an infinite-loop bug on handling corrupt votes under certain&lt;br /&gt;
      circumstances. Bugfix on 0.2.0.8-alpha.&lt;/li&gt;
&lt;li&gt;Fix a temporary DoS vulnerability that could be performed by&lt;br /&gt;
      a directory mirror. Bugfix on 0.2.0.9-alpha; reported by lark.&lt;/li&gt;
&lt;li&gt;Avoid a potential crash on exit nodes when processing malformed&lt;br /&gt;
      input. Remote DoS opportunity. Bugfix on 0.2.0.33.&lt;/li&gt;
&lt;li&gt;Do not accept incomplete ipv4 addresses (like 192.168.0) as valid.&lt;br /&gt;
      Spec conformance issue. Bugfix on Tor 0.0.2pre27.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Minor bugfixes:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fix compilation on systems where time_t is a 64-bit integer.&lt;br /&gt;
      Patch from Matthias Drochner.&lt;/li&gt;
&lt;li&gt;Don&#039;t consider expiring already-closed client connections. Fixes&lt;br /&gt;
      bug 893. Bugfix on 0.0.2pre20.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The original announcement can be found at &lt;a href=&quot;http://archives.seul.org/or/announce/Feb-2009/msg00000.html&quot; title=&quot;http://archives.seul.org/or/announce/Feb-2009/msg00000.html&quot; rel=&quot;nofollow&quot;&gt;http://archives.seul.org/or/announce/Feb-2009/msg00000.html&lt;/a&gt;&lt;/p&gt;
</description>
 <comments>http://blog.torproject.org/blog/tor-0.2.0.34-stable-released#comments</comments>
 <category domain="http://blog.torproject.org/category/tags/bug-fixes">bug fixes</category>
 <category domain="http://blog.torproject.org/category/tags/security-fixes">security fixes</category>
 <category domain="http://blog.torproject.org/category/tags/stable-release">stable release</category>
 <pubDate>Mon, 09 Feb 2009 15:21:20 -0800</pubDate>
 <dc:creator>phobos</dc:creator>
 <guid isPermaLink="false">96 at http://blog.torproject.org</guid>
</item>
<item>
 <title>Tor 0.2.0.33-stable released</title>
 <link>http://blog.torproject.org/blog/tor-0.2.0.33-stable-released</link>
 <description>&lt;p&gt;Tor 0.2.0.33 fixes a variety of bugs that were making relays less useful&lt;br /&gt;
to users. It also finally fixes a bug where a relay or client that&#039;s&lt;br /&gt;
been off for many days would take a long time to bootstrap.&lt;/p&gt;
&lt;p&gt;This update also fixes an important security-related bug reported by&lt;br /&gt;
Ilja van Sprundel. You should upgrade. (We&#039;ll send out more details&lt;br /&gt;
about the bug once people have had some time to upgrade.)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.torproject.org/download.html&quot; title=&quot;https://www.torproject.org/download.html&quot; rel=&quot;nofollow&quot;&gt;https://www.torproject.org/download.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Changes in version 0.2.0.33 - 2009-01-21&lt;br /&gt;
&lt;strong&gt;Security fixes:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fix a heap-corruption bug that may be remotely triggerable on&lt;br /&gt;
      some platforms. Reported by Ilja van Sprundel.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Major bugfixes:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When a stream at an exit relay is in state &quot;resolving&quot; or&lt;br /&gt;
      &quot;connecting&quot; and it receives an &quot;end&quot; relay cell, the exit relay&lt;br /&gt;
      would silently ignore the end cell and not close the stream. If&lt;br /&gt;
      the client never closes the circuit, then the exit relay never&lt;br /&gt;
      closes the TCP connection. Bug introduced in Tor 0.1.2.1-alpha;&lt;br /&gt;
      reported by &quot;wood&quot;.&lt;/li&gt;
&lt;li&gt;When sending CREATED cells back for a given circuit, use a 64-bit&lt;br /&gt;
      connection ID to find the right connection, rather than an addr:port&lt;br /&gt;
      combination. Now that we can have multiple OR connections between&lt;br /&gt;
      the same ORs, it is no longer possible to use addr:port to uniquely&lt;br /&gt;
      identify a connection.&lt;/li&gt;
&lt;li&gt;Bridge relays that had DirPort set to 0 would stop fetching&lt;br /&gt;
      descriptors shortly after startup, and then briefly resume&lt;br /&gt;
      after a new bandwidth test and/or after publishing a new bridge&lt;br /&gt;
      descriptor. Bridge users that try to bootstrap from them would&lt;br /&gt;
      get a recent networkstatus but would get descriptors from up to&lt;br /&gt;
      18 hours earlier, meaning most of the descriptors were obsolete&lt;br /&gt;
      already. Reported by Tas; bugfix on 0.2.0.13-alpha.&lt;/li&gt;
&lt;li&gt;Prevent bridge relays from serving their &#039;extrainfo&#039; document&lt;br /&gt;
      to anybody who asks, now that extrainfo docs include potentially&lt;br /&gt;
      sensitive aggregated client geoip summaries. Bugfix on&lt;br /&gt;
      0.2.0.13-alpha.&lt;/li&gt;
&lt;li&gt;If the cached networkstatus consensus is more than five days old,&lt;br /&gt;
      discard it rather than trying to use it. In theory it could be&lt;br /&gt;
      useful because it lists alternate directory mirrors, but in practice&lt;br /&gt;
      it just means we spend many minutes trying directory mirrors that&lt;br /&gt;
      are long gone from the network. Also discard router descriptors as&lt;br /&gt;
      we load them if they are more than five days old, since the onion&lt;br /&gt;
      key is probably wrong by now. Bugfix on 0.2.0.x. Fixes bug 887.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Minor bugfixes:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Do not mark smartlist_bsearch_idx() function as ATTR_PURE. This bug&lt;br /&gt;
      could make gcc generate non-functional binary search code. Bugfix&lt;br /&gt;
      on 0.2.0.10-alpha.&lt;/li&gt;
&lt;li&gt;Build correctly on platforms without socklen_t.&lt;/li&gt;
&lt;li&gt;Compile without warnings on solaris.&lt;/li&gt;
&lt;li&gt;Avoid potential crash on internal error during signature collection.&lt;br /&gt;
      Fixes bug 864. Patch from rovv.&lt;/li&gt;
&lt;li&gt;Correct handling of possible malformed authority signing key&lt;br /&gt;
      certificates with internal signature types. Fixes bug 880.&lt;br /&gt;
      Bugfix on 0.2.0.3-alpha.&lt;/li&gt;
&lt;li&gt;Fix a hard-to-trigger resource leak when logging credential status.&lt;br /&gt;
      CID 349.&lt;/li&gt;
&lt;li&gt;When we can&#039;t initialize DNS because the network is down, do not&lt;br /&gt;
      automatically stop Tor from starting. Instead, we retry failed&lt;br /&gt;
      dns_inits() every 10 minutes, and change the exit policy to reject&lt;br /&gt;
      *:* until one succeeds. Fixes bug 691.&lt;/li&gt;
&lt;li&gt;Use 64 bits instead of 32 bits for connection identifiers used with&lt;br /&gt;
      the controller protocol, to greatly reduce risk of identifier reuse.&lt;/li&gt;
&lt;li&gt;When we&#039;re choosing an exit node for a circuit, and we have&lt;br /&gt;
      no pending streams, choose a good general exit rather than one that&lt;br /&gt;
      supports &quot;all the pending streams&quot;. Bugfix on 0.1.1.x. Fix by rovv.&lt;/li&gt;
&lt;li&gt;Fix another case of assuming, when a specific exit is requested,&lt;br /&gt;
      that we know more than the user about what hosts it allows.&lt;br /&gt;
      Fixes one case of bug 752. Patch from rovv.&lt;/li&gt;
&lt;li&gt;Clip the MaxCircuitDirtiness config option to a minimum of 10&lt;br /&gt;
      seconds. Warn the user if lower values are given in the&lt;br /&gt;
      configuration. Bugfix on 0.1.0.1-rc. Patch by Sebastian.&lt;/li&gt;
&lt;li&gt;Clip the CircuitBuildTimeout to a minimum of 30 seconds. Warn the&lt;br /&gt;
      user if lower values are given in the configuration. Bugfix on&lt;br /&gt;
      0.1.1.17-rc. Patch by Sebastian.&lt;/li&gt;
&lt;li&gt;Fix a memory leak when we decline to add a v2 rendezvous descriptor to&lt;br /&gt;
      the cache because we already had a v0 descriptor with the same ID.&lt;br /&gt;
      Bugfix on 0.2.0.18-alpha.&lt;/li&gt;
&lt;li&gt;Fix a race condition when freeing keys shared between main thread&lt;br /&gt;
      and CPU workers that could result in a memory leak. Bugfix on&lt;br /&gt;
      0.1.0.1-rc. Fixes bug 889.&lt;/li&gt;
&lt;li&gt;Send a valid END cell back when a client tries to connect to a&lt;br /&gt;
      nonexistent hidden service port. Bugfix on 0.1.2.15. Fixes bug&lt;br /&gt;
      840. Patch from rovv.&lt;/li&gt;
&lt;li&gt;Check which hops rendezvous stream cells are associated with to&lt;br /&gt;
      prevent possible guess-the-streamid injection attacks from&lt;br /&gt;
      intermediate hops. Fixes another case of bug 446. Based on patch&lt;br /&gt;
      from rovv.&lt;/li&gt;
&lt;li&gt;If a broken client asks a non-exit router to connect somewhere,&lt;br /&gt;
      do not even do the DNS lookup before rejecting the connection.&lt;br /&gt;
      Fixes another case of bug 619. Patch from rovv.&lt;/li&gt;
&lt;li&gt;When a relay gets a create cell it can&#039;t decrypt (e.g. because it&#039;s&lt;br /&gt;
      using the wrong onion key), we were dropping it and letting the&lt;br /&gt;
      client time out. Now actually answer with a destroy cell. Fixes&lt;br /&gt;
      bug 904. Bugfix on 0.0.2pre8.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Minor bugfixes (hidden services):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Do not throw away existing introduction points on SIGHUP. Bugfix on&lt;br /&gt;
      0.0.6pre1. Patch by Karsten. Fixes bug 874.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Minor features:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Report the case where all signatures in a detached set are rejected&lt;br /&gt;
      differently than the case where there is an error handling the&lt;br /&gt;
      detached set.&lt;/li&gt;
&lt;li&gt;When we realize that another process has modified our cached&lt;br /&gt;
      descriptors, print out a more useful error message rather than&lt;br /&gt;
      triggering an assertion. Fixes bug 885. Patch from Karsten.&lt;/li&gt;
&lt;li&gt;Implement the 0x20 hack to better resist DNS poisoning: set the&lt;br /&gt;
      case on outgoing DNS requests randomly, and reject responses that do&lt;br /&gt;
      not match the case correctly. This logic can be disabled with the&lt;br /&gt;
      ServerDNSRamdomizeCase setting, if you are using one of the 0.3%&lt;br /&gt;
      of servers that do not reliably preserve case in replies. See&lt;br /&gt;
      &quot;Increased DNS Forgery Resistance through 0x20-Bit Encoding&quot;&lt;br /&gt;
      for more info.&lt;/li&gt;
&lt;li&gt;Check DNS replies for more matching fields to better resist DNS&lt;br /&gt;
      poisoning.&lt;/li&gt;
&lt;li&gt;Never use OpenSSL compression: it wastes RAM and CPU trying to&lt;br /&gt;
      compress cells, which are basically all encrypted, compressed, or&lt;br /&gt;
      both.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The original announcement can be found at &lt;a href=&quot;http://archives.seul.org/or/announce/Jan-2009/msg00000.html&quot; title=&quot;http://archives.seul.org/or/announce/Jan-2009/msg00000.html&quot; rel=&quot;nofollow&quot;&gt;http://archives.seul.org/or/announce/Jan-2009/msg00000.html&lt;/a&gt;&lt;/p&gt;
</description>
 <comments>http://blog.torproject.org/blog/tor-0.2.0.33-stable-released#comments</comments>
 <category domain="http://blog.torproject.org/category/tags/bug-fixes">bug fixes</category>
 <category domain="http://blog.torproject.org/category/tags/security-fixes">security fixes</category>
 <category domain="http://blog.torproject.org/category/tags/stable-release">stable release</category>
 <pubDate>Thu, 22 Jan 2009 11:25:00 -0800</pubDate>
 <dc:creator>phobos</dc:creator>
 <guid isPermaLink="false">94 at http://blog.torproject.org</guid>
</item>
<item>
 <title>Updates on Tor 0.2.0.32 for OS X Users</title>
 <link>http://blog.torproject.org/blog/updates-tor-0.2.0.32-os-x-users</link>
 <description>&lt;p&gt;As detailed here, &lt;a href=&quot;http://archives.seul.org/or/talk/Dec-2008/msg00044.html&quot; title=&quot;http://archives.seul.org/or/talk/Dec-2008/msg00044.html&quot; rel=&quot;nofollow&quot;&gt;http://archives.seul.org/or/talk/Dec-2008/msg00044.html&lt;/a&gt;, there are some packaging fixes for OS X users in this 0.2.0.32 stable release.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;For OS X users, there is a packaging bugfix in 0.2.0.32 labelled as&lt;br /&gt;
0.2.0.32a in the available packages.  It turns out for years we&#039;ve been&lt;br /&gt;
shipping a Info.plist with an incorrect key.  The issue was discovered&lt;br /&gt;
and reported as bug 876,&lt;br /&gt;
&lt;a href=&quot;https://bugs.torproject.org/flyspray/index.php?id=876&amp;amp;do=details&quot; title=&quot;https://bugs.torproject.org/flyspray/index.php?id=876&amp;amp;do=details&quot; rel=&quot;nofollow&quot;&gt;https://bugs.torproject.org/flyspray/index.php?id=876&amp;amp;do=details&lt;/a&gt;.   &lt;/p&gt;
&lt;p&gt;The commit to fix the problem in the 0_2_0 branch is r17472:&lt;br /&gt;
&lt;a href=&quot;http://archives.seul.org/or/cvs/Dec-2008/msg00037.html&quot; title=&quot;http://archives.seul.org/or/cvs/Dec-2008/msg00037.html&quot; rel=&quot;nofollow&quot;&gt;http://archives.seul.org/or/cvs/Dec-2008/msg00037.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The commit to fix the problem in the Vidalia 0.1 branch is r3361:&lt;br /&gt;
&lt;a href=&quot;http://trac.vidalia-project.net/browser/vidalia/branches/vidalia-0.1/pkg/osx?order=date&amp;amp;desc=1&quot; title=&quot;http://trac.vidalia-project.net/browser/vidalia/branches/vidalia-0.1/pkg/osx?order=date&amp;amp;desc=1&quot; rel=&quot;nofollow&quot;&gt;http://trac.vidalia-project.net/browser/vidalia/branches/vidalia-0.1/pkg...&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The bug is that the OS X Installer will prompt &quot;The chosen volume&lt;br /&gt;
contains software which is newer then [sic] the software you are&lt;br /&gt;
installing.&quot;&lt;/p&gt;
&lt;p&gt;The problem is that the Installer looks in the file&lt;br /&gt;
/Library/Receipts/Vidalia.pkg/Contents/Info.plist for&lt;br /&gt;
CFBundleShortVersionString.  We mistakenly called it&lt;br /&gt;
CFBundleSortVersionString, which Apple inserts &quot;1&quot; as the value.  The&lt;br /&gt;
upgrade to Vidalia from 0.1.9 to 0.1.10 apparently triggered the issue.  &lt;/p&gt;
&lt;p&gt;The fix is to put the correct value in place for the future.  The&lt;br /&gt;
simplest way to do this is to have the users click &quot;Continue&quot; when&lt;br /&gt;
prompted.  We could have spent a lot of time trying to fix it for the&lt;br /&gt;
user to hide the issue, but well, that is fraught with problems and&lt;br /&gt;
complexities.  A simple click of &quot;Continue&quot; is far simpler and less&lt;br /&gt;
error prone.   &lt;/p&gt;
&lt;p&gt;The difference between the released 0.2.0.32 Tor code is the inclusion&lt;br /&gt;
of r17472.  It&#039;s not really 0.2.0.32a per se, but since we lack package&lt;br /&gt;
versions, I had to distinguish it in some way. &lt;/p&gt;&lt;/blockquote&gt;
</description>
 <comments>http://blog.torproject.org/blog/updates-tor-0.2.0.32-os-x-users#comments</comments>
 <category domain="http://blog.torproject.org/category/tags/apple-os-x">apple os x</category>
 <category domain="http://blog.torproject.org/category/tags/packaging-errors">packaging errors</category>
 <category domain="http://blog.torproject.org/category/tags/stable-release">stable release</category>
 <pubDate>Thu, 04 Dec 2008 18:48:00 -0800</pubDate>
 <dc:creator>phobos</dc:creator>
 <guid isPermaLink="false">70 at http://blog.torproject.org</guid>
</item>
<item>
 <title>Tor 0.2.0.32 Released</title>
 <link>http://blog.torproject.org/blog/tor-0.2.0.32-released</link>
 <description>&lt;p&gt;Tor 0.2.0.32 fixes a major security problem in Debian and Ubuntu packages&lt;br /&gt;
(and maybe other packages) noticed by Theo de Raadt, fixes a smaller&lt;br /&gt;
security flaw that might allow an attacker to access local services,&lt;br /&gt;
further improves hidden service performance, and fixes a variety of&lt;br /&gt;
other issues.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.torproject.org/download.html&quot; title=&quot;https://www.torproject.org/download.html&quot; rel=&quot;nofollow&quot;&gt;https://www.torproject.org/download.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Or use our new &lt;a href=&quot;https://www.torproject.org/easy-download&quot; title=&quot;https://www.torproject.org/easy-download&quot; rel=&quot;nofollow&quot;&gt;https://www.torproject.org/easy-download&lt;/a&gt; page.&lt;/p&gt;
&lt;p&gt;Changes in version 0.2.0.32 - 2008-11-20&lt;br /&gt;
Security fixes:
&lt;ul&gt;
&lt;li&gt;The &quot;User&quot; and &quot;Group&quot; config options did not clear the&lt;br /&gt;
      supplementary group entries for the Tor process. The &quot;User&quot; option&lt;br /&gt;
      is now more robust, and we now set the groups to the specified&lt;br /&gt;
      user&#039;s primary group. The &quot;Group&quot; option is now ignored. For more&lt;br /&gt;
      detailed logging on credential switching, set CREDENTIAL_LOG_LEVEL&lt;br /&gt;
      in common/compat.c to LOG_NOTICE or higher. Patch by Jacob Appelbaum&lt;br /&gt;
      and Steven Murdoch. Bugfix on 0.0.2pre14. Fixes bug 848 and 857.&lt;/li&gt;
&lt;li&gt;The &quot;ClientDNSRejectInternalAddresses&quot; config option wasn&#039;t being&lt;br /&gt;
      consistently obeyed: if an exit relay refuses a stream because its&lt;br /&gt;
      exit policy doesn&#039;t allow it, we would remember what IP address&lt;br /&gt;
      the relay said the destination address resolves to, even if it&#039;s&lt;br /&gt;
      an internal IP address. Bugfix on 0.2.0.7-alpha; patch by rovv.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Major bugfixes:
&lt;ul&gt;
&lt;li&gt;Fix a DOS opportunity during the voting signature collection process&lt;br /&gt;
      at directory authorities. Spotted by rovv. Bugfix on 0.2.0.x.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Major bugfixes (hidden services):
&lt;ul&gt;
&lt;li&gt;When fetching v0 and v2 rendezvous service descriptors in parallel,&lt;br /&gt;
      we were failing the whole hidden service request when the v0&lt;br /&gt;
      descriptor fetch fails, even if the v2 fetch is still pending and&lt;br /&gt;
      might succeed. Similarly, if the last v2 fetch fails, we were&lt;br /&gt;
      failing the whole hidden service request even if a v0 fetch is&lt;br /&gt;
      still pending. Fixes bug 814. Bugfix on 0.2.0.10-alpha.&lt;/li&gt;
&lt;li&gt;When extending a circuit to a hidden service directory to upload a&lt;br /&gt;
      rendezvous descriptor using a BEGIN_DIR cell, almost 1/6 of all&lt;br /&gt;
      requests failed, because the router descriptor has not been&lt;br /&gt;
      downloaded yet. In these cases, do not attempt to upload the&lt;br /&gt;
      rendezvous descriptor, but wait until the router descriptor is&lt;br /&gt;
      downloaded and retry. Likewise, do not attempt to fetch a rendezvous&lt;br /&gt;
      descriptor from a hidden service directory for which the router&lt;br /&gt;
      descriptor has not yet been downloaded. Fixes bug 767. Bugfix&lt;br /&gt;
      on 0.2.0.10-alpha.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Minor bugfixes:
&lt;ul&gt;
&lt;li&gt;Fix several infrequent memory leaks spotted by Coverity.&lt;/li&gt;
&lt;li&gt;When testing for libevent functions, set the LDFLAGS variable&lt;br /&gt;
      correctly. Found by Riastradh.&lt;/li&gt;
&lt;li&gt;Avoid a bug where the FastFirstHopPK 0 option would keep Tor from&lt;br /&gt;
      bootstrapping with tunneled directory connections. Bugfix on&lt;br /&gt;
      0.1.2.5-alpha. Fixes bug 797. Found by Erwin Lam.&lt;/li&gt;
&lt;li&gt;When asked to connect to A.B.exit:80, if we don&#039;t know the IP for A&lt;br /&gt;
      and we know that server B rejects most-but-not all connections to&lt;br /&gt;
      port 80, we would previously reject the connection. Now, we assume&lt;br /&gt;
      the user knows what they were asking for. Fixes bug 752. Bugfix&lt;br /&gt;
      on 0.0.9rc5. Diagnosed by BarkerJr.&lt;/li&gt;
&lt;li&gt;If we overrun our per-second write limits a little, count this as&lt;br /&gt;
      having used up our write allocation for the second, and choke&lt;br /&gt;
      outgoing directory writes. Previously, we had only counted this when&lt;br /&gt;
      we had met our limits precisely. Fixes bug 824. Patch from by rovv.&lt;br /&gt;
      Bugfix on 0.2.0.x.&lt;/li&gt;
&lt;li&gt;Remove the old v2 directory authority &#039;lefkada&#039; from the default&lt;br /&gt;
      list. It has been gone for many months.&lt;/li&gt;
&lt;li&gt;Stop doing unaligned memory access that generated bus errors on&lt;br /&gt;
      sparc64. Bugfix on 0.2.0.10-alpha. Fixes bug 862.&lt;/li&gt;
&lt;li&gt;Make USR2 log-level switch take effect immediately. Bugfix on&lt;br /&gt;
      0.1.2.8-beta.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Minor bugfixes (controller):
&lt;ul&gt;
&lt;li&gt;Make DNS resolved events into &quot;CLOSED&quot;, not &quot;FAILED&quot;. Bugfix on&lt;br /&gt;
      0.1.2.5-alpha. Fix by Robert Hogan. Resolves bug 807.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The original announcement can be found at &lt;a href=&quot;http://archives.seul.org/or/announce/Dec-2008/msg00000.html&quot; title=&quot;http://archives.seul.org/or/announce/Dec-2008/msg00000.html&quot; rel=&quot;nofollow&quot;&gt;http://archives.seul.org/or/announce/Dec-2008/msg00000.html&lt;/a&gt;&lt;/p&gt;
</description>
 <comments>http://blog.torproject.org/blog/tor-0.2.0.32-released#comments</comments>
 <category domain="http://blog.torproject.org/category/tags/hidden-services">hidden services</category>
 <category domain="http://blog.torproject.org/category/tags/security-fixes">security fixes</category>
 <category domain="http://blog.torproject.org/category/tags/stable-release">stable release</category>
 <pubDate>Thu, 04 Dec 2008 18:42:03 -0800</pubDate>
 <dc:creator>phobos</dc:creator>
 <guid isPermaLink="false">69 at http://blog.torproject.org</guid>
</item>
<item>
 <title>August 2008 Progress Report</title>
 <link>http://blog.torproject.org/blog/august-2008-progress-report</link>
 <description>&lt;p&gt;&lt;strong&gt;Releases&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Vidalia 0.1.7 (released August 2) fixes a bug that caused Vidalia to not recognize Tor&#039;s version correctly in Tor 0.2.0.x, adds an &quot;nsh2po&quot; tool that helps Pootle translate the Vidalia bundle installer strings, adds &quot;TZ=UTC&quot; to the BrowserExecutable&#039;s environment variables when launched via Vidalia, and updates the Czech, French, and German translations.&lt;br /&gt;
&lt;a href=&quot;http://trac.vidalia-project.net/browser/vidalia/tags/vidalia-0.1.7/CHANGELOG&quot; title=&quot;http://trac.vidalia-project.net/browser/vidalia/tags/vidalia-0.1.7/CHANGELOG&quot; rel=&quot;nofollow&quot;&gt;http://trac.vidalia-project.net/browser/vidalia/tags/vidalia-0.1.7/CHANG...&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Incognito 2008.1 (released August 2) is a Gentoo-based Tor LiveCD. This new release adds a &quot;walkthrough&quot; which will launch on startup; adds language support for Arabic, Green, Hebrew, Russian, and Swedish; improves the support for Chinese and Japanese fonts; adds support for VMWare and partial support for VirtualBox; switches to Tor 0.2.0.30 and Torbutton 1.2.0; and adds some new privacy-supporting software and removes some applications that are too likely to leak private information.&lt;br /&gt;
&lt;a href=&quot;https://svn.torproject.org/svn/incognito/trunk/ChangeLog&quot; title=&quot;https://svn.torproject.org/svn/incognito/trunk/ChangeLog&quot; rel=&quot;nofollow&quot;&gt;https://svn.torproject.org/svn/incognito/trunk/ChangeLog&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Tor 0.2.1.3-alpha (released August 3) implements most of the pieces to prevent infinite-length circuit attacks (see proposal 110); fixes a bug that might cause exit relays to corrupt streams they send back; allows address patterns (e.g. 255.128.0.0/16) to appear in ExcludeNodes and ExcludeExitNodes config options; and fixes a big pile of bugs.&lt;br /&gt;
&lt;a href=&quot;http://archives.seul.org/or/talk/Aug-2008/msg00039.html&quot; title=&quot;http://archives.seul.org/or/talk/Aug-2008/msg00039.html&quot; rel=&quot;nofollow&quot;&gt;http://archives.seul.org/or/talk/Aug-2008/msg00039.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Tor 0.2.1.4-alpha (released August 4) fixes a pair of crash bugs in 0.2.1.3-alpha.&lt;br /&gt;
&lt;a href=&quot;http://archives.seul.org/or/talk/Aug-2008/msg00039.html&quot; title=&quot;http://archives.seul.org/or/talk/Aug-2008/msg00039.html&quot; rel=&quot;nofollow&quot;&gt;http://archives.seul.org/or/talk/Aug-2008/msg00039.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Tor Browser Bundle 1.1.2 (released August 9) updates Vidalia to version 0.1.6, updates Firefox to 2.0.0.16, updates Tor to 0.2.1.4-alpha, updates Torbutton to 1.2.0, and disables the TZ=UTC environment variable trick since Vidalia 0.1.7 now handles that for us.&lt;br /&gt;
&lt;a href=&quot;https://svn.torproject.org/svn/torbrowser/trunk/README&quot; title=&quot;https://svn.torproject.org/svn/torbrowser/trunk/README&quot; rel=&quot;nofollow&quot;&gt;https://svn.torproject.org/svn/torbrowser/trunk/README&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Vidalia 0.1.8 (released August 17) makes the bandwidth graph window look better for languages like Farsi, includes ssleay32.dll in the Windows packages so Vidalia won&#039;t crash when it finds an incompatible version of ssleay32.dll in the user&#039;s $PATH, makes &quot;escape&quot; and &quot;return&quot; shortcuts for the settings window, and fixes a variety of other bugs.&lt;br /&gt;
&lt;a href=&quot;http://trac.vidalia-project.net/browser/vidalia/tags/vidalia-0.1.8/CHANGELOG&quot; title=&quot;http://trac.vidalia-project.net/browser/vidalia/tags/vidalia-0.1.8/CHANGELOG&quot; rel=&quot;nofollow&quot;&gt;http://trac.vidalia-project.net/browser/vidalia/tags/vidalia-0.1.8/CHANG...&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Tor 0.2.0.30 (released July 15, announced August 21) switches to a more efficient directory distribution design, adds features to make connections to the Tor network harder to block, allows Tor to act as a DNS proxy, adds separate rate limiting for relayed traffic to make it easier for clients to become relays, fixes a variety of potential anonymity problems, and includes the usual huge pile of other features and bug fixes.&lt;br /&gt;
&lt;a href=&quot;http://archives.seul.org/or/announce/Aug-2008/msg00000.html&quot; title=&quot;http://archives.seul.org/or/announce/Aug-2008/msg00000.html&quot; rel=&quot;nofollow&quot;&gt;http://archives.seul.org/or/announce/Aug-2008/msg00000.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Tor Browser Bundle 1.1.3 (released August 22) fixes a bug in the 0.1.2 release that messed up translations in the homepage, adds &quot;small=1&quot; to the homepage URL so it doesn&#039;t show the huge green onion by default, and updates Vidalia to 0.1.8.&lt;br /&gt;
&lt;a href=&quot;https://svn.torproject.org/svn/torbrowser/trunk/README&quot; title=&quot;https://svn.torproject.org/svn/torbrowser/trunk/README&quot; rel=&quot;nofollow&quot;&gt;https://svn.torproject.org/svn/torbrowser/trunk/README&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Tor 0.2.1.5-alpha (released August 31) moves us closer to handling IPv6 destinations, puts in a lot of the infrastructure for adding authorization to hidden services, lays the groundwork for having clients read their load balancing information out of the networkstatus consensus rather than the individual router descriptors, addresses two potential anonymity issues, and fixes a variety of smaller issues.&lt;br /&gt;
&lt;a href=&quot;http://archives.seul.org/or/talk/Sep-2008/msg00072.html&quot; title=&quot;http://archives.seul.org/or/talk/Sep-2008/msg00072.html&quot; rel=&quot;nofollow&quot;&gt;http://archives.seul.org/or/talk/Sep-2008/msg00072.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Blocking resistance&lt;/strong&gt;&lt;br /&gt;
The Tor 0.2.1.3-alpha and 0.2.1.4-alpha releases include more fixes for hidden service performance and robustness, have slightly improved bootstrap status event behavior, and start hunting down a horrible bug that looks like it could leak private information:&lt;br /&gt;
&lt;a href=&quot;https://bugs.torproject.org/flyspray/index.php?do=details&amp;amp;id=779&quot; title=&quot;https://bugs.torproject.org/flyspray/index.php?do=details&amp;amp;id=779&quot; rel=&quot;nofollow&quot;&gt;https://bugs.torproject.org/flyspray/index.php?do=details&amp;amp;id=779&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now that the Tor 0.2.0.30 release has been declared stable, ordinary users will finally get bridge features, the new harder-to-block network protocol, and other features by default.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Core Development&lt;/strong&gt;&lt;br /&gt;
We&#039;re working on a draft for a new &quot;automatic software update&quot; protocol, code-named Glider, that incorporates the previous proposals 153 and 154 but is easier to extend to other packages, and is easier to implement and maintain on the server side. We hope to have this new draft out as an actual proposal document, along with some early prototypes of the server side, in September.&lt;br /&gt;
&lt;a href=&quot;https://svn.torproject.org/svn/updater/trunk/specs/glider-spec.txt&quot; title=&quot;https://svn.torproject.org/svn/updater/trunk/specs/glider-spec.txt&quot; rel=&quot;nofollow&quot;&gt;https://svn.torproject.org/svn/updater/trunk/specs/glider-spec.txt&lt;/a&gt;&lt;br /&gt;
Part of the ongoing development question is how to write the client side of this auto update engine in a convenient and easy language like Python, yet have it still be extremely compact on the client side -- since Windows doesn&#039;t include Python by default, shipping a Python interpreter with the auto updater could add 10MB to the package size.&lt;/p&gt;
&lt;p&gt;Roger sent the list of &quot;research directions we should look at&quot; to or-dev, so more people could look at it:&lt;br /&gt;
&lt;a href=&quot;http://archives.seul.org/or/dev/Aug-2008/msg00031.html&quot; title=&quot;http://archives.seul.org/or/dev/Aug-2008/msg00031.html&quot; rel=&quot;nofollow&quot;&gt;http://archives.seul.org/or/dev/Aug-2008/msg00031.html&lt;/a&gt;&lt;br /&gt;
We are working these items into a more comprehensive research and development roadmap; stay tuned.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Advocacy&lt;/strong&gt;&lt;br /&gt;
We answered a lot of press organizations about Tor and the Olympics this month. Our main goal was to explain to technical people how bridges work, what they&#039;re for, and explain that in most countries right now Tor works just fine out of the box, so bridges are the backup plan for later down the arms race. The CCC (and others) succeeded in making some good press articles, e.g.&lt;br /&gt;
&lt;a href=&quot;http://www.rsf.org/article.php3?id_article=27991&quot; title=&quot;http://www.rsf.org/article.php3?id_article=27991&quot; rel=&quot;nofollow&quot;&gt;http://www.rsf.org/article.php3?id_article=27991&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.guardian.co.uk/technology/2008/aug/07/censorship.hacking&quot; title=&quot;http://www.guardian.co.uk/technology/2008/aug/07/censorship.hacking&quot; rel=&quot;nofollow&quot;&gt;http://www.guardian.co.uk/technology/2008/aug/07/censorship.hacking&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.guardian.co.uk/commentisfree/2008/aug/05/china.censorship&quot; title=&quot;http://www.guardian.co.uk/commentisfree/2008/aug/05/china.censorship&quot; rel=&quot;nofollow&quot;&gt;http://www.guardian.co.uk/commentisfree/2008/aug/05/china.censorship&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Roger attended Black Hat and Defcon. His Defcon talk was:&lt;br /&gt;
&quot;Attacks/Vulnerabilities on Tor: past, present, future&quot;&lt;br /&gt;
Slides are at &lt;a href=&quot;http://freehaven.net/~arma/slides-dc08.pdf&quot; title=&quot;http://freehaven.net/~arma/slides-dc08.pdf&quot; rel=&quot;nofollow&quot;&gt;http://freehaven.net/~arma/slides-dc08.pdf&lt;/a&gt;&lt;br /&gt;
He had a packed room of 500+ people. Lucky Green summarized his take-away from the talk as &quot;we would love to work with you if you find any problems with Tor, and we have a good track record of working well with the community.&quot; That sounds like what we were aiming for. We&#039;re still waiting for the video to come out so we can link to it from the documentation page.&lt;/p&gt;
&lt;p&gt;We also talked a lot with the Mozilla people about privacy-impacting bugs in Firefox. We have a list now:&lt;br /&gt;
&lt;a href=&quot;https://www.torproject.org/torbutton/design/#FirefoxBugs&quot; title=&quot;https://www.torproject.org/torbutton/design/#FirefoxBugs&quot; rel=&quot;nofollow&quot;&gt;https://www.torproject.org/torbutton/design/#FirefoxBugs&lt;/a&gt;&lt;br /&gt;
and should start looking for good Firefox developers to fix them and funding to incent them to do so.&lt;/p&gt;
&lt;p&gt;We put up our mid-August NLnet reports:&lt;br /&gt;
&lt;a href=&quot;https://www.torproject.org/projects/hidserv#Aug08&quot; title=&quot;https://www.torproject.org/projects/hidserv#Aug08&quot; rel=&quot;nofollow&quot;&gt;https://www.torproject.org/projects/hidserv#Aug08&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://www.torproject.org/projects/lowbandwidth#Aug08&quot; title=&quot;https://www.torproject.org/projects/lowbandwidth#Aug08&quot; rel=&quot;nofollow&quot;&gt;https://www.torproject.org/projects/lowbandwidth#Aug08&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Jacob spent a long week of hacking in Argentina, for DebConf 8 (the yearly Debian Conference). Lots of Tor advocacy.  Another box of Tor stickers applied to many many laptops. Lots of people were interested in Tor and many many people installed Tor on both laptops and servers. This advocacy resulted in at least two new high bandwidth nodes that he helped the administrators configure. The first is in Japan. The second is our first major high bandwidth node in New Zealand.&lt;/p&gt;
&lt;p&gt;Coverity (coverity.com) is now scanning Tor. It found a bunch of minor memory leaks, a few false positives, and some other miscellaneous bugs. Nick fixed almost all of the bugs in a quick afternoon, excepting some testing code that has some resource leaks. Jacob is going to work on getting other Tor related projects into Coverity.&lt;/p&gt;
&lt;p&gt;Mike Perry has been working lately on publicity for moving more high-profile websites to use SSL correctly. Last year at Defcon he reported a bug in how many sites (including GMail) handle their cookies: he basically described an easy way for anybody in Starbucks to steal your GMail cookie and log into your gmail account, even if you are always very careful to only use &quot;https&quot; when logging in to your gmail account. The attack works because cookies *can* be set with an &quot;only present this cookie on an SSL connection&quot; flag when they&#039;re created, but no sites actually set this flag because they are concerned about usability. This attack is easy to perform as a Tor exit relay too. This year, Mike presented an actual tool that performs this attack on a local wireless network in an automated way. Some high-profile sites are slowly moving to use more secure login approaches.&lt;/p&gt;
&lt;p&gt;Matt Edman finished running the &quot;Vidalia logo design contest&quot;. The contest resulted in 76 entries. There were a lot of questionable submissions (Vidalia ninjas?!), but there were also a few great ones. He is tending towards this entry as his choice for the new Vidalia logo:&lt;br /&gt;
&lt;a href=&quot;http://www.worth1000.com/view.asp?entry=479229&quot; title=&quot;http://www.worth1000.com/view.asp?entry=479229&quot; rel=&quot;nofollow&quot;&gt;http://www.worth1000.com/view.asp?entry=479229&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Usability&lt;/strong&gt;&lt;br /&gt;
Incognito 2008.1 (released August 2) is a Gentoo-based Tor LiveCD. This new release adds a &quot;walkthrough&quot; which will launch on startup; adds language support for Arabic, Green, Hebrew, Russian, and Swedish; improves the support for Chinese and Japanese fonts; adds support for VMWare and partial support for VirtualBox; switches to Tor 0.2.0.30 and Torbutton 1.2.0; and adds some new privacy-supporting software and removes some applications that are too likely to leak private information.&lt;br /&gt;
&lt;a href=&quot;https://svn.torproject.org/svn/incognito/trunk/ChangeLog&quot; title=&quot;https://svn.torproject.org/svn/incognito/trunk/ChangeLog&quot; rel=&quot;nofollow&quot;&gt;https://svn.torproject.org/svn/incognito/trunk/ChangeLog&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Incognito now comes with much more thorough documentation about which software packages are included, and how they are configured:&lt;br /&gt;
&lt;a href=&quot;http://www.browseanonymouslyanywhere.com/incognito/uploadfiles/docs.html&quot; title=&quot;http://www.browseanonymouslyanywhere.com/incognito/uploadfiles/docs.html&quot; rel=&quot;nofollow&quot;&gt;http://www.browseanonymouslyanywhere.com/incognito/uploadfiles/docs.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Incognito&#039;s next step is to work on a &quot;hardened&quot; option that uses a more secure kernel and other applications. The goal is to keep the same usability but be even less vulnerable to application-level and kernel-level attacks that could be used to gain access to the system and then try to unveil the user.&lt;/p&gt;
&lt;p&gt;Tor Browser Bundle 1.1.2 (released August 9) updates Vidalia to release 0.1.6, updates Firefox to 2.0.0.16, updates Tor to 0.2.1.4-alpha, updates Torbutton to 1.2.0, and disables the TZ=UTC environment variable trick since Vidalia 0.1.7 now handles that for us.&lt;br /&gt;
&lt;a href=&quot;https://svn.torproject.org/svn/torbrowser/trunk/README&quot; title=&quot;https://svn.torproject.org/svn/torbrowser/trunk/README&quot; rel=&quot;nofollow&quot;&gt;https://svn.torproject.org/svn/torbrowser/trunk/README&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Tor Browser Bundle 1.1.3 (released August 22) fixes a bug in the 0.1.2 release that messed up translations in the homepage, adds &quot;small=1&quot; to the homepage URL so it doesn&#039;t show the huge green onion by default, and updates Vidalia to 0.1.8.&lt;br /&gt;
&lt;a href=&quot;https://svn.torproject.org/svn/torbrowser/trunk/README&quot; title=&quot;https://svn.torproject.org/svn/torbrowser/trunk/README&quot; rel=&quot;nofollow&quot;&gt;https://svn.torproject.org/svn/torbrowser/trunk/README&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We&#039;re working on a new branch of Vidalia that can be used in Tor Browser Bundle, for launching Firefox directly without needing the extra installer scripts called &quot;Firefox Portable&quot;. If we get this working, then we can hopefully make progress on running multiple Firefoxes at once (one used for Tor launched by TBB, and one used for non-Tor).&lt;br /&gt;
&lt;a href=&quot;http://trac.vidalia-project.net/browser/vidalia/branches/alt-launcher&quot; title=&quot;http://trac.vidalia-project.net/browser/vidalia/branches/alt-launcher&quot; rel=&quot;nofollow&quot;&gt;http://trac.vidalia-project.net/browser/vidalia/branches/alt-launcher&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The German CCC organization put together a version of the Tor Browser Bundle called the &quot;Freedom Stick&quot; for use in teaching the media about the Chinese firewall and the Olympics:&lt;br /&gt;
&lt;a href=&quot;http://chinesewall.ccc.de/freedomstick-en.html&quot; title=&quot;http://chinesewall.ccc.de/freedomstick-en.html&quot; rel=&quot;nofollow&quot;&gt;http://chinesewall.ccc.de/freedomstick-en.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Scalability&lt;/strong&gt;&lt;br /&gt;
From the Tor 0.2.1.5-alpha ChangeLog:&lt;br /&gt;
&quot;More progress toward proposal 141: Network status consensus documents and votes now contain bandwidth information for each router and a summary of that router&#039;s exit policy. Eventually this will be used by clients so that they do not have to download every known descriptor before building circuits.&quot;&lt;/p&gt;
&lt;p&gt;We&#039;re worked on getting &quot;Tor Weather&quot; back up and working:&lt;br /&gt;
&lt;a href=&quot;https://weather.torproject.org/&quot; title=&quot;https://weather.torproject.org/&quot; rel=&quot;nofollow&quot;&gt;https://weather.torproject.org/&lt;/a&gt;&lt;br /&gt;
Weather is a service to let relay operators get notified when their relay is unreachable for an extended period of time. It&#039;s still in its early experimental stages, but it&#039;s already proved useful to its early testers.  It&#039;s also using SSL as its base URL now. &lt;/p&gt;
&lt;p&gt;Jacob has also been working on a Tor network map, to visualize where our relays are. Using all of the known descriptors, it maps each node with some GeoIP code and plot it onto a map. You can interact with the data to see the IP address of each node, the node name and the city/country information if we could find it. Sadly, it *will* lock your browser up for one or two minutes, as there&#039;s a lot of data to parse:&lt;br /&gt;
&lt;a href=&quot;http://freehaven.net/~ioerror/maps/v3-tormap.html&quot; title=&quot;http://freehaven.net/~ioerror/maps/v3-tormap.html&quot; rel=&quot;nofollow&quot;&gt;http://freehaven.net/~ioerror/maps/v3-tormap.html&lt;/a&gt;&lt;/p&gt;
</description>
 <comments>http://blog.torproject.org/blog/august-2008-progress-report#comments</comments>
 <category domain="http://blog.torproject.org/category/tags/bridges">bridges</category>
 <category domain="http://blog.torproject.org/category/tags/incognito">incognito</category>
 <category domain="http://blog.torproject.org/category/tags/progress-report">progress report</category>
 <category domain="http://blog.torproject.org/category/tags/releases">releases</category>
 <category domain="http://blog.torproject.org/category/tags/stable-release">stable release</category>
 <category domain="http://blog.torproject.org/category/tags/tor-weather">tor weather</category>
 <category domain="http://blog.torproject.org/category/tags/translations">translations</category>
 <category domain="http://blog.torproject.org/category/tags/updates">updates</category>
 <pubDate>Sun, 21 Sep 2008 16:05:39 -0700</pubDate>
 <dc:creator>phobos</dc:creator>
 <guid isPermaLink="false">51 at http://blog.torproject.org</guid>
</item>
<item>
 <title>Tor 0.2.0.31 Released</title>
 <link>http://blog.torproject.org/blog/tor-0.2.0.31-released</link>
 <description>&lt;p&gt;A better formatted version of this can be found at the &lt;a href=&quot;http://archives.seul.org/or/announce/Sep-2008/msg00000.html&quot; rel=&quot;nofollow&quot;&gt;OR-Announce Archives&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Tor 0.2.0.31 addresses two potential anonymity issues, starts to fix&lt;br /&gt;
a big bug we&#039;re seeing where in rare cases traffic from one Tor stream&lt;br /&gt;
gets mixed into another stream, and fixes a variety of smaller issues.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.torproject.org/download.html&quot; title=&quot;https://www.torproject.org/download.html&quot; rel=&quot;nofollow&quot;&gt;https://www.torproject.org/download.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Changes in version 0.2.0.31 - 2008-09-03&lt;br /&gt;
  o Major bugfixes:&lt;br /&gt;
    - Make sure that two circuits can never exist on the same connection&lt;br /&gt;
      with the same circuit ID, even if one is marked for close. This&lt;br /&gt;
      is conceivably a bugfix for bug 779. Bugfix on 0.1.0.4-rc.&lt;br /&gt;
    - Relays now reject risky extend cells: if the extend cell includes&lt;br /&gt;
      a digest of all zeroes, or asks to extend back to the relay that&lt;br /&gt;
      sent the extend cell, tear down the circuit. Ideas suggested&lt;br /&gt;
      by rovv.&lt;br /&gt;
    - If not enough of our entry guards are available so we add a new&lt;br /&gt;
      one, we might use the new one even if it overlapped with the&lt;br /&gt;
      current circuit&#039;s exit relay (or its family). Anonymity bugfix&lt;br /&gt;
      pointed out by rovv.&lt;/p&gt;
&lt;p&gt;  o Minor bugfixes:&lt;br /&gt;
    - Recover 3-7 bytes that were wasted per memory chunk. Fixes bug&lt;br /&gt;
      794; bug spotted by rovv. Bugfix on 0.2.0.1-alpha.&lt;br /&gt;
    - Correctly detect the presence of the linux/netfilter_ipv4.h header&lt;br /&gt;
      when building against recent kernels. Bugfix on 0.1.2.1-alpha.&lt;br /&gt;
    - Pick size of default geoip filename string correctly on windows.&lt;br /&gt;
      Fixes bug 806. Bugfix on 0.2.0.30.&lt;br /&gt;
    - Make the autoconf script accept the obsolete --with-ssl-dir&lt;br /&gt;
      option as an alias for the actually-working --with-openssl-dir&lt;br /&gt;
      option. Fix the help documentation to recommend --with-openssl-dir.&lt;br /&gt;
      Based on a patch by &quot;Dave&quot;. Bugfix on 0.2.0.1-alpha.&lt;br /&gt;
    - Disallow session resumption attempts during the renegotiation&lt;br /&gt;
      stage of the v2 handshake protocol. Clients should never be trying&lt;br /&gt;
      session resumption at this point, but apparently some did, in&lt;br /&gt;
      ways that caused the handshake to fail. Bug found by Geoff Goodell.&lt;br /&gt;
      Bugfix on 0.2.0.20-rc.&lt;br /&gt;
    - When using the TransPort option on OpenBSD, and using the User&lt;br /&gt;
      option to change UID and drop privileges, make sure to open&lt;br /&gt;
      /dev/pf before dropping privileges. Fixes bug 782. Patch from&lt;br /&gt;
      Christopher Davis. Bugfix on 0.1.2.1-alpha.&lt;br /&gt;
    - Try to attach connections immediately upon receiving a RENDEZVOUS2&lt;br /&gt;
      or RENDEZVOUS_ESTABLISHED cell. This can save a second or two&lt;br /&gt;
      on the client side when connecting to a hidden service. Bugfix&lt;br /&gt;
      on 0.0.6pre1. Found and fixed by Christian Wilms; resolves bug 743.&lt;br /&gt;
    - When closing an application-side connection because its circuit is&lt;br /&gt;
      getting torn down, generate the stream event correctly. Bugfix on&lt;br /&gt;
      0.1.2.x. Anonymous patch.&lt;/p&gt;
</description>
 <comments>http://blog.torproject.org/blog/tor-0.2.0.31-released#comments</comments>
 <category domain="http://blog.torproject.org/category/tags/bug-fixes">bug fixes</category>
 <category domain="http://blog.torproject.org/category/tags/stable-release">stable release</category>
 <pubDate>Mon, 08 Sep 2008 21:34:15 -0700</pubDate>
 <dc:creator>phobos</dc:creator>
 <guid isPermaLink="false">50 at http://blog.torproject.org</guid>
</item>
<item>
 <title>Tor 0.2.0.30 is released as stable</title>
 <link>http://blog.torproject.org/blog/tor-0.2.0.30-released-stable</link>
 <description>&lt;p&gt;Tor 0.2.0.30 is released.  A better formatted version of this report can be found &lt;a href=&quot;http://permalink.gmane.org/gmane.network.onion-routing.announce/21&quot; rel=&quot;nofollow&quot;&gt;at gmane.org&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Tor 0.2.0.30 switches to a more efficient directory distribution design,&lt;br /&gt;
adds features to make connections to the Tor network harder to block,&lt;br /&gt;
allows Tor to act as a DNS proxy, adds separate rate limiting for relayed&lt;br /&gt;
traffic to make it easier for clients to become relays, fixes a variety&lt;br /&gt;
of potential anonymity problems, and includes the usual huge pile of&lt;br /&gt;
other features and bug fixes.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.torproject.org/download.html&quot; title=&quot;https://www.torproject.org/download.html&quot; rel=&quot;nofollow&quot;&gt;https://www.torproject.org/download.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Changes in version 0.2.0.30 - 2008-07-15&lt;br /&gt;
  o New v3 directory design:&lt;br /&gt;
    - Tor now uses a new way to learn about and distribute information&lt;br /&gt;
      about the network: the directory authorities vote on a common&lt;br /&gt;
      network status document rather than each publishing their own&lt;br /&gt;
      opinion. Now clients and caches download only one networkstatus&lt;br /&gt;
      document to bootstrap, rather than downloading one for each&lt;br /&gt;
      authority. Clients only download router descriptors listed in&lt;br /&gt;
      the consensus. Implements proposal 101; see doc/spec/dir-spec.txt&lt;br /&gt;
      for details.&lt;br /&gt;
    - Set up moria1, tor26, and dizum as v3 directory authorities&lt;br /&gt;
      in addition to being v2 authorities. Also add three new ones:&lt;br /&gt;
      ides (run by Mike Perry), gabelmoo (run by Karsten Loesing), and&lt;br /&gt;
      dannenberg (run by CCC).&lt;br /&gt;
    - Switch to multi-level keys for directory authorities: now their&lt;br /&gt;
      long-term identity key can be kept offline, and they periodically&lt;br /&gt;
      generate a new signing key. Clients fetch the &quot;key certificates&quot;&lt;br /&gt;
      to keep up to date on the right keys. Add a standalone tool&lt;br /&gt;
      &quot;tor-gencert&quot; to generate key certificates. Implements proposal 103.&lt;br /&gt;
    - Add a new V3AuthUseLegacyKey config option to make it easier for&lt;br /&gt;
      v3 authorities to change their identity keys if another bug like&lt;br /&gt;
      Debian&#039;s OpenSSL RNG flaw appears.&lt;br /&gt;
    - Authorities and caches fetch the v2 networkstatus documents&lt;br /&gt;
      less often, now that v3 is recommended.&lt;/p&gt;
&lt;p&gt;  o Make Tor connections stand out less on the wire:&lt;br /&gt;
    - Use an improved TLS handshake designed by Steven Murdoch in proposal&lt;br /&gt;
      124, as revised in proposal 130. The new handshake is meant to&lt;br /&gt;
      be harder for censors to fingerprint, and it adds the ability&lt;br /&gt;
      to detect certain kinds of man-in-the-middle traffic analysis&lt;br /&gt;
      attacks. The new handshake format includes version negotiation for&lt;br /&gt;
      OR connections as described in proposal 105, which will allow us&lt;br /&gt;
      to improve Tor&#039;s link protocol more safely in the future.&lt;br /&gt;
    - Enable encrypted directory connections by default for non-relays,&lt;br /&gt;
      so censor tools that block Tor directory connections based on their&lt;br /&gt;
      plaintext patterns will no longer work. This means Tor works in&lt;br /&gt;
      certain censored countries by default again.&lt;br /&gt;
    - Stop including recognizeable strings in the commonname part of&lt;br /&gt;
      Tor&#039;s x509 certificates.&lt;/p&gt;
&lt;p&gt;  o Implement bridge relays:&lt;br /&gt;
    - Bridge relays (or &quot;bridges&quot; for short) are Tor relays that aren&#039;t&lt;br /&gt;
      listed in the main Tor directory. Since there is no complete public&lt;br /&gt;
      list of them, even an ISP that is filtering connections to all the&lt;br /&gt;
      known Tor relays probably won&#039;t be able to block all the bridges.&lt;br /&gt;
      See doc/design-paper/blocking.pdf and proposal 125 for details.&lt;br /&gt;
    - New config option BridgeRelay that specifies you want to be a&lt;br /&gt;
      bridge relay rather than a normal relay. When BridgeRelay is set&lt;br /&gt;
      to 1, then a) you cache dir info even if your DirPort ins&#039;t on,&lt;br /&gt;
      and b) the default for PublishServerDescriptor is now &quot;bridge&quot;&lt;br /&gt;
      rather than &quot;v2,v3&quot;.&lt;br /&gt;
    - New config option &quot;UseBridges 1&quot; for clients that want to use bridge&lt;br /&gt;
      relays instead of ordinary entry guards. Clients then specify&lt;br /&gt;
      bridge relays by adding &quot;Bridge&quot; lines to their config file. Users&lt;br /&gt;
      can learn about a bridge relay either manually through word of&lt;br /&gt;
      mouth, or by one of our rate-limited mechanisms for giving out&lt;br /&gt;
      bridge addresses without letting an attacker easily enumerate them&lt;br /&gt;
      all. See &lt;a href=&quot;https://www.torproject.org/bridges&quot; title=&quot;https://www.torproject.org/bridges&quot; rel=&quot;nofollow&quot;&gt;https://www.torproject.org/bridges&lt;/a&gt; for details.&lt;br /&gt;
    - Bridge relays behave like clients with respect to time intervals&lt;br /&gt;
      for downloading new v3 consensus documents -- otherwise they&lt;br /&gt;
      stand out. Bridge users now wait until the end of the interval,&lt;br /&gt;
      so their bridge relay will be sure to have a new consensus document.&lt;/p&gt;
&lt;p&gt;  o Implement bridge directory authorities:&lt;br /&gt;
    - Bridge authorities are like normal directory authorities, except&lt;br /&gt;
      they don&#039;t serve a list of known bridges. Therefore users that know&lt;br /&gt;
      a bridge&#039;s fingerprint can fetch a relay descriptor for that bridge,&lt;br /&gt;
      including fetching updates e.g. if the bridge changes IP address,&lt;br /&gt;
      yet an attacker can&#039;t just fetch a list of all the bridges.&lt;br /&gt;
    - Set up Tonga as the default bridge directory authority.&lt;br /&gt;
    - Bridge authorities refuse to serve bridge descriptors or other&lt;br /&gt;
      bridge information over unencrypted connections (that is, when&lt;br /&gt;
      responding to direct DirPort requests rather than begin_dir cells.)&lt;br /&gt;
    - Bridge directory authorities do reachability testing on the&lt;br /&gt;
      bridges they know. They provide router status summaries to the&lt;br /&gt;
      controller via &quot;getinfo ns/purpose/bridge&quot;, and also dump summaries&lt;br /&gt;
      to a file periodically, so we can keep internal stats about which&lt;br /&gt;
      bridges are functioning.&lt;br /&gt;
    - If bridge users set the UpdateBridgesFromAuthority config option,&lt;br /&gt;
      but the digest they ask for is a 404 on the bridge authority,&lt;br /&gt;
      they fall back to contacting the bridge directly.&lt;br /&gt;
    - Bridges always use begin_dir to publish their server descriptor to&lt;br /&gt;
      the bridge authority using an anonymous encrypted tunnel.&lt;br /&gt;
    - Early work on a &quot;bridge community&quot; design: if bridge authorities set&lt;br /&gt;
      the BridgePassword config option, they will serve a snapshot of&lt;br /&gt;
      known bridge routerstatuses from their DirPort to anybody who&lt;br /&gt;
      knows that password. Unset by default.&lt;br /&gt;
    - Tor now includes an IP-to-country GeoIP file, so bridge relays can&lt;br /&gt;
      report sanitized aggregated summaries in their extra-info documents&lt;br /&gt;
      privately to the bridge authority, listing which countries are&lt;br /&gt;
      able to reach them. We hope this mechanism will let us learn when&lt;br /&gt;
      certain countries start trying to block bridges.&lt;br /&gt;
    - Bridge authorities write bridge descriptors to disk, so they can&lt;br /&gt;
      reload them after a reboot. They can also export the descriptors&lt;br /&gt;
      to other programs, so we can distribute them to blocked users via&lt;br /&gt;
      the BridgeDB interface, e.g. via &lt;a href=&quot;https://bridges.torproject.org/&quot; title=&quot;https://bridges.torproject.org/&quot; rel=&quot;nofollow&quot;&gt;https://bridges.torproject.org/&lt;/a&gt;&lt;br /&gt;
      and bridges  torproject.org.&lt;/p&gt;
&lt;p&gt;  o Tor can be a DNS proxy:&lt;br /&gt;
    - The new client-side DNS proxy feature replaces the need for&lt;br /&gt;
      dns-proxy-tor: Just set &quot;DNSPort 9999&quot;, and Tor will now listen&lt;br /&gt;
      for DNS requests on port 9999, use the Tor network to resolve them&lt;br /&gt;
      anonymously, and send the reply back like a regular DNS server.&lt;br /&gt;
      The code still only implements a subset of DNS.&lt;br /&gt;
    - Add a new AutomapHostsOnResolve option: when it is enabled, any&lt;br /&gt;
      resolve request for hosts matching a given pattern causes Tor to&lt;br /&gt;
      generate an internal virtual address mapping for that host. This&lt;br /&gt;
      allows DNSPort to work sensibly with hidden service users. By&lt;br /&gt;
      default, .exit and .onion addresses are remapped; the list of&lt;br /&gt;
      patterns can be reconfigured with AutomapHostsSuffixes.&lt;br /&gt;
    - Add an &quot;-F&quot; option to tor-resolve to force a resolve for a .onion&lt;br /&gt;
      address. Thanks to the AutomapHostsOnResolve option, this is no&lt;br /&gt;
      longer a completely silly thing to do.&lt;/p&gt;
&lt;p&gt;  o Major features (relay usability):&lt;br /&gt;
    - New config options RelayBandwidthRate and RelayBandwidthBurst:&lt;br /&gt;
      a separate set of token buckets for relayed traffic. Right now&lt;br /&gt;
      relayed traffic is defined as answers to directory requests, and&lt;br /&gt;
      OR connections that don&#039;t have any local circuits on them. See&lt;br /&gt;
      proposal 111 for details.&lt;br /&gt;
    - Create listener connections before we setuid to the configured&lt;br /&gt;
      User and Group. Now non-Windows users can choose port values&lt;br /&gt;
      under 1024, start Tor as root, and have Tor bind those ports&lt;br /&gt;
      before it changes to another UID. (Windows users could already&lt;br /&gt;
      pick these ports.)&lt;br /&gt;
    - Added a new ConstrainedSockets config option to set SO_SNDBUF and&lt;br /&gt;
      SO_RCVBUF on TCP sockets. Hopefully useful for Tor servers running&lt;br /&gt;
      on &quot;vserver&quot; accounts. Patch from coderman.&lt;/p&gt;
&lt;p&gt;  o Major features (directory authorities):&lt;br /&gt;
    - Directory authorities track weighted fractional uptime and weighted&lt;br /&gt;
      mean-time-between failures for relays. WFU is suitable for deciding&lt;br /&gt;
      whether a node is &quot;usually up&quot;, while MTBF is suitable for deciding&lt;br /&gt;
      whether a node is &quot;likely to stay up.&quot; We need both, because&lt;br /&gt;
      &quot;usually up&quot; is a good requirement for guards, while &quot;likely to&lt;br /&gt;
      stay up&quot; is a good requirement for long-lived connections.&lt;br /&gt;
    - Directory authorities use a new formula for selecting which relays&lt;br /&gt;
      to advertise as Guards: they must be in the top 7/8 in terms of&lt;br /&gt;
      how long we have known about them, and above the median of those&lt;br /&gt;
      nodes in terms of weighted fractional uptime.&lt;br /&gt;
    - Directory authorities use a new formula for selecting which relays&lt;br /&gt;
      to advertise as Stable: when we have 4 or more days of data, use&lt;br /&gt;
      median measured MTBF rather than median declared uptime. Implements&lt;br /&gt;
      proposal 108.&lt;br /&gt;
    - Directory authorities accept and serve &quot;extra info&quot; documents for&lt;br /&gt;
      routers. Routers now publish their bandwidth-history lines in the&lt;br /&gt;
      extra-info docs rather than the main descriptor. This step saves&lt;br /&gt;
      60% (!) on compressed router descriptor downloads. Servers upload&lt;br /&gt;
      extra-info docs to any authority that accepts them; directory&lt;br /&gt;
      authorities now allow multiple router descriptors and/or extra&lt;br /&gt;
      info documents to be uploaded in a single go. Authorities, and&lt;br /&gt;
      caches that have been configured to download extra-info documents,&lt;br /&gt;
      download them as needed. Implements proposal 104.&lt;br /&gt;
    - Authorities now list relays who have the same nickname as&lt;br /&gt;
      a different named relay, but list them with a new flag:&lt;br /&gt;
      &quot;Unnamed&quot;. Now we can make use of relays that happen to pick the&lt;br /&gt;
      same nickname as a server that registered two years ago and then&lt;br /&gt;
      disappeared. Implements proposal 122.&lt;br /&gt;
    - Store routers in a file called cached-descriptors instead of in&lt;br /&gt;
      cached-routers. Initialize cached-descriptors from cached-routers&lt;br /&gt;
      if the old format is around. The new format allows us to store&lt;br /&gt;
      annotations along with descriptors, to record the time we received&lt;br /&gt;
      each descriptor, its source, and its purpose: currently one of&lt;br /&gt;
      general, controller, or bridge.&lt;/p&gt;
&lt;p&gt;  o Major features (other):&lt;br /&gt;
    - New config options WarnPlaintextPorts and RejectPlaintextPorts so&lt;br /&gt;
      Tor can warn and/or refuse connections to ports commonly used with&lt;br /&gt;
      vulnerable-plaintext protocols. Currently we warn on ports 23,&lt;br /&gt;
      109, 110, and 143, but we don&#039;t reject any. Based on proposal 129&lt;br /&gt;
      by Kevin Bauer and Damon McCoy.&lt;br /&gt;
    - Integrate Karsten Loesing&#039;s Google Summer of Code project to publish&lt;br /&gt;
      hidden service descriptors on a set of redundant relays that are a&lt;br /&gt;
      function of the hidden service address. Now we don&#039;t have to rely&lt;br /&gt;
      on three central hidden service authorities for publishing and&lt;br /&gt;
      fetching every hidden service descriptor. Implements proposal 114.&lt;br /&gt;
    - Allow tunnelled directory connections to ask for an encrypted&lt;br /&gt;
      &quot;begin_dir&quot; connection or an anonymized &quot;uses a full Tor circuit&quot;&lt;br /&gt;
      connection independently. Now we can make anonymized begin_dir&lt;br /&gt;
      connections for (e.g.) more secure hidden service posting and&lt;br /&gt;
      fetching.&lt;/p&gt;
&lt;p&gt;  o Major bugfixes (crashes and assert failures):&lt;br /&gt;
    - Stop imposing an arbitrary maximum on the number of file descriptors&lt;br /&gt;
      used for busy servers. Bug reported by Olaf Selke; patch from&lt;br /&gt;
      Sebastian Hahn.&lt;br /&gt;
    - Avoid possible failures when generating a directory with routers&lt;br /&gt;
      with over-long versions strings, or too many flags set.&lt;br /&gt;
    - Fix a rare assert error when we&#039;re closing one of our threads:&lt;br /&gt;
      use a mutex to protect the list of logs, so we never write to the&lt;br /&gt;
      list as it&#039;s being freed. Fixes the very rare bug 575, which is&lt;br /&gt;
      kind of the revenge of bug 222.&lt;br /&gt;
    - Avoid segfault in the case where a badly behaved v2 versioning&lt;br /&gt;
      directory sends a signed networkstatus with missing client-versions.&lt;br /&gt;
    - When we hit an EOF on a log (probably because we&#039;re shutting down),&lt;br /&gt;
      don&#039;t try to remove the log from the list: just mark it as&lt;br /&gt;
      unusable. (Bulletproofs against bug 222.)&lt;/p&gt;
&lt;p&gt;  o Major bugfixes (code security fixes):&lt;br /&gt;
    - Detect size overflow in zlib code. Reported by Justin Ferguson and&lt;br /&gt;
      Dan Kaminsky.&lt;br /&gt;
    - Rewrite directory tokenization code to never run off the end of&lt;br /&gt;
      a string. Fixes bug 455. Patch from croup.&lt;br /&gt;
    - Be more paranoid about overwriting sensitive memory on free(),&lt;br /&gt;
      as a defensive programming tactic to ensure forward secrecy.&lt;/p&gt;
&lt;p&gt;  o Major bugfixes (anonymity fixes):&lt;br /&gt;
    - Reject requests for reverse-dns lookup of names that are in&lt;br /&gt;
      a private address space. Patch from lodger.&lt;br /&gt;
    - Never report that we&#039;ve used more bandwidth than we&#039;re willing to&lt;br /&gt;
      relay: it leaks how much non-relay traffic we&#039;re using. Resolves&lt;br /&gt;
      bug 516.&lt;br /&gt;
    - As a client, do not believe any server that tells us that an&lt;br /&gt;
      address maps to an internal address space.&lt;br /&gt;
    - Warn about unsafe ControlPort configurations.&lt;br /&gt;
    - Directory authorities now call routers Fast if their bandwidth is&lt;br /&gt;
      at least 100KB/s, and consider their bandwidth adequate to be a&lt;br /&gt;
      Guard if it is at least 250KB/s, no matter the medians. This fix&lt;br /&gt;
      complements proposal 107.&lt;br /&gt;
    - Directory authorities now never mark more than 2 servers per IP as&lt;br /&gt;
      Valid and Running (or 5 on addresses shared by authorities).&lt;br /&gt;
      Implements proposal 109, by Kevin Bauer and Damon McCoy.&lt;br /&gt;
    - If we&#039;re a relay, avoid picking ourselves as an introduction point,&lt;br /&gt;
      a rendezvous point, or as the final hop for internal circuits. Bug&lt;br /&gt;
      reported by taranis and lodger.&lt;br /&gt;
    - Exit relays that are used as a client can now reach themselves&lt;br /&gt;
      using the .exit notation, rather than just launching an infinite&lt;br /&gt;
      pile of circuits. Fixes bug 641. Reported by Sebastian Hahn.&lt;br /&gt;
    - Fix a bug where, when we were choosing the &#039;end stream reason&#039; to&lt;br /&gt;
      put in our relay end cell that we send to the exit relay, Tor&lt;br /&gt;
      clients on Windows were sometimes sending the wrong &#039;reason&#039;. The&lt;br /&gt;
      anonymity problem is that exit relays may be able to guess whether&lt;br /&gt;
      the client is running Windows, thus helping partition the anonymity&lt;br /&gt;
      set. Down the road we should stop sending reasons to exit relays,&lt;br /&gt;
      or otherwise prevent future versions of this bug.&lt;br /&gt;
    - Only update guard status (usable / not usable) once we have&lt;br /&gt;
      enough directory information. This was causing us to discard all our&lt;br /&gt;
      guards on startup if we hadn&#039;t been running for a few weeks. Fixes&lt;br /&gt;
      bug 448.&lt;br /&gt;
    - When our directory information has been expired for a while, stop&lt;br /&gt;
      being willing to build circuits using it. Fixes bug 401.&lt;/p&gt;
&lt;p&gt;  o Major bugfixes (peace of mind for relay operators)&lt;br /&gt;
    - Non-exit relays no longer answer &quot;resolve&quot; relay cells, so they&lt;br /&gt;
      can&#039;t be induced to do arbitrary DNS requests. (Tor clients already&lt;br /&gt;
      avoid using non-exit relays for resolve cells, but now servers&lt;br /&gt;
      enforce this too.) Fixes bug 619. Patch from lodger.&lt;br /&gt;
    - When we setconf ClientOnly to 1, close any current OR and Dir&lt;br /&gt;
      listeners. Reported by mwenge.&lt;/p&gt;
&lt;p&gt;  o Major bugfixes (other):&lt;br /&gt;
    - If we only ever used Tor for hidden service lookups or posts, we&lt;br /&gt;
      would stop building circuits and start refusing connections after&lt;br /&gt;
      24 hours, since we falsely believed that Tor was dormant. Reported&lt;br /&gt;
      by nwf.&lt;br /&gt;
    - Add a new __HashedControlSessionPassword option for controllers&lt;br /&gt;
      to use for one-off session password hashes that shouldn&#039;t get&lt;br /&gt;
      saved to disk by SAVECONF --- Vidalia users were accumulating a&lt;br /&gt;
      pile of HashedControlPassword lines in their torrc files, one for&lt;br /&gt;
      each time they had restarted Tor and then clicked Save. Make Tor&lt;br /&gt;
      automatically convert &quot;HashedControlPassword&quot; to this new option but&lt;br /&gt;
      only when it&#039;s given on the command line. Partial fix for bug 586.&lt;br /&gt;
    - Patch from &quot;Andrew S. Lists&quot; to catch when we contact a directory&lt;br /&gt;
      mirror at IP address X and he says we look like we&#039;re coming from&lt;br /&gt;
      IP address X. Otherwise this would screw up our address detection.&lt;br /&gt;
    - Reject uploaded descriptors and extrainfo documents if they&#039;re&lt;br /&gt;
      huge. Otherwise we&#039;ll cache them all over the network and it&#039;ll&lt;br /&gt;
      clog everything up. Suggested by Aljosha Judmayer.&lt;br /&gt;
    - When a hidden service was trying to establish an introduction point,&lt;br /&gt;
      and Tor *did* manage to reuse one of the preemptively built&lt;br /&gt;
      circuits, it didn&#039;t correctly remember which one it used,&lt;br /&gt;
      so it asked for another one soon after, until there were no&lt;br /&gt;
      more preemptive circuits, at which point it launched one from&lt;br /&gt;
      scratch. Bugfix on 0.0.9.x.&lt;/p&gt;
&lt;p&gt;  o Rate limiting and load balancing improvements:&lt;br /&gt;
    - When we add data to a write buffer in response to the data on that&lt;br /&gt;
      write buffer getting low because of a flush, do not consider the&lt;br /&gt;
      newly added data as a candidate for immediate flushing, but rather&lt;br /&gt;
      make it wait until the next round of writing. Otherwise, we flush&lt;br /&gt;
      and refill recursively, and a single greedy TLS connection can&lt;br /&gt;
      eat all of our bandwidth.&lt;br /&gt;
    - When counting the number of bytes written on a TLS connection,&lt;br /&gt;
      look at the BIO actually used for writing to the network, not&lt;br /&gt;
      at the BIO used (sometimes) to buffer data for the network.&lt;br /&gt;
      Looking at different BIOs could result in write counts on the&lt;br /&gt;
      order of ULONG_MAX. Fixes bug 614.&lt;br /&gt;
    - If we change our MaxAdvertisedBandwidth and then reload torrc,&lt;br /&gt;
      Tor won&#039;t realize it should publish a new relay descriptor. Fixes&lt;br /&gt;
      bug 688, reported by mfr.&lt;br /&gt;
    - Avoid using too little bandwidth when our clock skips a few seconds.&lt;br /&gt;
    - Choose which bridge to use proportional to its advertised bandwidth,&lt;br /&gt;
      rather than uniformly at random. This should speed up Tor for&lt;br /&gt;
      bridge users. Also do this for people who set StrictEntryNodes.&lt;/p&gt;
&lt;p&gt;  o Bootstrapping faster and building circuits more intelligently:&lt;br /&gt;
    - Fix bug 660 that was preventing us from knowing that we should&lt;br /&gt;
      preemptively build circuits to handle expected directory requests.&lt;br /&gt;
    - When we&#039;re checking if we have enough dir info for each relay&lt;br /&gt;
      to begin establishing circuits, make sure that we actually have&lt;br /&gt;
      the descriptor listed in the consensus, not just any descriptor.&lt;br /&gt;
    - Correctly notify one-hop connections when a circuit build has&lt;br /&gt;
      failed. Possible fix for bug 669. Found by lodger.&lt;br /&gt;
    - Clients now hold circuitless TLS connections open for 1.5 times&lt;br /&gt;
      MaxCircuitDirtiness (15 minutes), since it is likely that they&#039;ll&lt;br /&gt;
      rebuild a new circuit over them within that timeframe. Previously,&lt;br /&gt;
      they held them open only for KeepalivePeriod (5 minutes).&lt;/p&gt;
&lt;p&gt;  o Performance improvements (memory):&lt;br /&gt;
    - Add OpenBSD malloc code from &quot;phk&quot; as an optional malloc&lt;br /&gt;
      replacement on Linux: some glibc libraries do very poorly with&lt;br /&gt;
      Tor&#039;s memory allocation patterns. Pass --enable-openbsd-malloc to&lt;br /&gt;
      ./configure to get the replacement malloc code.&lt;br /&gt;
    - Switch our old ring buffer implementation for one more like that&lt;br /&gt;
      used by free Unix kernels. The wasted space in a buffer with 1mb&lt;br /&gt;
      of data will now be more like 8k than 1mb. The new implementation&lt;br /&gt;
      also avoids realloc();realloc(); patterns that can contribute to&lt;br /&gt;
      memory fragmentation.&lt;br /&gt;
    - Change the way that Tor buffers data that it is waiting to write.&lt;br /&gt;
      Instead of queueing data cells in an enormous ring buffer for each&lt;br /&gt;
      client-&amp;gt;OR or OR-&amp;gt;OR connection, we now queue cells on a separate&lt;br /&gt;
      queue for each circuit. This lets us use less slack memory, and&lt;br /&gt;
      will eventually let us be smarter about prioritizing different kinds&lt;br /&gt;
      of traffic.&lt;br /&gt;
    - Reference-count and share copies of address policy entries; only 5%&lt;br /&gt;
      of them were actually distinct.&lt;br /&gt;
    - Tune parameters for cell pool allocation to minimize amount of&lt;br /&gt;
      RAM overhead used.&lt;br /&gt;
    - Keep unused 4k and 16k buffers on free lists, rather than wasting 8k&lt;br /&gt;
      for every single inactive connection_t. Free items from the&lt;br /&gt;
      4k/16k-buffer free lists when they haven&#039;t been used for a while.&lt;br /&gt;
    - Make memory debugging information describe more about history&lt;br /&gt;
      of cell allocation, so we can help reduce our memory use.&lt;br /&gt;
    - Be even more aggressive about releasing RAM from small&lt;br /&gt;
      empty buffers. Thanks to our free-list code, this shouldn&#039;t be too&lt;br /&gt;
      performance-intensive.&lt;br /&gt;
    - Log malloc statistics from mallinfo() on platforms where it exists.&lt;br /&gt;
    - Use memory pools to allocate cells with better speed and memory&lt;br /&gt;
      efficiency, especially on platforms where malloc() is inefficient.&lt;br /&gt;
    - Add a --with-tcmalloc option to the configure script to link&lt;br /&gt;
      against tcmalloc (if present). Does not yet search for non-system&lt;br /&gt;
      include paths.&lt;/p&gt;
&lt;p&gt;  o Performance improvements (socket management):&lt;br /&gt;
    - Count the number of open sockets separately from the number of&lt;br /&gt;
      active connection_t objects. This will let us avoid underusing&lt;br /&gt;
      our allocated connection limit.&lt;br /&gt;
    - We no longer use socket pairs to link an edge connection to an&lt;br /&gt;
      anonymous directory connection or a DirPort test connection.&lt;br /&gt;
      Instead, we track the link internally and transfer the data&lt;br /&gt;
      in-process. This saves two sockets per &quot;linked&quot; connection (at the&lt;br /&gt;
      client and at the server), and avoids the nasty Windows socketpair()&lt;br /&gt;
      workaround.&lt;br /&gt;
    - We were leaking a file descriptor if Tor started with a zero-length&lt;br /&gt;
      cached-descriptors file. Patch by &quot;freddy77&quot;.&lt;/p&gt;
&lt;p&gt;  o Performance improvements (CPU use):&lt;br /&gt;
    - Never walk through the list of logs if we know that no log target&lt;br /&gt;
      is interested in a given message.&lt;br /&gt;
    - Call routerlist_remove_old_routers() much less often. This should&lt;br /&gt;
      speed startup, especially on directory caches.&lt;br /&gt;
    - Base64 decoding was actually showing up on our profile when parsing&lt;br /&gt;
      the initial descriptor file; switch to an in-process all-at-once&lt;br /&gt;
      implementation that&#039;s about 3.5x times faster than calling out to&lt;br /&gt;
      OpenSSL.&lt;br /&gt;
    - Use a slightly simpler string hashing algorithm (copying Python&#039;s&lt;br /&gt;
      instead of Java&#039;s) and optimize our digest hashing algorithm to take&lt;br /&gt;
      advantage of 64-bit platforms and to remove some possibly-costly&lt;br /&gt;
      voodoo.&lt;br /&gt;
    - When implementing AES counter mode, update only the portions of the&lt;br /&gt;
      counter buffer that need to change, and don&#039;t keep separate&lt;br /&gt;
      network-order and host-order counters on big-endian hosts (where&lt;br /&gt;
      they are the same).&lt;br /&gt;
    - Add an in-place version of aes_crypt() so that we can avoid doing a&lt;br /&gt;
      needless memcpy() call on each cell payload.&lt;br /&gt;
    - Use Critical Sections rather than Mutexes for synchronizing threads&lt;br /&gt;
      on win32; Mutexes are heavier-weight, and designed for synchronizing&lt;br /&gt;
      between processes.&lt;/p&gt;
&lt;p&gt;  o Performance improvements (bandwidth use):&lt;br /&gt;
    - Don&#039;t try to launch new descriptor downloads quite so often when we&lt;br /&gt;
      already have enough directory information to build circuits.&lt;br /&gt;
    - Version 1 directories are no longer generated in full. Instead,&lt;br /&gt;
      authorities generate and serve &quot;stub&quot; v1 directories that list&lt;br /&gt;
      no servers. This will stop Tor versions 0.1.0.x and earlier from&lt;br /&gt;
      working, but (for security reasons) nobody should be running those&lt;br /&gt;
      versions anyway.&lt;br /&gt;
    - Avoid going directly to the directory authorities even if you&#039;re a&lt;br /&gt;
      relay, if you haven&#039;t found yourself reachable yet or if you&#039;ve&lt;br /&gt;
      decided not to advertise your dirport yet. Addresses bug 556.&lt;br /&gt;
    - If we&#039;ve gone 12 hours since our last bandwidth check, and we&lt;br /&gt;
      estimate we have less than 50KB bandwidth capacity but we could&lt;br /&gt;
      handle more, do another bandwidth test.&lt;br /&gt;
    - Support &quot;If-Modified-Since&quot; when answering HTTP requests for&lt;br /&gt;
      directories, running-routers documents, and v2 and v3 networkstatus&lt;br /&gt;
      documents. (There&#039;s no need to support it for router descriptors,&lt;br /&gt;
      since those are downloaded by descriptor digest.)&lt;br /&gt;
    - Stop fetching directory info so aggressively if your DirPort is&lt;br /&gt;
      on but your ORPort is off; stop fetching v2 dir info entirely.&lt;br /&gt;
      You can override these choices with the new FetchDirInfoEarly&lt;br /&gt;
      config option.&lt;/p&gt;
&lt;p&gt;  o Changed config option behavior (features):&lt;br /&gt;
    - Configuration files now accept C-style strings as values. This&lt;br /&gt;
      helps encode characters not allowed in the current configuration&lt;br /&gt;
      file format, such as newline or #. Addresses bug 557.&lt;br /&gt;
    - Add hidden services and DNSPorts to the list of things that make&lt;br /&gt;
      Tor accept that it has running ports. Change starting Tor with no&lt;br /&gt;
      ports from a fatal error to a warning; we might change it back if&lt;br /&gt;
      this turns out to confuse anybody. Fixes bug 579.&lt;br /&gt;
    - Make PublishServerDescriptor default to 1, so the default doesn&#039;t&lt;br /&gt;
      have to change as we invent new directory protocol versions.&lt;br /&gt;
    - Allow people to say PreferTunnelledDirConns rather than&lt;br /&gt;
      PreferTunneledDirConns, for those alternate-spellers out there.&lt;br /&gt;
    - Raise the default BandwidthRate/BandwidthBurst to 5MB/10MB, to&lt;br /&gt;
      accommodate the growing number of servers that use the default&lt;br /&gt;
      and are reaching it.&lt;br /&gt;
    - Make it possible to enable HashedControlPassword and&lt;br /&gt;
      CookieAuthentication at the same time.&lt;br /&gt;
    - When a TrackHostExits-chosen exit fails too many times in a row,&lt;br /&gt;
      stop using it. Fixes bug 437.&lt;/p&gt;
&lt;p&gt;  o Changed config option behavior (bugfixes):&lt;br /&gt;
    - Do not read the configuration file when we&#039;ve only been told to&lt;br /&gt;
      generate a password hash. Fixes bug 643. Bugfix on 0.0.9pre5. Fix&lt;br /&gt;
      based on patch from Sebastian Hahn.&lt;br /&gt;
    - Actually validate the options passed to AuthDirReject,&lt;br /&gt;
      AuthDirInvalid, AuthDirBadDir, and AuthDirBadExit.&lt;br /&gt;
    - Make &quot;ClientOnly 1&quot; config option disable directory ports too.&lt;br /&gt;
    - Don&#039;t stop fetching descriptors when FetchUselessDescriptors is&lt;br /&gt;
      set, even if we stop asking for circuits. Bug reported by tup&lt;br /&gt;
      and ioerror.&lt;br /&gt;
    - Servers used to decline to publish their DirPort if their&lt;br /&gt;
      BandwidthRate or MaxAdvertisedBandwidth were below a threshold. Now&lt;br /&gt;
      they look only at BandwidthRate and RelayBandwidthRate.&lt;br /&gt;
    - Treat &quot;2gb&quot; when given in torrc for a bandwidth as meaning 2gb,&lt;br /&gt;
      minus 1 byte: the actual maximum declared bandwidth.&lt;br /&gt;
    - Make &quot;TrackHostExits .&quot; actually work. Bugfix on 0.1.0.x.&lt;br /&gt;
    - Make the NodeFamilies config option work. (Reported by&lt;br /&gt;
      lodger -- it has never actually worked, even though we added it&lt;br /&gt;
      in Oct 2004.)&lt;br /&gt;
    - If Tor is invoked from something that isn&#039;t a shell (e.g. Vidalia),&lt;br /&gt;
      now we expand &quot;-f ~/.tor/torrc&quot; correctly. Suggested by Matt Edman.&lt;/p&gt;
&lt;p&gt;  o New config options:&lt;br /&gt;
    - New configuration options AuthDirMaxServersPerAddr and&lt;br /&gt;
      AuthDirMaxServersperAuthAddr to override default maximum number&lt;br /&gt;
      of servers allowed on a single IP address. This is important for&lt;br /&gt;
      running a test network on a single host.&lt;br /&gt;
    - Three new config options (AlternateDirAuthority,&lt;br /&gt;
      AlternateBridgeAuthority, and AlternateHSAuthority) that let the&lt;br /&gt;
      user selectively replace the default directory authorities by type,&lt;br /&gt;
      rather than the all-or-nothing replacement that DirServer offers.&lt;br /&gt;
    - New config options AuthDirBadDir and AuthDirListBadDirs for&lt;br /&gt;
      authorities to mark certain relays as &quot;bad directories&quot; in the&lt;br /&gt;
      networkstatus documents. Also supports the &quot;!baddir&quot; directive in&lt;br /&gt;
      the approved-routers file.&lt;br /&gt;
    - New config option V2AuthoritativeDirectory that all v2 directory&lt;br /&gt;
      authorities must set. This lets v3 authorities choose not to serve&lt;br /&gt;
      v2 directory information.&lt;/p&gt;
&lt;p&gt;  o Minor features (other):&lt;br /&gt;
    - When we&#039;re not serving v2 directory information, there is no reason&lt;br /&gt;
      to actually keep any around. Remove the obsolete files and directory&lt;br /&gt;
      on startup if they are very old and we aren&#039;t going to serve them.&lt;br /&gt;
    - When we negotiate a v2 link-layer connection (not yet implemented),&lt;br /&gt;
      accept RELAY_EARLY cells and turn them into RELAY cells if we&#039;ve&lt;br /&gt;
      negotiated a v1 connection for their next step. Initial steps for&lt;br /&gt;
      proposal 110.&lt;br /&gt;
    - When we have no consensus, check FallbackNetworkstatusFile (defaults&lt;br /&gt;
      to $PREFIX/share/tor/fallback-consensus) for a consensus. This way&lt;br /&gt;
      we can start out knowing some directory caches. We don&#039;t ship with&lt;br /&gt;
      a fallback consensus by default though, because it was making&lt;br /&gt;
      bootstrapping take too long while we tried many down relays.&lt;br /&gt;
    - Authorities send back an X-Descriptor-Not-New header in response to&lt;br /&gt;
      an accepted-but-discarded descriptor upload. Partially implements&lt;br /&gt;
      fix for bug 535.&lt;br /&gt;
    - If we find a cached-routers file that&#039;s been sitting around for more&lt;br /&gt;
      than 28 days unmodified, then most likely it&#039;s a leftover from&lt;br /&gt;
      when we upgraded to 0.2.0.8-alpha. Remove it. It has no good&lt;br /&gt;
      routers anyway.&lt;br /&gt;
    - When we (as a cache) download a descriptor because it was listed&lt;br /&gt;
      in a consensus, remember when the consensus was supposed to expire,&lt;br /&gt;
      and don&#039;t expire the descriptor until then.&lt;br /&gt;
    - Optionally (if built with -DEXPORTMALLINFO) export the output&lt;br /&gt;
      of mallinfo via http, as tor/mallinfo.txt. Only accessible&lt;br /&gt;
      from localhost.&lt;br /&gt;
    - Tag every guard node in our state file with the version that&lt;br /&gt;
      we believe added it, or with our own version if we add it. This way,&lt;br /&gt;
      if a user temporarily runs an old version of Tor and then switches&lt;br /&gt;
      back to a new one, she doesn&#039;t automatically lose her guards.&lt;br /&gt;
    - When somebody requests a list of statuses or servers, and we have&lt;br /&gt;
      none of those, return a 404 rather than an empty 200.&lt;br /&gt;
    - Merge in some (as-yet-unused) IPv6 address manipulation code. (Patch&lt;br /&gt;
      from croup.)&lt;br /&gt;
    - Add an HSAuthorityRecordStats option that hidden service authorities&lt;br /&gt;
      can use to track statistics of overall hidden service usage without&lt;br /&gt;
      logging information that would be as useful to an attacker.&lt;br /&gt;
    - Allow multiple HiddenServicePort directives with the same virtual&lt;br /&gt;
      port; when they occur, the user is sent round-robin to one&lt;br /&gt;
      of the target ports chosen at random.  Partially fixes bug 393 by&lt;br /&gt;
      adding limited ad-hoc round-robining.&lt;br /&gt;
    - Revamp file-writing logic so we don&#039;t need to have the entire&lt;br /&gt;
      contents of a file in memory at once before we write to disk. Tor,&lt;br /&gt;
      meet stdio.&lt;/p&gt;
&lt;p&gt;  o Minor bugfixes (other):&lt;br /&gt;
    - Alter the code that tries to recover from unhandled write&lt;br /&gt;
      errors, to not try to flush onto a socket that&#039;s given us&lt;br /&gt;
      unhandled errors.&lt;br /&gt;
    - Directory mirrors no longer include a guess at the client&#039;s IP&lt;br /&gt;
      address if the connection appears to be coming from the same /24&lt;br /&gt;
      network; it was producing too many wrong guesses.&lt;br /&gt;
    - If we&#039;re trying to flush the last bytes on a connection (for&lt;br /&gt;
      example, when answering a directory request), reset the&lt;br /&gt;
      time-to-give-up timeout every time we manage to write something&lt;br /&gt;
      on the socket.&lt;br /&gt;
    - Reject router descriptors with out-of-range bandwidthcapacity or&lt;br /&gt;
      bandwidthburst values.&lt;br /&gt;
    - If we can&#039;t expand our list of entry guards (e.g. because we&#039;re&lt;br /&gt;
      using bridges or we have StrictEntryNodes set), don&#039;t mark relays&lt;br /&gt;
      down when they fail a directory request. Otherwise we&#039;re too quick&lt;br /&gt;
      to mark all our entry points down.&lt;br /&gt;
    - Authorities no longer send back &quot;400 you&#039;re unreachable please fix&lt;br /&gt;
      it&quot; errors to Tor servers that aren&#039;t online all the time. We&#039;re&lt;br /&gt;
      supposed to tolerate these servers now.&lt;br /&gt;
    - Let directory authorities startup even when they can&#039;t generate&lt;br /&gt;
      a descriptor immediately, e.g. because they don&#039;t know their&lt;br /&gt;
      address.&lt;br /&gt;
    - Correctly enforce that elements of directory objects do not appear&lt;br /&gt;
      more often than they are allowed to appear.&lt;br /&gt;
    - Stop allowing hibernating servers to be &quot;stable&quot; or &quot;fast&quot;.&lt;br /&gt;
    - On Windows, we were preventing other processes from reading&lt;br /&gt;
      cached-routers while Tor was running. (Reported by janbar)&lt;br /&gt;
    - Check return values from pthread_mutex functions.&lt;br /&gt;
    - When opening /dev/null in finish_daemonize(), do not pass the&lt;br /&gt;
      O_CREAT flag. Fortify was complaining, and correctly so. Fixes&lt;br /&gt;
      bug 742; fix from Michael Scherer. Bugfix on 0.0.2pre19.&lt;/p&gt;
&lt;p&gt;  o Controller features:&lt;br /&gt;
    - The GETCONF command now escapes and quotes configuration values&lt;br /&gt;
      that don&#039;t otherwise fit into the torrc file.&lt;br /&gt;
    - The SETCONF command now handles quoted values correctly.&lt;br /&gt;
    - Add &quot;GETINFO/desc-annotations/id/≤OR digest&amp;gt;&quot; so controllers can&lt;br /&gt;
      ask about source, timestamp of arrival, purpose, etc. We need&lt;br /&gt;
      something like this to help Vidalia not do GeoIP lookups on bridge&lt;br /&gt;
      addresses.&lt;br /&gt;
    - Allow multiple HashedControlPassword config lines, to support&lt;br /&gt;
      multiple controller passwords.&lt;br /&gt;
    - Accept LF instead of CRLF on controller, since some software has a&lt;br /&gt;
      hard time generating real Internet newlines.&lt;br /&gt;
    - Add GETINFO values for the server status events&lt;br /&gt;
      &quot;REACHABILITY_SUCCEEDED&quot; and &quot;GOOD_SERVER_DESCRIPTOR&quot;. Patch from&lt;br /&gt;
      Robert Hogan.&lt;br /&gt;
    - There is now an ugly, temporary &quot;desc/all-recent-extrainfo-hack&quot;&lt;br /&gt;
      GETINFO for Torstat to use until it can switch to using extrainfos.&lt;br /&gt;
    - New config option CookieAuthFile to choose a new location for the&lt;br /&gt;
      cookie authentication file, and config option&lt;br /&gt;
      CookieAuthFileGroupReadable to make it group-readable.&lt;br /&gt;
    - Add a SOURCE_ADDR field to STREAM NEW events so that controllers can&lt;br /&gt;
      match requests to applications. Patch from Robert Hogan.&lt;br /&gt;
    - Add a RESOLVE command to launch hostname lookups. Original patch&lt;br /&gt;
      from Robert Hogan.&lt;br /&gt;
    - Add GETINFO status/enough-dir-info to let controllers tell whether&lt;br /&gt;
      Tor has downloaded sufficient directory information. Patch from Tup.&lt;br /&gt;
    - You can now use the ControlSocket option to tell Tor to listen for&lt;br /&gt;
      controller connections on Unix domain sockets on systems that&lt;br /&gt;
      support them. Patch from Peter Palfrader.&lt;br /&gt;
    - New &quot;GETINFO address-mappings/*&quot; command to get address mappings&lt;br /&gt;
      with expiry information. &quot;addr-mappings/*&quot; is now deprecated.&lt;br /&gt;
      Patch from Tup.&lt;br /&gt;
    - Add a new config option __DisablePredictedCircuits designed for&lt;br /&gt;
      use by the controller, when we don&#039;t want Tor to build any circuits&lt;br /&gt;
      preemptively.&lt;br /&gt;
    - Let the controller specify HOP=%d as an argument to ATTACHSTREAM,&lt;br /&gt;
      so we can exit from the middle of the circuit.&lt;br /&gt;
    - Implement &quot;getinfo status/circuit-established&quot;.&lt;br /&gt;
    - Implement &quot;getinfo status/version/...&quot; so a controller can tell&lt;br /&gt;
      whether the current version is recommended, and whether any versions&lt;br /&gt;
      are good, and how many authorities agree. Patch from &quot;shibz&quot;.&lt;br /&gt;
    - Controllers should now specify cache=no or cache=yes when using&lt;br /&gt;
      the +POSTDESCRIPTOR command.&lt;br /&gt;
    - Add a &quot;PURPOSE=&quot; argument to &quot;STREAM NEW&quot; events, as suggested by&lt;br /&gt;
      Robert Hogan. Fixes the first part of bug 681.&lt;br /&gt;
    - When reporting clock skew, and we know that the clock is _at least&lt;br /&gt;
      as skewed_ as some value, but we don&#039;t know the actual value,&lt;br /&gt;
      report the value as a &quot;minimum skew.&quot;&lt;/p&gt;
&lt;p&gt;  o Controller bugfixes:&lt;br /&gt;
    - Generate &quot;STATUS_SERVER&quot; events rather than misspelled&lt;br /&gt;
      &quot;STATUS_SEVER&quot; events. Caught by mwenge.&lt;br /&gt;
    - Reject controller commands over 1MB in length, so rogue&lt;br /&gt;
      processes can&#039;t run us out of memory.&lt;br /&gt;
    - Change the behavior of &quot;getinfo status/good-server-descriptor&quot;&lt;br /&gt;
      so it doesn&#039;t return failure when any authority disappears.&lt;br /&gt;
    - Send NAMESERVER_STATUS messages for a single failed nameserver&lt;br /&gt;
      correctly.&lt;br /&gt;
    - When the DANGEROUS_VERSION controller status event told us we&#039;re&lt;br /&gt;
      running an obsolete version, it used the string &quot;OLD&quot; to describe&lt;br /&gt;
      it. Yet the &quot;getinfo&quot; interface used the string &quot;OBSOLETE&quot;. Now use&lt;br /&gt;
      &quot;OBSOLETE&quot; in both cases.&lt;br /&gt;
    - Respond to INT and TERM SIGNAL commands before we execute the&lt;br /&gt;
      signal, in case the signal shuts us down. We had a patch in&lt;br /&gt;
      0.1.2.1-alpha that tried to do this by queueing the response on&lt;br /&gt;
      the connection&#039;s buffer before shutting down, but that really&lt;br /&gt;
      isn&#039;t the same thing at all. Bug located by Matt Edman.&lt;br /&gt;
    - Provide DNS expiry times in GMT, not in local time. For backward&lt;br /&gt;
      compatibility, ADDRMAP events only provide GMT expiry in an extended&lt;br /&gt;
      field. &quot;GETINFO address-mappings&quot; always does the right thing.&lt;br /&gt;
    - Use CRLF line endings properly in NS events.&lt;br /&gt;
    - Make &#039;getinfo fingerprint&#039; return a 551 error if we&#039;re not a&lt;br /&gt;
      server, so we match what the control spec claims we do. Reported&lt;br /&gt;
      by daejees.&lt;br /&gt;
    - Fix a typo in an error message when extendcircuit fails that&lt;br /&gt;
      caused us to not follow the \r\n-based delimiter protocol. Reported&lt;br /&gt;
      by daejees.&lt;br /&gt;
    - When tunneling an encrypted directory connection, and its first&lt;br /&gt;
      circuit fails, do not leave it unattached and ask the controller&lt;br /&gt;
      to deal. Fixes the second part of bug 681.&lt;br /&gt;
    - Treat some 403 responses from directory servers as INFO rather than&lt;br /&gt;
      WARN-severity events.&lt;/p&gt;
&lt;p&gt;  o Portability / building / compiling:&lt;br /&gt;
    - When building with --enable-gcc-warnings, check for whether Apple&#039;s&lt;br /&gt;
      warning &quot;-Wshorten-64-to-32&quot; is available.&lt;br /&gt;
    - Support compilation to target iPhone; patch from cjacker huang.&lt;br /&gt;
      To build for iPhone, pass the --enable-iphone option to configure.&lt;br /&gt;
    - Detect non-ASCII platforms (if any still exist) and refuse to&lt;br /&gt;
      build there: some of our code assumes that &#039;A&#039; is 65 and so on.&lt;br /&gt;
    - Clear up some MIPSPro compiler warnings.&lt;br /&gt;
    - Make autoconf search for libevent, openssl, and zlib consistently.&lt;br /&gt;
    - Update deprecated macros in configure.in.&lt;br /&gt;
    - When warning about missing headers, tell the user to let us&lt;br /&gt;
      know if the compile succeeds anyway, so we can downgrade the&lt;br /&gt;
      warning.&lt;br /&gt;
    - Include the current subversion revision as part of the version&lt;br /&gt;
      string: either fetch it directly if we&#039;re in an SVN checkout, do&lt;br /&gt;
      some magic to guess it if we&#039;re in an SVK checkout, or use&lt;br /&gt;
      the last-detected version if we&#039;re building from a .tar.gz.&lt;br /&gt;
      Use this version consistently in log messages.&lt;br /&gt;
    - Correctly report platform name on Windows 95 OSR2 and Windows 98 SE.&lt;br /&gt;
    - Read resolv.conf files correctly on platforms where read() returns&lt;br /&gt;
      partial results on small file reads.&lt;br /&gt;
    - Build without verbose warnings even on gcc 4.2 and 4.3.&lt;br /&gt;
    - On Windows, correctly detect errors when listing the contents of&lt;br /&gt;
      a directory. Fix from lodger.&lt;br /&gt;
    - Run &#039;make test&#039; as part of &#039;make dist&#039;, so we stop releasing so&lt;br /&gt;
      many development snapshots that fail their unit tests.&lt;br /&gt;
    - Add support to detect Libevent versions in the 1.4.x series&lt;br /&gt;
      on mingw.&lt;br /&gt;
    - Add command-line arguments to unit-test executable so that we can&lt;br /&gt;
      invoke any chosen test from the command line rather than having&lt;br /&gt;
      to run the whole test suite at once; and so that we can turn on&lt;br /&gt;
      logging for the unit tests.&lt;br /&gt;
    - Do not automatically run configure from autogen.sh. This&lt;br /&gt;
      non-standard behavior tended to annoy people who have built other&lt;br /&gt;
      programs.&lt;br /&gt;
    - Fix a macro/CPP interaction that was confusing some compilers:&lt;br /&gt;
      some GCCs don&#039;t like #if/#endif pairs inside macro arguments.&lt;br /&gt;
      Fixes bug 707.&lt;br /&gt;
    - Fix macro collision between OpenSSL 0.9.8h and Windows headers.&lt;br /&gt;
      Fixes bug 704; fix from Steven Murdoch.&lt;br /&gt;
    - Correctly detect transparent proxy support on Linux hosts that&lt;br /&gt;
      require in.h to be included before netfilter_ipv4.h.  Patch&lt;br /&gt;
      from coderman.&lt;/p&gt;
&lt;p&gt;  o Logging improvements:&lt;br /&gt;
    - When we haven&#039;t had any application requests lately, don&#039;t bother&lt;br /&gt;
      logging that we have expired a bunch of descriptors.&lt;br /&gt;
    - When attempting to open a logfile fails, tell us why.&lt;br /&gt;
    - Only log guard node status when guard node status has changed.&lt;br /&gt;
    - Downgrade the 3 most common &quot;INFO&quot; messages to &quot;DEBUG&quot;. This will&lt;br /&gt;
      make &quot;INFO&quot; 75% less verbose.&lt;br /&gt;
    - When SafeLogging is disabled, log addresses along with all TLS&lt;br /&gt;
      errors.&lt;br /&gt;
    - Report TLS &quot;zero return&quot; case as a &quot;clean close&quot; and &quot;IO error&quot;&lt;br /&gt;
      as a &quot;close&quot;. Stop calling closes &quot;unexpected closes&quot;: existing&lt;br /&gt;
      Tors don&#039;t use SSL_close(), so having a connection close without&lt;br /&gt;
      the TLS shutdown handshake is hardly unexpected.&lt;br /&gt;
    - When we receive a consensus from the future, warn about skew.&lt;br /&gt;
    - Make &quot;not enough dir info yet&quot; warnings describe *why* Tor feels&lt;br /&gt;
      it doesn&#039;t have enough directory info yet.&lt;br /&gt;
    - On the USR1 signal, when dmalloc is in use, log the top 10 memory&lt;br /&gt;
      consumers. (We already do this on HUP.)&lt;br /&gt;
    - Give more descriptive well-formedness errors for out-of-range&lt;br /&gt;
      hidden service descriptor/protocol versions.&lt;br /&gt;
    - Stop recommending that every server operator send mail to tor-ops.&lt;br /&gt;
      Resolves bug 597. Bugfix on 0.1.2.x.&lt;br /&gt;
    - Improve skew reporting: try to give the user a better log message&lt;br /&gt;
      about how skewed they are, and how much this matters.&lt;br /&gt;
    - New --quiet command-line option to suppress the default console log.&lt;br /&gt;
      Good in combination with --hash-password.&lt;br /&gt;
    - Don&#039;t complain that &quot;your server has not managed to confirm that its&lt;br /&gt;
      ports are reachable&quot; if we haven&#039;t been able to build any circuits&lt;br /&gt;
      yet.&lt;br /&gt;
    - Detect the reason for failing to mmap a descriptor file we just&lt;br /&gt;
      wrote, and give a more useful log message.  Fixes bug 533.&lt;br /&gt;
    - Always prepend &quot;Bug: &quot; to any log message about a bug.&lt;br /&gt;
    - When dumping memory usage, list bytes used in buffer memory&lt;br /&gt;
      free-lists.&lt;br /&gt;
    - When running with dmalloc, dump more stats on hup and on exit.&lt;br /&gt;
    - Put a platform string (e.g. &quot;Linux i686&quot;) in the startup log&lt;br /&gt;
      message, so when people paste just their logs, we know if it&#039;s&lt;br /&gt;
      OpenBSD or Windows or what.&lt;br /&gt;
    - When logging memory usage, break down memory used in buffers by&lt;br /&gt;
      buffer type.&lt;br /&gt;
    - When we are reporting the DirServer line we just parsed, we were&lt;br /&gt;
      logging the second stanza of the key fingerprint, not the first.&lt;br /&gt;
    - Even though Windows is equally happy with / and \ as path separators,&lt;br /&gt;
      try to use \ consistently on Windows and / consistently on Unix: it&lt;br /&gt;
      makes the log messages nicer.&lt;br /&gt;
     - On OSX, stop warning the user that kqueue support in libevent is&lt;br /&gt;
      &quot;experimental&quot;, since it seems to have worked fine for ages.&lt;/p&gt;
&lt;p&gt;  o Contributed scripts and tools:&lt;br /&gt;
    - Update linux-tor-prio.sh script to allow QoS based on the uid of&lt;br /&gt;
      the Tor process. Patch from Marco Bonetti with tweaks from Mike&lt;br /&gt;
      Perry.&lt;br /&gt;
    - Include the &quot;tor-ctrl.sh&quot; bash script by Stefan Behte to provide&lt;br /&gt;
      Unix users an easy way to script their Tor process (e.g. by&lt;br /&gt;
      adjusting bandwidth based on the time of the day).&lt;br /&gt;
    - In the exitlist script, only consider the most recently published&lt;br /&gt;
      server descriptor for each server. Also, when the user requests&lt;br /&gt;
      a list of servers that _reject_ connections to a given address,&lt;br /&gt;
      explicitly exclude the IPs that also have servers that accept&lt;br /&gt;
      connections to that address. Resolves bug 405.&lt;br /&gt;
    - Include a new contrib/tor-exit-notice.html file that exit relay&lt;br /&gt;
      operators can put on their website to help reduce abuse queries.&lt;/p&gt;
&lt;p&gt;  o Newly deprecated features:&lt;br /&gt;
    - The status/version/num-versioning and status/version/num-concurring&lt;br /&gt;
      GETINFO controller options are no longer useful in the v3 directory&lt;br /&gt;
      protocol: treat them as deprecated, and warn when they&#039;re used.&lt;br /&gt;
    - The RedirectExits config option is now deprecated.&lt;/p&gt;
&lt;p&gt;  o Removed features:&lt;br /&gt;
    - Drop the old code to choke directory connections when the&lt;br /&gt;
      corresponding OR connections got full: thanks to the cell queue&lt;br /&gt;
      feature, OR conns don&#039;t get full any more.&lt;br /&gt;
    - Remove the old &quot;dns worker&quot; server DNS code: it hasn&#039;t been default&lt;br /&gt;
      since 0.1.2.2-alpha, and all the servers are using the new&lt;br /&gt;
      eventdns code.&lt;br /&gt;
    - Remove the code to generate the oldest (v1) directory format.&lt;br /&gt;
    - Remove support for the old bw_accounting file: we&#039;ve been storing&lt;br /&gt;
      bandwidth accounting information in the state file since&lt;br /&gt;
      0.1.2.5-alpha. This may result in bandwidth accounting errors&lt;br /&gt;
      if you try to upgrade from 0.1.1.x or earlier, or if you try to&lt;br /&gt;
      downgrade to 0.1.1.x or earlier.&lt;br /&gt;
    - Drop support for OpenSSL version 0.9.6. Just about nobody was using&lt;br /&gt;
      it, it had no AES, and it hasn&#039;t seen any security patches since&lt;br /&gt;
      2004.&lt;br /&gt;
    - Stop overloading the circuit_t.onionskin field for both &quot;onionskin&lt;br /&gt;
      from a CREATE cell that we are waiting for a cpuworker to be&lt;br /&gt;
      assigned&quot; and &quot;onionskin from an EXTEND cell that we are going to&lt;br /&gt;
      send to an OR as soon as we are connected&quot;. Might help with bug 600.&lt;br /&gt;
    - Remove the tor_strpartition() function: its logic was confused,&lt;br /&gt;
      and it was only used for one thing that could be implemented far&lt;br /&gt;
      more easily.&lt;br /&gt;
    - Remove the contrib scripts ExerciseServer.py, PathDemo.py,&lt;br /&gt;
      and TorControl.py, as they use the old v0 controller protocol,&lt;br /&gt;
      and are obsoleted by TorFlow anyway.&lt;br /&gt;
    - Drop support for v1 rendezvous descriptors, since we never used&lt;br /&gt;
      them anyway, and the code has probably rotted by now. Based on&lt;br /&gt;
      patch from Karsten Loesing.&lt;br /&gt;
    - Stop allowing address masks that do not correspond to bit prefixes.&lt;br /&gt;
      We have warned about these for a really long time; now it&#039;s time&lt;br /&gt;
      to reject them. (Patch from croup.)&lt;br /&gt;
    - Remove an optimization in the AES counter-mode code that assumed&lt;br /&gt;
      that the counter never exceeded 2^68. When the counter can be set&lt;br /&gt;
      arbitrarily as an IV (as it is by Karsten&#039;s new hidden services&lt;br /&gt;
      code), this assumption no longer holds.&lt;br /&gt;
    - Disable the SETROUTERPURPOSE controller command: it is now&lt;br /&gt;
      obsolete.&lt;/p&gt;
</description>
 <comments>http://blog.torproject.org/blog/tor-0.2.0.30-released-stable#comments</comments>
 <category domain="http://blog.torproject.org/category/tags/dns-proxy">dns proxy</category>
 <category domain="http://blog.torproject.org/category/tags/rate-limiting">rate limiting</category>
 <category domain="http://blog.torproject.org/category/tags/stable-release">stable release</category>
 <category domain="http://blog.torproject.org/category/tags/tor">tor</category>
 <pubDate>Mon, 25 Aug 2008 19:48:37 -0700</pubDate>
 <dc:creator>phobos</dc:creator>
 <guid isPermaLink="false">49 at http://blog.torproject.org</guid>
</item>
</channel>
</rss>
