Commit e203d471 authored by Roger Dingledine's avatar Roger Dingledine
Browse files

first cut of a 0.1.0.1-rc1 changelog


svn:r3881
parent 5c0e6b58
Loading
Loading
Loading
Loading
+188 −0
Original line number Diff line number Diff line
Changes in version 0.1.0.1-rc1 - 2005-03-xx

  o New features:
    - Add reachability testing. Your Tor server will automatically try
      to see if its ORPort and DirPort are reachable from the outside,
      and it won't upload its descriptor until it decides they are.
    - Handle unavailable hidden services better. Handle slow or busy
      hidden services better.
    - Add support for CONNECTing through https proxies, with "HttpsProxy"
      config option.
    - New exit policy: accept most low-numbered ports, rather than
      rejecting most low-numbered ports.
    - More Tor controller support (still experimental). See
      http://tor.eff.org/doc/control-spec.txt for all the new features,
      including signals to emulate unix signals from any platform;
      redirectstream; extendcircuit; mapaddress; getinfo; postdescriptor;
      closestream; closecircuit; etc.
    - Make nt services work and start on startup on win32 (based on
      patch by Matt Edman).
    - Add a new AddressMap config directive to rewrite incoming socks
      addresses. This lets you, for example, declare an implicit
      required exit node for certain sites.
    - Add a new TrackHostExits config directive to trigger addressmaps
      for certain incoming socks addresses -- for sites that break when
      your exit keeps changing.
    - Redo the client-side dns cache so it's just an addressmap too.
    - Notice when our IP changes, and reset stats/uptime/reachability.
    - When an application is using socks5, give him the whole variety of
      potential socks5 responses (connect refused, host unreachable, etc),
      rather than just "success" or "failure".
    - A more sane version numbering system. See
      http://tor.eff.org/cvs/tor/doc/version-spec.txt for details.
    - New contributed script "exitlist": a simple python script to
      parse directories and find tor nodes that exit to listed
      nodes/ports.
    - New contributed script "privoxy-tor-toggle" to toggle whether
      privoxy uses tor. Seems to be configured for debian by default.
    - Report HTTP reasons to when getting a response from directory
      servers -- so you can actually know what went wrong.
    - New config option MaxAdvertisedBandwidth which lets you advertise
      a low bandwidthrate (to not attract as many circuits) while still
      allowing a higher bandwidthrate in reality.

  o Robustness/stability fixes:
    - Make Tor use Niels Provos's libevent instead of its current
      poll-but-sometimes-select mess.  This will let us use faster async
      cores (like epoll, kpoll, and /dev/poll), and hopefully work better
      on Windows too.
    - pthread support now too. This was forced because when we forked,
      we ended up wasting a lot of duplicate ram over time. Also switch
      to foo_r versions of some library calls to allow reentry and
      threadsafeness.
    - Better handling for heterogeneous / unreliable nodes:
      - Annotate circuits w/ whether they aim to contain high uptime nodes
        and/or high capacity nodes. When building circuits, choose
        appropriate nodes.
      - This means that every single node in an intro rend circuit,
        not just the last one, will have a minimum uptime.
      - New config option LongLivedPorts to indicate application streams
        that will want high uptime circuits.
      - When attaching a stream to a circuit, pay attention to its
        requirements.
      - Servers reset uptime when a dir fetch entirely fails. This
        hopefully reflects stability of the server's network connectivity.
      - If somebody starts his tor server in Jan 2004 and then fixes his
        clock, don't make his published uptime be a year.
      - Reset published uptime when you wake up from hibernation.
    - Introduce a notion of 'internal' circs, which are chosen without
      regard to the exit policy of the last hop. Intro and rendezvous
      circs must be internal circs, to avoid leaking information. Resolve
      and connect streams can use internal circs if they want.
    - New circuit pooling algorithm: make sure to have enough circs around
      to satisfy any predicted ports, and also make sure to have 2 internal
      circs around if we've required internal circs lately (with high
      uptime if we've seen that lately).
    - Split NewCircuitPeriod option into NewCircuitPeriod (30 secs),
      which describes how often we retry making new circuits if current
      ones are dirty, and MaxCircuitDirtiness (10 mins), which describes
      how long we're willing to make use of an already-dirty circuit.
    - Cannibalize GENERAL circs to be C_REND, C_INTRO, S_INTRO, and S_REND
      circ as necessary, if there are any completed ones lying around
      when we try to launch one.
    - Make hidden services try to establish a rendezvous for 30 seconds,
      rather than for n (where n=3) attempts to build a circuit.
    - Change SHUTDOWN_WAIT_LENGTH from a fixed 30 secs to a config option
      "ShutdownWaitLength".
    - Try to be more zealous about calling connection_edge_end when
      things go bad with edge conns in connection.c.
    - Revise tor-spec to add more/better stream end reasons.
    - Revise all calls to connection_edge_end to avoid sending "misc",
      and to take errno into account where possible.

  o Bug fixes:
    - Fix several double-mark-for-close bugs, e.g. where we were finding
      a conn for a cell even if that conn is already marked for close.
    - Make sequence of log messages when starting on win32 with no config
      file more reasonable.
    - When choosing an exit node for a new non-internal circ, don't take
      into account whether it'll be useful for any pending x.onion
      addresses -- it won't.
    - Turn addr_policy_compare from a tristate to a quadstate; this should
      help address our "Ah, you allow 1.2.3.4:80. You are a good choice
      for google.com" problem.
    - Make "platform" string in descriptor more accurate for Win32 servers,
      so it's not just "unknown platform".
    - Fix an edge case in parsing config options (thanks weasel)
      if they say "--" on the commandline, it's not an option
    - Reject odd-looking addresses at the client (e.g. addresses that
      contain a colon), rather than having the server drop them because
      they're malformed.
    - tor-resolve requests were ignoring .exit if there was a working circuit
      they could use instead.
    - REUSEADDR on normal platforms means you can rebind to the port
      right after somebody else has let it go. But REUSEADDR on win32
      means to let you bind to the port _even when somebody else
      already has it bound_. So, don't do that on Win32.
    - Change version parsing logic: a version is "obsolete" if it is not
      recommended and (1) there is a newer recommended version in the
      same series, or (2) there are no recommended versions in the same
      series, but there are some recommended versions in a newer series.
      A version is "new" if it is newer than any recommended version in
      the same series.

  o Helpful fixes:
    - Require BandwidthRate to be at least 20kB/s for servers
    - When a dirserver causes you to give a warn, mention which dirserver
      it was.
    - New config option DirAllowPrivateAddresses for authdirservers.
      Now by default they refuse router descriptors that have non-IP or
      private-IP addresses.
    - Stop publishing socksport in the directory, since it's not
      actually meant to be public. For compatibility, publish a 0 there
      for now.
    - Change DirFetchPeriod/StatusFetchPeriod to have a special "Be
      smart" value, that is low for servers and high for clients.
    - If our clock jumps forward by 100 seconds or more, assume something
      has gone wrong with our network and abandon all not-yet-used circs.
    - Warn when exit policy implicitly allows local addresses.
    - If we get an incredibly skewed timestamp from a dirserver mirror
      that isn't a verified OR, don't warn -- it's probably him that's
      wrong.
    - Since we ship our own privoxy on os x, tweak it so it doesn't write
      cookies to disk and doesn't log each web request to disk. (Thanks
      to Brett Carrington for pointing this out.)
    - When a client asks us for a dir mirror and we don't have one,
      launch an attempt to get a fresh one.
    - If we're hibernating and we get a sigint, exit immediately.
    - Add --with-dmalloc ./configure option, to track memory leaks.
    - And try to free all memory on closing, so we can detect what
      we're leaking.
    - Cache local dns resolves correctly even when they're .exit
      addresses.
    - Give a better warning when some other server advertises an
      ORPort that is actually an apache running ssl.
    - Add "opt hibernating 1" to server descriptor to make it clearer
      whether the server is hibernating.


