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

网络

开发平台:

Unix_Linux

  1.   o Major features:
  2.     - Do not include recognizeable strings in the commonname part of
  3.       Tor's x509 certificates.
  4.   o Major bugfixes:
  5.     - If we're a relay, avoid picking ourselves as an introduction point,
  6.       a rendezvous point, or as the final hop for internal circuits. Bug
  7.       reported by taranis and lodger. Bugfix on 0.1.2.x.
  8.     - Patch from "Andrew S. Lists" to catch when we contact a directory
  9.       mirror at IP address X and he says we look like we're coming from
  10.       IP address X. Bugfix on 0.1.2.x.
  11.   o Minor features (security):
  12.     - Be more paranoid about overwriting sensitive memory on free(),
  13.       as a defensive programming tactic to ensure forward secrecy.
  14.   o Minor features (directory authority):
  15.     - Actually validate the options passed to AuthDirReject,
  16.       AuthDirInvalid, AuthDirBadDir, and AuthDirBadExit.
  17.     - Reject router descriptors with out-of-range bandwidthcapacity or
  18.       bandwidthburst values.
  19.   o Minor features (controller):
  20.     - Reject controller commands over 1MB in length.  This keeps rogue
  21.       processes from running us out of memory.
  22.   o Minor features (misc):
  23.     - Give more descriptive well-formedness errors for out-of-range
  24.       hidden service descriptor/protocol versions.
  25.     - Make memory debugging information describe more about history
  26.       of cell allocation, so we can help reduce our memory use.
  27.   o Deprecated features (controller):
  28.     - The status/version/num-versioning and status/version/num-concurring
  29.       GETINFO options are no longer useful in the v3 directory protocol:
  30.       treat them as deprecated, and warn when they're used.
  31.   o Minor bugfixes:
  32.     - When our consensus networkstatus has been expired for a while, stop
  33.       being willing to build circuits using it. Fixes bug 401. Bugfix
  34.       on 0.1.2.x.
  35.     - Directory caches now fetch certificates from all authorities
  36.       listed in a networkstatus consensus, even when they do not
  37.       recognize them. Fixes bug 571. Bugfix on 0.2.0.x.
  38.     - When connecting to a bridge without specifying its key, insert
  39.       the connection into the identity-to-connection map as soon as
  40.       a key is learned. Fixes bug 574. Bugfix on 0.2.0.x.
  41.     - Detect versions of OS X where malloc_good_size() is present in the
  42.       library but never actually declared. Resolves bug 587. Bugfix
  43.       on 0.2.0.x.
  44.     - Stop incorrectly truncating zlib responses to directory authority
  45.       signature download requests. Fixes bug 593. Bugfix on 0.2.0.x.
  46.     - Stop recommending that every server operator send mail to tor-ops.
  47.       Resolves bug 597. Bugfix on 0.1.2.x.
  48.     - Don't trigger an assert if we start a directory authority with a
  49.       private IP address (like 127.0.0.1).
  50.     - Avoid possible failures when generating a directory with routers
  51.       with over-long versions strings, or too many flags set. Bugfix
  52.       on 0.1.2.x.
  53.     - If an attempt to launch a DNS resolve request over the control
  54.       port fails because we have overrun the limit on the number of
  55.       connections, tell the controller that the request has failed.
  56.     - Avoid using too little bandwidth when our clock skips a few
  57.       seconds. Bugfix on 0.1.2.x.
  58.     - Fix shell error when warning about missing packages in configure
  59.       script, on Fedora or Red Hat machines. Bugfix on 0.2.0.x.
  60.     - Do not become confused when receiving a spurious VERSIONS-like
  61.       cell from a confused v1 client.  Bugfix on 0.2.0.x.
  62.     - Re-fetch v2 (as well as v0) rendezvous descriptors when all
  63.       introduction points for a hidden service have failed. Patch from
  64.       Karsten Loesing. Bugfix on 0.2.0.x.
  65.   o Code simplifications and refactoring:
  66.     - Remove some needless generality from cpuworker code, for improved
  67.       type-safety.
  68.     - Stop overloading the circuit_t.onionskin field for both "onionskin
  69.       from a CREATE cell that we are waiting for a cpuworker to be
  70.       assigned" and "onionskin from an EXTEND cell that we are going to
  71.       send to an OR as soon as we are connected". Might help with bug 600.
  72.     - Add an in-place version of aes_crypt() so that we can avoid doing a
  73.       needless memcpy() call on each cell payload.
  74. Changes in version 0.2.0.18-alpha - 2008-01-25
  75.   Tor 0.2.0.18-alpha adds a sixth v3 directory authority run by CCC,
  76.   fixes a big memory leak in 0.2.0.17-alpha, and adds new config options
  77.   that can warn or reject connections to ports generally associated with
  78.   vulnerable-plaintext protocols.
  79.   o New directory authorities:
  80.     - Set up dannenberg (run by CCC) as the sixth v3 directory
  81.       authority.
  82.   o Major bugfixes:
  83.     - Fix a major memory leak when attempting to use the v2 TLS
  84.       handshake code. Bugfix on 0.2.0.x; fixes bug 589.
  85.     - We accidentally enabled the under-development v2 TLS handshake
  86.       code, which was causing log entries like "TLS error while
  87.       renegotiating handshake". Disable it again. Resolves bug 590.
  88.     - We were computing the wrong Content-Length: header for directory
  89.       responses that need to be compressed on the fly, causing clients
  90.       asking for those items to always fail. Bugfix on 0.2.0.x; partially
  91.       fixes bug 593.
  92.   o Major features:
  93.     - Avoid going directly to the directory authorities even if you're a
  94.       relay, if you haven't found yourself reachable yet or if you've
  95.       decided not to advertise your dirport yet. Addresses bug 556.
  96.     - If we've gone 12 hours since our last bandwidth check, and we
  97.       estimate we have less than 50KB bandwidth capacity but we could
  98.       handle more, do another bandwidth test.
  99.     - New config options WarnPlaintextPorts and RejectPlaintextPorts so
  100.       Tor can warn and/or refuse connections to ports commonly used with
  101.       vulnerable-plaintext protocols. Currently we warn on ports 23,
  102.       109, 110, and 143, but we don't reject any.
  103.   o Minor bugfixes:
  104.     - When we setconf ClientOnly to 1, close any current OR and Dir
  105.       listeners. Reported by mwenge.
  106.     - When we get a consensus that's been signed by more people than
  107.       we expect, don't log about it; it's not a big deal. Reported
  108.       by Kyle Williams.
  109.   o Minor features:
  110.     - Don't answer "/tor/networkstatus-bridges" directory requests if
  111.       the request isn't encrypted.
  112.     - Make "ClientOnly 1" config option disable directory ports too.
  113.     - Patches from Karsten Loesing to make v2 hidden services more
  114.       robust: work even when there aren't enough HSDir relays available;
  115.       retry when a v2 rend desc fetch fails; but don't retry if we
  116.       already have a usable v0 rend desc.
  117. Changes in version 0.2.0.17-alpha - 2008-01-17
  118.   Tor 0.2.0.17-alpha makes the tarball build cleanly again (whoops).
  119.   o Compile fixes:
  120.     - Make the tor-gencert man page get included correctly in the tarball.
  121. Changes in version 0.2.0.16-alpha - 2008-01-17
  122.   Tor 0.2.0.16-alpha adds a fifth v3 directory authority run by Karsten
  123.   Loesing, and generally cleans up a lot of features and minor bugs.
  124.   o New directory authorities:
  125.     - Set up gabelmoo (run by Karsten Loesing) as the fifth v3 directory
  126.       authority.
  127.   o Major performance improvements:
  128.     - Switch our old ring buffer implementation for one more like that
  129.       used by free Unix kernels. The wasted space in a buffer with 1mb
  130.       of data will now be more like 8k than 1mb. The new implementation
  131.       also avoids realloc();realloc(); patterns that can contribute to
  132.       memory fragmentation.
  133.   o Minor features:
  134.     - Configuration files now accept C-style strings as values. This
  135.       helps encode characters not allowed in the current configuration
  136.       file format, such as newline or #. Addresses bug 557.
  137.     - Although we fixed bug 539 (where servers would send HTTP status 503
  138.       responses _and_ send a body too), there are still servers out
  139.       there that haven't upgraded. Therefore, make clients parse such
  140.       bodies when they receive them.
  141.     - When we're not serving v2 directory information, there is no reason
  142.       to actually keep any around. Remove the obsolete files and directory
  143.       on startup if they are very old and we aren't going to serve them.
  144.   o Minor performance improvements:
  145.     - Reference-count and share copies of address policy entries; only 5%
  146.       of them were actually distinct.
  147.     - Never walk through the list of logs if we know that no log is
  148.       interested in a given message.
  149.   o Minor bugfixes:
  150.     - When an authority has not signed a consensus, do not try to
  151.       download a nonexistent "certificate with key 00000000". Bugfix
  152.       on 0.2.0.x. Fixes bug 569.
  153.     - Fix a rare assert error when we're closing one of our threads:
  154.       use a mutex to protect the list of logs, so we never write to the
  155.       list as it's being freed. Bugfix on 0.1.2.x. Fixes the very rare
  156.       bug 575, which is kind of the revenge of bug 222.
  157.     - Patch from Karsten Loesing to complain less at both the client
  158.       and the relay when a relay used to have the HSDir flag but doesn't
  159.       anymore, and we try to upload a hidden service descriptor.
  160.     - Stop leaking one cert per TLS context. Fixes bug 582. Bugfix on
  161.       0.2.0.15-alpha.
  162.     - Do not try to download missing certificates until we have tried
  163.       to check our fallback consensus. Fixes bug 583.
  164.     - Make bridges round reported GeoIP stats info up to the nearest
  165.       estimate, not down. Now we can distinguish between "0 people from
  166.       this country" and "1 person from this country".
  167.     - Avoid a spurious free on base64 failure. Bugfix on 0.1.2.
  168.     - Avoid possible segfault if key generation fails in
  169.       crypto_pk_hybrid_encrypt. Bugfix on 0.2.0.
  170.     - Avoid segfault in the case where a badly behaved v2 versioning
  171.       directory sends a signed networkstatus with missing client-versions.
  172.       Bugfix on 0.1.2.
  173.     - Avoid segfaults on certain complex invocations of
  174.       router_get_by_hexdigest(). Bugfix on 0.1.2.
  175.     - Correct bad index on array access in parse_http_time(). Bugfix
  176.       on 0.2.0.
  177.     - Fix possible bug in vote generation when server versions are present
  178.       but client versions are not.
  179.     - Fix rare bug on REDIRECTSTREAM control command when called with no
  180.       port set: it could erroneously report an error when none had
  181.       happened.
  182.     - Avoid bogus crash-prone, leak-prone tor_realloc when we're
  183.       compressing large objects and find ourselves with more than 4k
  184.       left over. Bugfix on 0.2.0.
  185.     - Fix a small memory leak when setting up a hidden service.
  186.     - Fix a few memory leaks that could in theory happen under bizarre
  187.       error conditions.
  188.     - Fix an assert if we post a general-purpose descriptor via the
  189.       control port but that descriptor isn't mentioned in our current
  190.       network consensus. Bug reported by Jon McLachlan; bugfix on
  191.       0.2.0.9-alpha.
  192.   o Minor features (controller):
  193.     - Get NS events working again. Patch from tup.
  194.     - The GETCONF command now escapes and quotes configuration values
  195.       that don't otherwise fit into the torrc file.
  196.     - The SETCONF command now handles quoted values correctly.
  197.   o Minor features (directory authorities):
  198.     - New configuration options to override default maximum number of
  199.       servers allowed on a single IP address. This is important for
  200.       running a test network on a single host.
  201.     - Actually implement the -s option to tor-gencert.
  202.     - Add a manual page for tor-gencert.
  203.   o Minor features (bridges):
  204.     - Bridge authorities no longer serve bridge descriptors over
  205.       unencrypted connections.
  206.   o Minor features (other):
  207.     - Add hidden services and DNSPorts to the list of things that make
  208.       Tor accept that it has running ports. Change starting Tor with no
  209.       ports from a fatal error to a warning; we might change it back if
  210.       this turns out to confuse anybody. Fixes bug 579.
  211. Changes in version 0.1.2.19 - 2008-01-17
  212.   Tor 0.1.2.19 fixes a huge memory leak on exit relays, makes the default
  213.   exit policy a little bit more conservative so it's safer to run an
  214.   exit relay on a home system, and fixes a variety of smaller issues.
  215.   o Security fixes:
  216.     - Exit policies now reject connections that are addressed to a
  217.       relay's public (external) IP address too, unless
  218.       ExitPolicyRejectPrivate is turned off. We do this because too
  219.       many relays are running nearby to services that trust them based
  220.       on network address.
  221.   o Major bugfixes:
  222.     - When the clock jumps forward a lot, do not allow the bandwidth
  223.       buckets to become negative. Fixes bug 544.
  224.     - Fix a memory leak on exit relays; we were leaking a cached_resolve_t
  225.       on every successful resolve. Reported by Mike Perry.
  226.     - Purge old entries from the "rephist" database and the hidden
  227.       service descriptor database even when DirPort is zero.
  228.     - Stop thinking that 0.1.2.x directory servers can handle "begin_dir"
  229.       requests. Should ease bugs 406 and 419 where 0.1.2.x relays are
  230.       crashing or mis-answering these requests.
  231.     - When we decide to send a 503 response to a request for servers, do
  232.       not then also send the server descriptors: this defeats the whole
  233.       purpose. Fixes bug 539.
  234.   o Minor bugfixes:
  235.     - Changing the ExitPolicyRejectPrivate setting should cause us to
  236.       rebuild our server descriptor.
  237.     - Fix handling of hex nicknames when answering controller requests for
  238.       networkstatus by name, or when deciding whether to warn about
  239.       unknown routers in a config option. (Patch from mwenge.)
  240.     - Fix a couple of hard-to-trigger autoconf problems that could result
  241.       in really weird results on platforms whose sys/types.h files define
  242.       nonstandard integer types.
  243.     - Don't try to create the datadir when running --verify-config or
  244.       --hash-password. Resolves bug 540.
  245.     - If we were having problems getting a particular descriptor from the
  246.       directory caches, and then we learned about a new descriptor for
  247.       that router, we weren't resetting our failure count. Reported
  248.       by lodger.
  249.     - Although we fixed bug 539 (where servers would send HTTP status 503
  250.       responses _and_ send a body too), there are still servers out there
  251.       that haven't upgraded. Therefore, make clients parse such bodies
  252.       when they receive them.
  253.     - Run correctly on systems where rlim_t is larger than unsigned long.
  254.       This includes some 64-bit systems.
  255.     - Run correctly on platforms (like some versions of OS X 10.5) where
  256.       the real limit for number of open files is OPEN_FILES, not rlim_max
  257.       from getrlimit(RLIMIT_NOFILES).
  258.     - Avoid a spurious free on base64 failure.
  259.     - Avoid segfaults on certain complex invocations of
  260.       router_get_by_hexdigest().
  261.     - Fix rare bug on REDIRECTSTREAM control command when called with no
  262.       port set: it could erroneously report an error when none had
  263.       happened.
  264. Changes in version 0.2.0.15-alpha - 2007-12-25
  265.   Tor 0.2.0.14-alpha and 0.2.0.15-alpha fix a bunch of bugs with the
  266.   features added in 0.2.0.13-alpha.
  267.   o Major bugfixes:
  268.     - Fix several remotely triggerable asserts based on DirPort requests
  269.       for a v2 or v3 networkstatus object before we were prepared. This
  270.       was particularly bad for 0.2.0.13 and later bridge relays, who
  271.       would never have a v2 networkstatus and would thus always crash
  272.       when used. Bugfixes on 0.2.0.x.
  273.     - Estimate the v3 networkstatus size more accurately, rather than
  274.       estimating it at zero bytes and giving it artificially high priority
  275.       compared to other directory requests. Bugfix on 0.2.0.x.
  276.   o Minor bugfixes:
  277.     - Fix configure.in logic for cross-compilation.
  278.     - When we load a bridge descriptor from the cache, and it was
  279.       previously unreachable, mark it as retriable so we won't just
  280.       ignore it. Also, try fetching a new copy immediately. Bugfixes
  281.       on 0.2.0.13-alpha.
  282.     - The bridge GeoIP stats were counting other relays, for example
  283.       self-reachability and authority-reachability tests.
  284.   o Minor features:
  285.     - Support compilation to target iPhone; patch from cjacker huang.
  286.       To build for iPhone, pass the --enable-iphone option to configure.
  287. Changes in version 0.2.0.14-alpha - 2007-12-23
  288.   o Major bugfixes:
  289.     - Fix a crash on startup if you install Tor 0.2.0.13-alpha fresh
  290.       without a datadirectory from a previous Tor install. Reported
  291.       by Zax.
  292.     - Fix a crash when we fetch a descriptor that turns out to be
  293.       unexpected (it used to be in our networkstatus when we started
  294.       fetching it, but it isn't in our current networkstatus), and we
  295.       aren't using bridges. Bugfix on 0.2.0.x.
  296.     - Fix a crash when accessing hidden services: it would work the first
  297.       time you use a given introduction point for your service, but
  298.       on subsequent requests we'd be using garbage memory. Fixed by
  299.       Karsten Loesing. Bugfix on 0.2.0.13-alpha.
  300.     - Fix a crash when we load a bridge descriptor from disk but we don't
  301.       currently have a Bridge line for it in our torrc. Bugfix on
  302.       0.2.0.13-alpha.
  303.   o Major features:
  304.     - If bridge authorities set BridgePassword, they will serve a
  305.       snapshot of known bridge routerstatuses from their DirPort to
  306.       anybody who knows that password. Unset by default.
  307.   o Minor bugfixes:
  308.     - Make the unit tests build again.
  309.     - Make "GETINFO/desc-annotations/id/<OR digest>" actually work.
  310.     - Make PublishServerDescriptor default to 1, so the default doesn't
  311.       have to change as we invent new directory protocol versions.
  312.     - Fix test for rlim_t on OSX 10.3: sys/resource.h doesn't want to
  313.       be included unless sys/time.h is already included.  Fixes
  314.       bug 553.  Bugfix on 0.2.0.x.
  315.     - If we receive a general-purpose descriptor and then receive an
  316.       identical bridge-purpose descriptor soon after, don't discard
  317.       the next one as a duplicate.
  318.   o Minor features:
  319.     - If BridgeRelay is set to 1, then the default for
  320.       PublishServerDescriptor is now "bridge" rather than "v2,v3".
  321.     - If the user sets RelayBandwidthRate but doesn't set
  322.       RelayBandwidthBurst, then make them equal rather than erroring out.
  323. Changes in version 0.2.0.13-alpha - 2007-12-21
  324.   Tor 0.2.0.13-alpha adds a fourth v3 directory authority run by Geoff
  325.   Goodell, fixes many more bugs, and adds a lot of infrastructure for
  326.   upcoming features.
  327.   o New directory authorities:
  328.     - Set up lefkada (run by Geoff Goodell) as the fourth v3 directory
  329.       authority.
  330.   o Major bugfixes:
  331.     - Only update guard status (usable / not usable) once we have
  332.       enough directory information. This was causing us to always pick
  333.       two new guards on startup (bugfix on 0.2.0.9-alpha), and it was
  334.       causing us to discard all our guards on startup if we hadn't been
  335.       running for a few weeks (bugfix on 0.1.2.x). Fixes bug 448.
  336.     - Purge old entries from the "rephist" database and the hidden
  337.       service descriptor databases even when DirPort is zero. Bugfix
  338.       on 0.1.2.x.
  339.     - We were ignoring our RelayBandwidthRate for the first 30 seconds
  340.       after opening a circuit -- even a relayed circuit. Bugfix on
  341.       0.2.0.3-alpha.
  342.     - Stop thinking that 0.1.2.x directory servers can handle "begin_dir"
  343.       requests. Should ease bugs 406 and 419 where 0.1.2.x relays are
  344.       crashing or mis-answering these types of requests.
  345.     - Relays were publishing their server descriptor to v1 and v2
  346.       directory authorities, but they didn't try publishing to v3-only
  347.       authorities. Fix this; and also stop publishing to v1 authorities.
  348.       Bugfix on 0.2.0.x.
  349.     - When we were reading router descriptors from cache, we were ignoring
  350.       the annotations -- so for example we were reading in bridge-purpose
  351.       descriptors as general-purpose descriptors. Bugfix on 0.2.0.8-alpha.
  352.     - When we decided to send a 503 response to a request for servers, we
  353.       were then also sending the server descriptors: this defeats the
  354.       whole purpose. Fixes bug 539; bugfix on 0.1.2.x.
  355.   o Major features:
  356.     - Bridge relays now behave like clients with respect to time
  357.       intervals for downloading new consensus documents -- otherwise they
  358.       stand out. Bridge users now wait until the end of the interval,
  359.       so their bridge relay will be sure to have a new consensus document.
  360.     - Three new config options (AlternateDirAuthority,
  361.       AlternateBridgeAuthority, and AlternateHSAuthority) that let the
  362.       user selectively replace the default directory authorities by type,
  363.       rather than the all-or-nothing replacement that DirServer offers.
  364.     - Tor can now be configured to read a GeoIP file from disk in one
  365.       of two formats. This can be used by controllers to map IP addresses
  366.       to countries. Eventually, it may support exit-by-country.
  367.     - When possible, bridge relays remember which countries users
  368.       are coming from, and report aggregate information in their
  369.       extra-info documents, so that the bridge authorities can learn
  370.       where Tor is blocked.
  371.     - Bridge directory authorities now do reachability testing on the
  372.       bridges they know. They provide router status summaries to the
  373.       controller via "getinfo ns/purpose/bridge", and also dump summaries
  374.       to a file periodically.
  375.     - Stop fetching directory info so aggressively if your DirPort is
  376.       on but your ORPort is off; stop fetching v2 dir info entirely.
  377.       You can override these choices with the new FetchDirInfoEarly
  378.       config option.
  379.   o Minor bugfixes:
  380.     - The fix in 0.2.0.12-alpha cleared the "hsdir" flag in v3 network
  381.       consensus documents when there are too many relays at a single
  382.       IP address. Now clear it in v2 network status documents too, and
  383.       also clear it in routerinfo_t when the relay is no longer listed
  384.       in the relevant networkstatus document.
  385.     - Don't crash if we get an unexpected value for the
  386.       PublishServerDescriptor config option. Reported by Matt Edman;
  387.       bugfix on 0.2.0.9-alpha.
  388.     - Our new v2 hidden service descriptor format allows descriptors
  389.       that have no introduction points. But Tor crashed when we tried
  390.       to build a descriptor with no intro points (and it would have
  391.       crashed if we had tried to parse one). Bugfix on 0.2.0.x; patch
  392.       by Karsten Loesing.
  393.     - Fix building with dmalloc 5.5.2 with glibc.
  394.     - Reject uploaded descriptors and extrainfo documents if they're
  395.       huge. Otherwise we'll cache them all over the network and it'll
  396.       clog everything up. Reported by Aljosha Judmayer.
  397.     - Check for presence of s6_addr16 and s6_addr32 fields in in6_addr
  398.       via autoconf. Should fix compile on solaris. Bugfix on 0.2.0.x.
  399.     - When the DANGEROUS_VERSION controller status event told us we're
  400.       running an obsolete version, it used the string "OLD" to describe
  401.       it. Yet the "getinfo" interface used the string "OBSOLETE". Now use
  402.       "OBSOLETE" in both cases. Bugfix on 0.1.2.x.
  403.     - If we can't expand our list of entry guards (e.g. because we're
  404.       using bridges or we have StrictEntryNodes set), don't mark relays
  405.       down when they fail a directory request. Otherwise we're too quick
  406.       to mark all our entry points down. Bugfix on 0.1.2.x.
  407.     - Fix handling of hex nicknames when answering controller requests for
  408.       networkstatus by name, or when deciding whether to warn about unknown
  409.       routers in a config option. Bugfix on 0.1.2.x. (Patch from mwenge.)
  410.     - Fix a couple of hard-to-trigger autoconf problems that could result
  411.       in really weird results on platforms whose sys/types.h files define
  412.       nonstandard integer types. Bugfix on 0.1.2.x.
  413.     - Fix compilation with --disable-threads set. Bugfix on 0.2.0.x.
  414.     - Don't crash on name lookup when we have no current consensus.  Fixes
  415.       bug 538; bugfix on 0.2.0.x.
  416.     - Only Tors that want to mirror the v2 directory info should
  417.       create the "cached-status" directory in their datadir. (All Tors
  418.       used to create it.) Bugfix on 0.2.0.9-alpha.
  419.     - Directory authorities should only automatically download Extra Info
  420.       documents if they're v1, v2, or v3 authorities. Bugfix on 0.1.2.x.
  421.   o Minor features:
  422.     - On the USR1 signal, when dmalloc is in use, log the top 10 memory
  423.       consumers. (We already do this on HUP.)
  424.     - Authorities and caches fetch the v2 networkstatus documents
  425.       less often, now that v3 is encouraged.
  426.     - Add a new config option BridgeRelay that specifies you want to
  427.       be a bridge relay. Right now the only difference is that it makes
  428.       you answer begin_dir requests, and it makes you cache dir info,
  429.       even if your DirPort isn't on.
  430.     - Add "GETINFO/desc-annotations/id/<OR digest>" so controllers can
  431.       ask about source, timestamp of arrival, purpose, etc. We need
  432.       something like this to help Vidalia not do GeoIP lookups on bridge
  433.       addresses.
  434.     - Allow multiple HashedControlPassword config lines, to support
  435.       multiple controller passwords.
  436.     - Authorities now decide whether they're authoritative for a given
  437.       router based on the router's purpose.
  438.     - New config options AuthDirBadDir and AuthDirListBadDirs for
  439.       authorities to mark certain relays as "bad directories" in the
  440.       networkstatus documents. Also supports the "!baddir" directive in
  441.       the approved-routers file.
  442. Changes in version 0.2.0.12-alpha - 2007-11-16
  443.   This twelfth development snapshot fixes some more build problems as
  444.   well as a few minor bugs.
  445.   o Compile fixes:
  446.     - Make it build on OpenBSD again. Patch from tup.
  447.     - Substitute BINDIR and LOCALSTATEDIR in scripts. Fixes
  448.       package-building for Red Hat, OS X, etc.
  449.   o Minor bugfixes (on 0.1.2.x):
  450.     - Changing the ExitPolicyRejectPrivate setting should cause us to
  451.       rebuild our server descriptor.
  452.   o Minor bugfixes (on 0.2.0.x):
  453.     - When we're lacking a consensus, don't try to perform rendezvous
  454.       operations. Reported by Karsten Loesing.
  455.     - Fix a small memory leak whenever we decide against using a
  456.       newly picked entry guard. Reported by Mike Perry.
  457.     - When authorities detected more than two relays running on the same
  458.       IP address, they were clearing all the status flags but forgetting
  459.       to clear the "hsdir" flag. So clients were being told that a
  460.       given relay was the right choice for a v2 hsdir lookup, yet they
  461.       never had its descriptor because it was marked as 'not running'
  462.       in the consensus.
  463.     - If we're trying to fetch a bridge descriptor and there's no way
  464.       the bridge authority could help us (for example, we don't know
  465.       a digest, or there is no bridge authority), don't be so eager to
  466.       fall back to asking the bridge authority.
  467.     - If we're using bridges or have strictentrynodes set, and our
  468.       chosen exit is in the same family as all our bridges/entry guards,
  469.       then be flexible about families.
  470.   o Minor features:
  471.     - When we negotiate a v2 link-layer connection (not yet implemented),
  472.       accept RELAY_EARLY cells and turn them into RELAY cells if we've
  473.       negotiated a v1 connection for their next step. Initial code for
  474.       proposal 110.
  475. Changes in version 0.2.0.11-alpha - 2007-11-12
  476.   This eleventh development snapshot fixes some build problems with
  477.   the previous snapshot. It also includes a more secure-by-default exit
  478.   policy for relays, fixes an enormous memory leak for exit relays, and
  479.   fixes another bug where servers were falling out of the directory list.
  480.   o Security fixes:
  481.     - Exit policies now reject connections that are addressed to a
  482.       relay's public (external) IP address too, unless
  483.       ExitPolicyRejectPrivate is turned off. We do this because too
  484.       many relays are running nearby to services that trust them based
  485.       on network address. Bugfix on 0.1.2.x.
  486.   o Major bugfixes:
  487.     - Fix a memory leak on exit relays; we were leaking a cached_resolve_t
  488.       on every successful resolve. Reported by Mike Perry; bugfix
  489.       on 0.1.2.x.
  490.     - On authorities, never downgrade to old router descriptors simply
  491.       because they're listed in the consensus. This created a catch-22
  492.       where we wouldn't list a new descriptor because there was an
  493.       old one in the consensus, and we couldn't get the new one in the
  494.       consensus because we wouldn't list it. Possible fix for bug 548.
  495.       Also, this might cause bug 543 to appear on authorities; if so,
  496.       we'll need a band-aid for that. Bugfix on 0.2.0.9-alpha.
  497.   o Packaging fixes on 0.2.0.10-alpha:
  498.     - We were including instructions about what to do with the
  499.       src/config/fallback-consensus file, but we weren't actually
  500.       including it in the tarball. Disable all of that for now.
  501.   o Minor features:
  502.     - Allow people to say PreferTunnelledDirConns rather than
  503.       PreferTunneledDirConns, for those alternate-spellers out there.
  504.   o Minor bugfixes:
  505.     - Don't reevaluate all the information from our consensus document
  506.       just because we've downloaded a v2 networkstatus that we intend
  507.       to cache. Fixes bug 545; bugfix on 0.2.0.x.
  508. Changes in version 0.2.0.10-alpha - 2007-11-10
  509.   This tenth development snapshot adds a third v3 directory authority
  510.   run by Mike Perry, adds most of Karsten Loesing's new hidden service
  511.   descriptor format, fixes a bad crash bug and new bridge bugs introduced
  512.   in 0.2.0.9-alpha, fixes many bugs with the v3 directory implementation,
  513.   fixes some minor memory leaks in previous 0.2.0.x snapshots, and
  514.   addresses many more minor issues.
  515.   o New directory authorities:
  516.     - Set up ides (run by Mike Perry) as the third v3 directory authority.
  517.   o Major features:
  518.     - Allow tunnelled directory connections to ask for an encrypted
  519.       "begin_dir" connection or an anonymized "uses a full Tor circuit"
  520.       connection independently. Now we can make anonymized begin_dir
  521.       connections for (e.g.) more secure hidden service posting and
  522.       fetching.
  523.     - More progress on proposal 114: code from Karsten Loesing to
  524.       implement new hidden service descriptor format.
  525.     - Raise the default BandwidthRate/BandwidthBurst to 5MB/10MB, to
  526.       accommodate the growing number of servers that use the default
  527.       and are reaching it.
  528.     - Directory authorities use a new formula for selecting which nodes
  529.       to advertise as Guards: they must be in the top 7/8 in terms of
  530.       how long we have known about them, and above the median of those
  531.       nodes in terms of weighted fractional uptime.
  532.     - Make "not enough dir info yet" warnings describe *why* Tor feels
  533.       it doesn't have enough directory info yet.
  534.   o Major bugfixes:
  535.     - Stop servers from crashing if they set a Family option (or
  536.       maybe in other situations too). Bugfix on 0.2.0.9-alpha; reported
  537.       by Fabian Keil.
  538.     - Make bridge users work again -- the move to v3 directories in
  539.       0.2.0.9-alpha had introduced a number of bugs that made bridges
  540.       no longer work for clients.
  541.     - When the clock jumps forward a lot, do not allow the bandwidth
  542.       buckets to become negative. Bugfix on 0.1.2.x; fixes bug 544.
  543.   o Major bugfixes (v3 dir, bugfixes on 0.2.0.9-alpha):
  544.     - When the consensus lists a router descriptor that we previously were
  545.       mirroring, but that we considered non-canonical, reload the
  546.       descriptor as canonical. This fixes bug 543 where Tor servers
  547.       would start complaining after a few days that they don't have
  548.       enough directory information to build a circuit.
  549.     - Consider replacing the current consensus when certificates arrive
  550.       that make the pending consensus valid. Previously, we were only
  551.       considering replacement when the new certs _didn't_ help.
  552.     - Fix an assert error on startup if we didn't already have the
  553.       consensus and certs cached in our datadirectory: we were caching
  554.       the consensus in consensus_waiting_for_certs but then free'ing it
  555.       right after.
  556.     - Avoid sending a request for "keys/fp" (for which we'll get a 400 Bad
  557.       Request) if we need more v3 certs but we've already got pending
  558.       requests for all of them.
  559.     - Correctly back off from failing certificate downloads. Fixes
  560.       bug 546.
  561.     - Authorities don't vote on the Running flag if they have been running
  562.       for less than 30 minutes themselves. Fixes bug 547, where a newly
  563.       started authority would vote that everyone was down.
  564.   o New requirements:
  565.     - Drop support for OpenSSL version 0.9.6. Just about nobody was using
  566.       it, it had no AES, and it hasn't seen any security patches since
  567.       2004.
  568.   o Minor features:
  569.     - Clients now hold circuitless TLS connections open for 1.5 times
  570.       MaxCircuitDirtiness (15 minutes), since it is likely that they'll
  571.       rebuild a new circuit over them within that timeframe. Previously,
  572.       they held them open only for KeepalivePeriod (5 minutes).
  573.     - Use "If-Modified-Since" to avoid retrieving consensus
  574.       networkstatuses that we already have.
  575.     - When we have no consensus, check FallbackNetworkstatusFile (defaults
  576.       to $PREFIX/share/tor/fallback-consensus) for a consensus.  This way
  577.       we start knowing some directory caches.
  578.     - When we receive a consensus from the future, warn about skew.
  579.     - Improve skew reporting: try to give the user a better log message
  580.       about how skewed they are, and how much this matters.
  581.     - When we have a certificate for an authority, believe that
  582.       certificate's claims about the authority's IP address.
  583.     - New --quiet command-line option to suppress the default console log.
  584.       Good in combination with --hash-password.
  585.     - Authorities send back an X-Descriptor-Not-New header in response to
  586.       an accepted-but-discarded descriptor upload.  Partially implements
  587.       fix for bug 535.
  588.     - Make the log message for "tls error. breaking." more useful.
  589.     - Better log messages about certificate downloads, to attempt to
  590.       track down the second incarnation of bug 546.
  591.   o Minor features (bridges):
  592.     - If bridge users set UpdateBridgesFromAuthority, but the digest
  593.       they ask for is a 404 from the bridge authority, they now fall
  594.       back to trying the bridge directly.
  595.     - Bridges now use begin_dir to publish their server descriptor to
  596.       the bridge authority, even when they haven't set TunnelDirConns.
  597.   o Minor features (controller):
  598.     - When reporting clock skew, and we know that the clock is _at least
  599.       as skewed_ as some value, but we don't know the actual value,
  600.       report the value as a "minimum skew."
  601.   o Utilities:
  602.     - Update linux-tor-prio.sh script to allow QoS based on the uid of
  603.       the Tor process. Patch from Marco Bonetti with tweaks from Mike
  604.       Perry.
  605.   o Minor bugfixes:
  606.     - Refuse to start if both ORPort and UseBridges are set. Bugfix
  607.       on 0.2.0.x, suggested by Matt Edman.
  608.     - Don't stop fetching descriptors when FetchUselessDescriptors is
  609.       set, even if we stop asking for circuits. Bugfix on 0.1.2.x;
  610.       reported by tup and ioerror.
  611.     - Better log message on vote from unknown authority.
  612.     - Don't log "Launching 0 request for 0 router" message.
  613.   o Minor bugfixes (memory leaks):
  614.     - Stop leaking memory every time we parse a v3 certificate. Bugfix
  615.       on 0.2.0.1-alpha.
  616.     - Stop leaking memory every time we load a v3 certificate. Bugfix
  617.       on 0.2.0.1-alpha. Fixes bug 536.
  618.     - Stop leaking a cached networkstatus on exit.  Bugfix on
  619.       0.2.0.3-alpha.
  620.     - Stop leaking voter information every time we free a consensus.
  621.       Bugfix on 0.2.0.3-alpha.
  622.     - Stop leaking signed data every time we check a voter signature.
  623.       Bugfix on 0.2.0.3-alpha.
  624.     - Stop leaking a signature every time we fail to parse a consensus or
  625.       a vote.  Bugfix on 0.2.0.3-alpha.
  626.     - Stop leaking v2_download_status_map on shutdown.  Bugfix on
  627.       0.2.0.9-alpha.
  628.     - Stop leaking conn->nickname every time we make a connection to a
  629.       Tor relay without knowing its expected identity digest (e.g. when
  630.       using bridges). Bugfix on 0.2.0.3-alpha.
  631.   - Minor bugfixes (portability):
  632.     - Run correctly on platforms where rlim_t is larger than unsigned
  633.       long, and/or where the real limit for number of open files is
  634.       OPEN_FILES, not rlim_max from getrlimit(RLIMIT_NOFILES). In
  635.       particular, these may be needed for OS X 10.5.
  636. Changes in version 0.1.2.18 - 2007-10-28
  637.   Tor 0.1.2.18 fixes many problems including crash bugs, problems with
  638.   hidden service introduction that were causing huge delays, and a big
  639.   bug that was causing some servers to disappear from the network status
  640.   lists for a few hours each day.
  641.   o Major bugfixes (crashes):
  642.     - If a connection is shut down abruptly because of something that
  643.       happened inside connection_flushed_some(), do not call
  644.       connection_finished_flushing(). Should fix bug 451:
  645.       "connection_stop_writing: Assertion conn->write_event failed"
  646.       Bugfix on 0.1.2.7-alpha.
  647.     - Fix possible segfaults in functions called from
  648.       rend_process_relay_cell().
  649.   o Major bugfixes (hidden services):
  650.     - Hidden services were choosing introduction points uniquely by
  651.       hexdigest, but when constructing the hidden service descriptor
  652.       they merely wrote the (potentially ambiguous) nickname.
  653.     - Clients now use the v2 intro format for hidden service
  654.       connections: they specify their chosen rendezvous point by identity
  655.       digest rather than by (potentially ambiguous) nickname. These
  656.       changes could speed up hidden service connections dramatically.
  657.   o Major bugfixes (other):
  658.     - Stop publishing a new server descriptor just because we get a
  659.       HUP signal. This led (in a roundabout way) to some servers getting
  660.       dropped from the networkstatus lists for a few hours each day.
  661.     - When looking for a circuit to cannibalize, consider family as well
  662.       as identity. Fixes bug 438. Bugfix on 0.1.0.x (which introduced
  663.       circuit cannibalization).
  664.     - When a router wasn't listed in a new networkstatus, we were leaving
  665.       the flags for that router alone -- meaning it remained Named,
  666.       Running, etc -- even though absence from the networkstatus means
  667.       that it shouldn't be considered to exist at all anymore. Now we
  668.       clear all the flags for routers that fall out of the networkstatus
  669.       consensus. Fixes bug 529.
  670.   o Minor bugfixes:
  671.     - Don't try to access (or alter) the state file when running
  672.       --list-fingerprint or --verify-config or --hash-password. Resolves
  673.       bug 499.
  674.     - When generating information telling us how to extend to a given
  675.       router, do not try to include the nickname if it is
  676.       absent. Resolves bug 467.
  677.     - Fix a user-triggerable segfault in expand_filename(). (There isn't
  678.       a way to trigger this remotely.)
  679.     - When sending a status event to the controller telling it that an
  680.       OR address is reachable, set the port correctly. (Previously we
  681.       were reporting the dir port.)
  682.     - Fix a minor memory leak whenever a controller sends the PROTOCOLINFO
  683.       command. Bugfix on 0.1.2.17.
  684.     - When loading bandwidth history, do not believe any information in
  685.       the future. Fixes bug 434.
  686.     - When loading entry guard information, do not believe any information
  687.       in the future.
  688.     - When we have our clock set far in the future and generate an
  689.       onion key, then re-set our clock to be correct, we should not stop
  690.       the onion key from getting rotated.
  691.     - On some platforms, accept() can return a broken address. Detect
  692.       this more quietly, and deal accordingly. Fixes bug 483.
  693.     - It's not actually an error to find a non-pending entry in the DNS
  694.       cache when canceling a pending resolve. Don't log unless stuff
  695.       is fishy. Resolves bug 463.
  696.     - Don't reset trusted dir server list when we set a configuration
  697.       option. Patch from Robert Hogan.
  698.     - Don't try to create the datadir when running --verify-config or
  699.       --hash-password. Resolves bug 540.
  700. Changes in version 0.2.0.9-alpha - 2007-10-24
  701.   This ninth development snapshot switches clients to the new v3 directory
  702.   system; allows servers to be listed in the network status even when they
  703.   have the same nickname as a registered server; and fixes many other
  704.   bugs including a big one that was causing some servers to disappear
  705.   from the network status lists for a few hours each day.
  706.   o Major features (directory system):
  707.     - Clients now download v3 consensus networkstatus documents instead
  708.       of v2 networkstatus documents. Clients and caches now base their
  709.       opinions about routers on these consensus documents. Clients only
  710.       download router descriptors listed in the consensus.
  711.     - Authorities now list servers who have the same nickname as
  712.       a different named server, but list them with a new flag,
  713.       "Unnamed". Now we can list servers that happen to pick the same
  714.       nickname as a server that registered two years ago and then
  715.       disappeared. Partially implements proposal 122.
  716.     - If the consensus lists a router as "Unnamed", the name is assigned
  717.       to a different router: do not identify the router by that name.
  718.       Partially implements proposal 122.
  719.     - Authorities can now come to a consensus on which method to use to
  720.       compute the consensus. This gives us forward compatibility.
  721.   o Major bugfixes:
  722.     - Stop publishing a new server descriptor just because we HUP or
  723.       when we find our DirPort to be reachable but won't actually publish
  724.       it. New descriptors without any real changes are dropped by the
  725.       authorities, and can screw up our "publish every 18 hours" schedule.
  726.       Bugfix on 0.1.2.x.
  727.     - When a router wasn't listed in a new networkstatus, we were leaving
  728.       the flags for that router alone -- meaning it remained Named,
  729.       Running, etc -- even though absence from the networkstatus means
  730.       that it shouldn't be considered to exist at all anymore. Now we
  731.       clear all the flags for routers that fall out of the networkstatus
  732.       consensus. Fixes bug 529; bugfix on 0.1.2.x.
  733.     - Fix awful behavior in DownloadExtraInfo option where we'd fetch
  734.       extrainfo documents and then discard them immediately for not
  735.       matching the latest router. Bugfix on 0.2.0.1-alpha.
  736.   o Minor features (v3 directory protocol):
  737.     - Allow tor-gencert to generate a new certificate without replacing
  738.       the signing key.
  739.     - Allow certificates to include an address.
  740.     - When we change our directory-cache settings, reschedule all voting
  741.       and download operations.
  742.     - Reattempt certificate downloads immediately on failure, as long as
  743.       we haven't failed a threshold number of times yet.
  744.     - Delay retrying consensus downloads while we're downloading
  745.       certificates to verify the one we just got.  Also, count getting a
  746.       consensus that we already have (or one that isn't valid) as a failure,
  747.       and count failing to get the certificates after 20 minutes as a
  748.       failure.
  749.     - Build circuits and download descriptors even if our consensus is a
  750.       little expired. (This feature will go away once authorities are
  751.       more reliable.)
  752.   o Minor features (router descriptor cache):
  753.     - If we find a cached-routers file that's been sitting around for more
  754.       than 28 days unmodified, then most likely it's a leftover from
  755.       when we upgraded to 0.2.0.8-alpha. Remove it. It has no good
  756.       routers anyway.
  757.     - When we (as a cache) download a descriptor because it was listed
  758.       in a consensus, remember when the consensus was supposed to expire,
  759.       and don't expire the descriptor until then.
  760.   o Minor features (performance):
  761.     - Call routerlist_remove_old_routers() much less often. This should
  762.       speed startup, especially on directory caches.
  763.     - Don't try to launch new descriptor downloads quite so often when we
  764.       already have enough directory information to build circuits.
  765.     - Base64 decoding was actually showing up on our profile when parsing
  766.       the initial descriptor file; switch to an in-process all-at-once
  767.       implementation that's about 3.5x times faster than calling out to
  768.       OpenSSL.
  769.   o Minor features (compilation):
  770.     - Detect non-ASCII platforms (if any still exist) and refuse to
  771.       build there: some of our code assumes that 'A' is 65 and so on.
  772.   o Minor bugfixes (v3 directory authorities, bugfixes on 0.2.0.x):
  773.     - Make the "next period" votes into "current period" votes immediately
  774.       after publishing the consensus; avoid a heisenbug that made them
  775.       stick around indefinitely.
  776.     - When we discard a vote as a duplicate, do not report this as
  777.       an error.
  778.     - Treat missing v3 keys or certificates as an error when running as a
  779.       v3 directory authority.
  780.     - When we're configured to be a v3 authority, but we're only listed
  781.       as a non-v3 authority in our DirServer line for ourself, correct
  782.       the listing.
  783.     - If an authority doesn't have a qualified hostname, just put
  784.       its address in the vote. This fixes the problem where we referred to
  785.       "moria on moria:9031."
  786.     - Distinguish between detached signatures for the wrong period, and
  787.       detached signatures for a divergent vote.
  788.     - Fix a small memory leak when computing a consensus.
  789.     - When there's no concensus, we were forming a vote every 30
  790.       minutes, but writing the "valid-after" line in our vote based
  791.       on our configured V3AuthVotingInterval: so unless the intervals
  792.       matched up, we immediately rejected our own vote because it didn't
  793.       start at the voting interval that caused us to construct a vote.
  794.   o Minor bugfixes (v3 directory protocol, bugfixes on 0.2.0.x):
  795.     - Delete unverified-consensus when the real consensus is set.
  796.     - Consider retrying a consensus networkstatus fetch immediately
  797.       after one fails: don't wait 60 seconds to notice.
  798.     - When fetching a consensus as a cache, wait until a newer consensus
  799.       should exist before trying to replace the current one.
  800.     - Use a more forgiving schedule for retrying failed consensus
  801.       downloads than for other types.
  802.   o Minor bugfixes (other directory issues):
  803.     - Correct the implementation of "download votes by digest." Bugfix on
  804.       0.2.0.8-alpha.
  805.     - Authorities no longer send back "400 you're unreachable please fix
  806.       it" errors to Tor servers that aren't online all the time. We're
  807.       supposed to tolerate these servers now. Bugfix on 0.1.2.x.
  808.   o Minor bugfixes (controller):
  809.     - Don't reset trusted dir server list when we set a configuration
  810.       option. Patch from Robert Hogan; bugfix on 0.1.2.x.
  811.     - Respond to INT and TERM SIGNAL commands before we execute the
  812.       signal, in case the signal shuts us down. We had a patch in
  813.       0.1.2.1-alpha that tried to do this by queueing the response on
  814.       the connection's buffer before shutting down, but that really
  815.       isn't the same thing at all. Bug located by Matt Edman.
  816.   o Minor bugfixes (misc):
  817.     - Correctly check for bad options to the "PublishServerDescriptor"
  818.       config option. Bugfix on 0.2.0.1-alpha; reported by Matt Edman.
  819.     - Stop leaking memory on failing case of base32_decode, and make
  820.       it accept upper-case letters. Bugfixes on 0.2.0.7-alpha.
  821.     - Don't try to download extrainfo documents when we're trying to
  822.       fetch enough directory info to build a circuit: having enough
  823.       info should get priority. Bugfix on 0.2.0.x.
  824.     - Don't complain that "your server has not managed to confirm that its
  825.       ports are reachable" if we haven't been able to build any circuits
  826.       yet. Bug found by spending four hours without a v3 consensus. Bugfix
  827.       on 0.1.2.x.
  828.     - Detect the reason for failing to mmap a descriptor file we just
  829.       wrote, and give a more useful log message.  Fixes bug 533. Bugfix
  830.       on 0.1.2.x.
  831.   o Code simplifications and refactoring:
  832.     - Remove support for the old bw_accounting file: we've been storing
  833.       bandwidth accounting information in the state file since
  834.       0.1.2.5-alpha.  This may result in bandwidth accounting errors
  835.       if you try to upgrade from 0.1.1.x or earlier, or if you try to
  836.       downgrade to 0.1.1.x or earlier.
  837.     - New convenience code to locate a file within the DataDirectory.
  838.     - Move non-authority functionality out of dirvote.c.
  839.     - Refactor the arguments for router_pick_{directory_|trusteddir}server
  840.       so that they all take the same named flags.
  841.   o Utilities
  842.     - Include the "tor-ctrl.sh" bash script by Stefan Behte to provide
  843.       Unix users an easy way to script their Tor process (e.g. by
  844.       adjusting bandwidth based on the time of the day).
  845. Changes in version 0.2.0.8-alpha - 2007-10-12
  846.   This eighth development snapshot fixes a crash bug that's been bothering
  847.   us since February 2007, lets bridge authorities store a list of bridge
  848.   descriptors they've seen, gets v3 directory voting closer to working,
  849.   starts caching v3 directory consensus documents on directory mirrors,
  850.   and fixes a variety of smaller issues including some minor memory leaks.
  851.   o Major features (router descriptor cache):
  852.     - Store routers in a file called cached-descriptors instead of in
  853.       cached-routers. Initialize cached-descriptors from cached-routers
  854.       if the old format is around. The new format allows us to store
  855.       annotations along with descriptors.
  856.     - Use annotations to record the time we received each descriptor, its
  857.       source, and its purpose.
  858.     - Disable the SETROUTERPURPOSE controller command: it is now
  859.       obsolete.
  860.     - Controllers should now specify cache=no or cache=yes when using
  861.       the +POSTDESCRIPTOR command.
  862.     - Bridge authorities now write bridge descriptors to disk, meaning
  863.       we can export them to other programs and begin distributing them
  864.       to blocked users.
  865.   o Major features (directory authorities):
  866.     - When a v3 authority is missing votes or signatures, it now tries
  867.       to fetch them.
  868.     - Directory authorities track weighted fractional uptime as well as
  869.       weighted mean-time-between failures.  WFU is suitable for deciding
  870.       whether a node is "usually up", while MTBF is suitable for deciding
  871.       whether a node is "likely to stay up."  We need both, because
  872.       "usually up" is a good requirement for guards, while "likely to
  873.       stay up" is a good requirement for long-lived connections.
  874.   o Major features (v3 directory system):
  875.     - Caches now download v3 network status documents as needed,
  876.       and download the descriptors listed in them.
  877.     - All hosts now attempt to download and keep fresh v3 authority
  878.       certificates, and re-attempt after failures.
  879.     - More internal-consistency checks for vote parsing.
  880.   o Major bugfixes (crashes):
  881.     - If a connection is shut down abruptly because of something that
  882.       happened inside connection_flushed_some(), do not call
  883.       connection_finished_flushing(). Should fix bug 451. Bugfix on
  884.       0.1.2.7-alpha.
  885.   o Major bugfixes (performance):
  886.     - Fix really bad O(n^2) performance when parsing a long list of
  887.       routers: Instead of searching the entire list for an "extra-info "
  888.       string which usually wasn't there, once for every routerinfo
  889.       we read, just scan lines forward until we find one we like.
  890.       Bugfix on 0.2.0.1.
  891.     - When we add data to a write buffer in response to the data on that
  892.       write buffer getting low because of a flush, do not consider the
  893.       newly added data as a candidate for immediate flushing, but rather
  894.       make it wait until the next round of writing. Otherwise, we flush
  895.       and refill recursively, and a single greedy TLS connection can
  896.       eat all of our bandwidth. Bugfix on 0.1.2.7-alpha.
  897.   o Minor features (v3 authority system):
  898.     - Add more ways for tools to download the votes that lead to the
  899.       current consensus.
  900.     - Send a 503 when low on bandwidth and a vote, consensus, or
  901.       certificate is requested.
  902.     - If-modified-since is now implemented properly for all kinds of
  903.       certificate requests.
  904.   o Minor bugfixes (network statuses):
  905.     - Tweak the implementation of proposal 109 slightly: allow at most
  906.       two Tor servers on the same IP address, except if it's the location
  907.       of a directory authority, in which case allow five. Bugfix on
  908.       0.2.0.3-alpha.
  909.   o Minor bugfixes (controller):
  910.     - When sending a status event to the controller telling it that an
  911.       OR address is reachable, set the port correctly. (Previously we
  912.       were reporting the dir port.) Bugfix on 0.1.2.x.
  913.   o Minor bugfixes (v3 directory system):
  914.     - Fix logic to look up a cert by its signing key digest. Bugfix on
  915.       0.2.0.7-alpha.
  916.     - Only change the reply to a vote to "OK" if it's not already
  917.       set. This gets rid of annoying "400 OK" log messages, which may
  918.       have been masking some deeper issue. Bugfix on 0.2.0.7-alpha.
  919.     - When we get a valid consensus, recompute the voting schedule.
  920.     - Base the valid-after time of a vote on the consensus voting
  921.       schedule, not on our preferred schedule.
  922.     - Make the return values and messages from signature uploads and
  923.       downloads more sensible.
  924.     - Fix a memory leak when serving votes and consensus documents, and
  925.       another when serving certificates.
  926.   o Minor bugfixes (performance):
  927.     - Use a slightly simpler string hashing algorithm (copying Python's
  928.       instead of Java's) and optimize our digest hashing algorithm to take
  929.       advantage of 64-bit platforms and to remove some possibly-costly
  930.       voodoo.
  931.     - Fix a minor memory leak whenever we parse guards from our state
  932.       file. Bugfix on 0.2.0.7-alpha.
  933.     - Fix a minor memory leak whenever we write out a file. Bugfix on
  934.       0.2.0.7-alpha.
  935.     - Fix a minor memory leak whenever a controller sends the PROTOCOLINFO
  936.       command. Bugfix on 0.2.0.5-alpha.
  937.   o Minor bugfixes (portability):
  938.     - On some platforms, accept() can return a broken address. Detect
  939.       this more quietly, and deal accordingly. Fixes bug 483.
  940.     - Stop calling tor_strlower() on uninitialized memory in some cases.
  941.       Bugfix in 0.2.0.7-alpha.
  942.   o Minor bugfixes (usability):
  943.     - Treat some 403 responses from directory servers as INFO rather than
  944.       WARN-severity events.
  945.     - It's not actually an error to find a non-pending entry in the DNS
  946.       cache when canceling a pending resolve. Don't log unless stuff is
  947.       fishy. Resolves bug 463.
  948.   o Minor bugfixes (anonymity):
  949.     - Never report that we've used more bandwidth than we're willing to
  950.       relay: it leaks how much non-relay traffic we're using. Resolves
  951.       bug 516.
  952.     - When looking for a circuit to cannibalize, consider family as well
  953.       as identity. Fixes bug 438. Bugfix on 0.1.0.x (which introduced
  954.       circuit cannibalization).
  955.   o Code simplifications and refactoring:
  956.     - Make a bunch of functions static. Remove some dead code.
  957.     - Pull out about a third of the really big routerlist.c; put it in a
  958.       new module, networkstatus.c.
  959.     - Merge the extra fields in local_routerstatus_t back into
  960.       routerstatus_t: we used to need one routerstatus_t for each
  961.       authority's opinion, plus a local_routerstatus_t for the locally
  962.       computed consensus opinion. To save space, we put the locally
  963.       modified fields into local_routerstatus_t, and only the common
  964.       stuff into routerstatus_t. But once v3 directories are in use,
  965.       clients and caches will no longer need to hold authority opinions;
  966.       thus, the rationale for keeping the types separate is now gone.
  967.     - Make the code used to reschedule and reattempt downloads more
  968.       uniform.
  969.     - Turn all 'Are we a directory server/mirror?' logic into a call to
  970.       dirserver_mode().
  971.     - Remove the code to generate the oldest (v1) directory format.
  972.       The code has been disabled since 0.2.0.5-alpha.
  973. Changes in version 0.2.0.7-alpha - 2007-09-21
  974.   This seventh development snapshot makes bridges work again, makes bridge
  975.   authorities work for the first time, fixes two huge performance flaws
  976.   in hidden services, and fixes a variety of minor issues.
  977.   o New directory authorities:
  978.     - Set up moria1 and tor26 as the first v3 directory authorities. See
  979.       doc/spec/dir-spec.txt for details on the new directory design.
  980.   o Major bugfixes (crashes):
  981.     - Fix possible segfaults in functions called from
  982.       rend_process_relay_cell(). Bugfix on 0.1.2.x.
  983.   o Major bugfixes (bridges):
  984.     - Fix a bug that made servers send a "404 Not found" in response to
  985.       attempts to fetch their server descriptor. This caused Tor servers
  986.       to take many minutes to establish reachability for their DirPort,
  987.       and it totally crippled bridges. Bugfix on 0.2.0.5-alpha.
  988.     - Make "UpdateBridgesFromAuthority" torrc option work: when bridge
  989.       users configure that and specify a bridge with an identity
  990.       fingerprint, now they will lookup the bridge descriptor at the
  991.       default bridge authority via a one-hop tunnel, but once circuits
  992.       are established they will switch to a three-hop tunnel for later
  993.       connections to the bridge authority. Bugfix in 0.2.0.3-alpha.
  994.   o Major bugfixes (hidden services):
  995.     - Hidden services were choosing introduction points uniquely by
  996.       hexdigest, but when constructing the hidden service descriptor
  997.       they merely wrote the (potentially ambiguous) nickname.
  998.     - Clients now use the v2 intro format for hidden service
  999.       connections: they specify their chosen rendezvous point by identity
  1000.       digest rather than by (potentially ambiguous) nickname. Both
  1001.       are bugfixes on 0.1.2.x, and they could speed up hidden service
  1002.       connections dramatically. Thanks to Karsten Loesing.
  1003.   o Minor features (security):
  1004.     - As a client, do not believe any server that tells us that an
  1005.       address maps to an internal address space.
  1006.     - Make it possible to enable HashedControlPassword and
  1007.       CookieAuthentication at the same time.
  1008.   o Minor features (guard nodes):
  1009.     - Tag every guard node in our state file with the version that
  1010.       we believe added it, or with our own version if we add it. This way,
  1011.       if a user temporarily runs an old version of Tor and then switches
  1012.       back to a new one, she doesn't automatically lose her guards.
  1013.   o Minor features (speed):
  1014.     - When implementing AES counter mode, update only the portions of the
  1015.       counter buffer that need to change, and don't keep separate
  1016.       network-order and host-order counters when they are the same (i.e.,
  1017.       on big-endian hosts.)
  1018.   o Minor features (controller):
  1019.     - Accept LF instead of CRLF on controller, since some software has a
  1020.       hard time generating real Internet newlines.
  1021.     - Add GETINFO values for the server status events
  1022.       "REACHABILITY_SUCCEEDED" and "GOOD_SERVER_DESCRIPTOR". Patch from
  1023.       Robert Hogan.
  1024.   o Removed features:
  1025.      - Routers no longer include bandwidth-history lines in their
  1026.        descriptors; this information is already available in extra-info
  1027.        documents, and including it in router descriptors took up 60%
  1028.        (!) of compressed router descriptor downloads. Completes
  1029.        implementation of proposal 104.
  1030.      - Remove the contrib scripts ExerciseServer.py, PathDemo.py,
  1031.        and TorControl.py, as they use the old v0 controller protocol,
  1032.        and are obsoleted by TorFlow anyway.
  1033.      - Drop support for v1 rendezvous descriptors, since we never used
  1034.        them anyway, and the code has probably rotted by now. Based on
  1035.        patch from Karsten Loesing.
  1036.      - On OSX, stop warning the user that kqueue support in libevent is
  1037.       "experimental", since it seems to have worked fine for ages.
  1038.   o Minor bugfixes:
  1039.     - When generating information telling us how to extend to a given
  1040.       router, do not try to include the nickname if it is absent. Fixes
  1041.       bug 467. Bugfix on 0.2.0.3-alpha.
  1042.     - Fix a user-triggerable (but not remotely-triggerable) segfault
  1043.       in expand_filename(). Bugfix on 0.1.2.x.
  1044.     - Fix a memory leak when freeing incomplete requests from DNSPort.
  1045.       Found by Niels Provos with valgrind. Bugfix on 0.2.0.1-alpha.
  1046.     - Don't try to access (or alter) the state file when running
  1047.       --list-fingerprint or --verify-config or --hash-password. (Resolves
  1048.       bug 499.) Bugfix on 0.1.2.x.
  1049.     - Servers used to decline to publish their DirPort if their
  1050.       BandwidthRate, RelayBandwidthRate, or MaxAdvertisedBandwidth
  1051.       were below a threshold. Now they only look at BandwidthRate and
  1052.       RelayBandwidthRate. Bugfix on 0.1.2.x.
  1053.     - Remove an optimization in the AES counter-mode code that assumed
  1054.       that the counter never exceeded 2^68. When the counter can be set
  1055.       arbitrarily as an IV (as it is by Karsten's new hidden services
  1056.       code), this assumption no longer holds. Bugfix on 0.1.2.x.
  1057.     - Resume listing "AUTHORITY" flag for authorities in network status.
  1058.       Bugfix on 0.2.0.3-alpha; reported by Alex de Joode.
  1059.   o Code simplifications and refactoring:
  1060.     - Revamp file-writing logic so we don't need to have the entire
  1061.       contents of a file in memory at once before we write to disk. Tor,
  1062.       meet stdio.
  1063.     - Turn "descriptor store" into a full-fledged type.
  1064.     - Move all NT services code into a separate source file.
  1065.     - Unify all code that computes medians, percentile elements, etc.
  1066.     - Get rid of a needless malloc when parsing address policies.
  1067. Changes in version 0.1.2.17 - 2007-08-30
  1068.   Tor 0.1.2.17 features a new Vidalia version in the Windows and OS
  1069.   X bundles. Vidalia 0.0.14 makes authentication required for the
  1070.   ControlPort in the default configuration, which addresses important
  1071.   security risks. Everybody who uses Vidalia (or another controller)
  1072.   should upgrade.
  1073.   In addition, this Tor update fixes major load balancing problems with
  1074.   path selection, which should speed things up a lot once many people
  1075.   have upgraded.
  1076.   o Major bugfixes (security):
  1077.     - We removed support for the old (v0) control protocol. It has been
  1078.       deprecated since Tor 0.1.1.1-alpha, and keeping it secure has
  1079.       become more of a headache than it's worth.
  1080.   o Major bugfixes (load balancing):
  1081.     - When choosing nodes for non-guard positions, weight guards
  1082.       proportionally less, since they already have enough load. Patch
  1083.       from Mike Perry.
  1084.     - Raise the "max believable bandwidth" from 1.5MB/s to 10MB/s. This
  1085.       will allow fast Tor servers to get more attention.
  1086.     - When we're upgrading from an old Tor version, forget our current
  1087.       guards and pick new ones according to the new weightings. These
  1088.       three load balancing patches could raise effective network capacity
  1089.       by a factor of four. Thanks to Mike Perry for measurements.
  1090.   o Major bugfixes (stream expiration):
  1091.     - Expire not-yet-successful application streams in all cases if
  1092.       they've been around longer than SocksTimeout. Right now there are
  1093.       some cases where the stream will live forever, demanding a new
  1094.       circuit every 15 seconds. Fixes bug 454; reported by lodger.
  1095.   o Minor features (controller):
  1096.     - Add a PROTOCOLINFO controller command. Like AUTHENTICATE, it
  1097.       is valid before any authentication has been received. It tells
  1098.       a controller what kind of authentication is expected, and what
  1099.       protocol is spoken. Implements proposal 119.
  1100.   o Minor bugfixes (performance):
  1101.     - Save on most routerlist_assert_ok() calls in routerlist.c, thus
  1102.       greatly speeding up loading cached-routers from disk on startup.
  1103.     - Disable sentinel-based debugging for buffer code: we squashed all
  1104.       the bugs that this was supposed to detect a long time ago, and now
  1105.       its only effect is to change our buffer sizes from nice powers of
  1106.       two (which platform mallocs tend to like) to values slightly over
  1107.       powers of two (which make some platform mallocs sad).
  1108.   o Minor bugfixes (misc):
  1109.     - If exit bandwidth ever exceeds one third of total bandwidth, then
  1110.       use the correct formula to weight exit nodes when choosing paths.
  1111.       Based on patch from Mike Perry.
  1112.     - Choose perfectly fairly among routers when choosing by bandwidth and
  1113.       weighting by fraction of bandwidth provided by exits. Previously, we
  1114.       would choose with only approximate fairness, and correct ourselves
  1115.       if we ran off the end of the list.
  1116.     - If we require CookieAuthentication but we fail to write the
  1117.       cookie file, we would warn but not exit, and end up in a state
  1118.       where no controller could authenticate. Now we exit.
  1119.     - If we require CookieAuthentication, stop generating a new cookie
  1120.       every time we change any piece of our config.
  1121.     - Refuse to start with certain directory authority keys, and
  1122.       encourage people using them to stop.
  1123.     - Terminate multi-line control events properly. Original patch
  1124.       from tup.
  1125.     - Fix a minor memory leak when we fail to find enough suitable
  1126.       servers to choose a circuit.
  1127.     - Stop leaking part of the descriptor when we run into a particularly
  1128.       unparseable piece of it.
  1129. Changes in version 0.2.0.6-alpha - 2007-08-26
  1130.   This sixth development snapshot features a new Vidalia version in the
  1131.   Windows and OS X bundles. Vidalia 0.0.14 makes authentication required for
  1132.   the ControlPort in the default configuration, which addresses important
  1133.   security risks.
  1134.   In addition, this snapshot fixes major load balancing problems
  1135.   with path selection, which should speed things up a lot once many
  1136.   people have upgraded. The directory authorities also use a new
  1137.   mean-time-between-failure approach to tracking which servers are stable,
  1138.   rather than just looking at the most recent uptime.
  1139.   o New directory authorities:
  1140.     - Set up Tonga as the default bridge directory authority.
  1141.   o Major features:
  1142.     - Directory authorities now track servers by weighted
  1143.       mean-times-between-failures. When we have 4 or more days of data,
  1144.       use measured MTBF rather than declared uptime to decide whether
  1145.       to call a router Stable. Implements proposal 108.
  1146.   o Major bugfixes (load balancing):
  1147.     - When choosing nodes for non-guard positions, weight guards
  1148.       proportionally less, since they already have enough load. Patch
  1149.       from Mike Perry.
  1150.     - Raise the "max believable bandwidth" from 1.5MB/s to 10MB/s. This
  1151.       will allow fast Tor servers to get more attention.
  1152.     - When we're upgrading from an old Tor version, forget our current
  1153.       guards and pick new ones according to the new weightings. These
  1154.       three load balancing patches could raise effective network capacity
  1155.       by a factor of four. Thanks to Mike Perry for measurements.
  1156.   o Major bugfixes (descriptor parsing):
  1157.     - Handle unexpected whitespace better in malformed descriptors. Bug
  1158.       found using Benedikt Boss's new Tor fuzzer! Bugfix on 0.2.0.x.
  1159.   o Minor features:
  1160.     - There is now an ugly, temporary "desc/all-recent-extrainfo-hack"
  1161.       GETINFO for Torstat to use until it can switch to using extrainfos.
  1162.     - Optionally (if built with -DEXPORTMALLINFO) export the output
  1163.       of mallinfo via http, as tor/mallinfo.txt. Only accessible
  1164.       from localhost.
  1165.   o Minor bugfixes:
  1166.     - Do not intermix bridge routers with controller-added
  1167.       routers. (Bugfix on 0.2.0.x)
  1168.     - Do not fail with an assert when accept() returns an unexpected
  1169.       address family. Addresses but does not wholly fix bug 483. (Bugfix
  1170.       on 0.2.0.x)
  1171.     - Let directory authorities startup even when they can't generate
  1172.       a descriptor immediately, e.g. because they don't know their
  1173.       address.
  1174.     - Stop putting the authentication cookie in a file called "0"
  1175.       in your working directory if you don't specify anything for the
  1176.       new CookieAuthFile option. Reported by Matt Edman.
  1177.     - Make it possible to read the PROTOCOLINFO response in a way that
  1178.       conforms to our control-spec. Reported by Matt Edman.
  1179.     - Fix a minor memory leak when we fail to find enough suitable
  1180.       servers to choose a circuit. Bugfix on 0.1.2.x.
  1181.     - Stop leaking part of the descriptor when we run into a particularly
  1182.       unparseable piece of it. Bugfix on 0.1.2.x.
  1183.     - Unmap the extrainfo cache file on exit.
  1184. Changes in version 0.2.0.5-alpha - 2007-08-19
  1185.   This fifth development snapshot fixes compilation on Windows again;
  1186.   fixes an obnoxious client-side bug that slowed things down and put
  1187.   extra load on the network; gets us closer to using the v3 directory
  1188.   voting scheme; makes it easier for Tor controllers to use cookie-based
  1189.   authentication; and fixes a variety of other bugs.
  1190.   o Removed features:
  1191.     - Version 1 directories are no longer generated in full. Instead,
  1192.       authorities generate and serve "stub" v1 directories that list
  1193.       no servers. This will stop Tor versions 0.1.0.x and earlier from
  1194.       working, but (for security reasons) nobody should be running those
  1195.       versions anyway.
  1196.   o Major bugfixes (compilation, 0.2.0.x):
  1197.     - Try to fix Win32 compilation again: improve checking for IPv6 types.
  1198.     - Try to fix MSVC compilation: build correctly on platforms that do
  1199.       not define s6_addr16 or s6_addr32.
  1200.     - Fix compile on platforms without getaddrinfo: bug found by Li-Hui
  1201.       Zhou.
  1202.   o Major bugfixes (stream expiration):
  1203.     - Expire not-yet-successful application streams in all cases if
  1204.       they've been around longer than SocksTimeout. Right now there are
  1205.       some cases where the stream will live forever, demanding a new
  1206.       circuit every 15 seconds. Bugfix on 0.1.2.7-alpha; fixes bug 454;
  1207.       reported by lodger.
  1208.   o Minor features (directory servers):
  1209.     - When somebody requests a list of statuses or servers, and we have
  1210.       none of those, return a 404 rather than an empty 200.
  1211.   o Minor features (directory voting):
  1212.     - Store v3 consensus status consensuses on disk, and reload them
  1213.       on startup.
  1214.   o Minor features (security):
  1215.     - Warn about unsafe ControlPort configurations.
  1216.     - Refuse to start with certain directory authority keys, and
  1217.       encourage people using them to stop.
  1218.   o Minor features (controller):
  1219.     - Add a PROTOCOLINFO controller command. Like AUTHENTICATE, it
  1220.       is valid before any authentication has been received. It tells
  1221.       a controller what kind of authentication is expected, and what
  1222.       protocol is spoken. Implements proposal 119.
  1223.     - New config option CookieAuthFile to choose a new location for the
  1224.       cookie authentication file, and config option
  1225.       CookieAuthFileGroupReadable to make it group-readable.
  1226.   o Minor features (unit testing):
  1227.     - Add command-line arguments to unit-test executable so that we can
  1228.       invoke any chosen test from the command line rather than having
  1229.       to run the whole test suite at once; and so that we can turn on
  1230.       logging for the unit tests.
  1231.   o Minor bugfixes (on 0.1.2.x):
  1232.     - If we require CookieAuthentication but we fail to write the
  1233.       cookie file, we would warn but not exit, and end up in a state
  1234.       where no controller could authenticate. Now we exit.
  1235.     - If we require CookieAuthentication, stop generating a new cookie
  1236.       every time we change any piece of our config.
  1237.     - When loading bandwidth history, do not believe any information in
  1238.       the future.  Fixes bug 434.
  1239.     - When loading entry guard information, do not believe any information
  1240.       in the future.
  1241.     - When we have our clock set far in the future and generate an
  1242.       onion key, then re-set our clock to be correct, we should not stop
  1243.       the onion key from getting rotated.
  1244.     - Clean up torrc sample config file.
  1245.     - Do not automatically run configure from autogen.sh. This
  1246.       non-standard behavior tended to annoy people who have built other
  1247.       programs.
  1248.   o Minor bugfixes (on 0.2.0.x):
  1249.     - Fix a bug with AutomapHostsOnResolve that would always cause
  1250.       the second request to fail. Bug reported by Kate. Bugfix on
  1251.       0.2.0.3-alpha.
  1252.     - Fix a bug in ADDRMAP controller replies that would sometimes
  1253.       try to print a NULL. Patch from tup.
  1254.     - Read v3 directory authority keys from the right location.
  1255.     - Numerous bugfixes to directory voting code.
  1256. Changes in version 0.1.2.16 - 2007-08-01
  1257.   Tor 0.1.2.16 fixes a critical security vulnerability that allows a
  1258.   remote attacker in certain situations to rewrite the user's torrc
  1259.   configuration file. This can completely compromise anonymity of users
  1260.   in most configurations, including those running the Vidalia bundles,
  1261.   TorK, etc. Or worse.
  1262.   o Major security fixes:
  1263.     - Close immediately after missing authentication on control port;
  1264.       do not allow multiple authentication attempts.
  1265. Changes in version 0.2.0.4-alpha - 2007-08-01
  1266.   This fourth development snapshot fixes a critical security vulnerability
  1267.   for most users, specifically those running Vidalia, TorK, etc. Everybody
  1268.   should upgrade to either 0.1.2.16 or 0.2.0.4-alpha.
  1269.   o Major security fixes:
  1270.     - Close immediately after missing authentication on control port;
  1271.       do not allow multiple authentication attempts.
  1272.   o Major bugfixes (compilation):
  1273.     - Fix win32 compilation: apparently IN_ADDR and IN6_ADDR are already
  1274.       defined there.
  1275.   o Minor features (performance):
  1276.     - Be even more aggressive about releasing RAM from small
  1277.       empty buffers. Thanks to our free-list code, this shouldn't be too
  1278.       performance-intensive.
  1279.     - Disable sentinel-based debugging for buffer code: we squashed all
  1280.       the bugs that this was supposed to detect a long time ago, and
  1281.       now its only effect is to change our buffer sizes from nice
  1282.       powers of two (which platform mallocs tend to like) to values
  1283.       slightly over powers of two (which make some platform mallocs sad).
  1284.     - Log malloc statistics from mallinfo() on platforms where it
  1285.       exists.
  1286. Changes in version 0.2.0.3-alpha - 2007-07-29
  1287.   This third development snapshot introduces new experimental
  1288.   blocking-resistance features and a preliminary version of the v3
  1289.   directory voting design, and includes many other smaller features
  1290.   and bugfixes.
  1291.   o Major features:
  1292.     - The first pieces of our "bridge" design for blocking-resistance
  1293.       are implemented. People can run bridge directory authorities;
  1294.       people can run bridges; and people can configure their Tor clients
  1295.       with a set of bridges to use as the first hop into the Tor network.
  1296.       See http://archives.seul.org/or/talk/Jul-2007/msg00249.html for
  1297.       details.
  1298.     - Create listener connections before we setuid to the configured
  1299.       User and Group. Now non-Windows users can choose port values
  1300.       under 1024, start Tor as root, and have Tor bind those ports
  1301.       before it changes to another UID. (Windows users could already
  1302.       pick these ports.)
  1303.     - Added a new ConstrainedSockets config option to set SO_SNDBUF and
  1304.       SO_RCVBUF on TCP sockets. Hopefully useful for Tor servers running
  1305.       on "vserver" accounts. (Patch from coderman.)
  1306.     - Be even more aggressive about separating local traffic from relayed
  1307.       traffic when RelayBandwidthRate is set. (Refines proposal 111.)
  1308.   o Major features (experimental):
  1309.     - First cut of code for "v3 dir voting": directory authorities will
  1310.       vote on a common network status document rather than each publishing
  1311.       their own opinion. This code needs more testing and more corner-case
  1312.       handling before it's ready for use.
  1313.   o Security fixes:
  1314.     - Directory authorities now call routers Fast if their bandwidth is
  1315.       at least 100KB/s, and consider their bandwidth adequate to be a
  1316.       Guard if it is at least 250KB/s, no matter the medians. This fix
  1317.       complements proposal 107. [Bugfix on 0.1.2.x]
  1318.     - Directory authorities now never mark more than 3 servers per IP as
  1319.       Valid and Running. (Implements proposal 109, by Kevin Bauer and
  1320.       Damon McCoy.)
  1321.     - Minor change to organizationName and commonName generation
  1322.       procedures in TLS certificates during Tor handshakes, to invalidate
  1323.       some earlier censorware approaches. This is not a long-term
  1324.       solution, but applying it will give us a bit of time to look into
  1325.       the epidemiology of countermeasures as they spread.
  1326.   o Major bugfixes (directory):
  1327.     - Rewrite directory tokenization code to never run off the end of
  1328.       a string. Fixes bug 455. Patch from croup. [Bugfix on 0.1.2.x]
  1329.   o Minor features (controller):
  1330.     - Add a SOURCE_ADDR field to STREAM NEW events so that controllers can
  1331.       match requests to applications. (Patch from Robert Hogan.)
  1332.     - Report address and port correctly on connections to DNSPort. (Patch
  1333.       from Robert Hogan.)
  1334.     - Add a RESOLVE command to launch hostname lookups. (Original patch
  1335.       from Robert Hogan.)
  1336.     - Add GETINFO status/enough-dir-info to let controllers tell whether
  1337.       Tor has downloaded sufficient directory information. (Patch
  1338.       from Tup.)
  1339.     - You can now use the ControlSocket option to tell Tor to listen for
  1340.       controller connections on Unix domain sockets on systems that
  1341.       support them. (Patch from Peter Palfrader.)
  1342.     - STREAM NEW events are generated for DNSPort requests and for
  1343.       tunneled directory connections. (Patch from Robert Hogan.)
  1344.     - New "GETINFO address-mappings/*" command to get address mappings
  1345.       with expiry information. "addr-mappings/*" is now deprecated.
  1346.       (Patch from Tup.)
  1347.   o Minor features (misc):
  1348.     - Merge in some (as-yet-unused) IPv6 address manipulation code. (Patch
  1349.       from croup.)
  1350.     - The tor-gencert tool for v3 directory authorities now creates all
  1351.       files as readable to the file creator only, and write-protects
  1352.       the authority identity key.
  1353.     - When dumping memory usage, list bytes used in buffer memory
  1354.       free-lists.
  1355.     - When running with dmalloc, dump more stats on hup and on exit.
  1356.     - Directory authorities now fail quickly and (relatively) harmlessly
  1357.       if they generate a network status document that is somehow
  1358.       malformed.
  1359.   o Traffic load balancing improvements:
  1360.     - If exit bandwidth ever exceeds one third of total bandwidth, then
  1361.       use the correct formula to weight exit nodes when choosing paths.
  1362.       (Based on patch from Mike Perry.)
  1363.     - Choose perfectly fairly among routers when choosing by bandwidth and
  1364.       weighting by fraction of bandwidth provided by exits. Previously, we
  1365.       would choose with only approximate fairness, and correct ourselves
  1366.       if we ran off the end of the list. [Bugfix on 0.1.2.x]
  1367.   o Performance improvements:
  1368.     - Be more aggressive with freeing buffer RAM or putting it on the
  1369.       memory free lists.
  1370.     - Use Critical Sections rather than Mutexes for synchronizing threads
  1371.       on win32; Mutexes are heavier-weight, and designed for synchronizing
  1372.       between processes.
  1373.   o Deprecated and removed features:
  1374.     - RedirectExits is now deprecated.
  1375.     - Stop allowing address masks that do not correspond to bit prefixes.
  1376.       We have warned about these for a really long time; now it's time
  1377.       to reject them. (Patch from croup.)
  1378.   o Minor bugfixes (directory):
  1379.     - Fix another crash bug related to extra-info caching. (Bug found by
  1380.       Peter Palfrader.) [Bugfix on 0.2.0.2-alpha]
  1381.     - Directories no longer return a "304 not modified" when they don't
  1382.       have the networkstatus the client asked for. Also fix a memory
  1383.       leak when returning 304 not modified. [Bugfixes on 0.2.0.2-alpha]
  1384.     - We had accidentally labelled 0.1.2.x directory servers as not
  1385.       suitable for begin_dir requests, and had labelled no directory
  1386.       servers as suitable for uploading extra-info documents. [Bugfix
  1387.       on 0.2.0.1-alpha]
  1388.   o Minor bugfixes (dns):
  1389.     - Fix a crash when DNSPort is set more than once. (Patch from Robert
  1390.       Hogan.) [Bugfix on 0.2.0.2-alpha]
  1391.     - Add DNSPort connections to the global connection list, so that we
  1392.       can time them out correctly. (Bug found by Robert Hogan.) [Bugfix
  1393.       on 0.2.0.2-alpha]
  1394.     - Fix a dangling reference that could lead to a crash when DNSPort is
  1395.       changed or closed (Patch from Robert Hogan.) [Bugfix on
  1396.       0.2.0.2-alpha]
  1397.   o Minor bugfixes (controller):
  1398.     - Provide DNS expiry times in GMT, not in local time. For backward
  1399.       compatibility, ADDRMAP events only provide GMT expiry in an extended
  1400.       field. "GETINFO address-mappings" always does the right thing.
  1401.     - Use CRLF line endings properly in NS events.
  1402.     - Terminate multi-line control events properly. (Original patch
  1403.       from tup.) [Bugfix on 0.1.2.x-alpha]
  1404.     - Do not include spaces in SOURCE_ADDR fields in STREAM
  1405.       events. Resolves bug 472. [Bugfix on 0.2.0.x-alpha]
  1406. Changes in version 0.1.2.15 - 2007-07-17
  1407.   Tor 0.1.2.15 fixes several crash bugs, fixes some anonymity-related
  1408.   problems, fixes compilation on BSD, and fixes a variety of other
  1409.   bugs. Everybody should upgrade.
  1410.   o Major bugfixes (compilation):
  1411.     - Fix compile on FreeBSD/NetBSD/OpenBSD. Oops.
  1412.   o Major bugfixes (crashes):
  1413.     - Try even harder not to dereference the first character after
  1414.       an mmap(). Reported by lodger.
  1415.     - Fix a crash bug in directory authorities when we re-number the
  1416.       routerlist while inserting a new router.
  1417.     - When the cached-routers file is an even multiple of the page size,
  1418.       don't run off the end and crash. (Fixes bug 455; based on idea
  1419.       from croup.)
  1420.     - Fix eventdns.c behavior on Solaris: It is critical to include
  1421.       orconfig.h _before_ sys/types.h, so that we can get the expected
  1422.       definition of _FILE_OFFSET_BITS.
  1423.   o Major bugfixes (security):
  1424.     - Fix a possible buffer overrun when using BSD natd support. Bug
  1425.       found by croup.
  1426.     - When sending destroy cells from a circuit's origin, don't include
  1427.       the reason for tearing down the circuit. The spec says we didn't,
  1428.       and now we actually don't. Reported by lodger.
  1429.     - Keep streamids from different exits on a circuit separate. This
  1430.       bug may have allowed other routers on a given circuit to inject
  1431.       cells into streams. Reported by lodger; fixes bug 446.
  1432.     - If there's a never-before-connected-to guard node in our list,
  1433.       never choose any guards past it. This way we don't expand our
  1434.       guard list unless we need to.
  1435.   o Minor bugfixes (guard nodes):
  1436.     - Weight guard selection by bandwidth, so that low-bandwidth nodes
  1437.       don't get overused as guards.
  1438.   o Minor bugfixes (directory):
  1439.     - Correctly count the number of authorities that recommend each
  1440.       version. Previously, we were under-counting by 1.
  1441.     - Fix a potential crash bug when we load many server descriptors at
  1442.       once and some of them make others of them obsolete. Fixes bug 458.
  1443.   o Minor bugfixes (hidden services):
  1444.     - Stop tearing down the whole circuit when the user asks for a
  1445.       connection to a port that the hidden service didn't configure.
  1446.       Resolves bug 444.
  1447.   o Minor bugfixes (misc):
  1448.     - On Windows, we were preventing other processes from reading
  1449.       cached-routers while Tor was running. Reported by janbar.
  1450.     - Fix a possible (but very unlikely) bug in picking routers by
  1451.       bandwidth. Add a log message to confirm that it is in fact
  1452.       unlikely. Patch from lodger.
  1453.     - Backport a couple of memory leak fixes.
  1454.     - Backport miscellaneous cosmetic bugfixes.
  1455. Changes in version 0.2.0.2-alpha - 2007-06-02
  1456.   o Major bugfixes on 0.2.0.1-alpha:
  1457.     - Fix an assertion failure related to servers without extra-info digests.
  1458.       Resolves bugs 441 and 442.
  1459.   o Minor features (directory):
  1460.     - Support "If-Modified-Since" when answering HTTP requests for
  1461.       directories, running-routers documents, and network-status documents.
  1462.       (There's no need to support it for router descriptors, since those
  1463.       are downloaded by descriptor digest.)
  1464.   o Minor build issues:
  1465.     - Clear up some MIPSPro compiler warnings.
  1466.     - When building from a tarball on a machine that happens to have SVK
  1467.       installed, report the micro-revision as whatever version existed
  1468.       in the tarball, not as "x".
  1469. Changes in version 0.2.0.1-alpha - 2007-06-01
  1470.   This early development snapshot provides new features for people running
  1471.   Tor as both a client and a server (check out the new RelayBandwidth
  1472.   config options); lets Tor run as a DNS proxy; and generally moves us
  1473.   forward on a lot of fronts.
  1474.   o Major features, server usability:
  1475.     - New config options RelayBandwidthRate and RelayBandwidthBurst:
  1476.       a separate set of token buckets for relayed traffic. Right now
  1477.       relayed traffic is defined as answers to directory requests, and
  1478.       OR connections that don't have any local circuits on them.
  1479.   o Major features, client usability:
  1480.     - A client-side DNS proxy feature to replace the need for
  1481.       dns-proxy-tor: Just set "DNSPort 9999", and Tor will now listen
  1482.       for DNS requests on port 9999, use the Tor network to resolve them
  1483.       anonymously, and send the reply back like a regular DNS server.
  1484.       The code still only implements a subset of DNS.
  1485.     - Make PreferTunneledDirConns and TunnelDirConns work even when
  1486.       we have no cached directory info. This means Tor clients can now
  1487.       do all of their connections protected by TLS.
  1488.   o Major features, performance and efficiency:
  1489.     - Directory authorities accept and serve "extra info" documents for
  1490.       routers. These documents contain fields from router descriptors
  1491.       that aren't usually needed, and that use a lot of excess
  1492.       bandwidth. Once these fields are removed from router descriptors,
  1493.       the bandwidth savings should be about 60%. [Partially implements
  1494.       proposal 104.]
  1495.     - Servers upload extra-info documents to any authority that accepts
  1496.       them. Authorities (and caches that have been configured to download
  1497.       extra-info documents) download them as needed. [Partially implements
  1498.       proposal 104.]
  1499.     - Change the way that Tor buffers data that it is waiting to write.
  1500.       Instead of queueing data cells in an enormous ring buffer for each
  1501.       client->OR or OR->OR connection, we now queue cells on a separate
  1502.       queue for each circuit.  This lets us use less slack memory, and
  1503.       will eventually let us be smarter about prioritizing different kinds
  1504.       of traffic.
  1505.     - Use memory pools to allocate cells with better speed and memory
  1506.       efficiency, especially on platforms where malloc() is inefficient.
  1507.     - Stop reading on edge connections when their corresponding circuit
  1508.       buffers are full; start again as the circuits empty out.
  1509.   o Major features, other:
  1510.     - Add an HSAuthorityRecordStats option that hidden service authorities
  1511.       can use to track statistics of overall hidden service usage without
  1512.       logging information that would be very useful to an attacker.
  1513.     - Start work implementing multi-level keys for directory authorities:
  1514.       Add a standalone tool to generate key certificates. (Proposal 103.)
  1515.   o Security fixes:
  1516.     - Directory authorities now call routers Stable if they have an
  1517.       uptime of at least 30 days, even if that's not the median uptime
  1518.       in the network. Implements proposal 107, suggested by Kevin Bauer
  1519.       and Damon McCoy.
  1520.   o Minor fixes (resource management):
  1521.     - Count the number of open sockets separately from the number
  1522.       of active connection_t objects. This will let us avoid underusing
  1523.       our allocated connection limit.
  1524.     - We no longer use socket pairs to link an edge connection to an
  1525.       anonymous directory connection or a DirPort test connection.
  1526.       Instead, we track the link internally and transfer the data
  1527.       in-process. This saves two sockets per "linked" connection (at the
  1528.       client and at the server), and avoids the nasty Windows socketpair()
  1529.       workaround.
  1530.     - Keep unused 4k and 16k buffers on free lists, rather than wasting 8k
  1531.       for every single inactive connection_t. Free items from the
  1532.       4k/16k-buffer free lists when they haven't been used for a while.
  1533.   o Minor features (build):
  1534.     - Make autoconf search for libevent, openssl, and zlib consistently.
  1535.     - Update deprecated macros in configure.in.
  1536.     - When warning about missing headers, tell the user to let us
  1537.       know if the compile succeeds anyway, so we can downgrade the
  1538.       warning.
  1539.     - Include the current subversion revision as part of the version
  1540.       string: either fetch it directly if we're in an SVN checkout, do
  1541.       some magic to guess it if we're in an SVK checkout, or use
  1542.       the last-detected version if we're building from a .tar.gz.
  1543.       Use this version consistently in log messages.
  1544.   o Minor features (logging):
  1545.     - Always prepend "Bug: " to any log message about a bug.
  1546.     - Put a platform string (e.g. "Linux i686") in the startup log
  1547.       message, so when people paste just their logs, we know if it's
  1548.       OpenBSD or Windows or what.
  1549.     - When logging memory usage, break down memory used in buffers by
  1550.       buffer type.
  1551.   o Minor features (directory system):
  1552.     - New config option V2AuthoritativeDirectory that all directory
  1553.       authorities should set. This will let future authorities choose
  1554.       not to serve V2 directory information.
  1555.     - Directory authorities allow multiple router descriptors and/or extra
  1556.       info documents to be uploaded in a single go.  This will make
  1557.       implementing proposal 104 simpler.
  1558.   o Minor features (controller):
  1559.     - Add a new config option __DisablePredictedCircuits designed for
  1560.       use by the controller, when we don't want Tor to build any circuits
  1561.       preemptively.
  1562.     - Let the controller specify HOP=%d as an argument to ATTACHSTREAM,
  1563.       so we can exit from the middle of the circuit.
  1564.     - Implement "getinfo status/circuit-established".
  1565.     - Implement "getinfo status/version/..." so a controller can tell
  1566.       whether the current version is recommended, and whether any versions
  1567.       are good, and how many authorities agree. (Patch from shibz.)
  1568.   o Minor features (hidden services):
  1569.     - Allow multiple HiddenServicePort directives with the same virtual
  1570.       port; when they occur, the user is sent round-robin to one
  1571.       of the target ports chosen at random.  Partially fixes bug 393 by
  1572.       adding limited ad-hoc round-robining.
  1573.   o Minor features (other):
  1574.     - More unit tests.
  1575.     - Add a new AutomapHostsOnResolve option: when it is enabled, any
  1576.       resolve request for hosts matching a given pattern causes Tor to
  1577.       generate an internal virtual address mapping for that host.  This
  1578.       allows DNSPort to work sensibly with hidden service users.  By
  1579.       default, .exit and .onion addresses are remapped; the list of
  1580.       patterns can be reconfigured with AutomapHostsSuffixes.
  1581.     - Add an "-F" option to tor-resolve to force a resolve for a .onion
  1582.       address. Thanks to the AutomapHostsOnResolve option, this is no
  1583.       longer a completely silly thing to do.
  1584.     - If Tor is invoked from something that isn't a shell (e.g. Vidalia),
  1585.       now we expand "-f ~/.tor/torrc" correctly. Suggested by Matt Edman.
  1586.     - Treat "2gb" when given in torrc for a bandwidth as meaning 2gb,
  1587.       minus 1 byte: the actual maximum declared bandwidth.
  1588.   o Removed features:
  1589.     - Removed support for the old binary "version 0" controller protocol.
  1590.       This has been deprecated since 0.1.1, and warnings have been issued
  1591.       since 0.1.2.  When we encounter a v0 control message, we now send
  1592.       back an error and close the connection.
  1593.     - Remove the old "dns worker" server DNS code: it hasn't been default
  1594.       since 0.1.2.2-alpha, and all the servers seem to be using the new
  1595.       eventdns code.
  1596.   o Minor bugfixes (portability):
  1597.     - Even though Windows is equally happy with / and  as path separators,
  1598.       try to use  consistently on Windows and / consistently on Unix: it
  1599.       makes the log messages nicer.
  1600.     - Correctly report platform name on Windows 95 OSR2 and Windows 98 SE.
  1601.     - Read resolv.conf files correctly on platforms where read() returns
  1602.       partial results on small file reads.
  1603.   o Minor bugfixes (directory):
  1604.     - Correctly enforce that elements of directory objects do not appear
  1605.       more often than they are allowed to appear.
  1606.     - When we are reporting the DirServer line we just parsed, we were
  1607.       logging the second stanza of the key fingerprint, not the first.
  1608.   o Minor bugfixes (logging):
  1609.     - When we hit an EOF on a log (probably because we're shutting down),
  1610.       don't try to remove the log from the list: just mark it as
  1611.       unusable.  (Bulletproofs against bug 222.)
  1612.   o Minor bugfixes (other):
  1613.     - In the exitlist script, only consider the most recently published
  1614.       server descriptor for each server. Also, when the user requests
  1615.       a list of servers that _reject_ connections to a given address,
  1616.       explicitly exclude the IPs that also have servers that accept
  1617.       connections to that address. (Resolves bug 405.)
  1618.     - Stop allowing hibernating servers to be "stable" or "fast".
  1619.     - On Windows, we were preventing other processes from reading
  1620.       cached-routers while Tor was running.  (Reported by janbar)
  1621.     - Make the NodeFamilies config option work. (Reported by
  1622.       lodger -- it has never actually worked, even though we added it
  1623.       in Oct 2004.)
  1624.     - Check return values from pthread_mutex functions.
  1625.     - Don't save non-general-purpose router descriptors to the disk cache,
  1626.       because we have no way of remembering what their purpose was when
  1627.       we restart.
  1628.     - Add even more asserts to hunt down bug 417.
  1629.     - Build without verbose warnings even on (not-yet-released) gcc 4.2.
  1630.     - Fix a possible (but very unlikely) bug in picking routers by bandwidth.
  1631.       Add a log message to confirm that it is in fact unlikely.
  1632.   o Minor bugfixes (controller):
  1633.     - Make 'getinfo fingerprint' return a 551 error if we're not a
  1634.       server, so we match what the control spec claims we do. Reported
  1635.       by daejees.
  1636.     - Fix a typo in an error message when extendcircuit fails that
  1637.       caused us to not follow the rn-based delimiter protocol. Reported
  1638.       by daejees.
  1639.   o Code simplifications and refactoring:
  1640.     - Stop passing around circuit_t and crypt_path_t pointers that are
  1641.       implicit in other procedure arguments.
  1642.     - Drop the old code to choke directory connections when the
  1643.       corresponding OR connections got full: thanks to the cell queue
  1644.       feature, OR conns don't get full any more.
  1645.     - Make dns_resolve() handle attaching connections to circuits
  1646.       properly, so the caller doesn't have to.
  1647.     - Rename wants_to_read and wants_to_write to read/write_blocked_on_bw.
  1648.     - Keep the connection array as a dynamic smartlist_t, rather than as
  1649.       a fixed-sized array. This is important, as the number of connections
  1650.       is becoming increasingly decoupled from the number of sockets.
  1651. Changes in version 0.1.2.14 - 2007-05-25
  1652.   Tor 0.1.2.14 changes the addresses of two directory authorities (this
  1653.   change especially affects those who serve or use hidden services),
  1654.   and fixes several other crash- and security-related bugs.
  1655.   o Directory authority changes:
  1656.     - Two directory authorities (moria1 and moria2) just moved to new
  1657.       IP addresses. This change will particularly affect those who serve
  1658.       or use hidden services.
  1659.   o Major bugfixes (crashes):
  1660.     - If a directory server runs out of space in the connection table
  1661.       as it's processing a begin_dir request, it will free the exit stream
  1662.       but leave it attached to the circuit, leading to unpredictable
  1663.       behavior. (Reported by seeess, fixes bug 425.)
  1664.     - Fix a bug in dirserv_remove_invalid() that would cause authorities
  1665.       to corrupt memory under some really unlikely scenarios.
  1666.     - Tighten router parsing rules. (Bugs reported by Benedikt Boss.)
  1667.     - Avoid segfaults when reading from mmaped descriptor file. (Reported
  1668.       by lodger.)
  1669.   o Major bugfixes (security):
  1670.     - When choosing an entry guard for a circuit, avoid using guards
  1671.       that are in the same family as the chosen exit -- not just guards
  1672.       that are exactly the chosen exit. (Reported by lodger.)
  1673.   o Major bugfixes (resource management):
  1674.     - If a directory authority is down, skip it when deciding where to get
  1675.       networkstatus objects or descriptors. Otherwise we keep asking
  1676.       every 10 seconds forever. Fixes bug 384.
  1677.     - Count it as a failure if we fetch a valid network-status but we
  1678.       don't want to keep it. Otherwise we'll keep fetching it and keep
  1679.       not wanting to keep it. Fixes part of bug 422.
  1680.     - If all of our dirservers have given us bad or no networkstatuses
  1681.       lately, then stop hammering them once per minute even when we
  1682.       think they're failed. Fixes another part of bug 422.
  1683.   o Minor bugfixes:
  1684.     - Actually set the purpose correctly for descriptors inserted with
  1685.       purpose=controller.
  1686.     - When we have k non-v2 authorities in our DirServer config,
  1687.       we ignored the last k authorities in the list when updating our
  1688.       network-statuses.
  1689.     - Correctly back-off from requesting router descriptors that we are
  1690.       having a hard time downloading.
  1691.     - Read resolv.conf files correctly on platforms where read() returns
  1692.       partial results on small file reads.
  1693.     - Don't rebuild the entire router store every time we get 32K of
  1694.       routers: rebuild it when the journal gets very large, or when
  1695.       the gaps in the store get very large.
  1696.   o Minor features:
  1697.     - When routers publish SVN revisions in their router descriptors,
  1698.       authorities now include those versions correctly in networkstatus
  1699.       documents.
  1700.     - Warn when using a version of libevent before 1.3b to run a server on
  1701.       OSX or BSD: these versions interact badly with userspace threads.
  1702. Changes in version 0.1.2.13 - 2007-04-24
  1703.   This release features some major anonymity fixes, such as safer path
  1704.   selection; better client performance; faster bootstrapping, better
  1705.   address detection, and better DNS support for servers; write limiting as
  1706.   well as read limiting to make servers easier to run; and a huge pile of
  1707.   other features and bug fixes. The bundles also ship with Vidalia 0.0.11.
  1708.   Tor 0.1.2.13 is released in memory of Rob Levin (1955-2006), aka lilo
  1709.   of the Freenode IRC network, remembering his patience and vision for
  1710.   free speech on the Internet.
  1711.   o Minor fixes:
  1712.     - Fix a memory leak when we ask for "all" networkstatuses and we
  1713.       get one we don't recognize.
  1714.     - Add more asserts to hunt down bug 417.
  1715.     - Disable kqueue on OS X 10.3 and earlier, to fix bug 371.
  1716. Changes in version 0.1.2.12-rc - 2007-03-16
  1717.   o Major bugfixes:
  1718.     - Fix an infinite loop introduced in 0.1.2.7-alpha when we serve
  1719.       directory information requested inside Tor connections (i.e. via
  1720.       begin_dir cells). It only triggered when the same connection was
  1721.       serving other data at the same time. Reported by seeess.
  1722.   o Minor bugfixes:
  1723.     - When creating a circuit via the controller, send a 'launched'
  1724.       event when we're done, so we follow the spec better.
  1725. Changes in version 0.1.2.11-rc - 2007-03-15
  1726.   o Minor bugfixes (controller), reported by daejees:
  1727.     - Correct the control spec to match how the code actually responds
  1728.       to 'getinfo addr-mappings/*'.
  1729.     - The control spec described a GUARDS event, but the code
  1730.       implemented a GUARD event. Standardize on GUARD, but let people
  1731.       ask for GUARDS too.
  1732. Changes in version 0.1.2.10-rc - 2007-03-07
  1733.   o Major bugfixes (Windows):
  1734.     - Do not load the NT services library functions (which may not exist)
  1735.       just to detect if we're a service trying to shut down. Now we run
  1736.       on Win98 and friends again.
  1737.   o Minor bugfixes (other):
  1738.     - Clarify a couple of log messages.
  1739.     - Fix a misleading socks5 error number.
  1740. Changes in version 0.1.2.9-rc - 2007-03-02
  1741.   o Major bugfixes (Windows):
  1742.     - On MinGW, use "%I64u" to printf/scanf 64-bit integers, instead
  1743.       of the usual GCC "%llu". This prevents a bug when saving 64-bit
  1744.       int configuration values: the high-order 32 bits would get
  1745.       truncated. In particular, we were being bitten by the default
  1746.       MaxAdvertisedBandwidth of 128 TB turning into 0. (Fixes bug 400
  1747.       and maybe also bug 397.)
  1748.   o Minor bugfixes (performance):
  1749.     - Use OpenSSL's AES implementation on platforms where it's faster.
  1750.       This could save us as much as 10% CPU usage.
  1751.   o Minor bugfixes (server):
  1752.     - Do not rotate onion key immediately after setting it for the first
  1753.       time.
  1754.   o Minor bugfixes (directory authorities):
  1755.     - Stop calling servers that have been hibernating for a long time
  1756.       "stable". Also, stop letting hibernating or obsolete servers affect
  1757.       uptime and bandwidth cutoffs.
  1758.     - Stop listing hibernating servers in the v1 directory.
  1759.   o Minor bugfixes (hidden services):
  1760.     - Upload hidden service descriptors slightly less often, to reduce
  1761.       load on authorities.
  1762.   o Minor bugfixes (other):
  1763.     - Fix an assert that could trigger if a controller quickly set then
  1764.       cleared EntryNodes.  (Bug found by Udo van den Heuvel.)
  1765.     - On architectures where sizeof(int)>4, still clamp declarable bandwidth
  1766.       to INT32_MAX.
  1767.     - Fix a potential race condition in the rpm installer.  Found by
  1768.       Stefan Nordhausen.
  1769.     - Try to fix eventdns warnings once and for all: do not treat a dns rcode
  1770.       of 2 as indicating that the server is completely bad; it sometimes
  1771.       means that the server is just bad for the request in question. (may fix
  1772.       the last of bug 326.)
  1773.     - Disable encrypted directory connections when we don't have a server
  1774.       descriptor for the destination. We'll get this working again in
  1775.       the 0.2.0 branch.
  1776. Changes in version 0.1.2.8-beta - 2007-02-26
  1777.   o Major bugfixes (crashes):
  1778.     - Stop crashing when the controller asks us to resetconf more than
  1779.       one config option at once. (Vidalia 0.0.11 does this.)
  1780.     - Fix a crash that happened on Win98 when we're given command-line
  1781.       arguments: don't try to load NT service functions from advapi32.dll
  1782.       except when we need them. (Bug introduced in 0.1.2.7-alpha;
  1783.       resolves bug 389.)
  1784.     - Fix a longstanding obscure crash bug that could occur when
  1785.       we run out of DNS worker processes. (Resolves bug 390.)
  1786.   o Major bugfixes (hidden services):
  1787.     - Correctly detect whether hidden service descriptor downloads are
  1788.       in-progress. (Suggested by Karsten Loesing; fixes bug 399.)
  1789.   o Major bugfixes (accounting):
  1790.     - When we start during an accounting interval before it's time to wake
  1791.       up, remember to wake up at the correct time. (May fix bug 342.)
  1792.   o Minor bugfixes (controller):
  1793.     - Give the controller END_STREAM_REASON_DESTROY events _before_ we
  1794.       clear the corresponding on_circuit variable, and remember later
  1795.       that we don't need to send a redundant CLOSED event.  (Resolves part
  1796.       3 of bug 367.)