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

网络

开发平台:

Unix_Linux

  1.       logging the second stanza of the key fingerprint, not the first.
  2.     - Even though Windows is equally happy with / and  as path separators,
  3.       try to use  consistently on Windows and / consistently on Unix: it
  4.       makes the log messages nicer.
  5.      - On OSX, stop warning the user that kqueue support in libevent is
  6.       "experimental", since it seems to have worked fine for ages.
  7.   o Contributed scripts and tools:
  8.     - Update linux-tor-prio.sh script to allow QoS based on the uid of
  9.       the Tor process. Patch from Marco Bonetti with tweaks from Mike
  10.       Perry.
  11.     - Include the "tor-ctrl.sh" bash script by Stefan Behte to provide
  12.       Unix users an easy way to script their Tor process (e.g. by
  13.       adjusting bandwidth based on the time of the day).
  14.     - In the exitlist script, only consider the most recently published
  15.       server descriptor for each server. Also, when the user requests
  16.       a list of servers that _reject_ connections to a given address,
  17.       explicitly exclude the IPs that also have servers that accept
  18.       connections to that address. Resolves bug 405.
  19.     - Include a new contrib/tor-exit-notice.html file that exit relay
  20.       operators can put on their website to help reduce abuse queries.
  21.   o Newly deprecated features:
  22.     - The status/version/num-versioning and status/version/num-concurring
  23.       GETINFO controller options are no longer useful in the v3 directory
  24.       protocol: treat them as deprecated, and warn when they're used.
  25.     - The RedirectExits config option is now deprecated.
  26.   o Removed features:
  27.     - Drop the old code to choke directory connections when the
  28.       corresponding OR connections got full: thanks to the cell queue
  29.       feature, OR conns don't get full any more.
  30.     - Remove the old "dns worker" server DNS code: it hasn't been default
  31.       since 0.1.2.2-alpha, and all the servers are using the new
  32.       eventdns code.
  33.     - Remove the code to generate the oldest (v1) directory format.
  34.     - Remove support for the old bw_accounting file: we've been storing
  35.       bandwidth accounting information in the state file since
  36.       0.1.2.5-alpha. This may result in bandwidth accounting errors
  37.       if you try to upgrade from 0.1.1.x or earlier, or if you try to
  38.       downgrade to 0.1.1.x or earlier.
  39.     - Drop support for OpenSSL version 0.9.6. Just about nobody was using
  40.       it, it had no AES, and it hasn't seen any security patches since
  41.       2004.
  42.     - Stop overloading the circuit_t.onionskin field for both "onionskin
  43.       from a CREATE cell that we are waiting for a cpuworker to be
  44.       assigned" and "onionskin from an EXTEND cell that we are going to
  45.       send to an OR as soon as we are connected". Might help with bug 600.
  46.     - Remove the tor_strpartition() function: its logic was confused,
  47.       and it was only used for one thing that could be implemented far
  48.       more easily.
  49.     - Remove the contrib scripts ExerciseServer.py, PathDemo.py,
  50.       and TorControl.py, as they use the old v0 controller protocol,
  51.       and are obsoleted by TorFlow anyway.
  52.     - Drop support for v1 rendezvous descriptors, since we never used
  53.       them anyway, and the code has probably rotted by now. Based on
  54.       patch from Karsten Loesing.
  55.     - Stop allowing address masks that do not correspond to bit prefixes.
  56.       We have warned about these for a really long time; now it's time
  57.       to reject them. (Patch from croup.)
  58.     - Remove an optimization in the AES counter-mode code that assumed
  59.       that the counter never exceeded 2^68. When the counter can be set
  60.       arbitrarily as an IV (as it is by Karsten's new hidden services
  61.       code), this assumption no longer holds.
  62.     - Disable the SETROUTERPURPOSE controller command: it is now
  63.       obsolete.
  64. Changes in version 0.1.2.19 - 2008-01-17
  65.   Tor 0.1.2.19 fixes a huge memory leak on exit relays, makes the default
  66.   exit policy a little bit more conservative so it's safer to run an
  67.   exit relay on a home system, and fixes a variety of smaller issues.
  68.   o Security fixes:
  69.     - Exit policies now reject connections that are addressed to a
  70.       relay's public (external) IP address too, unless
  71.       ExitPolicyRejectPrivate is turned off. We do this because too
  72.       many relays are running nearby to services that trust them based
  73.       on network address.
  74.   o Major bugfixes:
  75.     - When the clock jumps forward a lot, do not allow the bandwidth
  76.       buckets to become negative. Fixes bug 544.
  77.     - Fix a memory leak on exit relays; we were leaking a cached_resolve_t
  78.       on every successful resolve. Reported by Mike Perry.
  79.     - Purge old entries from the "rephist" database and the hidden
  80.       service descriptor database even when DirPort is zero.
  81.     - Stop thinking that 0.1.2.x directory servers can handle "begin_dir"
  82.       requests. Should ease bugs 406 and 419 where 0.1.2.x relays are
  83.       crashing or mis-answering these requests.
  84.     - When we decide to send a 503 response to a request for servers, do
  85.       not then also send the server descriptors: this defeats the whole
  86.       purpose. Fixes bug 539.
  87.   o Minor bugfixes:
  88.     - Changing the ExitPolicyRejectPrivate setting should cause us to
  89.       rebuild our server descriptor.
  90.     - Fix handling of hex nicknames when answering controller requests for
  91.       networkstatus by name, or when deciding whether to warn about
  92.       unknown routers in a config option. (Patch from mwenge.)
  93.     - Fix a couple of hard-to-trigger autoconf problems that could result
  94.       in really weird results on platforms whose sys/types.h files define
  95.       nonstandard integer types.
  96.     - Don't try to create the datadir when running --verify-config or
  97.       --hash-password. Resolves bug 540.
  98.     - If we were having problems getting a particular descriptor from the
  99.       directory caches, and then we learned about a new descriptor for
  100.       that router, we weren't resetting our failure count. Reported
  101.       by lodger.
  102.     - Although we fixed bug 539 (where servers would send HTTP status 503
  103.       responses _and_ send a body too), there are still servers out there
  104.       that haven't upgraded. Therefore, make clients parse such bodies
  105.       when they receive them.
  106.     - Run correctly on systems where rlim_t is larger than unsigned long.
  107.       This includes some 64-bit systems.
  108.     - Run correctly on platforms (like some versions of OS X 10.5) where
  109.       the real limit for number of open files is OPEN_FILES, not rlim_max
  110.       from getrlimit(RLIMIT_NOFILES).
  111.     - Avoid a spurious free on base64 failure.
  112.     - Avoid segfaults on certain complex invocations of
  113.       router_get_by_hexdigest().
  114.     - Fix rare bug on REDIRECTSTREAM control command when called with no
  115.       port set: it could erroneously report an error when none had
  116.       happened.
  117. Changes in version 0.1.2.18 - 2007-10-28
  118.   Tor 0.1.2.18 fixes many problems including crash bugs, problems with
  119.   hidden service introduction that were causing huge delays, and a big
  120.   bug that was causing some servers to disappear from the network status
  121.   lists for a few hours each day.
  122.   o Major bugfixes (crashes):
  123.     - If a connection is shut down abruptly because of something that
  124.       happened inside connection_flushed_some(), do not call
  125.       connection_finished_flushing(). Should fix bug 451:
  126.       "connection_stop_writing: Assertion conn->write_event failed"
  127.       Bugfix on 0.1.2.7-alpha.
  128.     - Fix possible segfaults in functions called from
  129.       rend_process_relay_cell().
  130.   o Major bugfixes (hidden services):
  131.     - Hidden services were choosing introduction points uniquely by
  132.       hexdigest, but when constructing the hidden service descriptor
  133.       they merely wrote the (potentially ambiguous) nickname.
  134.     - Clients now use the v2 intro format for hidden service
  135.       connections: they specify their chosen rendezvous point by identity
  136.       digest rather than by (potentially ambiguous) nickname. These
  137.       changes could speed up hidden service connections dramatically.
  138.   o Major bugfixes (other):
  139.     - Stop publishing a new server descriptor just because we get a
  140.       HUP signal. This led (in a roundabout way) to some servers getting
  141.       dropped from the networkstatus lists for a few hours each day.
  142.     - When looking for a circuit to cannibalize, consider family as well
  143.       as identity. Fixes bug 438. Bugfix on 0.1.0.x (which introduced
  144.       circuit cannibalization).
  145.     - When a router wasn't listed in a new networkstatus, we were leaving
  146.       the flags for that router alone -- meaning it remained Named,
  147.       Running, etc -- even though absence from the networkstatus means
  148.       that it shouldn't be considered to exist at all anymore. Now we
  149.       clear all the flags for routers that fall out of the networkstatus
  150.       consensus. Fixes bug 529.
  151.   o Minor bugfixes:
  152.     - Don't try to access (or alter) the state file when running
  153.       --list-fingerprint or --verify-config or --hash-password. Resolves
  154.       bug 499.
  155.     - When generating information telling us how to extend to a given
  156.       router, do not try to include the nickname if it is
  157.       absent. Resolves bug 467.
  158.     - Fix a user-triggerable segfault in expand_filename(). (There isn't
  159.       a way to trigger this remotely.)
  160.     - When sending a status event to the controller telling it that an
  161.       OR address is reachable, set the port correctly. (Previously we
  162.       were reporting the dir port.)
  163.     - Fix a minor memory leak whenever a controller sends the PROTOCOLINFO
  164.       command. Bugfix on 0.1.2.17.
  165.     - When loading bandwidth history, do not believe any information in
  166.       the future. Fixes bug 434.
  167.     - When loading entry guard information, do not believe any information
  168.       in the future.
  169.     - When we have our clock set far in the future and generate an
  170.       onion key, then re-set our clock to be correct, we should not stop
  171.       the onion key from getting rotated.
  172.     - On some platforms, accept() can return a broken address. Detect
  173.       this more quietly, and deal accordingly. Fixes bug 483.
  174.     - It's not actually an error to find a non-pending entry in the DNS
  175.       cache when canceling a pending resolve. Don't log unless stuff
  176.       is fishy. Resolves bug 463.
  177.     - Don't reset trusted dir server list when we set a configuration
  178.       option. Patch from Robert Hogan.
  179. Changes in version 0.1.2.17 - 2007-08-30
  180.   Tor 0.1.2.17 features a new Vidalia version in the Windows and OS
  181.   X bundles. Vidalia 0.0.14 makes authentication required for the
  182.   ControlPort in the default configuration, which addresses important
  183.   security risks. Everybody who uses Vidalia (or another controller)
  184.   should upgrade.
  185.   In addition, this Tor update fixes major load balancing problems with
  186.   path selection, which should speed things up a lot once many people
  187.   have upgraded.
  188.   o Major bugfixes (security):
  189.     - We removed support for the old (v0) control protocol. It has been
  190.       deprecated since Tor 0.1.1.1-alpha, and keeping it secure has
  191.       become more of a headache than it's worth.
  192.   o Major bugfixes (load balancing):
  193.     - When choosing nodes for non-guard positions, weight guards
  194.       proportionally less, since they already have enough load. Patch
  195.       from Mike Perry.
  196.     - Raise the "max believable bandwidth" from 1.5MB/s to 10MB/s. This
  197.       will allow fast Tor servers to get more attention.
  198.     - When we're upgrading from an old Tor version, forget our current
  199.       guards and pick new ones according to the new weightings. These
  200.       three load balancing patches could raise effective network capacity
  201.       by a factor of four. Thanks to Mike Perry for measurements.
  202.   o Major bugfixes (stream expiration):
  203.     - Expire not-yet-successful application streams in all cases if
  204.       they've been around longer than SocksTimeout. Right now there are
  205.       some cases where the stream will live forever, demanding a new
  206.       circuit every 15 seconds. Fixes bug 454; reported by lodger.
  207.   o Minor features (controller):
  208.     - Add a PROTOCOLINFO controller command. Like AUTHENTICATE, it
  209.       is valid before any authentication has been received. It tells
  210.       a controller what kind of authentication is expected, and what
  211.       protocol is spoken. Implements proposal 119.
  212.   o Minor bugfixes (performance):
  213.     - Save on most routerlist_assert_ok() calls in routerlist.c, thus
  214.       greatly speeding up loading cached-routers from disk on startup.
  215.     - Disable sentinel-based debugging for buffer code: we squashed all
  216.       the bugs that this was supposed to detect a long time ago, and now
  217.       its only effect is to change our buffer sizes from nice powers of
  218.       two (which platform mallocs tend to like) to values slightly over
  219.       powers of two (which make some platform mallocs sad).
  220.   o Minor bugfixes (misc):
  221.     - If exit bandwidth ever exceeds one third of total bandwidth, then
  222.       use the correct formula to weight exit nodes when choosing paths.
  223.       Based on patch from Mike Perry.
  224.     - Choose perfectly fairly among routers when choosing by bandwidth and
  225.       weighting by fraction of bandwidth provided by exits. Previously, we
  226.       would choose with only approximate fairness, and correct ourselves
  227.       if we ran off the end of the list.
  228.     - If we require CookieAuthentication but we fail to write the
  229.       cookie file, we would warn but not exit, and end up in a state
  230.       where no controller could authenticate. Now we exit.
  231.     - If we require CookieAuthentication, stop generating a new cookie
  232.       every time we change any piece of our config.
  233.     - Refuse to start with certain directory authority keys, and
  234.       encourage people using them to stop.
  235.     - Terminate multi-line control events properly. Original patch
  236.       from tup.
  237.     - Fix a minor memory leak when we fail to find enough suitable
  238.       servers to choose a circuit.
  239.     - Stop leaking part of the descriptor when we run into a particularly
  240.       unparseable piece of it.
  241. Changes in version 0.1.2.16 - 2007-08-01
  242.   Tor 0.1.2.16 fixes a critical security vulnerability that allows a
  243.   remote attacker in certain situations to rewrite the user's torrc
  244.   configuration file. This can completely compromise anonymity of users
  245.   in most configurations, including those running the Vidalia bundles,
  246.   TorK, etc. Or worse.
  247.   o Major security fixes:
  248.     - Close immediately after missing authentication on control port;
  249.       do not allow multiple authentication attempts.
  250. Changes in version 0.1.2.15 - 2007-07-17
  251.   Tor 0.1.2.15 fixes several crash bugs, fixes some anonymity-related
  252.   problems, fixes compilation on BSD, and fixes a variety of other
  253.   bugs. Everybody should upgrade.
  254.   o Major bugfixes (compilation):
  255.     - Fix compile on FreeBSD/NetBSD/OpenBSD. Oops.
  256.   o Major bugfixes (crashes):
  257.     - Try even harder not to dereference the first character after
  258.       an mmap(). Reported by lodger.
  259.     - Fix a crash bug in directory authorities when we re-number the
  260.       routerlist while inserting a new router.
  261.     - When the cached-routers file is an even multiple of the page size,
  262.       don't run off the end and crash. (Fixes bug 455; based on idea
  263.       from croup.)
  264.     - Fix eventdns.c behavior on Solaris: It is critical to include
  265.       orconfig.h _before_ sys/types.h, so that we can get the expected
  266.       definition of _FILE_OFFSET_BITS.
  267.   o Major bugfixes (security):
  268.     - Fix a possible buffer overrun when using BSD natd support. Bug
  269.       found by croup.
  270.     - When sending destroy cells from a circuit's origin, don't include
  271.       the reason for tearing down the circuit. The spec says we didn't,
  272.       and now we actually don't. Reported by lodger.
  273.     - Keep streamids from different exits on a circuit separate. This
  274.       bug may have allowed other routers on a given circuit to inject
  275.       cells into streams. Reported by lodger; fixes bug 446.
  276.     - If there's a never-before-connected-to guard node in our list,
  277.       never choose any guards past it. This way we don't expand our
  278.       guard list unless we need to.
  279.   o Minor bugfixes (guard nodes):
  280.     - Weight guard selection by bandwidth, so that low-bandwidth nodes
  281.       don't get overused as guards.
  282.   o Minor bugfixes (directory):
  283.     - Correctly count the number of authorities that recommend each
  284.       version. Previously, we were under-counting by 1.
  285.     - Fix a potential crash bug when we load many server descriptors at
  286.       once and some of them make others of them obsolete. Fixes bug 458.
  287.   o Minor bugfixes (hidden services):
  288.     - Stop tearing down the whole circuit when the user asks for a
  289.       connection to a port that the hidden service didn't configure.
  290.       Resolves bug 444.
  291.   o Minor bugfixes (misc):
  292.     - On Windows, we were preventing other processes from reading
  293.       cached-routers while Tor was running. Reported by janbar.
  294.     - Fix a possible (but very unlikely) bug in picking routers by
  295.       bandwidth. Add a log message to confirm that it is in fact
  296.       unlikely. Patch from lodger.
  297.     - Backport a couple of memory leak fixes.
  298.     - Backport miscellaneous cosmetic bugfixes.
  299. Changes in version 0.1.2.14 - 2007-05-25
  300.   Tor 0.1.2.14 changes the addresses of two directory authorities (this
  301.   change especially affects those who serve or use hidden services),
  302.   and fixes several other crash- and security-related bugs.
  303.   o Directory authority changes:
  304.     - Two directory authorities (moria1 and moria2) just moved to new
  305.       IP addresses. This change will particularly affect those who serve
  306.       or use hidden services.
  307.   o Major bugfixes (crashes):
  308.     - If a directory server runs out of space in the connection table
  309.       as it's processing a begin_dir request, it will free the exit stream
  310.       but leave it attached to the circuit, leading to unpredictable
  311.       behavior. (Reported by seeess, fixes bug 425.)
  312.     - Fix a bug in dirserv_remove_invalid() that would cause authorities
  313.       to corrupt memory under some really unlikely scenarios.
  314.     - Tighten router parsing rules. (Bugs reported by Benedikt Boss.)
  315.     - Avoid segfaults when reading from mmaped descriptor file. (Reported
  316.       by lodger.)
  317.   o Major bugfixes (security):
  318.     - When choosing an entry guard for a circuit, avoid using guards
  319.       that are in the same family as the chosen exit -- not just guards
  320.       that are exactly the chosen exit. (Reported by lodger.)
  321.   o Major bugfixes (resource management):
  322.     - If a directory authority is down, skip it when deciding where to get
  323.       networkstatus objects or descriptors. Otherwise we keep asking
  324.       every 10 seconds forever. Fixes bug 384.
  325.     - Count it as a failure if we fetch a valid network-status but we
  326.       don't want to keep it. Otherwise we'll keep fetching it and keep
  327.       not wanting to keep it. Fixes part of bug 422.
  328.     - If all of our dirservers have given us bad or no networkstatuses
  329.       lately, then stop hammering them once per minute even when we
  330.       think they're failed. Fixes another part of bug 422.
  331.   o Minor bugfixes:
  332.     - Actually set the purpose correctly for descriptors inserted with
  333.       purpose=controller.
  334.     - When we have k non-v2 authorities in our DirServer config,
  335.       we ignored the last k authorities in the list when updating our
  336.       network-statuses.
  337.     - Correctly back-off from requesting router descriptors that we are
  338.       having a hard time downloading.
  339.     - Read resolv.conf files correctly on platforms where read() returns
  340.       partial results on small file reads.
  341.     - Don't rebuild the entire router store every time we get 32K of
  342.       routers: rebuild it when the journal gets very large, or when
  343.       the gaps in the store get very large.
  344.   o Minor features:
  345.     - When routers publish SVN revisions in their router descriptors,
  346.       authorities now include those versions correctly in networkstatus
  347.       documents.
  348.     - Warn when using a version of libevent before 1.3b to run a server on
  349.       OSX or BSD: these versions interact badly with userspace threads.
  350. Changes in version 0.1.2.13 - 2007-04-24
  351.   This release features some major anonymity fixes, such as safer path
  352.   selection; better client performance; faster bootstrapping, better
  353.   address detection, and better DNS support for servers; write limiting as
  354.   well as read limiting to make servers easier to run; and a huge pile of
  355.   other features and bug fixes. The bundles also ship with Vidalia 0.0.11.
  356.   Tor 0.1.2.13 is released in memory of Rob Levin (1955-2006), aka lilo
  357.   of the Freenode IRC network, remembering his patience and vision for
  358.   free speech on the Internet.
  359.   o Major features, client performance:
  360.     - Weight directory requests by advertised bandwidth. Now we can
  361.       let servers enable write limiting but still allow most clients to
  362.       succeed at their directory requests. (We still ignore weights when
  363.       choosing a directory authority; I hope this is a feature.)
  364.     - Stop overloading exit nodes -- avoid choosing them for entry or
  365.       middle hops when the total bandwidth available from non-exit nodes
  366.       is much higher than the total bandwidth available from exit nodes.
  367.     - Rather than waiting a fixed amount of time between retrying
  368.       application connections, we wait only 10 seconds for the first,
  369.       10 seconds for the second, and 15 seconds for each retry after
  370.       that. Hopefully this will improve the expected user experience.
  371.     - Sometimes we didn't bother sending a RELAY_END cell when an attempt
  372.       to open a stream fails; now we do in more cases. This should
  373.       make clients able to find a good exit faster in some cases, since
  374.       unhandleable requests will now get an error rather than timing out.
  375.   o Major features, client functionality:
  376.     - Implement BEGIN_DIR cells, so we can connect to a directory
  377.       server via TLS to do encrypted directory requests rather than
  378.       plaintext. Enable via the TunnelDirConns and PreferTunneledDirConns
  379.       config options if you like. For now, this feature only works if
  380.       you already have a descriptor for the destination dirserver.
  381.     - Add support for transparent application connections: this basically
  382.       bundles the functionality of trans-proxy-tor into the Tor
  383.       mainline. Now hosts with compliant pf/netfilter implementations
  384.       can redirect TCP connections straight to Tor without diverting
  385.       through SOCKS. (Based on patch from tup.)
  386.     - Add support for using natd; this allows FreeBSDs earlier than
  387.       5.1.2 to have ipfw send connections through Tor without using
  388.       SOCKS. (Patch from Zajcev Evgeny with tweaks from tup.)
  389.   o Major features, servers:
  390.     - Setting up a dyndns name for your server is now optional: servers
  391.       with no hostname or IP address will learn their IP address by
  392.       asking the directory authorities. This code only kicks in when you
  393.       would normally have exited with a "no address" error. Nothing's
  394.       authenticated, so use with care.
  395.     - Directory servers now spool server descriptors, v1 directories,
  396.       and v2 networkstatus objects to buffers as needed rather than en
  397.       masse. They also mmap the cached-routers files. These steps save
  398.       lots of memory.
  399.     - Stop requiring clients to have well-formed certificates, and stop
  400.       checking nicknames in certificates. (Clients have certificates so
  401.       that they can look like Tor servers, but in the future we might want
  402.       to allow them to look like regular TLS clients instead. Nicknames
  403.       in certificates serve no purpose other than making our protocol
  404.       easier to recognize on the wire.) Implements proposal 106.
  405.   o Improvements on DNS support:
  406.     - Add "eventdns" asynchronous dns library originally based on code
  407.       from Adam Langley. Now we can discard the old rickety dnsworker
  408.       concept, and support a wider variety of DNS functions. Allows
  409.       multithreaded builds on NetBSD and OpenBSD again.
  410.     - Add server-side support for "reverse" DNS lookups (using PTR
  411.       records so clients can determine the canonical hostname for a given
  412.       IPv4 address). Only supported by servers using eventdns; servers
  413.       now announce in their descriptors if they don't support eventdns.
  414.     - Workaround for name servers (like Earthlink's) that hijack failing
  415.       DNS requests and replace the no-such-server answer with a "helpful"
  416.       redirect to an advertising-driven search portal. Also work around
  417.       DNS hijackers who "helpfully" decline to hijack known-invalid
  418.       RFC2606 addresses. Config option "ServerDNSDetectHijacking 0"
  419.       lets you turn it off.
  420.     - Servers now check for the case when common DNS requests are going to
  421.       wildcarded addresses (i.e. all getting the same answer), and change
  422.       their exit policy to reject *:* if it's happening.
  423.     - When asked to resolve a hostname, don't use non-exit servers unless
  424.       requested to do so. This allows servers with broken DNS to be
  425.       useful to the network.
  426.     - Start passing "ipv4" hints to getaddrinfo(), so servers don't do
  427.       useless IPv6 DNS resolves.
  428.     - Specify and implement client-side SOCKS5 interface for reverse DNS
  429.       lookups (see doc/socks-extensions.txt). Also cache them.
  430.     - When we change nameservers or IP addresses, reset and re-launch
  431.       our tests for DNS hijacking.
  432.   o Improvements on reachability testing:
  433.     - Servers send out a burst of long-range padding cells once they've
  434.       established that they're reachable. Spread them over 4 circuits,
  435.       so hopefully a few will be fast. This exercises bandwidth and
  436.       bootstraps them into the directory more quickly.
  437.     - When we find our DirPort to be reachable, publish a new descriptor
  438.       so we'll tell the world (reported by pnx).
  439.     - Directory authorities now only decide that routers are reachable
  440.       if their identity keys are as expected.
  441.     - Do DirPort reachability tests less often, since a single test
  442.       chews through many circuits before giving up.
  443.     - Avoid some false positives during reachability testing: don't try
  444.       to test via a server that's on the same /24 network as us.
  445.     - Start publishing one minute or so after we find our ORPort
  446.       to be reachable. This will help reduce the number of descriptors
  447.       we have for ourselves floating around, since it's quite likely
  448.       other things (e.g. DirPort) will change during that minute too.
  449.     - Routers no longer try to rebuild long-term connections to directory
  450.       authorities, and directory authorities no longer try to rebuild
  451.       long-term connections to all servers. We still don't hang up
  452.       connections in these two cases though -- we need to look at it
  453.       more carefully to avoid flapping, and we likely need to wait til
  454.       0.1.1.x is obsolete.
  455.   o Improvements on rate limiting:
  456.     - Enable write limiting as well as read limiting. Now we sacrifice
  457.       capacity if we're pushing out lots of directory traffic, rather
  458.       than overrunning the user's intended bandwidth limits.
  459.     - Include TLS overhead when counting bandwidth usage; previously, we
  460.       would count only the bytes sent over TLS, but not the bytes used
  461.       to send them.
  462.     - Servers decline directory requests much more aggressively when
  463.       they're low on bandwidth. Otherwise they end up queueing more and
  464.       more directory responses, which can't be good for latency.
  465.     - But never refuse directory requests from local addresses.
  466.     - Be willing to read or write on local connections (e.g. controller
  467.       connections) even when the global rate limiting buckets are empty.
  468.     - Flush local controller connection buffers periodically as we're
  469.       writing to them, so we avoid queueing 4+ megabytes of data before
  470.       trying to flush.
  471.     - Revise and clean up the torrc.sample that we ship with; add
  472.       a section for BandwidthRate and BandwidthBurst.
  473.   o Major features, NT services:
  474.     - Install as NT_AUTHORITYLocalService rather than as SYSTEM; add a
  475.       command-line flag so that admins can override the default by saying
  476.       "tor --service install --user "SomeUser"". This will not affect
  477.       existing installed services. Also, warn the user that the service
  478.       will look for its configuration file in the service user's
  479.       %appdata% directory. (We can't do the "hardwire the user's appdata
  480.       directory" trick any more, since we may not have read access to that
  481.       directory.)
  482.     - Support running the Tor service with a torrc not in the same
  483.       directory as tor.exe and default to using the torrc located in
  484.       the %appdata%Tor of the user who installed the service. Patch
  485.       from Matt Edman.
  486.     - Add an --ignore-missing-torrc command-line option so that we can
  487.       get the "use sensible defaults if the configuration file doesn't
  488.       exist" behavior even when specifying a torrc location on the
  489.       command line.
  490.     - When stopping an NT service, wait up to 10 sec for it to actually
  491.       stop. (Patch from Matt Edman; resolves bug 295.)
  492.   o Directory authority improvements:
  493.     - Stop letting hibernating or obsolete servers affect uptime and
  494.       bandwidth cutoffs.
  495.     - Stop listing hibernating servers in the v1 directory.
  496.     - Authorities no longer recommend exits as guards if this would shift
  497.       too much load to the exit nodes.
  498.     - Authorities now specify server versions in networkstatus. This adds
  499.       about 2% to the size of compressed networkstatus docs, and allows
  500.       clients to tell which servers support BEGIN_DIR and which don't.
  501.       The implementation is forward-compatible with a proposed future
  502.       protocol version scheme not tied to Tor versions.
  503.     - DirServer configuration lines now have an orport= option so
  504.       clients can open encrypted tunnels to the authorities without
  505.       having downloaded their descriptors yet. Enabled for moria1,
  506.       moria2, tor26, and lefkada now in the default configuration.
  507.     - Add a BadDirectory flag to network status docs so that authorities
  508.       can (eventually) tell clients about caches they believe to be
  509.       broken. Not used yet.
  510.     - Allow authorities to list nodes as bad exits in their
  511.       approved-routers file by fingerprint or by address. If most
  512.       authorities set a BadExit flag for a server, clients don't think
  513.       of it as a general-purpose exit. Clients only consider authorities
  514.       that advertise themselves as listing bad exits.
  515.     - Patch from Steve Hildrey: Generate network status correctly on
  516.       non-versioning dirservers.
  517.     - Have directory authorities allow larger amounts of drift in uptime
  518.       without replacing the server descriptor: previously, a server that
  519.       restarted every 30 minutes could have 48 "interesting" descriptors
  520.       per day.
  521.     - Reserve the nickname "Unnamed" for routers that can't pick
  522.       a hostname: any router can call itself Unnamed; directory
  523.       authorities will never allocate Unnamed to any particular router;
  524.       clients won't believe that any router is the canonical Unnamed.
  525.   o Directory mirrors and clients:
  526.     - Discard any v1 directory info that's over 1 month old (for
  527.       directories) or over 1 week old (for running-routers lists).
  528.     - Clients track responses with status 503 from dirservers. After a
  529.       dirserver has given us a 503, we try not to use it until an hour has
  530.       gone by, or until we have no dirservers that haven't given us a 503.
  531.     - When we get a 503 from a directory, and we're not a server, we no
  532.       longer count the failure against the total number of failures
  533.       allowed for the object we're trying to download.
  534.     - Prepare for servers to publish descriptors less often: never
  535.       discard a descriptor simply for being too old until either it is
  536.       recommended by no authorities, or until we get a better one for
  537.       the same router. Make caches consider retaining old recommended
  538.       routers for even longer.
  539.     - Directory servers now provide 'Pragma: no-cache' and 'Expires'
  540.       headers for content, so that we can work better in the presence of
  541.       caching HTTP proxies.
  542.     - Stop fetching descriptors if you're not a dir mirror and you
  543.       haven't tried to establish any circuits lately. (This currently
  544.       causes some dangerous behavior, because when you start up again
  545.       you'll use your ancient server descriptors.)
  546.   o Major fixes, crashes:
  547.     - Stop crashing when the controller asks us to resetconf more than
  548.       one config option at once. (Vidalia 0.0.11 does this.)
  549.     - Fix a longstanding obscure crash bug that could occur when we run
  550.       out of DNS worker processes, if we're not using eventdns. (Resolves
  551.       bug 390.)
  552.     - Fix an assert that could trigger if a controller quickly set then
  553.       cleared EntryNodes. (Bug found by Udo van den Heuvel.)
  554.     - Avoid crash when telling controller about stream-status and a
  555.       stream is detached.
  556.     - Avoid sending junk to controllers or segfaulting when a controller
  557.       uses EVENT_NEW_DESC with verbose nicknames.
  558.     - Stop triggering asserts if the controller tries to extend hidden
  559.       service circuits (reported by mwenge).
  560.     - If we start a server with ClientOnly 1, then set ClientOnly to 0
  561.       and hup, stop triggering an assert based on an empty onion_key.
  562.     - Mask out all signals in sub-threads; only the libevent signal
  563.       handler should be processing them. This should prevent some crashes
  564.       on some machines using pthreads. (Patch from coderman.)
  565.     - Disable kqueue on OS X 10.3 and earlier, to fix bug 371.
  566.   o Major fixes, anonymity/security:
  567.     - Automatically avoid picking more than one node from the same
  568.       /16 network when constructing a circuit. Add an
  569.       "EnforceDistinctSubnets" option to let people disable it if they
  570.       want to operate private test networks on a single subnet.
  571.     - When generating bandwidth history, round down to the nearest
  572.       1k. When storing accounting data, round up to the nearest 1k.
  573.     - When we're running as a server, remember when we last rotated onion
  574.       keys, so that we will rotate keys once they're a week old even if
  575.       we never stay up for a week ourselves.
  576.     - If a client asked for a server by name, and there's a named server
  577.       in our network-status but we don't have its descriptor yet, we
  578.       could return an unnamed server instead.
  579.     - Reject (most) attempts to use Tor circuits with length one. (If
  580.       many people start using Tor as a one-hop proxy, exit nodes become
  581.       a more attractive target for compromise.)
  582.     - Just because your DirPort is open doesn't mean people should be
  583.       able to remotely teach you about hidden service descriptors. Now
  584.       only accept rendezvous posts if you've got HSAuthoritativeDir set.
  585.     - Fix a potential race condition in the rpm installer. Found by
  586.       Stefan Nordhausen.
  587.     - Do not log IPs with TLS failures for incoming TLS
  588.       connections. (Fixes bug 382.)
  589.   o Major fixes, other:
  590.     - If our system clock jumps back in time, don't publish a negative
  591.       uptime in the descriptor.
  592.     - When we start during an accounting interval before it's time to wake
  593.       up, remember to wake up at the correct time. (May fix bug 342.)
  594.     - Previously, we would cache up to 16 old networkstatus documents
  595.       indefinitely, if they came from nontrusted authorities. Now we
  596.       discard them if they are more than 10 days old.
  597.     - When we have a state file we cannot parse, tell the user and
  598.       move it aside. Now we avoid situations where the user starts
  599.       Tor in 1904, Tor writes a state file with that timestamp in it,
  600.       the user fixes her clock, and Tor refuses to start.
  601.     - Publish a new descriptor after we hup/reload. This is important
  602.       if our config has changed such that we'll want to start advertising
  603.       our DirPort now, etc.
  604.     - If we are using an exit enclave and we can't connect, e.g. because
  605.       its webserver is misconfigured to not listen on localhost, then
  606.       back off and try connecting from somewhere else before we fail.
  607.   o New config options or behaviors:
  608.     - When EntryNodes are configured, rebuild the guard list to contain,
  609.       in order: the EntryNodes that were guards before; the rest of the
  610.       EntryNodes; the nodes that were guards before.
  611.     - Do not warn when individual nodes in the configuration's EntryNodes,
  612.       ExitNodes, etc are down: warn only when all possible nodes
  613.       are down. (Fixes bug 348.)
  614.     - Put a lower-bound on MaxAdvertisedBandwidth.
  615.     - Start using the state file to store bandwidth accounting data:
  616.       the bw_accounting file is now obsolete. We'll keep generating it
  617.       for a while for people who are still using 0.1.2.4-alpha.
  618.     - Try to batch changes to the state file so that we do as few
  619.       disk writes as possible while still storing important things in
  620.       a timely fashion.
  621.     - The state file and the bw_accounting file get saved less often when
  622.       the AvoidDiskWrites config option is set.
  623.     - Make PIDFile work on Windows.
  624.     - Add internal descriptions for a bunch of configuration options:
  625.       accessible via controller interface and in comments in saved
  626.       options files.
  627.     - Reject *:563 (NNTPS) in the default exit policy. We already reject
  628.       NNTP by default, so this seems like a sensible addition.
  629.     - Clients now reject hostnames with invalid characters. This should
  630.       avoid some inadvertent info leaks. Add an option
  631.       AllowNonRFC953Hostnames to disable this behavior, in case somebody
  632.       is running a private network with hosts called @, !, and #.
  633.     - Check for addresses with invalid characters at the exit as well,
  634.       and warn less verbosely when they fail. You can override this by
  635.       setting ServerDNSAllowNonRFC953Addresses to 1.
  636.     - Remove some options that have been deprecated since at least
  637.       0.1.0.x: AccountingMaxKB, LogFile, DebugLogFile, LogLevel, and
  638.       SysLog. Use AccountingMax instead of AccountingMaxKB, and use Log
  639.       to set log options. Mark PathlenCoinWeight as obsolete.
  640.     - Stop accepting certain malformed ports in configured exit policies.
  641.     - When the user uses bad syntax in the Log config line, stop
  642.       suggesting other bad syntax as a replacement.
  643.     - Add new config option "ResolvConf" to let the server operator
  644.       choose an alternate resolve.conf file when using eventdns.
  645.     - If one of our entry guards is on the ExcludeNodes list, or the
  646.       directory authorities don't think it's a good guard, treat it as
  647.       if it were unlisted: stop using it as a guard, and throw it off
  648.       the guards list if it stays that way for a long time.
  649.     - Allow directory authorities to be marked separately as authorities
  650.       for the v1 directory protocol, the v2 directory protocol, and
  651.       as hidden service directories, to make it easier to retire old
  652.       authorities. V1 authorities should set "HSAuthoritativeDir 1"
  653.       to continue being hidden service authorities too.
  654.     - Remove 8888 as a LongLivedPort, and add 6697 (IRCS).
  655.     - Make TrackExitHosts case-insensitive, and fix the behavior of
  656.       ".suffix" TrackExitHosts items to avoid matching in the middle of
  657.       an address.
  658.     - New DirPort behavior: if you have your dirport set, you download
  659.       descriptors aggressively like a directory mirror, whether or not
  660.       your ORPort is set.
  661.   o Docs:
  662.     - Create a new file ReleaseNotes which was the old ChangeLog. The
  663.       new ChangeLog file now includes the notes for all development
  664.       versions too.
  665.     - Add a new address-spec.txt document to describe our special-case
  666.       addresses: .exit, .onion, and .noconnnect.
  667.     - Fork the v1 directory protocol into its own spec document,
  668.       and mark dir-spec.txt as the currently correct (v2) spec.
  669.   o Packaging, porting, and contrib
  670.     - "tor --verify-config" now exits with -1(255) or 0 depending on
  671.       whether the config options are bad or good.
  672.     - The Debian package now uses --verify-config when (re)starting,
  673.       to distinguish configuration errors from other errors.
  674.     - Adapt a patch from goodell to let the contrib/exitlist script
  675.       take arguments rather than require direct editing.
  676.     - Prevent the contrib/exitlist script from printing the same
  677.       result more than once.
  678.     - Add support to tor-resolve tool for reverse lookups and SOCKS5.
  679.     - In the hidden service example in torrc.sample, stop recommending
  680.       esoteric and discouraged hidden service options.
  681.     - Patch from Michael Mohr to contrib/cross.sh, so it checks more
  682.       values before failing, and always enables eventdns.
  683.     - Try to detect Windows correctly when cross-compiling.
  684.     - Libevent-1.2 exports, but does not define in its headers, strlcpy.
  685.       Try to fix this in configure.in by checking for most functions
  686.       before we check for libevent.
  687.     - Update RPMs to require libevent 1.2.
  688.     - Experimentally re-enable kqueue on OSX when using libevent 1.1b
  689.       or later. Log when we are doing this, so we can diagnose it when
  690.       it fails. (Also, recommend libevent 1.1b for kqueue and
  691.       win32 methods; deprecate libevent 1.0b harder; make libevent
  692.       recommendation system saner.)
  693.     - Build with recent (1.3+) libevents on platforms that do not
  694.       define the nonstandard types "u_int8_t" and friends.
  695.     - Remove architecture from OS X builds. The official builds are
  696.       now universal binaries.
  697.     - Run correctly on OS X platforms with case-sensitive filesystems.
  698.     - Correctly set maximum connection limit on Cygwin. (This time
  699.       for sure!)
  700.     - Start compiling on MinGW on Windows (patches from Mike Chiussi
  701.       and many others).
  702.     - Start compiling on MSVC6 on Windows (patches from Frediano Ziglio).
  703.     - Finally fix the openssl warnings from newer gccs that believe that
  704.       ignoring a return value is okay, but casting a return value and
  705.       then ignoring it is a sign of madness.
  706.     - On architectures where sizeof(int)>4, still clamp declarable
  707.       bandwidth to INT32_MAX.
  708.   o Minor features, controller:
  709.     - Warn the user when an application uses the obsolete binary v0
  710.       control protocol. We're planning to remove support for it during
  711.       the next development series, so it's good to give people some
  712.       advance warning.
  713.     - Add STREAM_BW events to report per-entry-stream bandwidth
  714.       use. (Patch from Robert Hogan.)
  715.     - Rate-limit SIGNEWNYM signals in response to controllers that
  716.       impolitely generate them for every single stream. (Patch from
  717.       mwenge; closes bug 394.)
  718.     - Add a REMAP status to stream events to note that a stream's
  719.       address has changed because of a cached address or a MapAddress
  720.       directive.
  721.     - Make REMAP stream events have a SOURCE (cache or exit), and
  722.       make them generated in every case where we get a successful
  723.       connected or resolved cell.
  724.     - Track reasons for OR connection failure; make these reasons
  725.       available via the controller interface. (Patch from Mike Perry.)
  726.     - Add a SOCKS_BAD_HOSTNAME client status event so controllers
  727.       can learn when clients are sending malformed hostnames to Tor.
  728.     - Specify and implement some of the controller status events.
  729.     - Have GETINFO dir/status/* work on hosts with DirPort disabled.
  730.     - Reimplement GETINFO so that info/names stays in sync with the
  731.       actual keys.
  732.     - Implement "GETINFO fingerprint".
  733.     - Implement "SETEVENTS GUARD" so controllers can get updates on
  734.       entry guard status as it changes.
  735.     - Make all connections to addresses of the form ".noconnect"
  736.       immediately get closed. This lets application/controller combos
  737.       successfully test whether they're talking to the same Tor by
  738.       watching for STREAM events.
  739.     - Add a REASON field to CIRC events; for backward compatibility, this
  740.       field is sent only to controllers that have enabled the extended
  741.       event format. Also, add additional reason codes to explain why
  742.       a given circuit has been destroyed or truncated. (Patches from
  743.       Mike Perry)
  744.     - Add a REMOTE_REASON field to extended CIRC events to tell the
  745.       controller why a remote OR told us to close a circuit.
  746.     - Stream events also now have REASON and REMOTE_REASON fields,
  747.       working much like those for circuit events.
  748.     - There's now a GETINFO ns/... field so that controllers can ask Tor
  749.       about the current status of a router.
  750.     - A new event type "NS" to inform a controller when our opinion of
  751.       a router's status has changed.
  752.     - Add a GETINFO events/names and GETINFO features/names so controllers
  753.       can tell which events and features are supported.
  754.     - A new CLEARDNSCACHE signal to allow controllers to clear the
  755.       client-side DNS cache without expiring circuits.
  756.     - Fix CIRC controller events so that controllers can learn the
  757.       identity digests of non-Named servers used in circuit paths.
  758.     - Let controllers ask for more useful identifiers for servers. Instead
  759.       of learning identity digests for un-Named servers and nicknames
  760.       for Named servers, the new identifiers include digest, nickname,
  761.       and indication of Named status. Off by default; see control-spec.txt
  762.       for more information.
  763.     - Add a "getinfo address" controller command so it can display Tor's
  764.       best guess to the user.
  765.     - New controller event to alert the controller when our server
  766.       descriptor has changed.
  767.     - Give more meaningful errors on controller authentication failure.
  768.     - Export the default exit policy via the control port, so controllers
  769.       don't need to guess what it is / will be later.
  770.   o Minor bugfixes, controller:
  771.     - When creating a circuit via the controller, send a 'launched'
  772.       event when we're done, so we follow the spec better.
  773.     - Correct the control spec to match how the code actually responds
  774.       to 'getinfo addr-mappings/*'. Reported by daejees.
  775.     - The control spec described a GUARDS event, but the code
  776.       implemented a GUARD event. Standardize on GUARD, but let people
  777.       ask for GUARDS too. Reported by daejees.
  778.     - Give the controller END_STREAM_REASON_DESTROY events _before_ we
  779.       clear the corresponding on_circuit variable, and remember later
  780.       that we don't need to send a redundant CLOSED event. (Resolves part
  781.       3 of bug 367.)
  782.     - Report events where a resolve succeeded or where we got a socks
  783.       protocol error correctly, rather than calling both of them
  784.       "INTERNAL".
  785.     - Change reported stream target addresses to IP consistently when
  786.       we finally get the IP from an exit node.
  787.     - Send log messages to the controller even if they happen to be very
  788.       long.
  789.     - Flush ERR-level controller status events just like we currently
  790.       flush ERR-level log events, so that a Tor shutdown doesn't prevent
  791.       the controller from learning about current events.
  792.     - Report the circuit number correctly in STREAM CLOSED events. Bug
  793.       reported by Mike Perry.
  794.     - Do not report bizarre values for results of accounting GETINFOs
  795.       when the last second's write or read exceeds the allotted bandwidth.
  796.     - Report "unrecognized key" rather than an empty string when the
  797.       controller tries to fetch a networkstatus that doesn't exist.
  798.     - When the controller does a "GETINFO network-status", tell it
  799.       about even those routers whose descriptors are very old, and use
  800.       long nicknames where appropriate.
  801.     - Fix handling of verbose nicknames with ORCONN controller events:
  802.       make them show up exactly when requested, rather than exactly when
  803.       not requested.
  804.     - Controller signals now work on non-Unix platforms that don't define
  805.       SIGUSR1 and SIGUSR2 the way we expect.
  806.     - Respond to SIGNAL command before we execute the signal, in case
  807.       the signal shuts us down. Suggested by Karsten Loesing.
  808.     - Handle reporting OR_CONN_EVENT_NEW events to the controller.
  809.   o Minor features, code performance:
  810.     - Major performance improvement on inserting descriptors: change
  811.       algorithm from O(n^2) to O(n).
  812.     - Do not rotate onion key immediately after setting it for the first
  813.       time.
  814.     - Call router_have_min_dir_info half as often. (This is showing up in
  815.       some profiles, but not others.)
  816.     - When using GCC, make log_debug never get called at all, and its
  817.       arguments never get evaluated, when no debug logs are configured.
  818.       (This is showing up in some profiles, but not others.)
  819.     - Statistics dumped by -USR2 now include a breakdown of public key
  820.       operations, for profiling.
  821.     - Make the common memory allocation path faster on machines where
  822.       malloc(0) returns a pointer.
  823.     - Split circuit_t into origin_circuit_t and or_circuit_t, and
  824.       split connection_t into edge, or, dir, control, and base structs.
  825.       These will save quite a bit of memory on busy servers, and they'll
  826.       also help us track down bugs in the code and bugs in the spec.
  827.     - Use OpenSSL's AES implementation on platforms where it's faster.
  828.       This could save us as much as 10% CPU usage.
  829.   o Minor features, descriptors and descriptor handling:
  830.     - Avoid duplicate entries on MyFamily line in server descriptor.
  831.     - When Tor receives a router descriptor that it asked for, but
  832.       no longer wants (because it has received fresh networkstatuses
  833.       in the meantime), do not warn the user. Cache the descriptor if
  834.       we're a cache; drop it if we aren't.
  835.     - Servers no longer ever list themselves in their "family" line,
  836.       even if configured to do so. This makes it easier to configure
  837.       family lists conveniently.
  838.   o Minor fixes, confusing/misleading log messages:
  839.     - Display correct results when reporting which versions are
  840.       recommended, and how recommended they are. (Resolves bug 383.)
  841.     - Inform the server operator when we decide not to advertise a
  842.       DirPort due to AccountingMax enabled or a low BandwidthRate.
  843.     - Only include function names in log messages for info/debug messages.
  844.       For notice/warn/err, the content of the message should be clear on
  845.       its own, and printing the function name only confuses users.
  846.     - Remove even more protocol-related warnings from Tor server logs,
  847.       such as bad TLS handshakes and malformed begin cells.
  848.     - Fix bug 314: Tor clients issued "unsafe socks" warnings even
  849.       when the IP address is mapped through MapAddress to a hostname.
  850.     - Fix misleading log messages: an entry guard that is "unlisted",
  851.       as well as not known to be "down" (because we've never heard
  852.       of it), is not therefore "up".
  853.   o Minor fixes, old/obsolete behavior:
  854.     - Start assuming we can use a create_fast cell if we don't know
  855.       what version a router is running.
  856.     - We no longer look for identity and onion keys in "identity.key" and
  857.       "onion.key" -- these were replaced by secret_id_key and
  858.       secret_onion_key in 0.0.8pre1.
  859.     - We no longer require unrecognized directory entries to be
  860.       preceded by "opt".
  861.     - Drop compatibility with obsolete Tors that permit create cells
  862.       to have the wrong circ_id_type.
  863.     - Remove code to special-case "-cvs" ending, since it has not
  864.       actually mattered since 0.0.9.
  865.     - Don't re-write the fingerprint file every restart, unless it has
  866.       changed.
  867.   o Minor fixes, misc client-side behavior:
  868.     - Always remove expired routers and networkstatus docs before checking
  869.       whether we have enough information to build circuits. (Fixes
  870.       bug 373.)
  871.     - When computing clock skew from directory HTTP headers, consider what
  872.       time it was when we finished asking for the directory, not what
  873.       time it is now.
  874.     - Make our socks5 handling more robust to broken socks clients:
  875.       throw out everything waiting on the buffer in between socks
  876.       handshake phases, since they can't possibly (so the theory
  877.       goes) have predicted what we plan to respond to them.
  878.     - Expire socks connections if they spend too long waiting for the
  879.       handshake to finish. Previously we would let them sit around for
  880.       days, if the connecting application didn't close them either.
  881.     - And if the socks handshake hasn't started, don't send a
  882.       "DNS resolve socks failed" handshake reply; just close it.
  883.     - If the user asks to use invalid exit nodes, be willing to use
  884.       unstable ones.
  885.     - Track unreachable entry guards correctly: don't conflate
  886.       'unreachable by us right now' with 'listed as down by the directory
  887.       authorities'. With the old code, if a guard was unreachable by us
  888.       but listed as running, it would clog our guard list forever.
  889.     - Behave correctly in case we ever have a network with more than
  890.       2GB/s total advertised capacity.
  891.     - Claim a commonname of Tor, rather than TOR, in TLS handshakes.
  892.     - Fix a memory leak when we ask for "all" networkstatuses and we
  893.       get one we don't recognize.
  894. Changes in version 0.1.1.26 - 2006-12-14
  895.   o Security bugfixes:
  896.     - Stop sending the HttpProxyAuthenticator string to directory
  897.       servers when directory connections are tunnelled through Tor.
  898.     - Clients no longer store bandwidth history in the state file.
  899.     - Do not log introduction points for hidden services if SafeLogging
  900.       is set.
  901.   o Minor bugfixes:
  902.     - Fix an assert failure when a directory authority sets
  903.       AuthDirRejectUnlisted and then receives a descriptor from an
  904.       unlisted router (reported by seeess).
  905. Changes in version 0.1.1.25 - 2006-11-04
  906.   o Major bugfixes:
  907.     - When a client asks us to resolve (rather than connect to)
  908.       an address, and we have a cached answer, give them the cached
  909.       answer. Previously, we would give them no answer at all.
  910.     - We were building exactly the wrong circuits when we predict
  911.       hidden service requirements, meaning Tor would have to build all
  912.       its circuits on demand.
  913.     - If none of our live entry guards have a high uptime, but we
  914.       require a guard with a high uptime, try adding a new guard before
  915.       we give up on the requirement. This patch should make long-lived
  916.       connections more stable on average.
  917.     - When testing reachability of our DirPort, don't launch new
  918.       tests when there's already one in progress -- unreachable
  919.       servers were stacking up dozens of testing streams.
  920.   o Security bugfixes:
  921.     - When the user sends a NEWNYM signal, clear the client-side DNS
  922.       cache too. Otherwise we continue to act on previous information.
  923.   o Minor bugfixes:
  924.     - Avoid a memory corruption bug when creating a hash table for
  925.       the first time.
  926.     - Avoid possibility of controller-triggered crash when misusing
  927.       certain commands from a v0 controller on platforms that do not
  928.       handle printf("%s",NULL) gracefully.
  929.     - Avoid infinite loop on unexpected controller input.
  930.     - Don't log spurious warnings when we see a circuit close reason we
  931.       don't recognize; it's probably just from a newer version of Tor.
  932.     - Add Vidalia to the OS X uninstaller script, so when we uninstall
  933.       Tor/Privoxy we also uninstall Vidalia.
  934. Changes in version 0.1.1.24 - 2006-09-29
  935.   o Major bugfixes:
  936.     - Allow really slow clients to not hang up five minutes into their
  937.       directory downloads (suggested by Adam J. Richter).
  938.     - Fix major performance regression from 0.1.0.x: instead of checking
  939.       whether we have enough directory information every time we want to
  940.       do something, only check when the directory information has changed.
  941.       This should improve client CPU usage by 25-50%.
  942.     - Don't crash if, after a server has been running for a while,
  943.       it can't resolve its hostname.
  944.     - When a client asks us to resolve (not connect to) an address,
  945.       and we have a cached answer, give them the cached answer.
  946.       Previously, we would give them no answer at all.
  947.   o Minor bugfixes:
  948.     - Allow Tor to start when RunAsDaemon is set but no logs are set.
  949.     - Don't crash when the controller receives a third argument to an
  950.       "extendcircuit" request.
  951.     - Controller protocol fixes: fix encoding in "getinfo addr-mappings"
  952.       response; fix error code when "getinfo dir/status/" fails.
  953.     - Fix configure.in to not produce broken configure files with
  954.       more recent versions of autoconf. Thanks to Clint for his auto*
  955.       voodoo.
  956.     - Fix security bug on NetBSD that could allow someone to force
  957.       uninitialized RAM to be sent to a server's DNS resolver. This
  958.       only affects NetBSD and other platforms that do not bounds-check
  959.       tolower().
  960.     - Warn user when using libevent 1.1a or earlier with win32 or kqueue
  961.       methods: these are known to be buggy.
  962.     - If we're a directory mirror and we ask for "all" network status
  963.       documents, we would discard status documents from authorities
  964.       we don't recognize.
  965. Changes in version 0.1.1.23 - 2006-07-30
  966.   o Major bugfixes:
  967.     - Fast Tor servers, especially exit nodes, were triggering asserts
  968.       due to a bug in handling the list of pending DNS resolves. Some
  969.       bugs still remain here; we're hunting them.
  970.     - Entry guards could crash clients by sending unexpected input.
  971.     - More fixes on reachability testing: if you find yourself reachable,
  972.       then don't ever make any client requests (so you stop predicting
  973.       circuits), then hup or have your clock jump, then later your IP
  974.       changes, you won't think circuits are working, so you won't try to
  975.       test reachability, so you won't publish.
  976.   o Minor bugfixes:
  977.     - Avoid a crash if the controller does a resetconf firewallports
  978.       and then a setconf fascistfirewall=1.
  979.     - Avoid an integer underflow when the dir authority decides whether
  980.       a router is stable: we might wrongly label it stable, and compute
  981.       a slightly wrong median stability, when a descriptor is published
  982.       later than now.
  983.     - Fix a place where we might trigger an assert if we can't build our
  984.       own server descriptor yet.
  985. Changes in version 0.1.1.22 - 2006-07-05
  986.   o Major bugfixes:
  987.     - Fix a big bug that was causing servers to not find themselves
  988.       reachable if they changed IP addresses. Since only 0.1.1.22+
  989.       servers can do reachability testing correctly, now we automatically
  990.       make sure to test via one of these.
  991.     - Fix to allow clients and mirrors to learn directory info from
  992.       descriptor downloads that get cut off partway through.
  993.     - Directory authorities had a bug in deciding if a newly published
  994.       descriptor was novel enough to make everybody want a copy -- a few
  995.       servers seem to be publishing new descriptors many times a minute.
  996.   o Minor bugfixes:
  997.     - Fix a rare bug that was causing some servers to complain about
  998.       "closing wedged cpuworkers" and skip some circuit create requests.
  999.     - Make the Exit flag in directory status documents actually work.
  1000. Changes in version 0.1.1.21 - 2006-06-10
  1001.   o Crash and assert fixes from 0.1.1.20:
  1002.     - Fix a rare crash on Tor servers that have enabled hibernation.
  1003.     - Fix a seg fault on startup for Tor networks that use only one
  1004.       directory authority.
  1005.     - Fix an assert from a race condition that occurs on Tor servers
  1006.       while exiting, where various threads are trying to log that they're
  1007.       exiting, and delete the logs, at the same time.
  1008.     - Make our unit tests pass again on certain obscure platforms.
  1009.   o Other fixes:
  1010.     - Add support for building SUSE RPM packages.
  1011.     - Speed up initial bootstrapping for clients: if we are making our
  1012.       first ever connection to any entry guard, then don't mark it down
  1013.       right after that.
  1014.     - When only one Tor server in the network is labelled as a guard,
  1015.       and we've already picked him, we would cycle endlessly picking him
  1016.       again, being unhappy about it, etc. Now we specifically exclude
  1017.       current guards when picking a new guard.
  1018.     - Servers send create cells more reliably after the TLS connection
  1019.       is established: we were sometimes forgetting to send half of them
  1020.       when we had more than one pending.
  1021.     - If we get a create cell that asks us to extend somewhere, but the
  1022.       Tor server there doesn't match the expected digest, we now send
  1023.       a destroy cell back, rather than silently doing nothing.
  1024.     - Make options->RedirectExit work again.
  1025.     - Make cookie authentication for the controller work again.
  1026.     - Stop being picky about unusual characters in the arguments to
  1027.       mapaddress. It's none of our business.
  1028.     - Add a new config option "TestVia" that lets you specify preferred
  1029.       middle hops to use for test circuits. Perhaps this will let me
  1030.       debug the reachability problems better.
  1031.   o Log / documentation fixes:
  1032.     - If we're a server and some peer has a broken TLS certificate, don't
  1033.       log about it unless ProtocolWarnings is set, i.e., we want to hear
  1034.       about protocol violations by others.
  1035.     - Fix spelling of VirtualAddrNetwork in man page.
  1036.     - Add a better explanation at the top of the autogenerated torrc file
  1037.       about what happened to our old torrc.
  1038. Changes in version 0.1.1.20 - 2006-05-23
  1039.   o Crash and assert fixes from 0.1.0.17:
  1040.     - Fix assert bug in close_logs() on exit: when we close and delete
  1041.       logs, remove them all from the global "logfiles" list.
  1042.     - Fix an assert error when we're out of space in the connection_list
  1043.       and we try to post a hidden service descriptor (reported by Peter
  1044.       Palfrader).
  1045.     - Fix a rare assert error when we've tried all intro points for
  1046.       a hidden service and we try fetching the service descriptor again:
  1047.       "Assertion conn->state != AP_CONN_STATE_RENDDESC_WAIT failed".
  1048.     - Setconf SocksListenAddress kills Tor if it fails to bind. Now back
  1049.       out and refuse the setconf if it would fail.
  1050.     - If you specify a relative torrc path and you set RunAsDaemon in
  1051.       your torrc, then it chdir()'s to the new directory. If you then
  1052.       HUP, it tries to load the new torrc location, fails, and exits.
  1053.       The fix: no longer allow a relative path to torrc when using -f.
  1054.     - Check for integer overflows in more places, when adding elements
  1055.       to smartlists. This could possibly prevent a buffer overflow
  1056.       on malicious huge inputs.
  1057.   o Security fixes, major:
  1058.     - When we're printing strings from the network, don't try to print
  1059.       non-printable characters. Now we're safer against shell escape
  1060.       sequence exploits, and also against attacks to fool users into
  1061.       misreading their logs.
  1062.     - Implement entry guards: automatically choose a handful of entry
  1063.       nodes and stick with them for all circuits. Only pick new guards
  1064.       when the ones you have are unsuitable, and if the old guards
  1065.       become suitable again, switch back. This will increase security
  1066.       dramatically against certain end-point attacks. The EntryNodes
  1067.       config option now provides some hints about which entry guards you
  1068.       want to use most; and StrictEntryNodes means to only use those.
  1069.       Fixes CVE-2006-0414.
  1070.     - Implement exit enclaves: if we know an IP address for the
  1071.       destination, and there's a running Tor server at that address
  1072.       which allows exit to the destination, then extend the circuit to
  1073.       that exit first. This provides end-to-end encryption and end-to-end
  1074.       authentication. Also, if the user wants a .exit address or enclave,
  1075.       use 4 hops rather than 3, and cannibalize a general circ for it
  1076.       if you can.
  1077.     - Obey our firewall options more faithfully:
  1078.       . If we can't get to a dirserver directly, try going via Tor.
  1079.       . Don't ever try to connect (as a client) to a place our
  1080.         firewall options forbid.
  1081.       . If we specify a proxy and also firewall options, obey the
  1082.         firewall options even when we're using the proxy: some proxies
  1083.         can only proxy to certain destinations.
  1084.     - Make clients regenerate their keys when their IP address changes.
  1085.     - For the OS X package's modified privoxy config file, comment
  1086.       out the "logfile" line so we don't log everything passed
  1087.       through privoxy.
  1088.     - Our TLS handshakes were generating a single public/private
  1089.       keypair for the TLS context, rather than making a new one for
  1090.       each new connection. Oops. (But we were still rotating them
  1091.       periodically, so it's not so bad.)
  1092.     - When we were cannibalizing a circuit with a particular exit
  1093.       node in mind, we weren't checking to see if that exit node was
  1094.       already present earlier in the circuit. Now we are.
  1095.     - Require server descriptors to list IPv4 addresses -- hostnames
  1096.       are no longer allowed. This also fixes potential vulnerabilities
  1097.       to servers providing hostnames as their address and then
  1098.       preferentially resolving them so they can partition users.
  1099.     - Our logic to decide if the OR we connected to was the right guy
  1100.       was brittle and maybe open to a mitm for invalid routers.
  1101.   o Security fixes, minor:
  1102.     - Adjust tor-spec.txt to parameterize cell and key lengths. Now
  1103.       Ian Goldberg can prove things about our handshake protocol more
  1104.       easily.
  1105.     - Make directory authorities generate a separate "guard" flag to
  1106.       mean "would make a good entry guard". Clients now honor the
  1107.       is_guard flag rather than looking at is_fast or is_stable.
  1108.     - Try to list MyFamily elements by key, not by nickname, and warn
  1109.       if we've not heard of a server.
  1110.     - Start using RAND_bytes rather than RAND_pseudo_bytes from
  1111.       OpenSSL. Also, reseed our entropy every hour, not just at
  1112.       startup. And add entropy in 512-bit chunks, not 160-bit chunks.
  1113.     - Refuse server descriptors where the fingerprint line doesn't match
  1114.       the included identity key. Tor doesn't care, but other apps (and
  1115.       humans) might actually be trusting the fingerprint line.
  1116.     - We used to kill the circuit when we receive a relay command we
  1117.       don't recognize. Now we just drop that cell.
  1118.     - Fix a bug found by Lasse Overlier: when we were making internal
  1119.       circuits (intended to be cannibalized later for rendezvous and
  1120.       introduction circuits), we were picking them so that they had
  1121.       useful exit nodes. There was no need for this, and it actually
  1122.       aids some statistical attacks.
  1123.     - Start treating internal circuits and exit circuits separately.
  1124.       It's important to keep them separate because internal circuits
  1125.       have their last hops picked like middle hops, rather than like
  1126.       exit hops. So exiting on them will break the user's expectations.
  1127.     - Fix a possible way to DoS dirservers.
  1128.     - When the client asked for a rendezvous port that the hidden
  1129.       service didn't want to provide, we were sending an IP address
  1130.       back along with the end cell. Fortunately, it was zero. But stop
  1131.       that anyway.
  1132.   o Packaging improvements:
  1133.     - Implement --with-libevent-dir option to ./configure. Improve
  1134.       search techniques to find libevent, and use those for openssl too.
  1135.     - Fix a couple of bugs in OpenSSL detection. Deal better when
  1136.       there are multiple SSLs installed with different versions.
  1137.     - Avoid warnings about machine/limits.h on Debian GNU/kFreeBSD.
  1138.     - On non-gcc compilers (e.g. Solaris's cc), use "-g -O" instead of
  1139.       "-Wall -g -O2".
  1140.     - Make unit tests (and other invocations that aren't the real Tor)
  1141.       run without launching listeners, creating subdirectories, and so on.
  1142.     - The OS X installer was adding a symlink for tor_resolve but
  1143.       the binary was called tor-resolve (reported by Thomas Hardly).
  1144.     - Now we can target arch and OS in rpm builds (contributed by
  1145.       Phobos). Also make the resulting dist-rpm filename match the
  1146.       target arch.
  1147.     - Apply Matt Ghali's --with-syslog-facility patch to ./configure
  1148.       if you log to syslog and want something other than LOG_DAEMON.
  1149.     - Fix the torify (tsocks) config file to not use Tor for localhost
  1150.       connections.
  1151.     - Start shipping socks-extensions.txt, tor-doc-unix.html,
  1152.       tor-doc-server.html, and stylesheet.css in the tarball.
  1153.     - Stop shipping tor-doc.html, INSTALL, and README in the tarball.
  1154.       They are useless now.
  1155.     - Add Peter Palfrader's contributed check-tor script. It lets you
  1156.       easily check whether a given server (referenced by nickname)
  1157.       is reachable by you.
  1158.     - Add BSD-style contributed startup script "rc.subr" from Peter
  1159.       Thoenen.
  1160.   o Directory improvements -- new directory protocol:
  1161.     - See tor/doc/dir-spec.txt for all the juicy details. Key points:
  1162.     - Authorities and caches publish individual descriptors (by
  1163.       digest, by fingerprint, by "all", and by "tell me yours").
  1164.     - Clients don't download or use the old directory anymore. Now they
  1165.       download network-statuses from the directory authorities, and
  1166.       fetch individual server descriptors as needed from mirrors.
  1167.     - Clients don't download descriptors of non-running servers.
  1168.     - Download descriptors by digest, not by fingerprint. Caches try to
  1169.       download all listed digests from authorities; clients try to
  1170.       download "best" digests from caches. This avoids partitioning
  1171.       and isolating attacks better.
  1172.     - Only upload a new server descriptor when options change, 18
  1173.       hours have passed, uptime is reset, or bandwidth changes a lot.
  1174.     - Directory authorities silently throw away new descriptors that
  1175.       haven't changed much if the timestamps are similar. We do this to
  1176.       tolerate older Tor servers that upload a new descriptor every 15
  1177.       minutes. (It seemed like a good idea at the time.)
  1178.     - Clients choose directory servers from the network status lists,
  1179.       not from their internal list of router descriptors. Now they can
  1180.       go to caches directly rather than needing to go to authorities
  1181.       to bootstrap the first set of descriptors.
  1182.     - When picking a random directory, prefer non-authorities if any
  1183.       are known.
  1184.     - Add a new flag to network-status indicating whether the server
  1185.       can answer v2 directory requests too.
  1186.     - Directory mirrors now cache up to 16 unrecognized network-status
  1187.       docs, so new directory authorities will be cached too.
  1188.     - Stop parsing, storing, or using running-routers output (but
  1189.       mirrors still cache and serve it).
  1190.     - Clients consider a threshold of "versioning" directory authorities
  1191.       before deciding whether to warn the user that he's obsolete.
  1192.     - Authorities publish separate sorted lists of recommended versions
  1193.       for clients and for servers.
  1194.     - Change DirServers config line to note which dirs are v1 authorities.
  1195.     - Put nicknames on the DirServer line, so we can refer to them
  1196.       without requiring all our users to memorize their IP addresses.
  1197.     - Remove option when getting directory cache to see whether they
  1198.       support running-routers; they all do now. Replace it with one
  1199.       to see whether caches support v2 stuff.
  1200.     - Stop listing down or invalid nodes in the v1 directory. This
  1201.       reduces its bulk by about 1/3, and reduces load on mirrors.
  1202.     - Mirrors no longer cache the v1 directory as often.
  1203.     - If we as a directory mirror don't know of any v1 directory
  1204.       authorities, then don't try to cache any v1 directories.
  1205.   o Other directory improvements:
  1206.     - Add lefkada.eecs.harvard.edu and tor.dizum.com as fourth and
  1207.       fifth authoritative directory servers.
  1208.     - Directory authorities no longer require an open connection from
  1209.       a server to consider him "reachable". We need this change because
  1210.       when we add new directory authorities, old servers won't know not
  1211.       to hang up on them.
  1212.     - Dir authorities now do their own external reachability testing
  1213.       of each server, and only list as running the ones they found to
  1214.       be reachable. We also send back warnings to the server's logs if
  1215.       it uploads a descriptor that we already believe is unreachable.
  1216.     - Spread the directory authorities' reachability testing over the
  1217.       entire testing interval, so we don't try to do 500 TLS's at once
  1218.       every 20 minutes.
  1219.     - Make the "stable" router flag in network-status be the median of
  1220.       the uptimes of running valid servers, and make clients pay
  1221.       attention to the network-status flags. Thus the cutoff adapts
  1222.       to the stability of the network as a whole, making IRC, IM, etc
  1223.       connections more reliable.
  1224.     - Make the v2 dir's "Fast" flag based on relative capacity, just
  1225.       like "Stable" is based on median uptime. Name everything in the
  1226.       top 7/8 Fast, and only the top 1/2 gets to be a Guard.
  1227.     - Retry directory requests if we fail to get an answer we like
  1228.       from a given dirserver (we were retrying before, but only if
  1229.       we fail to connect).
  1230.     - Return a robots.txt on our dirport to discourage google indexing.
  1231.   o Controller protocol improvements:
  1232.     - Revised controller protocol (version 1) that uses ascii rather
  1233.       than binary: tor/doc/control-spec.txt. Add supporting libraries
  1234.       in python and java and c# so you can use the controller from your
  1235.       applications without caring how our protocol works.
  1236.     - Allow the DEBUG controller event to work again. Mark certain log
  1237.       entries as "don't tell this to controllers", so we avoid cycles.
  1238.     - New controller function "getinfo accounting", to ask how
  1239.       many bytes we've used in this time period.
  1240.     - Add a "resetconf" command so you can set config options like
  1241.       AllowUnverifiedNodes and LongLivedPorts to "". Also, if you give
  1242.       a config option in the torrc with no value, then it clears it
  1243.       entirely (rather than setting it to its default).
  1244.     - Add a "getinfo config-file" to tell us where torrc is. Also
  1245.       expose guard nodes, config options/names.
  1246.     - Add a "quit" command (when when using the controller manually).
  1247.     - Add a new signal "newnym" to "change pseudonyms" -- that is, to
  1248.       stop using any currently-dirty circuits for new streams, so we
  1249.       don't link new actions to old actions. This also occurs on HUP
  1250.       or "signal reload".
  1251.     - If we would close a stream early (e.g. it asks for a .exit that
  1252.       we know would refuse it) but the LeaveStreamsUnattached config
  1253.       option is set by the controller, then don't close it.
  1254.     - Add a new controller event type "authdir_newdescs" that allows
  1255.       controllers to get all server descriptors that were uploaded to
  1256.       a router in its role as directory authority.
  1257.     - New controller option "getinfo desc/all-recent" to fetch the
  1258.       latest server descriptor for every router that Tor knows about.
  1259.     - Fix the controller's "attachstream 0" command to treat conn like
  1260.       it just connected, doing address remapping, handling .exit and
  1261.       .onion idioms, and so on. Now we're more uniform in making sure
  1262.       that the controller hears about new and closing connections.
  1263.     - Permit transitioning from ORPort==0 to ORPort!=0, and back, from
  1264.       the controller. Also, rotate dns and cpu workers if the controller
  1265.       changes options that will affect them; and initialize the dns
  1266.       worker cache tree whether or not we start out as a server.
  1267.     - Add a new circuit purpose 'controller' to let the controller ask
  1268.       for a circuit that Tor won't try to use. Extend the "extendcircuit"
  1269.       controller command to let you specify the purpose if you're starting
  1270.       a new circuit.  Add a new "setcircuitpurpose" controller command to
  1271.       let you change a circuit's purpose after it's been created.
  1272.     - Let the controller ask for "getinfo dir/server/foo" so it can ask
  1273.       directly rather than connecting to the dir port. "getinfo
  1274.       dir/status/foo" also works, but currently only if your DirPort
  1275.       is enabled.
  1276.     - Let the controller tell us about certain router descriptors
  1277.       that it doesn't want Tor to use in circuits. Implement
  1278.       "setrouterpurpose" and modify "+postdescriptor" to do this.
  1279.     - If the controller's *setconf commands fail, collect an error
  1280.       message in a string and hand it back to the controller -- don't
  1281.       just tell them to go read their logs.
  1282.   o Scalability, resource management, and performance:
  1283.     - Fix a major load balance bug: we were round-robin reading in 16 KB
  1284.       chunks, and servers with bandwidthrate of 20 KB, while downloading
  1285.       a 600 KB directory, would starve their other connections. Now we
  1286.       try to be a bit more fair.
  1287.     - Be more conservative about whether to advertise our DirPort.
  1288.       The main change is to not advertise if we're running at capacity
  1289.       and either a) we could hibernate ever or b) our capacity is low
  1290.       and we're using a default DirPort.
  1291.     - We weren't cannibalizing circuits correctly for
  1292.       CIRCUIT_PURPOSE_C_ESTABLISH_REND and
  1293.       CIRCUIT_PURPOSE_S_ESTABLISH_INTRO, so we were being forced to
  1294.       build those from scratch. This should make hidden services faster.
  1295.     - Predict required circuits better, with an eye toward making hidden
  1296.       services faster on the service end.
  1297.     - Compress exit policies even more: look for duplicate lines and
  1298.       remove them.
  1299.     - Generate 18.0.0.0/8 address policy format in descs when we can;
  1300.       warn when the mask is not reducible to a bit-prefix.
  1301.     - There used to be two ways to specify your listening ports in a
  1302.       server descriptor: on the "router" line and with a separate "ports"
  1303.       line. Remove support for the "ports" line.
  1304.     - Reduce memory requirements in our structs by changing the order
  1305.       of fields. Replace balanced trees with hash tables. Inline
  1306.       bottleneck smartlist functions. Add a "Map from digest to void*"
  1307.       abstraction so we can do less hex encoding/decoding, and use it
  1308.       in router_get_by_digest(). Many other CPU and memory improvements.
  1309.     - Allow tor_gzip_uncompress to extract as much as possible from
  1310.       truncated compressed data. Try to extract as many
  1311.       descriptors as possible from truncated http responses (when
  1312.       purpose is DIR_PURPOSE_FETCH_ROUTERDESC).
  1313.     - Make circ->onionskin a pointer, not a static array. moria2 was using
  1314.       125000 circuit_t's after it had been up for a few weeks, which
  1315.       translates to 20+ megs of wasted space.
  1316.     - The private half of our EDH handshake keys are now chosen out
  1317.       of 320 bits, not 1024 bits. (Suggested by Ian Goldberg.)
  1318.     - Stop doing the complex voodoo overkill checking for insecure
  1319.       Diffie-Hellman keys. Just check if it's in [2,p-2] and be happy.
  1320.     - Do round-robin writes for TLS of at most 16 kB per write. This
  1321.       might be more fair on loaded Tor servers.
  1322.     - Do not use unaligned memory access on alpha, mips, or mipsel.
  1323.       It *works*, but is very slow, so we treat them as if it doesn't.
  1324.   o Other bugfixes and improvements:
  1325.     - Start storing useful information to $DATADIR/state, so we can
  1326.       remember things across invocations of Tor. Retain unrecognized
  1327.       lines so we can be forward-compatible, and write a TorVersion line
  1328.       so we can be backward-compatible.
  1329.     - If ORPort is set, Address is not explicitly set, and our hostname
  1330.       resolves to a private IP address, try to use an interface address
  1331.       if it has a public address. Now Windows machines that think of
  1332.       themselves as localhost can guess their address.
  1333.     - Regenerate our local descriptor if it's dirty and we try to use
  1334.       it locally (e.g. if it changes during reachability detection).
  1335.       This was causing some Tor servers to keep publishing the same
  1336.       initial descriptor forever.
  1337.     - Tor servers with dynamic IP addresses were needing to wait 18
  1338.       hours before they could start doing reachability testing using
  1339.       the new IP address and ports. This is because they were using
  1340.       the internal descriptor to learn what to test, yet they were only
  1341.       rebuilding the descriptor once they decided they were reachable.
  1342.     - It turns out we couldn't bootstrap a network since we added
  1343.       reachability detection in 0.1.0.1-rc. Good thing the Tor network
  1344.       has never gone down. Add an AssumeReachable config option to let
  1345.       servers and authorities bootstrap. When we're trying to build a
  1346.       high-uptime or high-bandwidth circuit but there aren't enough
  1347.       suitable servers, try being less picky rather than simply failing.
  1348.     - Newly bootstrapped Tor networks couldn't establish hidden service
  1349.       circuits until they had nodes with high uptime. Be more tolerant.
  1350.     - Really busy servers were keeping enough circuits open on stable
  1351.       connections that they were wrapping around the circuit_id
  1352.       space. (It's only two bytes.) This exposed a bug where we would
  1353.       feel free to reuse a circuit_id even if it still exists but has
  1354.       been marked for close. Try to fix this bug. Some bug remains.
  1355.     - When we fail to bind or listen on an incoming or outgoing
  1356.       socket, we now close it before refusing, rather than just
  1357.       leaking it. (Thanks to Peter Palfrader for finding.)
  1358.     - Fix a file descriptor leak in start_daemon().
  1359.     - On Windows, you can't always reopen a port right after you've
  1360.       closed it. So change retry_listeners() to only close and re-open
  1361.       ports that have changed.
  1362.     - Workaround a problem with some http proxies that refuse GET
  1363.       requests that specify "Content-Length: 0". Reported by Adrian.
  1364.     - Recover better from TCP connections to Tor servers that are
  1365.       broken but don't tell you (it happens!); and rotate TLS
  1366.       connections once a week.
  1367.     - Fix a scary-looking but apparently harmless bug where circuits
  1368.       would sometimes start out in state CIRCUIT_STATE_OR_WAIT at
  1369.       servers, and never switch to state CIRCUIT_STATE_OPEN.
  1370.     - Check for even more Windows version flags when writing the platform
  1371.       string in server descriptors, and note any we don't recognize.
  1372.     - Add reasons to DESTROY and RELAY_TRUNCATED cells, so clients can
  1373.       get a better idea of why their circuits failed. Not used yet.
  1374.     - Add TTLs to RESOLVED, CONNECTED, and END_REASON_EXITPOLICY cells.
  1375.       We don't use them yet, but maybe one day our DNS resolver will be
  1376.       able to discover them.
  1377.     - Let people type "tor --install" as well as "tor -install" when they
  1378.       want to make it an NT service.
  1379.     - Looks like we were never delivering deflated (i.e. compressed)
  1380.       running-routers lists, even when asked. Oops.
  1381.     - We were leaking some memory every time the client changed IPs.
  1382.     - Clean up more of the OpenSSL memory when exiting, so we can detect
  1383.       memory leaks better.
  1384.     - Never call free() on tor_malloc()d memory. This will help us
  1385.       use dmalloc to detect memory leaks.
  1386.     - Some Tor servers process billions of cells per day. These
  1387.       statistics are now uint64_t's.
  1388.     - Check [X-]Forwarded-For headers in HTTP requests when generating
  1389.       log messages. This lets people run dirservers (and caches) behind
  1390.       Apache but still know which IP addresses are causing warnings.
  1391.     - Fix minor integer overflow in calculating when we expect to use up
  1392.       our bandwidth allocation before hibernating.
  1393.     - Lower the minimum required number of file descriptors to 1000,
  1394.       so we can have some overhead for Valgrind on Linux, where the
  1395.       default ulimit -n is 1024.
  1396.     - Stop writing the "router.desc" file, ever. Nothing uses it anymore,
  1397.       and its existence is confusing some users.
  1398.   o Config option fixes:
  1399.     - Add a new config option ExitPolicyRejectPrivate which defaults
  1400.       to on. Now all exit policies will begin with rejecting private
  1401.       addresses, unless the server operator explicitly turns it off.
  1402.     - Bump the default bandwidthrate to 3 MB, and burst to 6 MB.
  1403.     - Add new ReachableORAddresses and ReachableDirAddresses options
  1404.       that understand address policies. FascistFirewall is now a synonym
  1405.       for "ReachableORAddresses *:443", "ReachableDirAddresses *:80".
  1406.     - Start calling it FooListenAddress rather than FooBindAddress,
  1407.       since few of our users know what it means to bind an address
  1408.       or port.
  1409.     - If the user gave Tor an odd number of command-line arguments,
  1410.       we were silently ignoring the last one. Now we complain and fail.
  1411.       This wins the oldest-bug prize -- this bug has been present since
  1412.       November 2002, as released in Tor 0.0.0.
  1413.     - If you write "HiddenServicePort 6667 127.0.0.1 6668" in your
  1414.       torrc rather than "HiddenServicePort 6667 127.0.0.1:6668",
  1415.       it would silently ignore the 6668.
  1416.     - If we get a linelist or linelist_s config option from the torrc,
  1417.       e.g. ExitPolicy, and it has no value, warn and skip rather than
  1418.       silently resetting it to its default.
  1419.     - Setconf was appending items to linelists, not clearing them.
  1420.     - Add MyFamily to torrc.sample in the server section, so operators
  1421.       will be more likely to learn that it exists.
  1422.     - Make ContactInfo mandatory for authoritative directory servers.
  1423.     - MaxConn has been obsolete for a while now. Document the ConnLimit
  1424.       config option, which is a *minimum* number of file descriptors
  1425.       that must be available else Tor refuses to start.
  1426.     - Get rid of IgnoreVersion undocumented config option, and make us
  1427.       only warn, never exit, when we're running an obsolete version.
  1428.     - Make MonthlyAccountingStart config option truly obsolete now.
  1429.     - Correct the man page entry on TrackHostExitsExpire.
  1430.     - Let directory authorities start even if they don't specify an
  1431.       Address config option.
  1432.     - Change "AllowUnverifiedNodes" to "AllowInvalidNodes", to
  1433.       reflect the updated flags in our v2 dir protocol.
  1434.   o Config option features:
  1435.     - Add a new config option FastFirstHopPK (on by default) so clients
  1436.       do a trivial crypto handshake for their first hop, since TLS has
  1437.       already taken care of confidentiality and authentication.
  1438.     - Let the user set ControlListenAddress in the torrc. This can be
  1439.       dangerous, but there are some cases (like a secured LAN) where it
  1440.       makes sense.
  1441.     - New config options to help controllers: FetchServerDescriptors
  1442.       and FetchHidServDescriptors for whether to fetch server
  1443.       info and hidserv info or let the controller do it, and
  1444.       PublishServerDescriptor and PublishHidServDescriptors.
  1445.     - Also let the controller set the __AllDirActionsPrivate config
  1446.       option if you want all directory fetches/publishes to happen via
  1447.       Tor (it assumes your controller bootstraps your circuits).
  1448.     - Add "HardwareAccel" config option: support for crypto hardware
  1449.       accelerators via OpenSSL. Off by default, until we find somebody
  1450.       smart who can test it for us. (It appears to produce seg faults
  1451.       in at least some cases.)
  1452.     - New config option "AuthDirRejectUnlisted" for directory authorities
  1453.       as a panic button: if we get flooded with unusable servers we can
  1454.       revert to only listing servers in the approved-routers file.
  1455.     - Directory authorities can now reject/invalidate by key and IP,
  1456.       with the config options "AuthDirInvalid" and "AuthDirReject", or
  1457.       by marking a fingerprint as "!reject" or "!invalid" (as its
  1458.       nickname) in the approved-routers file. This is useful since
  1459.       currently we automatically list servers as running and usable
  1460.       even if we know they're jerks.
  1461.     - Add a new config option TestSocks so people can see whether their
  1462.       applications are using socks4, socks4a, socks5-with-ip, or
  1463.       socks5-with-fqdn. This way they don't have to keep mucking
  1464.       with tcpdump and wondering if something got cached somewhere.
  1465.     - Add "private:*" as an alias in configuration for policies. Now
  1466.       you can simplify your exit policy rather than needing to list
  1467.       every single internal or nonroutable network space.
  1468.     - Accept "private:*" in routerdesc exit policies; not generated yet
  1469.       because older Tors do not understand it.
  1470.     - Add configuration option "V1AuthoritativeDirectory 1" which
  1471.       moria1, moria2, and tor26 have set.
  1472.     - Implement an option, VirtualAddrMask, to set which addresses
  1473.       get handed out in response to mapaddress requests. This works
  1474.       around a bug in tsocks where 127.0.0.0/8 is never socksified.
  1475.     - Add a new config option FetchUselessDescriptors, off by default,
  1476.       for when you plan to run "exitlist" on your client and you want
  1477.       to know about even the non-running descriptors.
  1478.     - SocksTimeout: How long do we let a socks connection wait
  1479.       unattached before we fail it?
  1480.     - CircuitBuildTimeout: Cull non-open circuits that were born
  1481.       at least this many seconds ago.
  1482.     - CircuitIdleTimeout: Cull open clean circuits that were born
  1483.       at least this many seconds ago.
  1484.     - New config option SafeSocks to reject all application connections
  1485.       using unsafe socks protocols. Defaults to off.
  1486.   o Improved and clearer log messages:
  1487.     - Reduce clutter in server logs. We're going to try to make
  1488.       them actually usable now. New config option ProtocolWarnings that
  1489.       lets you hear about how _other Tors_ are breaking the protocol. Off
  1490.       by default.
  1491.     - Divide log messages into logging domains. Once we put some sort
  1492.       of interface on this, it will let people looking at more verbose
  1493.       log levels specify the topics they want to hear more about.
  1494.     - Log server fingerprint on startup, so new server operators don't
  1495.       have to go hunting around their filesystem for it.
  1496.     - Provide dire warnings to any users who set DirServer manually;
  1497.       move it out of torrc.sample and into torrc.complete.
  1498.     - Make the log message less scary when all the dirservers are
  1499.       temporarily unreachable.
  1500.     - When tor_socketpair() fails in Windows, give a reasonable
  1501.       Windows-style errno back.
  1502.     - Improve tor_gettimeofday() granularity on windows.
  1503.     - We were printing the number of idle dns workers incorrectly when
  1504.       culling them.
  1505.     - Handle duplicate lines in approved-routers files without warning.
  1506.     - We were whining about using socks4 or socks5-with-local-lookup
  1507.       even when it's an IP address in the "virtual" range we designed
  1508.       exactly for this case.
  1509.     - Check for named servers when looking them up by nickname;
  1510.       warn when we're calling a non-named server by its nickname;
  1511.       don't warn twice about the same name.