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