Przeglądaj źródła

make a changelog for 0.0.9

svn:r3131
Roger Dingledine 20 lat temu
rodzic
commit
99ef8c1ddb
1 zmienionych plików z 174 dodań i 305 usunięć
  1. 174 305
      ChangeLog

+ 174 - 305
ChangeLog

@@ -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
     - Fix isspace() and friends so they still make Solaris happy
       but also so they don't trigger asserts on win32.
       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).
     - Fix parse_iso_time on platforms without strptime (eg win32).
-    - win32: tolerate extra "readable" events better.
     - win32: when being multithreaded, leave parent fdarray open.
     - 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.
     - 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
     - Calculate timeout for waiting for a connected cell from the time
       we sent the begin cell, not from the time the stream started. If
       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
       it took a long time to establish the circuit, we would time out
@@ -36,8 +31,75 @@ rc6:
     - Fix router_compare_addr_to_addr_policy: it was not treating a port
     - Fix router_compare_addr_to_addr_policy: it was not treating a port
       of * as always matching, so we were picking reject *:* nodes as
       of * as always matching, so we were picking reject *:* nodes as
       exit nodes too. Oops.
       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
     - 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
       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
       or on the way that will handle each such port. Seed us with port
@@ -48,79 +110,26 @@ rc6:
     - If you haven't used a clean circuit in an hour, throw it away,
     - 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
       just to be on the safe side. (This means after 6 hours a totally
       unused Tor client will have no circuits open.)
       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
     - Support "foo.nickname.exit" addresses, to let Alice request the
       address "foo" as viewed by exit node "nickname". Based on a patch
       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
     - Implement weekly/monthly/daily accounting: now you specify your
       hibernation properties by
       hibernation properties by
       AccountingMax N bytes|KB|MB|GB|TB
       AccountingMax N bytes|KB|MB|GB|TB
@@ -128,108 +137,46 @@ rc1:
         Defaults to "month 1 0:00".
         Defaults to "month 1 0:00".
     - Let bandwidth and interval config options be specified as 5 bytes,
     - Let bandwidth and interval config options be specified as 5 bytes,
       kb, kilobytes, etc; and as seconds, minutes, hours, days, weeks.
       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 VC6 and VC7 workspace/project files.
     - Commit a tor.spec for making RPM files, with help from jbash.
     - Commit a tor.spec for making RPM files, with help from jbash.
     - Add contrib/torctl.in contributed by Glenn Fink.
     - 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.
     - Make expand_filename handle ~ and ~username.
     - Use autoconf to enable largefile support where necessary. Use
     - Use autoconf to enable largefile support where necessary. Use
       ftello where available, since ftell can fail at 2GB.
       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.
+    - 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 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.
-
-  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
     - Control interface: a separate program can now talk to your
       client/server over a socket, and get/set config options, receive
       client/server over a socket, and get/set config options, receive
       notifications of circuits and streams starting/finishing/dying,
       notifications of circuits and streams starting/finishing/dying,
@@ -239,50 +186,31 @@ pre5:
       with the control port.
       with the control port.
     - "tor --hash-password zzyxz" will output a salted password for
     - "tor --hash-password zzyxz" will output a salted password for
       use in authenticating to the control interface.
       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:
     - New log format in config:
       "Log minsev[-maxsev] stdout|stderr|syslog" or
       "Log minsev[-maxsev] stdout|stderr|syslog" or
       "Log minsev[-maxsev] file /var/foo"
       "Log minsev[-maxsev] file /var/foo"
-
-  o Minor Features:
     - DirPolicy config option, to let people reject incoming addresses
     - DirPolicy config option, to let people reject incoming addresses
       from their dirserver.
       from their dirserver.
     - "tor --list-fingerprint" will list your identity key fingerprint
     - "tor --list-fingerprint" will list your identity key fingerprint
       and then exit.
       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
     - New 'MyFamily nick1,...' config option for a server to
       specify other servers that shouldn't be used in the same circuit
       specify other servers that shouldn't be used in the same circuit
       with it. Only believed if nick1 also specifies us.
       with it. Only believed if nick1 also specifies us.
@@ -290,32 +218,8 @@ pre4:
       specify nodes that it doesn't want to use in the same circuit.
       specify nodes that it doesn't want to use in the same circuit.
     - New 'Redirectexit pattern address:port' config option for a
     - New 'Redirectexit pattern address:port' config option for a
       server to redirect exit connections, e.g. to a local squid.
       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.
     - Make the dirservers file obsolete.
       - Include a dir-signing-key token in directories to tell the
       - Include a dir-signing-key token in directories to tell the
         parsing entity which key is being used to sign.
         parsing entity which key is being used to sign.
@@ -323,62 +227,27 @@ pre3:
       - New config option "Dirserver %s:%d [fingerprint]", which can be
       - New config option "Dirserver %s:%d [fingerprint]", which can be
         repeated as many times as needed. If no dirservers specified,
         repeated as many times as needed. If no dirservers specified,
         default to moria1,moria2,tor26.
         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.
     - 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
 Changes in version 0.0.8.1 - 2004-10-13