[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[or-cvs] make a changelog for 0.0.9



Update of /home2/or/cvsroot/tor
In directory moria.mit.edu:/home2/arma/work/onion/cvs/tor

Modified Files:
	ChangeLog 
Log Message:
make a changelog for 0.0.9


Index: ChangeLog
===================================================================
RCS file: /home2/or/cvsroot/tor/ChangeLog,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -d -r1.61 -r1.62
--- ChangeLog	8 Dec 2004 01:14:53 -0000	1.61
+++ ChangeLog	11 Dec 2004 18:07:52 -0000	1.62
@@ -1,34 +1,29 @@
-Changes so far in 0.0.9:
-rc7:
-  o Bugfixes on 0.0.9rc:
-    - Fix a stack-trashing crash when an exit node begins hibernating.
-    - Avoid looking at unallocated memory while considering which
-      ports we need to build circuits to cover.
-    - Stop a sigpipe: when an 'end' cell races with eof from the app,
-      we shouldn't hold-open-until-flush if the eof arrived first.
-    - Fix a bug with init_cookie_authentication() in the controller.
-    - When recommending new-format log lines, if the upper bound is
-      LOG_ERR, leave it implicit.
 
-  o Bugfixes on 0.0.8.1:
-    - Fix a whole slew of memory leaks.
+Changes in version 0.0.9 - forthcoming
+  o Bugfixes on 0.0.8.1 (Crashes and asserts):
+    - Catch and ignore SIGXFSZ signals when log files exceed 2GB; our
+      write() call will fail and we handle it there.
+    - When we run out of disk space, or other log writing error, don't
+      crash. Just stop logging to that log and continue.
     - Fix isspace() and friends so they still make Solaris happy
       but also so they don't trigger asserts on win32.
+    - Fix assert failure on malformed socks4a requests.
+    - Fix an assert bug where a hidden service provider would fail if
+      the first hop of his rendezvous circuit was down.
+    - Better handling of size_t vs int, so we're more robust on 64
+      bit platforms.
+
+  o Bugfixes on 0.0.8.1 (Win32):
+    - Make windows sockets actually non-blocking (oops), and handle
+      win32 socket errors better.
     - Fix parse_iso_time on platforms without strptime (eg win32).
-    - win32: tolerate extra "readable" events better.
     - win32: when being multithreaded, leave parent fdarray open.
+    - Better handling of winsock includes on non-MSV win32 compilers.
+    - Change our file IO stuff (especially wrt OpenSSL) so win32 is
+      happier.
     - Make unit tests work on win32.
 
-rc6:
-  o Bugfixes on 0.0.9rc:
-    - Clean up some more integer underflow opportunities (not exploitable
-      we think).
-    - While hibernating, hup should not regrow our listeners.
-    - Send an end to the streams we close when we hibernate, rather
-      than just chopping them off.
-    - React to eof immediately on non-open edge connections.
-
-  o Bugfixes on 0.0.8.1:
+  o Bugfixes on 0.0.8.1 (Path selection and streams):
     - Calculate timeout for waiting for a connected cell from the time
       we sent the begin cell, not from the time the stream started. If
       it took a long time to establish the circuit, we would time out
@@ -36,8 +31,75 @@
     - Fix router_compare_addr_to_addr_policy: it was not treating a port
       of * as always matching, so we were picking reject *:* nodes as
       exit nodes too. Oops.
+    - When read() failed on a stream, we would close it without sending
+      back an end. So 'connection refused' would simply be ignored and
+      the user would get no response.
+    - Stop a sigpipe: when an 'end' cell races with eof from the app,
+      we shouldn't hold-open-until-flush if the eof arrived first.
+    - Let resolve conns retry/expire also, rather than sticking around
+      forever.
+    - Fix more dns related bugs: send back resolve_failed and end cells
+      more reliably when the resolve fails, rather than closing the
+      circuit and then trying to send the cell. Also attach dummy resolve
+      connections to a circuit *before* calling dns_resolve(), to fix
+      a bug where cached answers would never be sent in RESOLVED cells.
 
-  o Features:
+  o Bugfixes on 0.0.8.1 (Circuits):
+    - Finally fix a bug that's been plaguing us for a year:
+      With high load, circuit package window was reaching 0. Whenever
+      we got a circuit-level sendme, we were reading a lot on each
+      socket, but only writing out a bit. So we would eventually reach
+      eof. This would be noticed and acted on even when there were still
+      bytes sitting in the inbuf.
+    - Use identity comparison, not nickname comparison, to choose which
+      half of circuit-ID-space each side gets to use. This is needed
+      because sometimes we think of a router as a nickname, and sometimes
+      as a hex ID, and we can't predict what the other side will do.
+
+  o Bugfixes on 0.0.8.1 (Other):
+    - Fix a whole slew of memory leaks.
+    - Disallow NDEBUG. We don't ever want anybody to turn off debug.
+    - If we are using select, make sure we stay within FD_SETSIZE.
+    - When poll() is interrupted, we shouldn't believe the revents values.
+    - Add a FAST_SMARTLIST define to optionally inline smartlist_get
+      and smartlist_len, which are two major profiling offenders.
+    - If do_hup fails, actually notice.
+    - Flush the log file descriptor after we print "Tor opening log file",
+      so we don't see those messages days later.
+    - Hidden service operators now correctly handle version 1 style
+      INTRODUCE1 cells (nobody generates them still, so not a critical
+      bug).
+    - Handle more errnos from accept() without closing the listener.
+      Some OpenBSD machines were closing their listeners because
+      they ran out of file descriptors.
+    - Some people had wrapped their tor client/server in a script
+      that would restart it whenever it died. This did not play well
+      with our "shut down if your version is obsolete" code. Now people
+      don't fetch a new directory if their local cached version is
+      recent enough.
+    - Make our autogen.sh work on ksh as well as bash.
+    - Better torrc example lines for dirbindaddress and orbindaddress.
+    - Improved bounds checking on parsed ints (e.g. config options and
+      the ones we find in directories.)
+    - Stop using separate defaults for no-config-file and
+      empty-config-file. Now you have to explicitly turn off SocksPort,
+      if you don't want it open.
+    - We were starting to daemonize before we opened our logs, so if
+      there were any problems opening logs, we would complain to stderr,
+      which wouldn't work, and then mysteriously exit.
+    - If a verified OR connects to us before he's uploaded his descriptor,
+      or we verify him and hup but he still has the original TLS
+      connection, then conn->nickname is still set like he's unverified.
+
+  o Code security improvements, inspired by Ilja:
+    - tor_snprintf wrapper over snprintf with consistent (though not C99)
+      overflow behavior.
+    - Replace sprintf with tor_snprintf. (I think they were all safe, but
+      hey.)
+    - Replace strcpy/strncpy with strlcpy in more places.
+    - Avoid strcat; use tor_snprintf or strlcat instead.
+
+  o Features (circuits and streams):
     - New circuit building strategy: keep a list of ports that we've
       used in the past 6 hours, and always try to have 2 circuits open
       or on the way that will handle each such port. Seed us with port
@@ -48,79 +110,26 @@
     - If you haven't used a clean circuit in an hour, throw it away,
       just to be on the safe side. (This means after 6 hours a totally
       unused Tor client will have no circuits open.)
-
-rc5:
-  o Bugfixes on 0.0.8.1:
-    - Disallow NDEBUG. We don't ever want anybody to turn off debug.
-    - Let resolve conns retry/expire also, rather than sticking around
-      forever.
-    - If we are using select, make sure we stay within FD_SETSIZE.
-
-  o Bugfixes on 0.0.9pre:
-    - Fix integer underflow in tor_vsnprintf() that may be exploitable,
-      but doesn't seem to be currently; thanks to Ilja van Sprundel for
-      finding it.
-    - If anybody set DirFetchPostPeriod, give them StatusFetchPeriod
-      instead.  Impose minima and maxima for all *Period options; impose
-      even tighter maxima for fetching if we are a caching dirserver.
-      Clip rather than rejecting.
-    - Fetch cached running-routers from servers that serve it (that is,
-      authdirservers and servers running 0.0.9rc5-cvs or later.)
-
-  o Features:
-    - Accept *:706 (silc) in default exit policy.
-    - Implement new versioning format for post 0.1.
     - Support "foo.nickname.exit" addresses, to let Alice request the
       address "foo" as viewed by exit node "nickname". Based on a patch
-      by Geoff Goodell.
-    - Make tor --version --version dump the cvs Id of every file.
-
-rc4:
-  o Bugfixes on 0.0.8.1:
-    - Make windows sockets actually non-blocking (oops), and handle
-      win32 socket errors better.
-
-  o Bugfixes on 0.0.9rc1:
-    - Actually catch the -USR2 signal.
-
-rc3:
-  o Bugfixes on 0.0.8.1:
-    - Flush the log file descriptor after we print "Tor opening log file",
-      so we don't see those messages days later.
-
-  o Bugfixes on 0.0.9rc1:
-    - Make tor-resolve work again.
-    - Avoid infinite loop in tor-resolve if tor hangs up on it.
-    - Fix an assert trigger for clients/servers handling resolves.
-
-rc2:
-  o Bugfixes on 0.0.9rc1:
-    - I broke socks5 support while fixing the eof bug.
-    - Allow unitless bandwidths and intervals; they default to bytes
-      and seconds.
-    - New servers don't start out hibernating; they are active until
-      they run out of bytes, so they have a better estimate of how
-      long it takes, and so their operators can know they're working.
-
-rc1:
-  o Bugfixes on 0.0.8.1:
-    - Finally fix a bug that's been plaguing us for a year:
-      With high load, circuit package window was reaching 0. Whenever
-      we got a circuit-level sendme, we were reading a lot on each
-      socket, but only writing out a bit. So we would eventually reach
-      eof. This would be noticed and acted on even when there were still
-      bytes sitting in the inbuf.
-    - When poll() is interrupted, we shouldn't believe the revents values.
-
-  o Bugfixes on 0.0.9pre6:
-    - Fix hibernate bug that caused pre6 to be broken.
-    - Don't keep rephist info for routers that haven't had activity for
-      24 hours. (This matters now that clients have keys, since we track
-      them too.)
-    - Never call close_temp_logs while validating log options.
-    - Fix backslash-escaping on tor.sh.in and torctl.in.
+      from Geoff Goodell.
+    - If your requested entry or exit node has advertised bandwidth 0,
+      pick it anyway.
+    - Be more greedy about filling up relay cells -- we try reading again
+      once we've processed the stuff we read, in case enough has arrived
+      to fill the last cell completely.
+    - Refuse application socks connections to port 0.
+    - Use only 0.0.9pre1 and later servers for resolve cells.
 
-  o Features:
+  o Features (bandwidth):
+    - Hibernation: New config option "AccountingMax" lets you
+      set how many bytes per month (in each direction) you want to
+      allow your server to consume. Rather than spreading those
+      bytes out evenly over the month, we instead hibernate for some
+      of the month and pop up at a deterministic time, work until
+      the bytes are consumed, then hibernate again. Config option
+      "MonthlyAccountingStart" lets you specify which day of the month
+      your billing cycle starts on.
     - Implement weekly/monthly/daily accounting: now you specify your
       hibernation properties by
       AccountingMax N bytes|KB|MB|GB|TB
@@ -128,108 +137,46 @@
         Defaults to "month 1 0:00".
     - Let bandwidth and interval config options be specified as 5 bytes,
       kb, kilobytes, etc; and as seconds, minutes, hours, days, weeks.
-    - kill -USR2 now moves all logs to loglevel debug (kill -HUP to
-      get back to normal.)
-    - If your requested entry or exit node has advertised bandwidth 0,
-      pick it anyway.
-    - Be more greedy about filling up relay cells -- we try reading again
-      once we've processed the stuff we read, in case enough has arrived
-      to fill the last cell completely.
-    - Apply NT service patch from Osamu Fujino. Still needs more work.
-
-pre6:
-  o Bugfixes on 0.0.8.1:
-    - Fix assert failure on malformed socks4a requests.
-    - Use identity comparison, not nickname comparison, to choose which
-      half of circuit-ID-space each side gets to use. This is needed
-      because sometimes we think of a router as a nickname, and sometimes
-      as a hex ID, and we can't predict what the other side will do.
-    - Catch and ignore SIGXFSZ signals when log files exceed 2GB; our
-      write() call will fail and we handle it there.
-    - Add a FAST_SMARTLIST define to optionally inline smartlist_get
-      and smartlist_len, which are two major profiling offenders.
 
-  o Bugfixes on 0.0.9pre5:
-    - Fix a bug in read_all that was corrupting config files on windows.
-    - When we're raising the max number of open file descriptors to
-      'unlimited', don't log that we just raised it to '-1'.
-    - Include event code with events, as required by control-spec.txt.
-    - Don't give a fingerprint when clients do --list-fingerprint:
-      it's misleading, because it will never be the same again.
-    - Stop using strlcpy in tor_strndup, since it was slowing us
-      down a lot.
-    - Remove warn on startup about missing cached-directory file.
-    - Make kill -USR1 work again.
-    - Hibernate if we start tor during the "wait for wakeup-time" phase
-      of an accounting interval. Log our hibernation plans better.
-    - Authoritative dirservers now also cache their directory, so they
-      have it on start-up.
+  o Features (directories):
+    - New "router-status" line in directory, to better bind each verified
+      nickname to its identity key.
+    - Clients can ask dirservers for /dir.z to get a compressed version
+      of the directory. Only works for servers running 0.0.9, of course.
+    - Make clients cache directories and use them to seed their router
+      lists at startup. This means clients have a datadir again.
+    - Respond to content-encoding headers by trying to uncompress as
+      appropriate.
+    - Clients and servers now fetch running-routers; cache
+      running-routers; compress running-routers; serve compressed
+      running-routers.z
+    - Make moria2 advertise a dirport of 80, so people behind firewalls
+      will be able to get a directory.
+    - Http proxy support
+      - Dirservers translate requests for http://%s:%d/x to /x
+      - You can specify "HttpProxy %s[:%d]" and all dir fetches will
+        be routed through this host.
+      - Clients ask for /tor/x rather than /x for new enough dirservers.
+        This way we can one day coexist peacefully with apache.
+      - Clients specify a "Host: %s%d" http header, to be compatible
+        with more proxies, and so running squid on an exit node can work.
+    - Protect dirservers from overzealous descriptor uploading -- wait
+      10 seconds after directory gets dirty, before regenerating.
 
-  o Features:
-    - Fetch running-routers; cache running-routers; compress
-      running-routers; serve compressed running-routers.z
-    - Add NSI installer script contributed by J Doe.
+  o Features (packages and install):
+    - Add NSI installer contributed by J Doe.
+    - Apply NT service patch from Osamu Fujino. Still needs more work.
     - Commit VC6 and VC7 workspace/project files.
     - Commit a tor.spec for making RPM files, with help from jbash.
     - Add contrib/torctl.in contributed by Glenn Fink.
-    - Implement the control-spec's SAVECONF command, to write your
-      configuration to torrc.
-    - Get cookie authentication for the controller closer to working.
-    - Include control-spec.txt in the tarball.
-    - When set_conf changes our server descriptor, upload a new copy.
-      But don't upload it too often if there are frequent changes.
-    - Document authentication config in man page, and document signals
-      we catch.
-    - Clean up confusing parts of man page and torrc.sample.
     - Make expand_filename handle ~ and ~username.
     - Use autoconf to enable largefile support where necessary. Use
       ftello where available, since ftell can fail at 2GB.
-    - Distinguish between TOR_TLS_CLOSE and TOR_TLS_ERROR, so we can
-      log more informatively.
-    - Give a slightly more useful output for "tor -h".
-    - Refuse application socks connections to port 0.
-    - Check clock skew for verified servers, but allow unverified
-      servers and clients to have any clock skew.
-    - Break DirFetchPostPeriod into:
-      - DirFetchPeriod for fetching full directory,
-      - StatusFetchPeriod for fetching running-routers,
-      - DirPostPeriod for posting server descriptor,
-      - RendPostPeriod for posting hidden service descriptors.
-    - Make sure the hidden service descriptors are at a random offset
-      from each other, to hinder linkability.
-
-pre5:
-  o Bugfixes on 0.0.8.1:
-    - Fix an assert bug where a hidden service provider would fail if
-      the first hop of his rendezvous circuit was down.
-    - Hidden service operators now correctly handle version 1 style
-      INTRODUCE1 cells (nobody generates them still, so not a critical
-      bug).
-    - If do_hup fails, actually notice.
-    - Handle more errnos from accept() without closing the listener.
-      Some OpenBSD machines were closing their listeners because
-      they ran out of file descriptors.
-    - Better handling of winsock includes on non-MSV win32 compilers.
-    - Some people had wrapped their tor client/server in a script
-      that would restart it whenever it died. This did not play well
-      with our "shut down if your version is obsolete" code. Now people
-      don't fetch a new directory if their local cached version is
-      recent enough.
-    - Make our autogen.sh work on ksh as well as bash.
-
-  o Bugfixes on 0.0.9pre4:
-    - Fix a seg fault in unit tests (doesn't affect main program).
-    - Send resolve cells to exit routers that are running a new
-      enough version of the resolve code to work right.
+    - Ship src/win32/ in the tarball, so people can use it to build.
+    - Make old win32 fall back to CWD if SHGetSpecialFolderLocation
+      is broken.
 
-  o Major Features:
-    - Hibernation: New config option "AccountingMaxKB" lets you
-      set how many KBytes per month you want to allow your server to
-      consume. Rather than spreading those bytes out evenly over the
-      month, we instead hibernate for some of the month and pop up
-      at a deterministic time, work until the bytes are consumed, then
-      hibernate again. Config option "MonthlyAccountingStart" lets you
-      specify which day of the month your billing cycle starts on.
+  o Features (ui controller):
     - Control interface: a separate program can now talk to your
       client/server over a socket, and get/set config options, receive
       notifications of circuits and streams starting/finishing/dying,
@@ -239,50 +186,31 @@
       with the control port.
     - "tor --hash-password zzyxz" will output a salted password for
       use in authenticating to the control interface.
+    - Implement the control-spec's SAVECONF command, to write your
+      configuration to torrc.
+    - Get cookie authentication for the controller closer to working.
+    - When set_conf changes our server descriptor, upload a new copy.
+      But don't upload it too often if there are frequent changes.
+
+  o Features (config and command-line):
+    - Deprecate unofficial config option abbreviations, and abbreviations
+      not on the command line.
+    - Configuration infrastructure support for warning on obsolete
+      options.
+    - Give a slightly more useful output for "tor -h".
+    - Break DirFetchPostPeriod into:
+      - DirFetchPeriod for fetching full directory,
+      - StatusFetchPeriod for fetching running-routers,
+      - DirPostPeriod for posting server descriptor,
+      - RendPostPeriod for posting hidden service descriptors.
     - New log format in config:
       "Log minsev[-maxsev] stdout|stderr|syslog" or
       "Log minsev[-maxsev] file /var/foo"
-
-  o Minor Features:
     - DirPolicy config option, to let people reject incoming addresses
       from their dirserver.
     - "tor --list-fingerprint" will list your identity key fingerprint
       and then exit.
-    - Add "pass" target for RedirectExit, to make it easier to break
-      out of a sequence of RedirectExit rules.
-    - Clients now generate a TLS cert too, in preparation for having
-      them act more like real nodes.
-    - Ship src/win32/ in the tarball, so people can use it to build.
-    - Make old win32 fall back to CWD if SHGetSpecialFolderLocation
-      is broken.
-    - New "router-status" line in directory, to better bind each verified
-      nickname to its identity key.
-    - Deprecate unofficial config option abbreviations, and abbreviations
-      not on the command line.
-    - Add a pure-C tor-resolve implementation.
-    - Use getrlimit and friends to ensure we can reach MaxConn (currently
-      1024) file descriptors.
-
-  o Code security improvements, inspired by Ilja:
-    - Replace sprintf with snprintf. (I think they were all safe, but
-      hey.)
-    - Replace strcpy/strncpy with strlcpy in more places.
-    - Avoid strcat; use snprintf or strlcat instead.
-    - snprintf wrapper with consistent (though not C99) overflow behavior.
-
-pre4:
-  o Bugfixes on 0.0.9pre3:
-    - Ignore fascistfirewall when uploading/downloading hidden service
-      descriptors, since we go through Tor for those; and when using
-      an HttpProxy, since we assume it can reach them all.
-    - When looking for an authoritative dirserver, use only the ones
-      configured at boot. Don't bother looking in the directory.
-    - If the server doesn't specify an exit policy, use the real default
-      exit policy, not reject *:*.
-    - The rest of the fix for get_default_conf_file() on older win32.
-    - Make 'Routerfile' config option obsolete.
-
-  o Features:
+    - Make tor --version --version dump the cvs Id of every file.
     - New 'MyFamily nick1,...' config option for a server to
       specify other servers that shouldn't be used in the same circuit
       with it. Only believed if nick1 also specifies us.
@@ -290,32 +218,8 @@
       specify nodes that it doesn't want to use in the same circuit.
     - New 'Redirectexit pattern address:port' config option for a
       server to redirect exit connections, e.g. to a local squid.
-
-pre3:
-  o Bugfixes on 0.0.8.1:
-    - Better torrc example lines for dirbindaddress and orbindaddress.
-    - Improved bounds checking on parsed ints (e.g. config options and
-      the ones we find in directories.)
-    - Better handling of size_t vs int, so we're more robust on 64
-      bit platforms.
-    - Fix the rest of the bug where a newly started OR would appear
-      as unverified even after we've added his fingerprint and hupped
-      the dirserver.
-    - Fix a bug from 0.0.7: when read() failed on a stream, we would
-      close it without sending back an end. So 'connection refused'
-      would simply be ignored and the user would get no response.
-
-  o Bugfixes on 0.0.9pre2:
-    - Serving the cached-on-disk directory to people is bad. We now
-      provide no directory until we've fetched a fresh one.
-    - Workaround for bug on windows where cached-directories get crlf
-      corruption.
-    - Make get_default_conf_file() work on older windows too.
-    - If we write a *:* exit policy line in the descriptor, don't write
-      any more exit policy lines.
-
-  o Features:
-    - Use only 0.0.9pre1 and later servers for resolve cells.
+    - Add "pass" target for RedirectExit, to make it easier to break
+      out of a sequence of RedirectExit rules.
     - Make the dirservers file obsolete.
       - Include a dir-signing-key token in directories to tell the
         parsing entity which key is being used to sign.
@@ -323,62 +227,27 @@
       - New config option "Dirserver %s:%d [fingerprint]", which can be
         repeated as many times as needed. If no dirservers specified,
         default to moria1,moria2,tor26.
-    - Make moria2 advertise a dirport of 80, so people behind firewalls
-      will be able to get a directory.
-    - Http proxy support
-      - Dirservers translate requests for http://%s:%d/x to /x
-      - You can specify "HttpProxy %s[:%d]" and all dir fetches will
-        be routed through this host.
-      - Clients ask for /tor/x rather than /x for new enough dirservers.
-        This way we can one day coexist peacefully with apache.
-      - Clients specify a "Host: %s%d" http header, to be compatible
-        with more proxies, and so running squid on an exit node can work.
-
-pre2:
-  o Bugfixes on pre1:
-    - Make fetching a cached directory work for 64-bit platforms too.
-    - Make zlib.h a required header, not an optional header.
-
-pre1:
-  o Bugfixes:
-    - Stop using separate defaults for no-config-file and
-      empty-config-file. Now you have to explicitly turn off SocksPort,
-      if you don't want it open.
-    - Improve man page to mention more of the 0.0.8 features.
-    - Change our file IO stuff (especially wrt OpenSSL) so win32 is
-      happier.
-    - Fix more dns related bugs: send back resolve_failed and end cells
-      more reliably when the resolve fails, rather than closing the
-      circuit and then trying to send the cell. Also attach dummy resolve
-      connections to a circuit *before* calling dns_resolve(), to fix
-      a bug where cached answers would never be sent in RESOLVED cells.
-    - When we run out of disk space, or other log writing error, don't
-      crash. Just stop logging to that log and continue.
-    - We were starting to daemonize before we opened our logs, so if
-      there were any problems opening logs, we would complain to stderr,
-      which wouldn't work, and then mysteriously exit.
-    - Fix a rare bug where sometimes a verified OR would connect to us
-      before he'd uploaded his descriptor, which would cause us to
-      assign conn->nickname as though he's unverified. Now we look through
-      the fingerprint list to see if he's there.
+      - Make 'Routerfile' config option obsolete.
+    - Discourage people from setting their dirfetchpostperiod more often
+      than once per minute.
 
-  o Features:
-    - Clients can ask dirservers for /dir.z to get a compressed version
-      of the directory. Only works for servers running 0.0.9, of course.
-    - Make clients cache directories and use them to seed their router
-      lists at startup. This means clients have a datadir again.
-    - Configuration infrastructure support for warning on obsolete
-      options.
-    - Respond to content-encoding headers by trying to uncompress as
-      appropriate.
-    - Reply with a deflated directory when a client asks for "dir.z".
-      We could use allow-encodings instead, but allow-encodings isn't
-      specified in HTTP 1.0.
+  o Features (other):
+    - kill -USR2 now moves all logs to loglevel debug (kill -HUP to
+      get back to normal.)
+    - Accept *:706 (silc) in default exit policy.
+    - Implement new versioning format for post 0.1.
+    - Distinguish between TOR_TLS_CLOSE and TOR_TLS_ERROR, so we can
+      log more informatively.
+    - Check clock skew for verified servers, but allow unverified
+      servers and clients to have any clock skew.
+    - Make sure the hidden service descriptors are at a random offset
+      from each other, to hinder linkability.
+    - Clients now generate a TLS cert too, in preparation for having
+      them act more like real nodes.
+    - Add a pure-C tor-resolve implementation.
+    - Use getrlimit and friends to ensure we can reach MaxConn (currently
+      1024) file descriptors.
     - Raise the max dns workers from 50 to 100.
-    - Discourage people from setting their dirfetchpostperiod more often
-      than once per minute
-    - Protect dirservers from overzealous descriptor uploading -- wait
-      10 seconds after directory gets dirty, before regenerating.
 
 
 Changes in version 0.0.8.1 - 2004-10-13