Changes in version 0.0.9.6 - 2005-03-24
  o Bugfixes on 0.0.9.x (crashes and asserts):
    - Add new end stream reasons to maintainance branch. Fix bug where
      reason (8) could trigger an assert.  Prevent bug from recurring.
    - Apparently win32 stat wants paths to not end with a slash.
    - Fix assert triggers in assert_cpath_layer_ok(), where we were
      blowing away the circuit that conn->cpath_layer points to, then
      checking to see if the circ is well-formed. Backport check to make
      sure we dont use the cpath on a closed connection.
    - Prevent circuit_resume_edge_reading_helper() from trying to package
      inbufs for marked-for-close streams.
    - Don't crash on hup if your options->address has become unresolvable.
    - Some systems (like OS X) sometimes accept() a connection and tell
      you the remote host is 0.0.0.0:0. If this happens, due to some
      other mis-features, we get confused; so refuse the conn for now.

  o Bugfixes on 0.0.9.x (other):
    - Fix harmless but scary "Unrecognized content encoding" warn message.
    - Add new stream error reason: TORPROTOCOL reason means "you are not
      speaking a version of Tor I understand; say bye-bye to your stream."
    - Be willing to cache directories from up to ROUTER_MAX_AGE seconds
      into the future, now that we are more tolerant of skew. This
      resolves a bug where a Tor server would refuse to cache a directory
      because all the directories it gets are too far in the future;
      yet the Tor server never logs any complaints about clock skew.
    - Mac packaging magic: make man pages useable, and do not overwrite
      existing torrc files.
    - Make OS X log happily to /var/log/tor/tor.log


Changes in version 0.0.9.5 - 2005-02-22
  o Bugfixes on 0.0.9.x:
    - Fix an assert race at exit nodes when resolve requests fail.