|
@@ -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
|