Merge branch 'maint-0.2.1' into release-0.2.1
[tor.git] / ChangeLog
1 Changes in version 0.2.1.32 - 2011-12-16
2   Tor 0.2.1.32 backports important security and privacy fixes for
3   oldstable. This release is intended only for package maintainers and
4   others who cannot use the 0.2.2 stable series. All others should be
5   using Tor 0.2.2.x or newer.
6
7   The Tor 0.2.1.x series will reach formal end-of-life some time in
8   early 2012; we will stop releasing patches for it then.
9
10   o Major bugfixes (also included in 0.2.2.x):
11     - Correctly sanity-check that we don't underflow on a memory
12       allocation (and then assert) for hidden service introduction
13       point decryption. Bug discovered by Dan Rosenberg. Fixes bug 4410;
14       bugfix on 0.2.1.5-alpha.
15     - Fix a heap overflow bug that could occur when trying to pull
16       data into the first chunk of a buffer, when that chunk had
17       already had some data drained from it. Fixes CVE-2011-2778;
18       bugfix on 0.2.0.16-alpha. Reported by "Vektor".
19
20   o Minor features:
21     - Update to the December 6 2011 Maxmind GeoLite Country database.
22
23
24 Changes in version 0.2.1.31 - 2011-10-26
25   Tor 0.2.1.31 backports important security and privacy fixes for
26   oldstable. This release is intended only for package maintainers and
27   others who cannot use the 0.2.2 stable series. All others should be
28   using Tor 0.2.2.x or newer.
29
30   o Security fixes (also included in 0.2.2.x):
31     - Replace all potentially sensitive memory comparison operations
32       with versions whose runtime does not depend on the data being
33       compared. This will help resist a class of attacks where an
34       adversary can use variations in timing information to learn
35       sensitive data. Fix for one case of bug 3122. (Safe memcmp
36       implementation by Robert Ransom based partially on code by DJB.)
37     - Fix an assert in parsing router descriptors containing IPv6
38       addresses. This one took down the directory authorities when
39       somebody tried some experimental code. Bugfix on 0.2.1.3-alpha.
40
41   o Privacy/anonymity fixes (also included in 0.2.2.x):
42     - Clients and bridges no longer send TLS certificate chains on
43       outgoing OR connections. Previously, each client or bridge would
44       use the same cert chain for all outgoing OR connections until
45       its IP address changes, which allowed any relay that the client
46       or bridge contacted to determine which entry guards it is using.
47       Fixes CVE-2011-2768. Bugfix on 0.0.9pre5; found by "frosty_un".
48     - If a relay receives a CREATE_FAST cell on a TLS connection, it
49       no longer considers that connection as suitable for satisfying a
50       circuit EXTEND request. Now relays can protect clients from the
51       CVE-2011-2768 issue even if the clients haven't upgraded yet.
52     - Bridges now refuse CREATE or CREATE_FAST cells on OR connections
53       that they initiated. Relays could distinguish incoming bridge 
54       connections from client connections, creating another avenue for
55       enumerating bridges. Fixes CVE-2011-2769. Bugfix on 0.2.0.3-alpha.
56       Found by "frosty_un".
57     - When receiving a hidden service descriptor, check that it is for
58       the hidden service we wanted. Previously, Tor would store any
59       hidden service descriptors that a directory gave it, whether it
60       wanted them or not. This wouldn't have let an attacker impersonate
61       a hidden service, but it did let directories pre-seed a client
62       with descriptors that it didn't want. Bugfix on 0.0.6.
63     - Avoid linkability based on cached hidden service descriptors: forget
64       all hidden service descriptors cached as a client when processing a
65       SIGNAL NEWNYM command. Fixes bug 3000; bugfix on 0.0.6.
66     - Make the bridge directory authority refuse to answer directory
67       requests for "all" descriptors. It used to include bridge
68       descriptors in its answer, which was a major information leak.
69       Found by "piebeer". Bugfix on 0.2.0.3-alpha.
70     - Don't attach new streams to old rendezvous circuits after SIGNAL
71       NEWNYM. Previously, we would keep using an existing rendezvous
72       circuit if it remained open (i.e. if it were kept open by a
73       long-lived stream, or if a new stream were attached to it before
74       Tor could notice that it was old and no longer in use). Bugfix on
75       0.1.1.15-rc; fixes bug 3375.
76
77   o Minor bugfixes (also included in 0.2.2.x):
78     - When we restart our relay, we might get a successful connection
79       from the outside before we've started our reachability tests,
80       triggering a warning: "ORPort found reachable, but I have no
81       routerinfo yet. Failing to inform controller of success." This
82       bug was harmless unless Tor is running under a controller
83       like Vidalia, in which case the controller would never get a
84       REACHABILITY_SUCCEEDED status event. Bugfix on 0.1.2.6-alpha;
85       fixes bug 1172.
86     - Build correctly on OSX with zlib 1.2.4 and higher with all warnings
87       enabled. Fixes bug 1526.
88     - Remove undocumented option "-F" from tor-resolve: it hasn't done
89       anything since 0.2.1.16-rc.
90     - Avoid signed/unsigned comparisons by making SIZE_T_CEILING unsigned.
91       None of the cases where we did this before were wrong, but by making
92       this change we avoid warnings. Fixes bug 2475; bugfix on 0.2.1.28.
93     - Fix a rare crash bug that could occur when a client was configured
94       with a large number of bridges. Fixes bug 2629; bugfix on
95       0.2.1.2-alpha. Bugfix by trac user "shitlei".
96     - Correct the warning displayed when a rendezvous descriptor exceeds
97       the maximum size. Fixes bug 2750; bugfix on 0.2.1.5-alpha. Found by
98       John Brooks.
99     - Fix an uncommon assertion failure when running with DNSPort under
100       heavy load. Fixes bug 2933; bugfix on 0.2.0.1-alpha.
101     - When warning about missing zlib development packages during compile,
102       give the correct package names. Bugfix on 0.2.0.1-alpha.
103     - Require that introduction point keys and onion keys have public
104       exponent 65537. Bugfix on 0.2.0.10-alpha.
105     - Do not crash when our configuration file becomes unreadable, for
106       example due to a permissions change, between when we start up
107       and when a controller calls SAVECONF. Fixes bug 3135; bugfix
108       on 0.0.9pre6.
109     - Fix warnings from GCC 4.6's "-Wunused-but-set-variable" option.
110       Fixes bug 3208.
111     - Always NUL-terminate the sun_path field of a sockaddr_un before
112       passing it to the kernel. (Not a security issue: kernels are
113       smart enough to reject bad sockaddr_uns.) Found by Coverity;
114       CID #428. Bugfix on Tor 0.2.0.3-alpha.
115     - Don't stack-allocate the list of supplementary GIDs when we're
116       about to log them. Stack-allocating NGROUPS_MAX gid_t elements
117       could take up to 256K, which is way too much stack. Found by
118       Coverity; CID #450. Bugfix on 0.2.1.7-alpha.
119
120   o Minor bugfixes (only in 0.2.1.x):
121     - Resume using micro-version numbers in 0.2.1.x: our Debian packages
122       rely on them. Bugfix on 0.2.1.30.
123     - Use git revisions instead of svn revisions when generating our
124       micro-version numbers. Bugfix on 0.2.1.15-rc; fixes bug 2402.
125
126   o Minor features (also included in 0.2.2.x):
127     - Adjust the expiration time on our SSL session certificates to
128       better match SSL certs seen in the wild. Resolves ticket 4014.
129     - Allow nameservers with IPv6 address. Resolves bug 2574.
130     - Update to the October 4 2011 Maxmind GeoLite Country database.
131
132
133 Changes in version 0.2.1.30 - 2011-02-23
134   Tor 0.2.1.30 fixes a variety of less critical bugs. The main other
135   change is a slight tweak to Tor's TLS handshake that makes relays
136   and bridges that run this new version reachable from Iran again.
137   We don't expect this tweak will win the arms race long-term, but it
138   buys us time until we roll out a better solution.
139
140   o Major bugfixes:
141     - Stop sending a CLOCK_SKEW controller status event whenever
142       we fetch directory information from a relay that has a wrong clock.
143       Instead, only inform the controller when it's a trusted authority
144       that claims our clock is wrong. Bugfix on 0.1.2.6-alpha; fixes
145       the rest of bug 1074.
146     - Fix a bounds-checking error that could allow an attacker to
147       remotely crash a directory authority. Bugfix on 0.2.1.5-alpha.
148       Found by "piebeer".
149     - If relays set RelayBandwidthBurst but not RelayBandwidthRate,
150       Tor would ignore their RelayBandwidthBurst setting,
151       potentially using more bandwidth than expected. Bugfix on
152       0.2.0.1-alpha. Reported by Paul Wouters. Fixes bug 2470.
153     - Ignore and warn if the user mistakenly sets "PublishServerDescriptor
154       hidserv" in her torrc. The 'hidserv' argument never controlled
155       publication of hidden service descriptors. Bugfix on 0.2.0.1-alpha.
156
157   o Minor features:
158     - Adjust our TLS Diffie-Hellman parameters to match those used by
159       Apache's mod_ssl.
160     - Update to the February 1 2011 Maxmind GeoLite Country database.
161
162   o Minor bugfixes:
163     - Check for and reject overly long directory certificates and
164       directory tokens before they have a chance to hit any assertions.
165       Bugfix on 0.2.1.28. Found by "doorss".
166     - Bring the logic that gathers routerinfos and assesses the
167       acceptability of circuits into line. This prevents a Tor OP from
168       getting locked in a cycle of choosing its local OR as an exit for a
169       path (due to a .exit request) and then rejecting the circuit because
170       its OR is not listed yet. It also prevents Tor clients from using an
171       OR running in the same instance as an exit (due to a .exit request)
172       if the OR does not meet the same requirements expected of an OR
173       running elsewhere. Fixes bug 1859; bugfix on 0.1.0.1-rc.
174
175   o Packaging changes:
176     - Stop shipping the Tor specs files and development proposal documents
177       in the tarball. They are now in a separate git repository at
178       git://git.torproject.org/torspec.git
179     - Do not include Git version tags as though they are SVN tags when
180       generating a tarball from inside a repository that has switched
181       between branches. Bugfix on 0.2.1.15-rc; fixes bug 2402.
182
183
184 Changes in version 0.2.1.29 - 2011-01-15
185   Tor 0.2.1.29 continues our recent code security audit work. The main
186   fix resolves a remote heap overflow vulnerability that can allow remote
187   code execution. Other fixes address a variety of assert and crash bugs,
188   most of which we think are hard to exploit remotely.
189
190   o Major bugfixes (security):
191     - Fix a heap overflow bug where an adversary could cause heap
192       corruption. This bug probably allows remote code execution
193       attacks. Reported by "debuger". Fixes CVE-2011-0427. Bugfix on
194       0.1.2.10-rc.
195     - Prevent a denial-of-service attack by disallowing any
196       zlib-compressed data whose compression factor is implausibly
197       high. Fixes part of bug 2324; reported by "doorss".
198     - Zero out a few more keys in memory before freeing them. Fixes
199       bug 2384 and part of bug 2385. These key instances found by
200       "cypherpunks", based on Andrew Case's report about being able
201       to find sensitive data in Tor's memory space if you have enough
202       permissions. Bugfix on 0.0.2pre9.
203
204   o Major bugfixes (crashes):
205     - Prevent calls to Libevent from inside Libevent log handlers.
206       This had potential to cause a nasty set of crashes, especially
207       if running Libevent with debug logging enabled, and running
208       Tor with a controller watching for low-severity log messages.
209       Bugfix on 0.1.0.2-rc. Fixes bug 2190.
210     - Add a check for SIZE_T_MAX to tor_realloc() to try to avoid
211       underflow errors there too. Fixes the other part of bug 2324.
212     - Fix a bug where we would assert if we ever had a
213       cached-descriptors.new file (or another file read directly into
214       memory) of exactly SIZE_T_CEILING bytes. Fixes bug 2326; bugfix
215       on 0.2.1.25. Found by doorss.
216     - Fix some potential asserts and parsing issues with grossly
217       malformed router caches. Fixes bug 2352; bugfix on Tor 0.2.1.27.
218       Found by doorss.
219
220   o Minor bugfixes (other):
221     - Fix a bug with handling misformed replies to reverse DNS lookup
222       requests in DNSPort. Bugfix on Tor 0.2.0.1-alpha. Related to a
223       bug reported by doorss.
224     - Fix compilation on mingw when a pthreads compatibility library
225       has been installed. (We don't want to use it, so we shouldn't
226       be including pthread.h.) Fixes bug 2313; bugfix on 0.1.0.1-rc.
227     - Fix a bug where we would declare that we had run out of virtual
228       addresses when the address space was only half-exhausted. Bugfix
229       on 0.1.2.1-alpha.
230     - Correctly handle the case where AutomapHostsOnResolve is set but
231       no virtual addresses are available. Fixes bug 2328; bugfix on
232       0.1.2.1-alpha. Bug found by doorss.
233     - Correctly handle wrapping around to when we run out of virtual
234       address space. Found by cypherpunks, bugfix on 0.2.0.5-alpha.
235     - The 0.2.1.28 tarball was missing src/common/OpenBSD_malloc_Linux.c
236       because we built it with a too-old version of automake. Thus that
237       release broke ./configure --enable-openbsd-malloc, which is popular
238       among really fast exit relays on Linux.
239
240   o Minor features:
241     - Update to the January 1 2011 Maxmind GeoLite Country database.
242     - Introduce output size checks on all of our decryption functions.
243
244   o Build changes:
245     - Tor does not build packages correctly with Automake 1.6 and earlier;
246       added a check to Makefile.am to make sure that we're building with
247       Automake 1.7 or later.
248
249
250 Changes in version 0.2.1.28 - 2010-12-17
251   Tor 0.2.1.28 does some code cleanup to reduce the risk of remotely
252   exploitable bugs. We also took this opportunity to change the IP address
253   for one of our directory authorities, and to update the geoip database
254   we ship.
255
256   o Major bugfixes:
257     - Fix a remotely exploitable bug that could be used to crash instances
258       of Tor remotely by overflowing on the heap. Remote-code execution
259       hasn't been confirmed, but can't be ruled out. Everyone should
260       upgrade. Bugfix on the 0.1.1 series and later.
261
262   o Directory authority changes:
263     - Change IP address and ports for gabelmoo (v3 directory authority).
264
265   o Minor features:
266     - Update to the December 1 2010 Maxmind GeoLite Country database.
267
268
269 Changes in version 0.2.1.27 - 2010-11-23
270   Yet another OpenSSL security patch broke its compatibility with Tor:
271   Tor 0.2.1.27 makes relays work with openssl 0.9.8p and 1.0.0.b. We
272   also took this opportunity to fix several crash bugs, integrate a new
273   directory authority, and update the bundled GeoIP database.
274
275   o Major bugfixes:
276     - Resolve an incompatibility with OpenSSL 0.9.8p and OpenSSL 1.0.0b:
277       No longer set the tlsext_host_name extension on server SSL objects;
278       but continue to set it on client SSL objects. Our goal in setting
279       it was to imitate a browser, not a vhosting server. Fixes bug 2204;
280       bugfix on 0.2.1.1-alpha.
281     - Do not log messages to the controller while shrinking buffer
282       freelists. Doing so would sometimes make the controller connection
283       try to allocate a buffer chunk, which would mess up the internals
284       of the freelist and cause an assertion failure. Fixes bug 1125;
285       fixed by Robert Ransom. Bugfix on 0.2.0.16-alpha.
286     - Learn our external IP address when we're a relay or bridge, even if
287       we set PublishServerDescriptor to 0. Bugfix on 0.2.0.3-alpha,
288       where we introduced bridge relays that don't need to publish to
289       be useful. Fixes bug 2050.
290     - Do even more to reject (and not just ignore) annotations on
291       router descriptors received anywhere but from the cache. Previously
292       we would ignore such annotations at first, but cache them to disk
293       anyway. Bugfix on 0.2.0.8-alpha. Found by piebeer.
294     - When you're using bridges and your network goes away and your
295       bridges get marked as down, recover when you attempt a new socks
296       connection (if the network is back), rather than waiting up to an
297       hour to try fetching new descriptors for your bridges. Bugfix on
298       0.2.0.3-alpha; fixes bug 1981.
299
300   o Major features:
301     - Move to the November 2010 Maxmind GeoLite country db (rather
302       than the June 2009 ip-to-country GeoIP db) for our statistics that
303       count how many users relays are seeing from each country. Now we'll
304       have more accurate data, especially for many African countries.
305
306   o New directory authorities:
307     - Set up maatuska (run by Linus Nordberg) as the eighth v3 directory
308       authority.
309
310   o Minor bugfixes:
311     - Fix an assertion failure that could occur in directory caches or
312       bridge users when using a very short voting interval on a testing
313       network. Diagnosed by Robert Hogan. Fixes bug 1141; bugfix on
314       0.2.0.8-alpha.
315     - Enforce multiplicity rules when parsing annotations. Bugfix on
316       0.2.0.8-alpha. Found by piebeer.
317     - Allow handshaking OR connections to take a full KeepalivePeriod
318       seconds to handshake. Previously, we would close them after
319       IDLE_OR_CONN_TIMEOUT (180) seconds, the same timeout as if they
320       were open. Bugfix on 0.2.1.26; fixes bug 1840. Thanks to mingw-san
321       for analysis help.
322     - When building with --enable-gcc-warnings on OpenBSD, disable
323       warnings in system headers. This makes --enable-gcc-warnings
324       pass on OpenBSD 4.8.
325
326   o Minor features:
327     - Exit nodes didn't recognize EHOSTUNREACH as a plausible error code,
328       and so sent back END_STREAM_REASON_MISC. Clients now recognize a new
329       stream ending reason for this case: END_STREAM_REASON_NOROUTE.
330       Servers can start sending this code when enough clients recognize
331       it. Bugfix on 0.1.0.1-rc; fixes part of bug 1793.
332     - Build correctly on mingw with more recent versions of OpenSSL 0.9.8.
333       Patch from mingw-san.
334
335   o Removed files:
336     - Remove the old debian/ directory from the main Tor distribution.
337       The official Tor-for-debian git repository lives at the URL
338       https://git.torproject.org/debian/tor.git
339     - Stop shipping the old doc/website/ directory in the tarball. We
340       changed the website format in late 2010, and what we shipped in
341       0.2.1.26 really wasn't that useful anyway.
342
343
344 Changes in version 0.2.1.26 - 2010-05-02
345   Tor 0.2.1.26 addresses the recent connection and memory overload
346   problems we've been seeing on relays, especially relays with their
347   DirPort open. If your relay has been crashing, or you turned it off
348   because it used too many resources, give this release a try.
349
350   This release also fixes yet another instance of broken OpenSSL libraries
351   that was causing some relays to drop out of the consensus.
352
353   o Major bugfixes:
354     - Teach relays to defend themselves from connection overload. Relays
355       now close idle circuits early if it looks like they were intended
356       for directory fetches. Relays are also more aggressive about closing
357       TLS connections that have no circuits on them. Such circuits are
358       unlikely to be re-used, and tens of thousands of them were piling
359       up at the fast relays, causing the relays to run out of sockets
360       and memory. Bugfix on 0.2.0.22-rc (where clients started tunneling
361       their directory fetches over TLS).
362     - Fix SSL renegotiation behavior on OpenSSL versions like on Centos
363       that claim to be earlier than 0.9.8m, but which have in reality
364       backported huge swaths of 0.9.8m or 0.9.8n renegotiation
365       behavior. Possible fix for some cases of bug 1346.
366     - Directory mirrors were fetching relay descriptors only from v2
367       directory authorities, rather than v3 authorities like they should.
368       Only 2 v2 authorities remain (compared to 7 v3 authorities), leading
369       to a serious bottleneck. Bugfix on 0.2.0.9-alpha. Fixes bug 1324.
370
371   o Minor bugfixes:
372     - Finally get rid of the deprecated and now harmful notion of "clique
373       mode", where directory authorities maintain TLS connections to
374       every other relay.
375
376   o Testsuite fixes:
377     - In the util/threads test, no longer free the test_mutex before all
378       worker threads have finished. Bugfix on 0.2.1.6-alpha.
379     - The master thread could starve the worker threads quite badly on
380       certain systems, causing them to run only partially in the allowed
381       window. This resulted in test failures. Now the master thread sleeps
382       occasionally for a few microseconds while the two worker-threads
383       compete for the mutex. Bugfix on 0.2.0.1-alpha.
384
385
386 Changes in version 0.2.1.25 - 2010-03-16
387   Tor 0.2.1.25 fixes a regression introduced in 0.2.1.23 that could
388   prevent relays from guessing their IP address correctly. It also fixes
389   several minor potential security bugs.
390
391   o Major bugfixes:
392     - Fix a regression from our patch for bug 1244 that caused relays
393       to guess their IP address incorrectly if they didn't set Address
394       in their torrc and/or their address fails to resolve. Bugfix on
395       0.2.1.23; fixes bug 1269.
396     - When freeing a session key, zero it out completely. We only zeroed
397       the first ptrsize bytes. Bugfix on 0.0.2pre8. Discovered and
398       patched by ekir. Fixes bug 1254.
399
400   o Minor bugfixes:
401     - Fix a dereference-then-NULL-check sequence when publishing
402       descriptors. Bugfix on 0.2.1.5-alpha. Discovered by ekir; fixes
403       bug 1255.
404     - Fix another dereference-then-NULL-check sequence. Bugfix on
405       0.2.1.14-rc. Discovered by ekir; fixes bug 1256.
406     - Make sure we treat potentially not NUL-terminated strings correctly.
407       Bugfix on 0.1.1.13-alpha. Discovered by rieo; fixes bug 1257.
408
409
410 Changes in version 0.2.1.24 - 2010-02-21
411   Tor 0.2.1.24 makes Tor work again on the latest OS X -- this time
412   for sure!
413
414   o Minor bugfixes:
415     - Work correctly out-of-the-box with even more vendor-patched versions
416       of OpenSSL. In particular, make it so Debian and OS X don't need
417       customized patches to run/build.
418
419
420 Changes in version 0.2.1.23 - 2010-02-13
421   Tor 0.2.1.23 fixes a huge client-side performance bug, makes Tor work
422   again on the latest OS X, and updates the location of a directory
423   authority.
424
425   o Major bugfixes (performance):
426     - We were selecting our guards uniformly at random, and then weighting
427       which of our guards we'd use uniformly at random. This imbalance
428       meant that Tor clients were severely limited on throughput (and
429       probably latency too) by the first hop in their circuit. Now we
430       select guards weighted by currently advertised bandwidth. We also
431       automatically discard guards picked using the old algorithm. Fixes
432       bug 1217; bugfix on 0.2.1.3-alpha. Found by Mike Perry.
433
434   o Major bugfixes:
435     - Make Tor work again on the latest OS X: when deciding whether to
436       use strange flags to turn TLS renegotiation on, detect the OpenSSL
437       version at run-time, not compile time. We need to do this because
438       Apple doesn't update its dev-tools headers when it updates its
439       libraries in a security patch.
440     - Fix a potential buffer overflow in lookup_last_hid_serv_request()
441       that could happen on 32-bit platforms with 64-bit time_t. Also fix
442       a memory leak when requesting a hidden service descriptor we've
443       requested before. Fixes bug 1242, bugfix on 0.2.0.18-alpha. Found
444       by aakova.
445
446   o Directory authority changes:
447     - Change IP address for dannenberg (v3 directory authority), and
448       remove moria2 (obsolete v1, v2 directory authority and v0 hidden
449       service directory authority) from the list.
450
451   o Minor bugfixes:
452     - Refactor resolve_my_address() to not use gethostbyname() anymore.
453       Fixes bug 1244; bugfix on 0.0.2pre25. Reported by Mike Mestnik.
454
455   o Minor features:
456     - Avoid a mad rush at the beginning of each month when each client
457       rotates half of its guards. Instead we spread the rotation out
458       throughout the month, but we still avoid leaving a precise timestamp
459       in the state file about when we first picked the guard. Improves
460       over the behavior introduced in 0.1.2.17.
461
462
463 Changes in version 0.2.1.22 - 2010-01-19
464   Tor 0.2.1.22 fixes a critical privacy problem in bridge directory
465   authorities -- it would tell you its whole history of bridge descriptors
466   if you make the right directory request. This stable update also
467   rotates two of the seven v3 directory authority keys and locations.
468
469   o Directory authority changes:
470     - Rotate keys (both v3 identity and relay identity) for moria1
471       and gabelmoo.
472
473   o Major bugfixes:
474     - Stop bridge directory authorities from answering dbg-stability.txt
475       directory queries, which would let people fetch a list of all
476       bridge identities they track. Bugfix on 0.2.1.6-alpha.
477
478
479 Changes in version 0.2.1.21 - 2009-12-21
480   Tor 0.2.1.21 fixes an incompatibility with the most recent OpenSSL
481   library. If you use Tor on Linux / Unix and you're getting SSL
482   renegotiation errors, upgrading should help. We also recommend an
483   upgrade if you're an exit relay.
484
485   o Major bugfixes:
486     - Work around a security feature in OpenSSL 0.9.8l that prevents our
487       handshake from working unless we explicitly tell OpenSSL that we
488       are using SSL renegotiation safely. We are, of course, but OpenSSL
489       0.9.8l won't work unless we say we are.
490     - Avoid crashing if the client is trying to upload many bytes and the
491       circuit gets torn down at the same time, or if the flip side
492       happens on the exit relay. Bugfix on 0.2.0.1-alpha; fixes bug 1150.
493
494   o Minor bugfixes:
495     - Do not refuse to learn about authority certs and v2 networkstatus
496       documents that are older than the latest consensus. This bug might
497       have degraded client bootstrapping. Bugfix on 0.2.0.10-alpha.
498       Spotted and fixed by xmux.
499     - Fix a couple of very-hard-to-trigger memory leaks, and one hard-to-
500       trigger platform-specific option misparsing case found by Coverity
501       Scan.
502     - Fix a compilation warning on Fedora 12 by removing an impossible-to-
503       trigger assert. Fixes bug 1173.
504
505
506 Changes in version 0.2.1.20 - 2009-10-15
507   Tor 0.2.1.20 fixes a crash bug when you're accessing many hidden
508   services at once, prepares for more performance improvements, and
509   fixes a bunch of smaller bugs.
510
511   The Windows and OS X bundles also include a more recent Vidalia,
512   and switch from Privoxy to Polipo.
513
514   The OS X installers are now drag and drop. It's best to un-install
515   Tor/Vidalia and then install this new bundle, rather than upgrade. If
516   you want to upgrade, you'll need to update the paths for Tor and Polipo
517   in the Vidalia Settings window.
518
519   o Major bugfixes:
520     - Send circuit or stream sendme cells when our window has decreased
521       by 100 cells, not when it has decreased by 101 cells. Bug uncovered
522       by Karsten when testing the "reduce circuit window" performance
523       patch. Bugfix on the 54th commit on Tor -- from July 2002,
524       before the release of Tor 0.0.0. This is the new winner of the
525       oldest-bug prize.
526     - Fix a remotely triggerable memory leak when a consensus document
527       contains more than one signature from the same voter. Bugfix on
528       0.2.0.3-alpha.
529     - Avoid segfault in rare cases when finishing an introduction circuit
530       as a client and finding out that we don't have an introduction key
531       for it. Fixes bug 1073. Reported by Aaron Swartz.
532
533   o Major features:
534     - Tor now reads the "circwindow" parameter out of the consensus,
535       and uses that value for its circuit package window rather than the
536       default of 1000 cells. Begins the implementation of proposal 168.
537
538   o New directory authorities:
539     - Set up urras (run by Jacob Appelbaum) as the seventh v3 directory
540       authority.
541     - Move moria1 and tonga to alternate IP addresses.
542
543   o Minor bugfixes:
544     - Fix a signed/unsigned compile warning in 0.2.1.19.
545     - Fix possible segmentation fault on directory authorities. Bugfix on
546       0.2.1.14-rc.
547     - Fix an extremely rare infinite recursion bug that could occur if
548       we tried to log a message after shutting down the log subsystem.
549       Found by Matt Edman. Bugfix on 0.2.0.16-alpha.
550     - Fix an obscure bug where hidden services on 64-bit big-endian
551       systems might mis-read the timestamp in v3 introduce cells, and
552       refuse to connect back to the client. Discovered by "rotor".
553       Bugfix on 0.2.1.6-alpha.
554     - We were triggering a CLOCK_SKEW controller status event whenever
555       we connect via the v2 connection protocol to any relay that has
556       a wrong clock. Instead, we should only inform the controller when
557       it's a trusted authority that claims our clock is wrong. Bugfix
558       on 0.2.0.20-rc; starts to fix bug 1074. Reported by SwissTorExit.
559     - We were telling the controller about CHECKING_REACHABILITY and
560       REACHABILITY_FAILED status events whenever we launch a testing
561       circuit or notice that one has failed. Instead, only tell the
562       controller when we want to inform the user of overall success or
563       overall failure. Bugfix on 0.1.2.6-alpha. Fixes bug 1075. Reported
564       by SwissTorExit.
565     - Don't warn when we're using a circuit that ends with a node
566       excluded in ExcludeExitNodes, but the circuit is not used to access
567       the outside world. This should help fix bug 1090. Bugfix on
568       0.2.1.6-alpha.
569     - Work around a small memory leak in some versions of OpenSSL that
570       stopped the memory used by the hostname TLS extension from being
571       freed.
572
573   o Minor features:
574     - Add a "getinfo status/accepted-server-descriptor" controller
575       command, which is the recommended way for controllers to learn
576       whether our server descriptor has been successfully received by at
577       least on directory authority. Un-recommend good-server-descriptor
578       getinfo and status events until we have a better design for them.
579
580
581 Changes in version 0.2.1.19 - 2009-07-28
582   Tor 0.2.1.19 fixes a major bug with accessing and providing hidden
583   services on Tor 0.2.1.3-alpha through 0.2.1.18.
584
585   o Major bugfixes:
586     - Make accessing hidden services on 0.2.1.x work right again.
587       Bugfix on 0.2.1.3-alpha; workaround for bug 1038. Diagnosis and
588       part of patch provided by "optimist".
589
590   o Minor features:
591     - When a relay/bridge is writing out its identity key fingerprint to
592       the "fingerprint" file and to its logs, write it without spaces. Now
593       it will look like the fingerprints in our bridges documentation,
594       and confuse fewer users.
595
596   o Minor bugfixes:
597     - Relays no longer publish a new server descriptor if they change
598       their MaxAdvertisedBandwidth config option but it doesn't end up
599       changing their advertised bandwidth numbers. Bugfix on 0.2.0.28-rc;
600       fixes bug 1026. Patch from Sebastian.
601     - Avoid leaking memory every time we get a create cell but we have
602       so many already queued that we refuse it. Bugfix on 0.2.0.19-alpha;
603       fixes bug 1034. Reported by BarkerJr.
604
605
606 Changes in version 0.2.1.18 - 2009-07-24
607   Tor 0.2.1.18 lays the foundations for performance improvements,
608   adds status events to help users diagnose bootstrap problems, adds
609   optional authentication/authorization for hidden services, fixes a
610   variety of potential anonymity problems, and includes a huge pile of
611   other features and bug fixes.
612
613   o Build fixes:
614     - Add LIBS=-lrt to Makefile.am so the Tor RPMs use a static libevent.
615
616
617 Changes in version 0.2.1.17-rc - 2009-07-07
618   Tor 0.2.1.17-rc marks the fourth -- and hopefully last -- release
619   candidate for the 0.2.1.x series. It lays the groundwork for further
620   client performance improvements, and also fixes a big bug with directory
621   authorities that were causing them to assign Guard and Stable flags
622   poorly.
623
624   The Windows bundles also finally include the geoip database that we
625   thought we'd been shipping since 0.2.0.x (oops), and the OS X bundles
626   should actually install Torbutton rather than giving you a cryptic
627   failure message (oops).
628
629   o Major features:
630     - Clients now use the bandwidth values in the consensus, rather than
631       the bandwidth values in each relay descriptor. This approach opens
632       the door to more accurate bandwidth estimates once the directory
633       authorities start doing active measurements. Implements more of
634       proposal 141.
635
636   o Major bugfixes:
637     - When Tor clients restart after 1-5 days, they discard all their
638       cached descriptors as too old, but they still use the cached
639       consensus document. This approach is good for robustness, but
640       bad for performance: since they don't know any bandwidths, they
641       end up choosing at random rather than weighting their choice by
642       speed. Fixed by the above feature of putting bandwidths in the
643       consensus. Bugfix on 0.2.0.x.
644     - Directory authorities were neglecting to mark relays down in their
645       internal histories if the relays fall off the routerlist without
646       ever being found unreachable. So there were relays in the histories
647       that haven't been seen for eight months, and are listed as being
648       up for eight months. This wreaked havoc on the "median wfu"
649       and "median mtbf" calculations, in turn making Guard and Stable
650       flags very wrong, hurting network performance. Fixes bugs 696 and
651       969. Bugfix on 0.2.0.6-alpha.
652
653   o Minor bugfixes:
654     - Serve the DirPortFrontPage page even when we have been approaching
655       our quotas recently. Fixes bug 1013; bugfix on 0.2.1.8-alpha.
656     - The control port would close the connection before flushing long
657       replies, such as the network consensus, if a QUIT command was issued
658       before the reply had completed. Now, the control port flushes all
659       pending replies before closing the connection. Also fixed a spurious
660       warning when a QUIT command is issued after a malformed or rejected
661       AUTHENTICATE command, but before the connection was closed. Patch
662       by Marcus Griep. Bugfix on 0.2.0.x; fixes bugs 1015 and 1016.
663     - When we can't find an intro key for a v2 hidden service descriptor,
664       fall back to the v0 hidden service descriptor and log a bug message.
665       Workaround for bug 1024.
666     - Fix a log message that did not respect the SafeLogging option.
667       Resolves bug 1027.
668
669   o Minor features:
670     - If we're a relay and we change our IP address, be more verbose
671       about the reason that made us change. Should help track down
672       further bugs for relays on dynamic IP addresses.
673
674
675 Changes in version 0.2.0.35 - 2009-06-24
676   o Security fix:
677     - Avoid crashing in the presence of certain malformed descriptors.
678       Found by lark, and by automated fuzzing.
679     - Fix an edge case where a malicious exit relay could convince a
680       controller that the client's DNS question resolves to an internal IP
681       address. Bug found and fixed by "optimist"; bugfix on 0.1.2.8-beta.
682
683   o Major bugfixes:
684     - Finally fix the bug where dynamic-IP relays disappear when their
685       IP address changes: directory mirrors were mistakenly telling
686       them their old address if they asked via begin_dir, so they
687       never got an accurate answer about their new address, so they
688       just vanished after a day. For belt-and-suspenders, relays that
689       don't set Address in their config now avoid using begin_dir for
690       all direct connections. Should fix bugs 827, 883, and 900.
691     - Fix a timing-dependent, allocator-dependent, DNS-related crash bug
692       that would occur on some exit nodes when DNS failures and timeouts
693       occurred in certain patterns. Fix for bug 957.
694
695   o Minor bugfixes:
696     - When starting with a cache over a few days old, do not leak
697       memory for the obsolete router descriptors in it. Bugfix on
698       0.2.0.33; fixes bug 672.
699     - Hidden service clients didn't use a cached service descriptor that
700       was older than 15 minutes, but wouldn't fetch a new one either,
701       because there was already one in the cache. Now, fetch a v2
702       descriptor unless the same descriptor was added to the cache within
703       the last 15 minutes. Fixes bug 997; reported by Marcus Griep.
704
705
706 Changes in version 0.2.1.16-rc - 2009-06-20
707   Tor 0.2.1.16-rc speeds up performance for fast exit relays, and fixes
708   a bunch of minor bugs.
709
710   o Security fixes:
711     - Fix an edge case where a malicious exit relay could convince a
712       controller that the client's DNS question resolves to an internal IP
713       address. Bug found and fixed by "optimist"; bugfix on 0.1.2.8-beta.
714
715   o Major performance improvements (on 0.2.0.x):
716     - Disable and refactor some debugging checks that forced a linear scan
717       over the whole server-side DNS cache. These accounted for over 50%
718       of CPU time on a relatively busy exit node's gprof profile. Found
719       by Jacob.
720     - Disable some debugging checks that appeared in exit node profile
721       data.
722
723   o Minor features:
724     - Update to the "June 3 2009" ip-to-country file.
725     - Do not have tor-resolve automatically refuse all .onion addresses;
726       if AutomapHostsOnResolve is set in your torrc, this will work fine.
727
728   o Minor bugfixes (on 0.2.0.x):
729     - Log correct error messages for DNS-related network errors on
730       Windows.
731     - Fix a race condition that could cause crashes or memory corruption
732       when running as a server with a controller listening for log
733       messages.
734     - Avoid crashing when we have a policy specified in a DirPolicy or
735       SocksPolicy or ReachableAddresses option with ports set on it,
736       and we re-load the policy. May fix bug 996.
737     - Hidden service clients didn't use a cached service descriptor that
738       was older than 15 minutes, but wouldn't fetch a new one either,
739       because there was already one in the cache. Now, fetch a v2
740       descriptor unless the same descriptor was added to the cache within
741       the last 15 minutes. Fixes bug 997; reported by Marcus Griep.
742
743   o Minor bugfixes (on 0.2.1.x):
744     - Don't warn users about low port and hibernation mix when they
745       provide a *ListenAddress directive to fix that. Bugfix on
746       0.2.1.15-rc.
747     - When switching back and forth between bridge mode, do not start
748       gathering GeoIP data until two hours have passed.
749     - Do not complain that the user has requested an excluded node as
750       an exit when the node is not really an exit. This could happen
751       because the circuit was for testing, or an introduction point.
752       Fix for bug 984.
753
754
755 Changes in version 0.2.1.15-rc - 2009-05-25
756   Tor 0.2.1.15-rc marks the second release candidate for the 0.2.1.x
757   series. It fixes a major bug on fast exit relays, as well as a variety
758   of more minor bugs.
759
760   o Major bugfixes (on 0.2.0.x):
761     - Fix a timing-dependent, allocator-dependent, DNS-related crash bug
762       that would occur on some exit nodes when DNS failures and timeouts
763       occurred in certain patterns. Fix for bug 957.
764
765   o Minor bugfixes (on 0.2.0.x):
766     - Actually return -1 in the error case for read_bandwidth_usage().
767       Harmless bug, since we currently don't care about the return value
768       anywhere. Bugfix on 0.2.0.9-alpha.
769     - Provide a more useful log message if bug 977 (related to buffer
770       freelists) ever reappears, and do not crash right away.
771     - Fix an assertion failure on 64-bit platforms when we allocated
772       memory right up to the end of a memarea, then realigned the memory
773       one step beyond the end. Fixes a possible cause of bug 930.
774     - Protect the count of open sockets with a mutex, so we can't
775       corrupt it when two threads are closing or opening sockets at once.
776       Fix for bug 939. Bugfix on 0.2.0.1-alpha.
777     - Don't allow a bridge to publish its router descriptor to a
778       non-bridge directory authority. Fixes part of bug 932.
779     - When we change to or from being a bridge, reset our counts of
780       client usage by country. Fixes bug 932.
781     - Fix a bug that made stream bandwidth get misreported to the
782       controller.
783     - Stop using malloc_usable_size() to use more area than we had
784       actually allocated: it was safe, but made valgrind really unhappy.
785     - Fix a memory leak when v3 directory authorities load their keys
786       and cert from disk. Bugfix on 0.2.0.1-alpha.
787
788   o Minor bugfixes (on 0.2.1.x):
789     - Fix use of freed memory when deciding to mark a non-addable
790       descriptor as never-downloadable. Bugfix on 0.2.1.9-alpha.
791
792
793 Changes in version 0.2.1.14-rc - 2009-04-12
794   Tor 0.2.1.14-rc marks the first release candidate for the 0.2.1.x
795   series. It begins fixing some major performance problems, and also
796   finally addresses the bug that was causing relays on dynamic IP
797   addresses to fall out of the directory.
798
799   o Major features:
800     - Clients replace entry guards that were chosen more than a few months
801       ago. This change should significantly improve client performance,
802       especially once more people upgrade, since relays that have been
803       a guard for a long time are currently overloaded.
804
805   o Major bugfixes (on 0.2.0):
806     - Finally fix the bug where dynamic-IP relays disappear when their
807       IP address changes: directory mirrors were mistakenly telling
808       them their old address if they asked via begin_dir, so they
809       never got an accurate answer about their new address, so they
810       just vanished after a day. For belt-and-suspenders, relays that
811       don't set Address in their config now avoid using begin_dir for
812       all direct connections. Should fix bugs 827, 883, and 900.
813     - Relays were falling out of the networkstatus consensus for
814       part of a day if they changed their local config but the
815       authorities discarded their new descriptor as "not sufficiently
816       different". Now directory authorities accept a descriptor as changed
817       if bandwidthrate or bandwidthburst changed. Partial fix for bug 962;
818       patch by Sebastian.
819     - Avoid crashing in the presence of certain malformed descriptors.
820       Found by lark, and by automated fuzzing.
821
822   o Minor features:
823     - When generating circuit events with verbose nicknames for
824       controllers, try harder to look up nicknames for routers on a
825       circuit. (Previously, we would look in the router descriptors we had
826       for nicknames, but not in the consensus.) Partial fix for bug 941.
827     - If the bridge config line doesn't specify a port, assume 443.
828       This makes bridge lines a bit smaller and easier for users to
829       understand.
830     - Raise the minimum bandwidth to be a relay from 20000 bytes to 20480
831       bytes (aka 20KB/s), to match our documentation. Also update
832       directory authorities so they always assign the Fast flag to relays
833       with 20KB/s of capacity. Now people running relays won't suddenly
834       find themselves not seeing any use, if the network gets faster
835       on average.
836     - Update to the "April 3 2009" ip-to-country file.
837
838   o Minor bugfixes:
839     - Avoid trying to print raw memory to the logs when we decide to
840       give up on downloading a given relay descriptor. Bugfix on
841       0.2.1.9-alpha.
842     - In tor-resolve, when the Tor client to use is specified by
843       <hostname>:<port>, actually use the specified port rather than
844       defaulting to 9050. Bugfix on 0.2.1.6-alpha.
845     - Make directory usage recording work again. Bugfix on 0.2.1.6-alpha.
846     - When starting with a cache over a few days old, do not leak
847       memory for the obsolete router descriptors in it. Bugfix on
848       0.2.0.33.
849     - Avoid double-free on list of successfully uploaded hidden
850       service discriptors. Fix for bug 948. Bugfix on 0.2.1.6-alpha.
851     - Change memarea_strndup() implementation to work even when
852       duplicating a string at the end of a page. This bug was
853       harmless for now, but could have meant crashes later. Fix by
854       lark. Bugfix on 0.2.1.1-alpha.
855     - Limit uploaded directory documents to be 16M rather than 500K.
856       The directory authorities were refusing v3 consensus votes from
857       other authorities, since the votes are now 504K. Fixes bug 959;
858       bugfix on 0.0.2pre17 (where we raised it from 50K to 500K ;).
859     - Directory authorities should never send a 503 "busy" response to
860       requests for votes or keys. Bugfix on 0.2.0.8-alpha; exposed by
861       bug 959.
862
863
864 Changes in version 0.2.1.13-alpha - 2009-03-09
865   Tor 0.2.1.13-alpha includes another big pile of minor bugfixes and
866   cleanups. We're finally getting close to a release candidate.
867
868   o Major bugfixes:
869     - Correctly update the list of which countries we exclude as
870       exits, when the GeoIP file is loaded or reloaded. Diagnosed by
871       lark. Bugfix on 0.2.1.6-alpha.
872
873   o Minor bugfixes (on 0.2.0.x and earlier):
874     - Automatically detect MacOSX versions earlier than 10.4.0, and
875       disable kqueue from inside Tor when running with these versions.
876       We previously did this from the startup script, but that was no
877       help to people who didn't use the startup script. Resolves bug 863.
878     - When we had picked an exit node for a connection, but marked it as
879       "optional", and it turned out we had no onion key for the exit,
880       stop wanting that exit and try again. This situation may not
881       be possible now, but will probably become feasible with proposal
882       158. Spotted by rovv. Fixes another case of bug 752.
883     - Clients no longer cache certificates for authorities they do not
884       recognize. Bugfix on 0.2.0.9-alpha.
885     - When we can't transmit a DNS request due to a network error, retry
886       it after a while, and eventually transmit a failing response to
887       the RESOLVED cell. Bugfix on 0.1.2.5-alpha.
888     - If the controller claimed responsibility for a stream, but that
889       stream never finished making its connection, it would live
890       forever in circuit_wait state. Now we close it after SocksTimeout
891       seconds. Bugfix on 0.1.2.7-alpha; reported by Mike Perry.
892     - Drop begin cells to a hidden service if they come from the middle
893       of a circuit. Patch from lark.
894     - When we erroneously receive two EXTEND cells for the same circuit
895       ID on the same connection, drop the second. Patch from lark.
896     - Fix a crash that occurs on exit nodes when a nameserver request
897       timed out. Bugfix on 0.1.2.1-alpha; our CLEAR debugging code had
898       been suppressing the bug since 0.1.2.10-alpha. Partial fix for
899       bug 929.
900     - Do not assume that a stack-allocated character array will be
901       64-bit aligned on platforms that demand that uint64_t access is
902       aligned. Possible fix for bug 604.
903     - Parse dates and IPv4 addresses in a locale- and libc-independent
904       manner, to avoid platform-dependent behavior on malformed input.
905     - Build correctly when configured to build outside the main source
906       path. Patch from Michael Gold.
907     - We were already rejecting relay begin cells with destination port
908       of 0. Now also reject extend cells with destination port or address
909       of 0. Suggested by lark.
910
911   o Minor bugfixes (on 0.2.1.x):
912     - Don't re-extend introduction circuits if we ran out of RELAY_EARLY
913       cells. Bugfix on 0.2.1.3-alpha. Fixes more of bug 878.
914     - If we're an exit node, scrub the IP address to which we are exiting
915       in the logs. Bugfix on 0.2.1.8-alpha.
916
917   o Minor features:
918     - On Linux, use the prctl call to re-enable core dumps when the user
919       is option is set.
920     - New controller event NEWCONSENSUS that lists the networkstatus
921       lines for every recommended relay. Now controllers like Torflow
922       can keep up-to-date on which relays they should be using.
923     - Update to the "February 26 2009" ip-to-country file.
924
925
926 Changes in version 0.2.0.34 - 2009-02-08
927   Tor 0.2.0.34 features several more security-related fixes. You should
928   upgrade, especially if you run an exit relay (remote crash) or a
929   directory authority (remote infinite loop), or you're on an older
930   (pre-XP) or not-recently-patched Windows (remote exploit).
931
932   This release marks end-of-life for Tor 0.1.2.x. Those Tor versions
933   have many known flaws, and nobody should be using them. You should
934   upgrade. If you're using a Linux or BSD and its packages are obsolete,
935   stop using those packages and upgrade anyway.
936
937   o Security fixes:
938     - Fix an infinite-loop bug on handling corrupt votes under certain
939       circumstances. Bugfix on 0.2.0.8-alpha.
940     - Fix a temporary DoS vulnerability that could be performed by
941       a directory mirror. Bugfix on 0.2.0.9-alpha; reported by lark.
942     - Avoid a potential crash on exit nodes when processing malformed
943       input. Remote DoS opportunity. Bugfix on 0.2.0.33.
944     - Do not accept incomplete ipv4 addresses (like 192.168.0) as valid.
945       Spec conformance issue. Bugfix on Tor 0.0.2pre27.
946
947   o Minor bugfixes:
948     - Fix compilation on systems where time_t is a 64-bit integer.
949       Patch from Matthias Drochner.
950     - Don't consider expiring already-closed client connections. Fixes
951       bug 893. Bugfix on 0.0.2pre20.
952
953
954 Changes in version 0.2.1.12-alpha - 2009-02-08
955   Tor 0.2.1.12-alpha features several more security-related fixes. You
956   should upgrade, especially if you run an exit relay (remote crash) or
957   a directory authority (remote infinite loop), or you're on an older
958   (pre-XP) or not-recently-patched Windows (remote exploit). It also
959   includes a big pile of minor bugfixes and cleanups.
960
961   o Security fixes:
962     - Fix an infinite-loop bug on handling corrupt votes under certain
963       circumstances. Bugfix on 0.2.0.8-alpha.
964     - Fix a temporary DoS vulnerability that could be performed by
965       a directory mirror. Bugfix on 0.2.0.9-alpha; reported by lark.
966     - Avoid a potential crash on exit nodes when processing malformed
967       input. Remote DoS opportunity. Bugfix on 0.2.1.7-alpha.
968
969   o Minor bugfixes:
970     - Let controllers actually ask for the "clients_seen" event for
971       getting usage summaries on bridge relays. Bugfix on 0.2.1.10-alpha;
972       reported by Matt Edman.
973     - Fix a compile warning on OSX Panther. Fixes bug 913; bugfix against
974       0.2.1.11-alpha.
975     - Fix a bug in address parsing that was preventing bridges or hidden
976       service targets from being at IPv6 addresses.
977     - Solve a bug that kept hardware crypto acceleration from getting
978       enabled when accounting was turned on. Fixes bug 907. Bugfix on
979       0.0.9pre6.
980     - Remove a bash-ism from configure.in to build properly on non-Linux
981       platforms. Bugfix on 0.2.1.1-alpha.
982     - Fix code so authorities _actually_ send back X-Descriptor-Not-New
983       headers. Bugfix on 0.2.0.10-alpha.
984     - Don't consider expiring already-closed client connections. Fixes
985       bug 893. Bugfix on 0.0.2pre20.
986     - Fix another interesting corner-case of bug 891 spotted by rovv:
987       Previously, if two hosts had different amounts of clock drift, and
988       one of them created a new connection with just the wrong timing,
989       the other might decide to deprecate the new connection erroneously.
990       Bugfix on 0.1.1.13-alpha.
991     - Resolve a very rare crash bug that could occur when the user forced
992       a nameserver reconfiguration during the middle of a nameserver
993       probe. Fixes bug 526. Bugfix on 0.1.2.1-alpha.
994     - Support changing value of ServerDNSRandomizeCase during SIGHUP.
995       Bugfix on 0.2.1.7-alpha.
996     - If we're using bridges and our network goes away, be more willing
997       to forgive our bridges and try again when we get an application
998       request. Bugfix on 0.2.0.x.
999
1000   o Minor features:
1001     - Support platforms where time_t is 64 bits long. (Congratulations,
1002       NetBSD!) Patch from Matthias Drochner.
1003     - Add a 'getinfo status/clients-seen' controller command, in case
1004       controllers want to hear clients_seen events but connect late.
1005
1006   o Build changes:
1007     - Disable GCC's strict alias optimization by default, to avoid the
1008       likelihood of its introducing subtle bugs whenever our code violates
1009       the letter of C99's alias rules.
1010
1011
1012 Changes in version 0.2.0.33 - 2009-01-21
1013   Tor 0.2.0.33 fixes a variety of bugs that were making relays less
1014   useful to users. It also finally fixes a bug where a relay or client
1015   that's been off for many days would take a long time to bootstrap.
1016
1017   This update also fixes an important security-related bug reported by
1018   Ilja van Sprundel. You should upgrade. (We'll send out more details
1019   about the bug once people have had some time to upgrade.)
1020
1021   o Security fixes:
1022     - Fix a heap-corruption bug that may be remotely triggerable on
1023       some platforms. Reported by Ilja van Sprundel.
1024
1025   o Major bugfixes:
1026     - When a stream at an exit relay is in state "resolving" or
1027       "connecting" and it receives an "end" relay cell, the exit relay
1028       would silently ignore the end cell and not close the stream. If
1029       the client never closes the circuit, then the exit relay never
1030       closes the TCP connection. Bug introduced in Tor 0.1.2.1-alpha;
1031       reported by "wood".
1032     - When sending CREATED cells back for a given circuit, use a 64-bit
1033       connection ID to find the right connection, rather than an addr:port
1034       combination. Now that we can have multiple OR connections between
1035       the same ORs, it is no longer possible to use addr:port to uniquely
1036       identify a connection.
1037     - Bridge relays that had DirPort set to 0 would stop fetching
1038       descriptors shortly after startup, and then briefly resume
1039       after a new bandwidth test and/or after publishing a new bridge
1040       descriptor. Bridge users that try to bootstrap from them would
1041       get a recent networkstatus but would get descriptors from up to
1042       18 hours earlier, meaning most of the descriptors were obsolete
1043       already. Reported by Tas; bugfix on 0.2.0.13-alpha.
1044     - Prevent bridge relays from serving their 'extrainfo' document
1045       to anybody who asks, now that extrainfo docs include potentially
1046       sensitive aggregated client geoip summaries. Bugfix on
1047       0.2.0.13-alpha.
1048     - If the cached networkstatus consensus is more than five days old,
1049       discard it rather than trying to use it. In theory it could be
1050       useful because it lists alternate directory mirrors, but in practice
1051       it just means we spend many minutes trying directory mirrors that
1052       are long gone from the network. Also discard router descriptors as
1053       we load them if they are more than five days old, since the onion
1054       key is probably wrong by now. Bugfix on 0.2.0.x. Fixes bug 887.
1055
1056   o Minor bugfixes:
1057     - Do not mark smartlist_bsearch_idx() function as ATTR_PURE. This bug
1058       could make gcc generate non-functional binary search code. Bugfix
1059       on 0.2.0.10-alpha.
1060     - Build correctly on platforms without socklen_t.
1061     - Compile without warnings on solaris.
1062     - Avoid potential crash on internal error during signature collection.
1063       Fixes bug 864. Patch from rovv.
1064     - Correct handling of possible malformed authority signing key
1065       certificates with internal signature types. Fixes bug 880.
1066       Bugfix on 0.2.0.3-alpha.
1067     - Fix a hard-to-trigger resource leak when logging credential status.
1068       CID 349.
1069     - When we can't initialize DNS because the network is down, do not
1070       automatically stop Tor from starting. Instead, we retry failed
1071       dns_init() every 10 minutes, and change the exit policy to reject
1072       *:* until one succeeds. Fixes bug 691.
1073     - Use 64 bits instead of 32 bits for connection identifiers used with
1074       the controller protocol, to greatly reduce risk of identifier reuse.
1075     - When we're choosing an exit node for a circuit, and we have
1076       no pending streams, choose a good general exit rather than one that
1077       supports "all the pending streams". Bugfix on 0.1.1.x. Fix by rovv.
1078     - Fix another case of assuming, when a specific exit is requested,
1079       that we know more than the user about what hosts it allows.
1080       Fixes one case of bug 752. Patch from rovv.
1081     - Clip the MaxCircuitDirtiness config option to a minimum of 10
1082       seconds. Warn the user if lower values are given in the
1083       configuration. Bugfix on 0.1.0.1-rc. Patch by Sebastian.
1084     - Clip the CircuitBuildTimeout to a minimum of 30 seconds. Warn the
1085       user if lower values are given in the configuration. Bugfix on
1086       0.1.1.17-rc. Patch by Sebastian.
1087     - Fix a memory leak when we decline to add a v2 rendezvous descriptor to
1088       the cache because we already had a v0 descriptor with the same ID.
1089       Bugfix on 0.2.0.18-alpha.
1090     - Fix a race condition when freeing keys shared between main thread
1091       and CPU workers that could result in a memory leak. Bugfix on
1092       0.1.0.1-rc. Fixes bug 889.
1093     - Send a valid END cell back when a client tries to connect to a
1094       nonexistent hidden service port. Bugfix on 0.1.2.15. Fixes bug
1095       840. Patch from rovv.
1096     - Check which hops rendezvous stream cells are associated with to
1097       prevent possible guess-the-streamid injection attacks from
1098       intermediate hops. Fixes another case of bug 446. Based on patch
1099       from rovv.
1100     - If a broken client asks a non-exit router to connect somewhere,
1101       do not even do the DNS lookup before rejecting the connection.
1102       Fixes another case of bug 619. Patch from rovv.
1103     - When a relay gets a create cell it can't decrypt (e.g. because it's
1104       using the wrong onion key), we were dropping it and letting the
1105       client time out. Now actually answer with a destroy cell. Fixes
1106       bug 904. Bugfix on 0.0.2pre8.
1107
1108   o Minor bugfixes (hidden services):
1109     - Do not throw away existing introduction points on SIGHUP. Bugfix on
1110       0.0.6pre1. Patch by Karsten. Fixes bug 874.
1111
1112   o Minor features:
1113     - Report the case where all signatures in a detached set are rejected
1114       differently than the case where there is an error handling the
1115       detached set.
1116     - When we realize that another process has modified our cached
1117       descriptors, print out a more useful error message rather than
1118       triggering an assertion. Fixes bug 885. Patch from Karsten.
1119     - Implement the 0x20 hack to better resist DNS poisoning: set the
1120       case on outgoing DNS requests randomly, and reject responses that do
1121       not match the case correctly. This logic can be disabled with the
1122       ServerDNSRamdomizeCase setting, if you are using one of the 0.3%
1123       of servers that do not reliably preserve case in replies. See
1124       "Increased DNS Forgery Resistance through 0x20-Bit Encoding"
1125       for more info.
1126     - Check DNS replies for more matching fields to better resist DNS
1127       poisoning.
1128     - Never use OpenSSL compression: it wastes RAM and CPU trying to
1129       compress cells, which are basically all encrypted, compressed, or
1130       both.
1131
1132
1133 Changes in version 0.2.1.11-alpha - 2009-01-20
1134   Tor 0.2.1.11-alpha finishes fixing the "if your Tor is off for a
1135   week it will take a long time to bootstrap again" bug. It also fixes
1136   an important security-related bug reported by Ilja van Sprundel. You
1137   should upgrade. (We'll send out more details about the bug once people
1138   have had some time to upgrade.)
1139
1140   o Security fixes:
1141     - Fix a heap-corruption bug that may be remotely triggerable on
1142       some platforms. Reported by Ilja van Sprundel.
1143
1144   o Major bugfixes:
1145     - Discard router descriptors as we load them if they are more than
1146       five days old. Otherwise if Tor is off for a long time and then
1147       starts with cached descriptors, it will try to use the onion
1148       keys in those obsolete descriptors when building circuits. Bugfix
1149       on 0.2.0.x. Fixes bug 887.
1150
1151   o Minor features:
1152     - Try to make sure that the version of Libevent we're running with
1153       is binary-compatible with the one we built with. May address bug
1154       897 and others.
1155     - Make setting ServerDNSRandomizeCase to 0 actually work. Bugfix
1156       for bug 905. Bugfix on 0.2.1.7-alpha.
1157     - Add a new --enable-local-appdata configuration switch to change
1158       the default location of the datadir on win32 from APPDATA to
1159       LOCAL_APPDATA. In the future, we should migrate to LOCAL_APPDATA
1160       entirely. Patch from coderman.
1161
1162   o Minor bugfixes:
1163     - Make outbound DNS packets respect the OutboundBindAddress setting.
1164       Fixes the bug part of bug 798. Bugfix on 0.1.2.2-alpha.
1165     - When our circuit fails at the first hop (e.g. we get a destroy
1166       cell back), avoid using that OR connection anymore, and also
1167       tell all the one-hop directory requests waiting for it that they
1168       should fail. Bugfix on 0.2.1.3-alpha.
1169     - In the torify(1) manpage, mention that tsocks will leak your
1170       DNS requests.
1171
1172
1173 Changes in version 0.2.1.10-alpha - 2009-01-06
1174   Tor 0.2.1.10-alpha fixes two major bugs in bridge relays (one that
1175   would make the bridge relay not so useful if it had DirPort set to 0,
1176   and one that could let an attacker learn a little bit of information
1177   about the bridge's users), and a bug that would cause your Tor relay
1178   to ignore a circuit create request it can't decrypt (rather than reply
1179   with an error). It also fixes a wide variety of other bugs.
1180
1181   o Major bugfixes:
1182     - If the cached networkstatus consensus is more than five days old,
1183       discard it rather than trying to use it. In theory it could
1184       be useful because it lists alternate directory mirrors, but in
1185       practice it just means we spend many minutes trying directory
1186       mirrors that are long gone from the network. Helps bug 887 a bit;
1187       bugfix on 0.2.0.x.
1188     - Bridge relays that had DirPort set to 0 would stop fetching
1189       descriptors shortly after startup, and then briefly resume
1190       after a new bandwidth test and/or after publishing a new bridge
1191       descriptor. Bridge users that try to bootstrap from them would
1192       get a recent networkstatus but would get descriptors from up to
1193       18 hours earlier, meaning most of the descriptors were obsolete
1194       already. Reported by Tas; bugfix on 0.2.0.13-alpha.
1195     - Prevent bridge relays from serving their 'extrainfo' document
1196       to anybody who asks, now that extrainfo docs include potentially
1197       sensitive aggregated client geoip summaries. Bugfix on
1198       0.2.0.13-alpha.
1199
1200   o Minor features:
1201     - New controller event "clients_seen" to report a geoip-based summary
1202       of which countries we've seen clients from recently. Now controllers
1203       like Vidalia can show bridge operators that they're actually making
1204       a difference.
1205     - Build correctly against versions of OpenSSL 0.9.8 or later built
1206       without support for deprecated functions.
1207     - Update to the "December 19 2008" ip-to-country file.
1208
1209   o Minor bugfixes (on 0.2.0.x):
1210     - Authorities now vote for the Stable flag for any router whose
1211       weighted MTBF is at least 5 days, regardless of the mean MTBF.
1212     - Do not remove routers as too old if we do not have any consensus
1213       document. Bugfix on 0.2.0.7-alpha.
1214     - Do not accept incomplete ipv4 addresses (like 192.168.0) as valid.
1215       Spec conformance issue. Bugfix on Tor 0.0.2pre27.
1216     - When an exit relay resolves a stream address to a local IP address,
1217       do not just keep retrying that same exit relay over and
1218       over. Instead, just close the stream. Addresses bug 872. Bugfix
1219       on 0.2.0.32. Patch from rovv.
1220     - If a hidden service sends us an END cell, do not consider
1221       retrying the connection; just close it. Patch from rovv.
1222     - When we made bridge authorities stop serving bridge descriptors over
1223       unencrypted links, we also broke DirPort reachability testing for
1224       bridges. So bridges with a non-zero DirPort were printing spurious
1225       warns to their logs. Bugfix on 0.2.0.16-alpha. Fixes bug 709.
1226     - When a relay gets a create cell it can't decrypt (e.g. because it's
1227       using the wrong onion key), we were dropping it and letting the
1228       client time out. Now actually answer with a destroy cell. Fixes
1229       bug 904. Bugfix on 0.0.2pre8.
1230     - Squeeze 2-5% out of client performance (according to oprofile) by
1231       improving the implementation of some policy-manipulation functions.
1232
1233   o Minor bugfixes (on 0.2.1.x):
1234     - Make get_interface_address() function work properly again; stop
1235       guessing the wrong parts of our address as our address.
1236     - Do not cannibalize a circuit if we're out of RELAY_EARLY cells to
1237       send on that circuit. Otherwise we might violate the proposal-110
1238       limit. Bugfix on 0.2.1.3-alpha. Partial fix for bug 878. Diagnosis
1239       thanks to Karsten.
1240     - When we're sending non-EXTEND cells to the first hop in a circuit,
1241       for example to use an encrypted directory connection, we don't need
1242       to use RELAY_EARLY cells: the first hop knows what kind of cell
1243       it is, and nobody else can even see the cell type. Conserving
1244       RELAY_EARLY cells makes it easier to cannibalize circuits like
1245       this later.
1246     - Stop logging nameserver addresses in reverse order.
1247     - If we are retrying a directory download slowly over and over, do
1248       not automatically give up after the 254th failure. Bugfix on
1249       0.2.1.9-alpha.
1250     - Resume reporting accurate "stream end" reasons to the local control
1251       port. They were lost in the changes for Proposal 148. Bugfix on
1252       0.2.1.9-alpha.
1253
1254   o Deprecated and removed features:
1255     - The old "tor --version --version" command, which would print out
1256       the subversion "Id" of most of the source files, is now removed. It
1257       turned out to be less useful than we'd expected, and harder to
1258       maintain.
1259
1260   o Code simplifications and refactoring:
1261     - Change our header file guard macros to be less likely to conflict
1262       with system headers. Adam Langley noticed that we were conflicting
1263       with log.h on Android.
1264     - Tool-assisted documentation cleanup. Nearly every function or
1265       static variable in Tor should have its own documentation now.
1266
1267
1268 Changes in version 0.2.1.9-alpha - 2008-12-25
1269   Tor 0.2.1.9-alpha fixes many more bugs, some of them security-related.
1270
1271   o New directory authorities:
1272     - gabelmoo (the authority run by Karsten Loesing) now has a new
1273       IP address.
1274
1275   o Security fixes:
1276     - Never use a connection with a mismatched address to extend a
1277       circuit, unless that connection is canonical. A canonical
1278       connection is one whose address is authenticated by the router's
1279       identity key, either in a NETINFO cell or in a router descriptor.
1280     - Avoid a possible memory corruption bug when receiving hidden service
1281       descriptors. Bugfix on 0.2.1.6-alpha.
1282
1283   o Major bugfixes:
1284     - Fix a logic error that would automatically reject all but the first
1285       configured DNS server. Bugfix on 0.2.1.5-alpha. Possible fix for
1286       part of bug 813/868. Bug spotted by coderman.
1287     - When a stream at an exit relay is in state "resolving" or
1288       "connecting" and it receives an "end" relay cell, the exit relay
1289       would silently ignore the end cell and not close the stream. If
1290       the client never closes the circuit, then the exit relay never
1291       closes the TCP connection. Bug introduced in 0.1.2.1-alpha;
1292       reported by "wood".
1293     - When we can't initialize DNS because the network is down, do not
1294       automatically stop Tor from starting. Instead, retry failed
1295       dns_init() every 10 minutes, and change the exit policy to reject
1296       *:* until one succeeds. Fixes bug 691.
1297
1298   o Minor features:
1299     - Give a better error message when an overzealous init script says
1300       "sudo -u username tor --user username". Makes Bug 882 easier for
1301       users to diagnose.
1302     - When a directory authority gives us a new guess for our IP address,
1303       log which authority we used. Hopefully this will help us debug
1304       the recent complaints about bad IP address guesses.
1305     - Detect svn revision properly when we're using git-svn.
1306     - Try not to open more than one descriptor-downloading connection
1307       to an authority at once. This should reduce load on directory
1308       authorities. Fixes bug 366.
1309     - Add cross-certification to newly generated certificates, so that
1310       a signing key is enough information to look up a certificate.
1311       Partial implementation of proposal 157.
1312     - Start serving certificates by <identity digest, signing key digest>
1313       pairs. Partial implementation of proposal 157.
1314     - Clients now never report any stream end reason except 'MISC'.
1315       Implements proposal 148.
1316     - On platforms with a maximum syslog string length, truncate syslog
1317       messages to that length ourselves, rather than relying on the
1318       system to do it for us.
1319     - Optimize out calls to time(NULL) that occur for every IO operation,
1320       or for every cell. On systems where time() is a slow syscall,
1321       this fix will be slightly helpful.
1322     - Exit servers can now answer resolve requests for ip6.arpa addresses.
1323     - When we download a descriptor that we then immediately (as
1324       a directory authority) reject, do not retry downloading it right
1325       away. Should save some bandwidth on authorities. Fix for bug
1326       888. Patch by Sebastian Hahn.
1327     - When a download gets us zero good descriptors, do not notify
1328       Tor that new directory information has arrived.
1329     - Avoid some nasty corner cases in the logic for marking connections
1330       as too old or obsolete or noncanonical for circuits.  Partial
1331       bugfix on bug 891.
1332
1333   o Minor features (controller):
1334     - New CONSENSUS_ARRIVED event to note when a new consensus has
1335       been fetched and validated.
1336     - When we realize that another process has modified our cached
1337       descriptors file, print out a more useful error message rather
1338       than triggering an assertion. Fixes bug 885. Patch from Karsten.
1339     - Add an internal-use-only __ReloadTorrcOnSIGHUP option for
1340       controllers to prevent SIGHUP from reloading the
1341       configuration. Fixes bug 856.
1342
1343   o Minor bugfixes:
1344     - Resume using the correct "REASON=" stream when telling the
1345       controller why we closed a stream. Bugfix in 0.2.1.1-alpha.
1346     - When a canonical connection appears later in our internal list
1347       than a noncanonical one for a given OR ID, always use the
1348       canonical one. Bugfix on 0.2.0.12-alpha. Fixes bug 805.
1349       Spotted by rovv.
1350     - Clip the MaxCircuitDirtiness config option to a minimum of 10
1351       seconds. Warn the user if lower values are given in the
1352       configuration. Bugfix on 0.1.0.1-rc. Patch by Sebastian.
1353     - Clip the CircuitBuildTimeout to a minimum of 30 seconds. Warn the
1354       user if lower values are given in the configuration. Bugfix on
1355       0.1.1.17-rc. Patch by Sebastian.
1356     - Fix a race condition when freeing keys shared between main thread
1357       and CPU workers that could result in a memory leak. Bugfix on
1358       0.1.0.1-rc. Fixes bug 889.
1359
1360   o Minor bugfixes (hidden services):
1361     - Do not throw away existing introduction points on SIGHUP (bugfix on
1362       0.0.6pre1); also, do not stall hidden services because we're
1363       throwing away introduction points; bugfix on 0.2.1.7-alpha. Spotted
1364       by John Brooks. Patch by Karsten. Fixes bug 874.
1365     - Fix a memory leak when we decline to add a v2 rendezvous
1366       descriptor to the cache because we already had a v0 descriptor
1367       with the same ID. Bugfix on 0.2.0.18-alpha.
1368
1369   o Deprecated and removed features:
1370     - RedirectExits has been removed. It was deprecated since
1371       0.2.0.3-alpha.
1372     - Finally remove deprecated "EXTENDED_FORMAT" controller feature. It
1373       has been called EXTENDED_EVENTS since 0.1.2.4-alpha.
1374     - Cell pools are now always enabled; --disable-cell-pools is ignored.
1375
1376   o Code simplifications and refactoring:
1377     - Rename the confusing or_is_obsolete field to the more appropriate
1378       is_bad_for_new_circs, and move it to or_connection_t where it
1379       belongs.
1380     - Move edge-only flags from connection_t to edge_connection_t: not
1381       only is this better coding, but on machines of plausible alignment,
1382       it should save 4-8 bytes per connection_t. "Every little bit helps."
1383     - Rename ServerDNSAllowBrokenResolvConf to ServerDNSAllowBrokenConfig
1384       for consistency; keep old option working for backward compatibility.
1385     - Simplify the code for finding connections to use for a circuit.
1386
1387
1388 Changes in version 0.2.1.8-alpha - 2008-12-08
1389   Tor 0.2.1.8-alpha fixes some crash bugs in earlier alpha releases,
1390   builds better on unusual platforms like Solaris and old OS X, and
1391   fixes a variety of other issues.
1392
1393   o Major features:
1394     - New DirPortFrontPage option that takes an html file and publishes
1395       it as "/" on the DirPort. Now relay operators can provide a
1396       disclaimer without needing to set up a separate webserver. There's
1397       a sample disclaimer in contrib/tor-exit-notice.html.
1398
1399   o Security fixes:
1400     - When the client is choosing entry guards, now it selects at most
1401       one guard from a given relay family. Otherwise we could end up with
1402       all of our entry points into the network run by the same operator.
1403       Suggested by Camilo Viecco. Fix on 0.1.1.11-alpha.
1404
1405   o Major bugfixes:
1406     - Fix a DOS opportunity during the voting signature collection process
1407       at directory authorities. Spotted by rovv. Bugfix on 0.2.0.x.
1408     - Fix a possible segfault when establishing an exit connection. Bugfix
1409       on 0.2.1.5-alpha.
1410
1411   o Minor bugfixes:
1412     - Get file locking working on win32. Bugfix on 0.2.1.6-alpha. Fixes
1413       bug 859.
1414     - Made Tor a little less aggressive about deleting expired
1415       certificates. Partial fix for bug 854.
1416     - Stop doing unaligned memory access that generated bus errors on
1417       sparc64. Bugfix on 0.2.0.10-alpha. Fix for bug 862.
1418     - Fix a crash bug when changing EntryNodes from the controller. Bugfix
1419       on 0.2.1.6-alpha. Fix for bug 867. Patched by Sebastian.
1420     - Make USR2 log-level switch take effect immediately. Bugfix on
1421       0.1.2.8-beta.
1422     - If one win32 nameserver fails to get added, continue adding the
1423       rest, and don't automatically fail.
1424     - Use fcntl() for locking when flock() is not available. Should fix
1425       compilation on Solaris. Should fix Bug 873. Bugfix on 0.2.1.6-alpha.
1426     - Do not mark smartlist_bsearch_idx() function as ATTR_PURE. This bug
1427       could make gcc generate non-functional binary search code. Bugfix
1428       on 0.2.0.10-alpha.
1429     - Build correctly on platforms without socklen_t.
1430     - Avoid potential crash on internal error during signature collection.
1431       Fixes bug 864. Patch from rovv.
1432     - Do not use C's stdio library for writing to log files. This will
1433       improve logging performance by a minute amount, and will stop
1434       leaking fds when our disk is full. Fixes bug 861.
1435     - Stop erroneous use of O_APPEND in cases where we did not in fact
1436       want to re-seek to the end of a file before every last write().
1437     - Correct handling of possible malformed authority signing key
1438       certificates with internal signature types. Fixes bug 880. Bugfix
1439       on 0.2.0.3-alpha.
1440     - Fix a hard-to-trigger resource leak when logging credential status.
1441       CID 349.
1442
1443   o Minor features:
1444     - Directory mirrors no longer fetch the v1 directory or
1445       running-routers files. They are obsolete, and nobody asks for them
1446       anymore. This is the first step to making v1 authorities obsolete.
1447
1448   o Minor features (controller):
1449     - Return circuit purposes in response to GETINFO circuit-status. Fixes
1450       bug 858.
1451
1452
1453 Changes in version 0.2.0.32 - 2008-11-20
1454   Tor 0.2.0.32 fixes a major security problem in Debian and Ubuntu
1455   packages (and maybe other packages) noticed by Theo de Raadt, fixes
1456   a smaller security flaw that might allow an attacker to access local
1457   services, further improves hidden service performance, and fixes a
1458   variety of other issues.
1459
1460   o Security fixes:
1461     - The "User" and "Group" config options did not clear the
1462       supplementary group entries for the Tor process. The "User" option
1463       is now more robust, and we now set the groups to the specified
1464       user's primary group. The "Group" option is now ignored. For more
1465       detailed logging on credential switching, set CREDENTIAL_LOG_LEVEL
1466       in common/compat.c to LOG_NOTICE or higher. Patch by Jacob Appelbaum
1467       and Steven Murdoch. Bugfix on 0.0.2pre14. Fixes bug 848 and 857.
1468     - The "ClientDNSRejectInternalAddresses" config option wasn't being
1469       consistently obeyed: if an exit relay refuses a stream because its
1470       exit policy doesn't allow it, we would remember what IP address
1471       the relay said the destination address resolves to, even if it's
1472       an internal IP address. Bugfix on 0.2.0.7-alpha; patch by rovv.
1473
1474   o Major bugfixes:
1475     - Fix a DOS opportunity during the voting signature collection process
1476       at directory authorities. Spotted by rovv. Bugfix on 0.2.0.x.
1477
1478   o Major bugfixes (hidden services):
1479     - When fetching v0 and v2 rendezvous service descriptors in parallel,
1480       we were failing the whole hidden service request when the v0
1481       descriptor fetch fails, even if the v2 fetch is still pending and
1482       might succeed. Similarly, if the last v2 fetch fails, we were
1483       failing the whole hidden service request even if a v0 fetch is
1484       still pending. Fixes bug 814. Bugfix on 0.2.0.10-alpha.
1485     - When extending a circuit to a hidden service directory to upload a
1486       rendezvous descriptor using a BEGIN_DIR cell, almost 1/6 of all
1487       requests failed, because the router descriptor has not been
1488       downloaded yet. In these cases, do not attempt to upload the
1489       rendezvous descriptor, but wait until the router descriptor is
1490       downloaded and retry. Likewise, do not attempt to fetch a rendezvous
1491       descriptor from a hidden service directory for which the router
1492       descriptor has not yet been downloaded. Fixes bug 767. Bugfix
1493       on 0.2.0.10-alpha.
1494
1495   o Minor bugfixes:
1496     - Fix several infrequent memory leaks spotted by Coverity.
1497     - When testing for libevent functions, set the LDFLAGS variable
1498       correctly. Found by Riastradh.
1499     - Avoid a bug where the FastFirstHopPK 0 option would keep Tor from
1500       bootstrapping with tunneled directory connections. Bugfix on
1501       0.1.2.5-alpha. Fixes bug 797. Found by Erwin Lam.
1502     - When asked to connect to A.B.exit:80, if we don't know the IP for A
1503       and we know that server B rejects most-but-not all connections to
1504       port 80, we would previously reject the connection. Now, we assume
1505       the user knows what they were asking for. Fixes bug 752. Bugfix
1506       on 0.0.9rc5. Diagnosed by BarkerJr.
1507     - If we overrun our per-second write limits a little, count this as
1508       having used up our write allocation for the second, and choke
1509       outgoing directory writes. Previously, we had only counted this when
1510       we had met our limits precisely. Fixes bug 824. Patch from by rovv.
1511       Bugfix on 0.2.0.x (??).
1512     - Remove the old v2 directory authority 'lefkada' from the default
1513       list. It has been gone for many months.
1514     - Stop doing unaligned memory access that generated bus errors on
1515       sparc64. Bugfix on 0.2.0.10-alpha. Fixes bug 862.
1516     - Make USR2 log-level switch take effect immediately. Bugfix on
1517       0.1.2.8-beta.
1518
1519   o Minor bugfixes (controller):
1520     - Make DNS resolved events into "CLOSED", not "FAILED". Bugfix on
1521       0.1.2.5-alpha. Fix by Robert Hogan. Resolves bug 807.
1522
1523
1524 Changes in version 0.2.1.7-alpha - 2008-11-08
1525   Tor 0.2.1.7-alpha fixes a major security problem in Debian and Ubuntu
1526   packages (and maybe other packages) noticed by Theo de Raadt, fixes
1527   a smaller security flaw that might allow an attacker to access local
1528   services, adds better defense against DNS poisoning attacks on exit
1529   relays, further improves hidden service performance, and fixes a
1530   variety of other issues.
1531
1532   o Security fixes:
1533     - The "ClientDNSRejectInternalAddresses" config option wasn't being
1534       consistently obeyed: if an exit relay refuses a stream because its
1535       exit policy doesn't allow it, we would remember what IP address
1536       the relay said the destination address resolves to, even if it's
1537       an internal IP address. Bugfix on 0.2.0.7-alpha; patch by rovv.
1538     - The "User" and "Group" config options did not clear the
1539       supplementary group entries for the Tor process. The "User" option
1540       is now more robust, and we now set the groups to the specified
1541       user's primary group. The "Group" option is now ignored. For more
1542       detailed logging on credential switching, set CREDENTIAL_LOG_LEVEL
1543       in common/compat.c to LOG_NOTICE or higher. Patch by Jacob Appelbaum
1544       and Steven Murdoch. Bugfix on 0.0.2pre14. Fixes bug 848.
1545     - Do not use or believe expired v3 authority certificates. Patch
1546       from Karsten. Bugfix in 0.2.0.x. Fixes bug 851.
1547
1548   o Minor features:
1549     - Now NodeFamily and MyFamily config options allow spaces in
1550       identity fingerprints, so it's easier to paste them in.
1551       Suggested by Lucky Green.
1552     - Implement the 0x20 hack to better resist DNS poisoning: set the
1553       case on outgoing DNS requests randomly, and reject responses that do
1554       not match the case correctly. This logic can be disabled with the
1555       ServerDNSRandomizeCase setting, if you are using one of the 0.3%
1556       of servers that do not reliably preserve case in replies. See
1557       "Increased DNS Forgery Resistance through 0x20-Bit Encoding"
1558       for more info.
1559     - Preserve case in replies to DNSPort requests in order to support
1560       the 0x20 hack for resisting DNS poisoning attacks.
1561
1562   o Hidden service performance improvements:
1563     - When the client launches an introduction circuit, retry with a
1564       new circuit after 30 seconds rather than 60 seconds.
1565     - Launch a second client-side introduction circuit in parallel
1566       after a delay of 15 seconds (based on work by Christian Wilms).
1567     - Hidden services start out building five intro circuits rather
1568       than three, and when the first three finish they publish a service
1569       descriptor using those. Now we publish our service descriptor much
1570       faster after restart.
1571
1572   o Minor bugfixes:
1573     - Minor fix in the warning messages when you're having problems
1574       bootstrapping; also, be more forgiving of bootstrap problems when
1575       we're still making incremental progress on a given bootstrap phase.
1576     - When we're choosing an exit node for a circuit, and we have
1577       no pending streams, choose a good general exit rather than one that
1578       supports "all the pending streams". Bugfix on 0.1.1.x. Fix by rovv.
1579     - Send a valid END cell back when a client tries to connect to a
1580       nonexistent hidden service port. Bugfix on 0.1.2.15. Fixes bug
1581       840. Patch from rovv.
1582     - If a broken client asks a non-exit router to connect somewhere,
1583       do not even do the DNS lookup before rejecting the connection.
1584       Fixes another case of bug 619. Patch from rovv.
1585     - Fix another case of assuming, when a specific exit is requested,
1586       that we know more than the user about what hosts it allows.
1587       Fixes another case of bug 752. Patch from rovv.
1588     - Check which hops rendezvous stream cells are associated with to
1589       prevent possible guess-the-streamid injection attacks from
1590       intermediate hops. Fixes another case of bug 446. Based on patch
1591       from rovv.
1592     - Avoid using a negative right-shift when comparing 32-bit
1593       addresses. Possible fix for bug 845 and bug 811.
1594     - Make the assert_circuit_ok() function work correctly on circuits that
1595       have already been marked for close.
1596     - Fix read-off-the-end-of-string error in unit tests when decoding
1597       introduction points.
1598     - Fix uninitialized size field for memory area allocation: may improve
1599       memory performance during directory parsing.
1600     - Treat duplicate certificate fetches as failures, so that we do
1601       not try to re-fetch an expired certificate over and over and over.
1602     - Do not say we're fetching a certificate when we'll in fact skip it
1603       because of a pending download.
1604
1605
1606 Changes in version 0.2.1.6-alpha - 2008-09-30
1607   Tor 0.2.1.6-alpha further improves performance and robustness of
1608   hidden services, starts work on supporting per-country relay selection,
1609   and fixes a variety of smaller issues.
1610
1611   o Major features:
1612     - Implement proposal 121: make it possible to build hidden services
1613       that only certain clients are allowed to connect to. This is
1614       enforced at several points, so that unauthorized clients are unable
1615       to send INTRODUCE cells to the service, or even (depending on the
1616       type of authentication) to learn introduction points. This feature
1617       raises the bar for certain kinds of active attacks against hidden
1618       services. Code by Karsten Loesing.
1619     - Relays now store and serve v2 hidden service descriptors by default,
1620       i.e., the new default value for HidServDirectoryV2 is 1. This is
1621       the last step in proposal 114, which aims to make hidden service
1622       lookups more reliable.
1623     - Start work to allow node restrictions to include country codes. The
1624       syntax to exclude nodes in a country with country code XX is
1625       "ExcludeNodes {XX}". Patch from Robert Hogan. It still needs some
1626       refinement to decide what config options should take priority if
1627       you ask to both use a particular node and exclude it.
1628     - Allow ExitNodes list to include IP ranges and country codes, just
1629       like the Exclude*Nodes lists. Patch from Robert Hogan.
1630
1631   o Major bugfixes:
1632     - Fix a bug when parsing ports in tor_addr_port_parse() that caused
1633       Tor to fail to start if you had it configured to use a bridge
1634       relay. Fixes bug 809. Bugfix on 0.2.1.5-alpha.
1635     - When extending a circuit to a hidden service directory to upload a
1636       rendezvous descriptor using a BEGIN_DIR cell, almost 1/6 of all
1637       requests failed, because the router descriptor had not been
1638       downloaded yet. In these cases, we now wait until the router
1639       descriptor is downloaded, and then retry. Likewise, clients
1640       now skip over a hidden service directory if they don't yet have
1641       its router descriptor, rather than futilely requesting it and
1642       putting mysterious complaints in the logs. Fixes bug 767. Bugfix
1643       on 0.2.0.10-alpha.
1644     - When fetching v0 and v2 rendezvous service descriptors in parallel,
1645       we were failing the whole hidden service request when the v0
1646       descriptor fetch fails, even if the v2 fetch is still pending and
1647       might succeed. Similarly, if the last v2 fetch fails, we were
1648       failing the whole hidden service request even if a v0 fetch is
1649       still pending. Fixes bug 814. Bugfix on 0.2.0.10-alpha.
1650     - DNS replies need to have names matching their requests, but
1651       these names should be in the questions section, not necessarily
1652       in the answers section. Fixes bug 823. Bugfix on 0.2.1.5-alpha.
1653
1654   o Minor features:
1655     - Update to the "September 1 2008" ip-to-country file.
1656     - Allow ports 465 and 587 in the default exit policy again. We had
1657       rejected them in 0.1.0.15, because back in 2005 they were commonly
1658       misconfigured and ended up as spam targets. We hear they are better
1659       locked down these days.
1660     - Use a lockfile to make sure that two Tor processes are not
1661       simultaneously running with the same datadir.
1662     - Serve the latest v3 networkstatus consensus via the control
1663       port. Use "getinfo dir/status-vote/current/consensus" to fetch it.
1664     - Better logging about stability/reliability calculations on directory
1665       servers.
1666     - Drop the requirement to have an open dir port for storing and
1667       serving v2 hidden service descriptors.
1668     - Directory authorities now serve a /tor/dbg-stability.txt URL to
1669       help debug WFU and MTBF calculations.
1670     - Implement most of Proposal 152: allow specialized servers to permit
1671       single-hop circuits, and clients to use those servers to build
1672       single-hop circuits when using a specialized controller. Patch
1673       from Josh Albrecht. Resolves feature request 768.
1674     - Add a -p option to tor-resolve for specifying the SOCKS port: some
1675       people find host:port too confusing.
1676     - Make TrackHostExit mappings expire a while after their last use, not
1677       after their creation. Patch from Robert Hogan.
1678     - Provide circuit purposes along with circuit events to the controller.
1679
1680   o Minor bugfixes:
1681     - Fix compile on OpenBSD 4.4-current. Bugfix on 0.2.1.5-alpha.
1682       Reported by Tas.
1683     - Fixed some memory leaks -- some quite frequent, some almost
1684       impossible to trigger -- based on results from Coverity.
1685     - When testing for libevent functions, set the LDFLAGS variable
1686       correctly. Found by Riastradh.
1687     - Fix an assertion bug in parsing policy-related options; possible fix
1688       for bug 811.
1689     - Catch and report a few more bootstrapping failure cases when Tor
1690       fails to establish a TCP connection. Cleanup on 0.2.1.x.
1691     - Avoid a bug where the FastFirstHopPK 0 option would keep Tor from
1692       bootstrapping with tunneled directory connections. Bugfix on
1693       0.1.2.5-alpha. Fixes bug 797. Found by Erwin Lam.
1694     - When asked to connect to A.B.exit:80, if we don't know the IP for A
1695       and we know that server B rejects most-but-not all connections to
1696       port 80, we would previously reject the connection. Now, we assume
1697       the user knows what they were asking for. Fixes bug 752. Bugfix
1698       on 0.0.9rc5. Diagnosed by BarkerJr.
1699     - If we are not using BEGIN_DIR cells, don't attempt to contact hidden
1700       service directories if they have no advertised dir port. Bugfix
1701       on 0.2.0.10-alpha.
1702     - If we overrun our per-second write limits a little, count this as
1703       having used up our write allocation for the second, and choke
1704       outgoing directory writes. Previously, we had only counted this when
1705       we had met our limits precisely. Fixes bug 824. Patch by rovv.
1706       Bugfix on 0.2.0.x (??).
1707     - Avoid a "0 divided by 0" calculation when calculating router uptime
1708       at directory authorities. Bugfix on 0.2.0.8-alpha.
1709     - Make DNS resolved controller events into "CLOSED", not
1710       "FAILED". Bugfix on 0.1.2.5-alpha. Fix by Robert Hogan. Resolves
1711       bug 807.
1712     - Fix a bug where an unreachable relay would establish enough
1713       reachability testing circuits to do a bandwidth test -- if
1714       we already have a connection to the middle hop of the testing
1715       circuit, then it could establish the last hop by using the existing
1716       connection. Bugfix on 0.1.2.2-alpha, exposed when we made testing
1717       circuits no longer use entry guards in 0.2.1.3-alpha.
1718     - If we have correct permissions on $datadir, we complain to stdout
1719       and fail to start. But dangerous permissions on
1720       $datadir/cached-status/ would cause us to open a log and complain
1721       there. Now complain to stdout and fail to start in both cases. Fixes
1722       bug 820, reported by seeess.
1723     - Remove the old v2 directory authority 'lefkada' from the default
1724       list. It has been gone for many months.
1725
1726   o Code simplifications and refactoring:
1727     - Revise the connection_new functions so that a more typesafe variant
1728       exists. This will work better with Coverity, and let us find any
1729       actual mistakes we're making here.
1730     - Refactor unit testing logic so that dmalloc can be used sensibly
1731       with unit tests to check for memory leaks.
1732     - Move all hidden-service related fields from connection and circuit
1733       structure to substructures: this way they won't eat so much memory.
1734
1735
1736 Changes in version 0.2.0.31 - 2008-09-03
1737   Tor 0.2.0.31 addresses two potential anonymity issues, starts to fix
1738   a big bug we're seeing where in rare cases traffic from one Tor stream
1739   gets mixed into another stream, and fixes a variety of smaller issues.
1740
1741   o Major bugfixes:
1742     - Make sure that two circuits can never exist on the same connection
1743       with the same circuit ID, even if one is marked for close. This
1744       is conceivably a bugfix for bug 779. Bugfix on 0.1.0.4-rc.
1745     - Relays now reject risky extend cells: if the extend cell includes
1746       a digest of all zeroes, or asks to extend back to the relay that
1747       sent the extend cell, tear down the circuit. Ideas suggested
1748       by rovv.
1749     - If not enough of our entry guards are available so we add a new
1750       one, we might use the new one even if it overlapped with the
1751       current circuit's exit relay (or its family). Anonymity bugfix
1752       pointed out by rovv.
1753
1754   o Minor bugfixes:
1755     - Recover 3-7 bytes that were wasted per memory chunk. Fixes bug
1756       794; bug spotted by rovv. Bugfix on 0.2.0.1-alpha.
1757     - Correctly detect the presence of the linux/netfilter_ipv4.h header
1758       when building against recent kernels. Bugfix on 0.1.2.1-alpha.
1759     - Pick size of default geoip filename string correctly on windows.
1760       Fixes bug 806. Bugfix on 0.2.0.30.
1761     - Make the autoconf script accept the obsolete --with-ssl-dir
1762       option as an alias for the actually-working --with-openssl-dir
1763       option. Fix the help documentation to recommend --with-openssl-dir.
1764       Based on a patch by "Dave". Bugfix on 0.2.0.1-alpha.
1765     - When using the TransPort option on OpenBSD, and using the User
1766       option to change UID and drop privileges, make sure to open
1767       /dev/pf before dropping privileges. Fixes bug 782. Patch from
1768       Christopher Davis. Bugfix on 0.1.2.1-alpha.
1769     - Try to attach connections immediately upon receiving a RENDEZVOUS2
1770       or RENDEZVOUS_ESTABLISHED cell. This can save a second or two
1771       on the client side when connecting to a hidden service. Bugfix
1772       on 0.0.6pre1. Found and fixed by Christian Wilms; resolves bug 743.
1773     - When closing an application-side connection because its circuit is
1774       getting torn down, generate the stream event correctly. Bugfix on
1775       0.1.2.x. Anonymous patch.
1776
1777
1778 Changes in version 0.2.1.5-alpha - 2008-08-31
1779   Tor 0.2.1.5-alpha moves us closer to handling IPv6 destinations, puts
1780   in a lot of the infrastructure for adding authorization to hidden
1781   services, lays the groundwork for having clients read their load
1782   balancing information out of the networkstatus consensus rather than
1783   the individual router descriptors, addresses two potential anonymity
1784   issues, and fixes a variety of smaller issues.
1785
1786   o Major features:
1787     - Convert many internal address representations to optionally hold
1788       IPv6 addresses.
1789     - Generate and accept IPv6 addresses in many protocol elements.
1790     - Make resolver code handle nameservers located at ipv6 addresses.
1791     - Begin implementation of proposal 121 ("Client authorization for
1792       hidden services"): configure hidden services with client
1793       authorization, publish descriptors for them, and configure
1794       authorization data for hidden services at clients. The next
1795       step is to actually access hidden services that perform client
1796       authorization.
1797     - More progress toward proposal 141: Network status consensus
1798       documents and votes now contain bandwidth information for each
1799       router and a summary of that router's exit policy. Eventually this
1800       will be used by clients so that they do not have to download every
1801       known descriptor before building circuits.
1802
1803   o Major bugfixes (on 0.2.0.x and before):
1804     - When sending CREATED cells back for a given circuit, use a 64-bit
1805       connection ID to find the right connection, rather than an addr:port
1806       combination. Now that we can have multiple OR connections between
1807       the same ORs, it is no longer possible to use addr:port to uniquely
1808       identify a connection.
1809     - Relays now reject risky extend cells: if the extend cell includes
1810       a digest of all zeroes, or asks to extend back to the relay that
1811       sent the extend cell, tear down the circuit. Ideas suggested
1812       by rovv.
1813     - If not enough of our entry guards are available so we add a new
1814       one, we might use the new one even if it overlapped with the
1815       current circuit's exit relay (or its family). Anonymity bugfix
1816       pointed out by rovv.
1817
1818   o Minor bugfixes:
1819     - Recover 3-7 bytes that were wasted per memory chunk. Fixes bug
1820       794; bug spotted by rovv. Bugfix on 0.2.0.1-alpha.
1821     - When using the TransPort option on OpenBSD, and using the User
1822       option to change UID and drop privileges, make sure to open /dev/pf
1823       before dropping privileges. Fixes bug 782. Patch from Christopher
1824       Davis. Bugfix on 0.1.2.1-alpha.
1825     - Correctly detect the presence of the linux/netfilter_ipv4.h header
1826       when building against recent kernels. Bugfix on 0.1.2.1-alpha.
1827     - Add a missing safe_str() call for a debug log message.
1828     - Use 64 bits instead of 32 bits for connection identifiers used with
1829       the controller protocol, to greatly reduce risk of identifier reuse.
1830     - Make the autoconf script accept the obsolete --with-ssl-dir
1831       option as an alias for the actually-working --with-openssl-dir
1832       option. Fix the help documentation to recommend --with-openssl-dir.
1833       Based on a patch by "Dave". Bugfix on 0.2.0.1-alpha.
1834
1835   o Minor features:
1836     - Rate-limit too-many-sockets messages: when they happen, they happen
1837       a lot. Resolves bug 748.
1838     - Resist DNS poisoning a little better by making sure that names in
1839       answer sections match.
1840     - Print the SOCKS5 error message string as well as the error code
1841       when a tor-resolve request fails. Patch from Jacob.
1842
1843
1844 Changes in version 0.2.1.4-alpha - 2008-08-04
1845   Tor 0.2.1.4-alpha fixes a pair of crash bugs in 0.2.1.3-alpha.
1846
1847   o Major bugfixes:
1848     - The address part of exit policies was not correctly written
1849       to router descriptors. This generated router descriptors that failed
1850       their self-checks. Noticed by phobos, fixed by Karsten. Bugfix
1851       on 0.2.1.3-alpha.
1852     - Tor triggered a false assert when extending a circuit to a relay
1853       but we already have a connection open to that relay. Noticed by
1854       phobos, fixed by Karsten. Bugfix on 0.2.1.3-alpha.
1855
1856   o Minor bugfixes:
1857     - Fix a hidden service logging bug: in some edge cases, the router
1858       descriptor of a previously picked introduction point becomes
1859       obsolete and we need to give up on it rather than continually
1860       complaining that it has become obsolete. Observed by xiando. Bugfix
1861       on 0.2.1.3-alpha.
1862
1863   o Removed features:
1864     - Take out the TestVia config option, since it was a workaround for
1865       a bug that was fixed in Tor 0.1.1.21.
1866
1867
1868 Changes in version 0.2.1.3-alpha - 2008-08-03
1869   Tor 0.2.1.3-alpha implements most of the pieces to prevent
1870   infinite-length circuit attacks (see proposal 110); fixes a bug that
1871   might cause exit relays to corrupt streams they send back; allows
1872   address patterns (e.g. 255.128.0.0/16) to appear in ExcludeNodes and
1873   ExcludeExitNodes config options; and fixes a big pile of bugs.
1874
1875   o Bootstrapping bugfixes (on 0.2.1.x-alpha):
1876     - Send a bootstrap problem "warn" event on the first problem if the
1877       reason is NO_ROUTE (that is, our network is down).
1878
1879   o Major features:
1880     - Implement most of proposal 110: The first K cells to be sent
1881       along a circuit are marked as special "early" cells; only K "early"
1882       cells will be allowed. Once this code is universal, we can block
1883       certain kinds of DOS attack by requiring that EXTEND commands must
1884       be sent using an "early" cell.
1885
1886   o Major bugfixes:
1887     - Try to attach connections immediately upon receiving a RENDEZVOUS2
1888       or RENDEZVOUS_ESTABLISHED cell. This can save a second or two
1889       on the client side when connecting to a hidden service. Bugfix
1890       on 0.0.6pre1. Found and fixed by Christian Wilms; resolves bug 743.
1891     - Ensure that two circuits can never exist on the same connection
1892       with the same circuit ID, even if one is marked for close. This
1893       is conceivably a bugfix for bug 779; fixes a bug on 0.1.0.4-rc.
1894
1895   o Minor features:
1896     - When relays do their initial bandwidth measurement, don't limit
1897       to just our entry guards for the test circuits. Otherwise we tend
1898       to have multiple test circuits going through a single entry guard,
1899       which makes our bandwidth test less accurate. Fixes part of bug 654;
1900       patch contributed by Josh Albrecht.
1901     - Add an ExcludeExitNodes option so users can list a set of nodes
1902       that should be be excluded from the exit node position, but
1903       allowed elsewhere. Implements proposal 151.
1904     - Allow address patterns (e.g., 255.128.0.0/16) to appear in
1905       ExcludeNodes and ExcludeExitNodes lists.
1906     - Change the implementation of ExcludeNodes and ExcludeExitNodes to
1907       be more efficient. Formerly it was quadratic in the number of
1908       servers; now it should be linear. Fixes bug 509.
1909     - Save 16-22 bytes per open circuit by moving the n_addr, n_port,
1910       and n_conn_id_digest fields into a separate structure that's
1911       only needed when the circuit has not yet attached to an n_conn.
1912
1913   o Minor bugfixes:
1914     - Change the contrib/tor.logrotate script so it makes the new
1915       logs as "_tor:_tor" rather than the default, which is generally
1916       "root:wheel". Fixes bug 676, reported by Serge Koksharov.
1917     - Stop using __attribute__((nonnull)) with GCC: it can give us useful
1918       warnings (occasionally), but it can also cause the compiler to
1919       eliminate error-checking code. Suggested by Peter Gutmann.
1920     - When a hidden service is giving up on an introduction point candidate
1921       that was not included in the last published rendezvous descriptor,
1922       don't reschedule publication of the next descriptor. Fixes bug 763.
1923       Bugfix on 0.0.9.3.
1924     - Mark RendNodes, RendExcludeNodes, HiddenServiceNodes, and
1925       HiddenServiceExcludeNodes as obsolete: they never worked properly,
1926       and nobody claims to be using them. Fixes bug 754. Bugfix on
1927       0.1.0.1-rc. Patch from Christian Wilms.
1928     - Fix a small alignment and memory-wasting bug on buffer chunks.
1929       Spotted by rovv.
1930
1931   o Minor bugfixes (controller):
1932     - When closing an application-side connection because its circuit
1933       is getting torn down, generate the stream event correctly.
1934       Bugfix on 0.1.2.x. Anonymous patch.
1935
1936   o Removed features:
1937     - Remove all backward-compatibility code to support relays running
1938       versions of Tor so old that they no longer work at all on the
1939       Tor network.
1940
1941
1942 Changes in version 0.2.0.30 - 2008-07-15
1943   o Minor bugfixes:
1944     - Stop using __attribute__((nonnull)) with GCC: it can give us useful
1945       warnings (occasionally), but it can also cause the compiler to
1946       eliminate error-checking code. Suggested by Peter Gutmann.
1947
1948
1949 Changes in version 0.2.0.29-rc - 2008-07-08
1950   Tor 0.2.0.29-rc fixes two big bugs with using bridges, fixes more
1951   hidden-service performance bugs, and fixes a bunch of smaller bugs.
1952
1953   o Major bugfixes:
1954     - If you have more than one bridge but don't know their keys,
1955       you would only launch a request for the descriptor of the first one
1956       on your list. (Tor considered launching requests for the others, but
1957       found that it already had a connection on the way for $0000...0000
1958       so it didn't open another.) Bugfix on 0.2.0.x.
1959     - If you have more than one bridge but don't know their keys, and the
1960       connection to one of the bridges failed, you would cancel all
1961       pending bridge connections. (After all, they all have the same
1962       digest.) Bugfix on 0.2.0.x.
1963     - When a hidden service was trying to establish an introduction point,
1964       and Tor had built circuits preemptively for such purposes, we
1965       were ignoring all the preemptive circuits and launching a new one
1966       instead. Bugfix on 0.2.0.14-alpha.
1967     - When a hidden service was trying to establish an introduction point,
1968       and Tor *did* manage to reuse one of the preemptively built
1969       circuits, it didn't correctly remember which one it used,
1970       so it asked for another one soon after, until there were no
1971       more preemptive circuits, at which point it launched one from
1972       scratch. Bugfix on 0.0.9.x.
1973     - Make directory servers include the X-Your-Address-Is: http header in
1974       their responses even for begin_dir conns. Now clients who only
1975       ever use begin_dir connections still have a way to learn their IP
1976       address. Fixes bug 737; bugfix on 0.2.0.22-rc. Reported by goldy.
1977
1978   o Minor bugfixes:
1979     - Fix a macro/CPP interaction that was confusing some compilers:
1980       some GCCs don't like #if/#endif pairs inside macro arguments.
1981       Fixes bug 707.
1982     - Fix macro collision between OpenSSL 0.9.8h and Windows headers.
1983       Fixes bug 704; fix from Steven Murdoch.
1984     - When opening /dev/null in finish_daemonize(), do not pass the
1985       O_CREAT flag. Fortify was complaining, and correctly so. Fixes
1986       bug 742; fix from Michael Scherer. Bugfix on 0.0.2pre19.
1987     - Correctly detect transparent proxy support on Linux hosts that
1988       require in.h to be included before netfilter_ipv4.h. Patch
1989       from coderman.
1990     - Disallow session resumption attempts during the renegotiation
1991       stage of the v2 handshake protocol. Clients should never be trying
1992       session resumption at this point, but apparently some did, in
1993       ways that caused the handshake to fail. Bugfix on 0.2.0.20-rc. Bug
1994       found by Geoff Goodell.
1995
1996
1997 Changes in version 0.2.1.2-alpha - 2008-06-20
1998   Tor 0.2.1.2-alpha includes a new "TestingTorNetwork" config option to
1999   make it easier to set up your own private Tor network; fixes several
2000   big bugs with using more than one bridge relay; fixes a big bug with
2001   offering hidden services quickly after Tor starts; and uses a better
2002   API for reporting potential bootstrapping problems to the controller.
2003
2004   o Major features:
2005     - New TestingTorNetwork config option to allow adjustment of
2006       previously constant values that, while reasonable, could slow
2007       bootstrapping. Implements proposal 135. Patch from Karsten.
2008
2009   o Major bugfixes:
2010     - If you have more than one bridge but don't know their digests,
2011       you would only learn a request for the descriptor of the first one
2012       on your list. (Tor considered launching requests for the others, but
2013       found that it already had a connection on the way for $0000...0000
2014       so it didn't open another.) Bugfix on 0.2.0.x.
2015     - If you have more than one bridge but don't know their digests,
2016       and the connection to one of the bridges failed, you would cancel
2017       all pending bridge connections. (After all, they all have the
2018       same digest.) Bugfix on 0.2.0.x.
2019     - When establishing a hidden service, introduction points that
2020       originate from cannibalized circuits are completely ignored and not
2021       included in rendezvous service descriptors. This might be another
2022       reason for delay in making a hidden service available. Bugfix
2023       from long ago (0.0.9.x?)
2024
2025   o Minor features:
2026     - Allow OpenSSL to use dynamic locks if it wants.
2027     - When building a consensus, do not include routers that are down.
2028       This will cut down 30% to 40% on consensus size. Implements
2029       proposal 138.
2030     - In directory authorities' approved-routers files, allow
2031       fingerprints with or without space.
2032     - Add a "GETINFO /status/bootstrap-phase" controller option, so the
2033       controller can query our current bootstrap state in case it attaches
2034       partway through and wants to catch up.
2035     - Send an initial "Starting" bootstrap status event, so we have a
2036       state to start out in.
2037
2038   o Minor bugfixes:
2039     - Asking for a conditional consensus at .../consensus/<fingerprints>
2040       would crash a dirserver if it did not already have a
2041       consensus. Bugfix on 0.2.1.1-alpha.
2042     - Clean up some macro/CPP interactions: some GCC versions don't like
2043       #if/#endif pairs inside macro arguments. Fixes bug 707. Bugfix on
2044       0.2.0.x.
2045
2046   o Bootstrapping bugfixes (on 0.2.1.1-alpha):
2047     - Directory authorities shouldn't complain about bootstrapping
2048       problems just because they do a lot of reachability testing and
2049       some of the connection attempts fail.
2050     - Start sending "count" and "recommendation" key/value pairs in
2051       bootstrap problem status events, so the controller can hear about
2052       problems even before Tor decides they're worth reporting for sure.
2053     - If you're using bridges, generate "bootstrap problem" warnings
2054       as soon as you run out of working bridges, rather than waiting
2055       for ten failures -- which will never happen if you have less than
2056       ten bridges.
2057     - If we close our OR connection because there's been a circuit
2058       pending on it for too long, we were telling our bootstrap status
2059       events "REASON=NONE". Now tell them "REASON=TIMEOUT".
2060
2061
2062 Changes in version 0.2.1.1-alpha - 2008-06-13
2063   Tor 0.2.1.1-alpha fixes a lot of memory fragmentation problems that
2064   were making the Tor process bloat especially on Linux; makes our TLS
2065   handshake blend in better; sends "bootstrap phase" status events to
2066   the controller, so it can keep the user informed of progress (and
2067   problems) fetching directory information and establishing circuits;
2068   and adds a variety of smaller features.
2069
2070   o Major features:
2071     - More work on making our TLS handshake blend in: modify the list
2072       of ciphers advertised by OpenSSL in client mode to even more
2073       closely resemble a common web browser. We cheat a little so that
2074       we can advertise ciphers that the locally installed OpenSSL doesn't
2075       know about.
2076     - Start sending "bootstrap phase" status events to the controller,
2077       so it can keep the user informed of progress fetching directory
2078       information and establishing circuits. Also inform the controller
2079       if we think we're stuck at a particular bootstrap phase. Implements
2080       proposal 137.
2081     - Resume using OpenSSL's RAND_poll() for better (and more portable)
2082       cross-platform entropy collection again. We used to use it, then
2083       stopped using it because of a bug that could crash systems that
2084       called RAND_poll when they had a lot of fds open. It looks like the
2085       bug got fixed in late 2006. Our new behavior is to call RAND_poll()
2086       at startup, and to call RAND_poll() when we reseed later only if
2087       we have a non-buggy OpenSSL version.
2088
2089   o Major bugfixes:
2090     - When we choose to abandon a new entry guard because we think our
2091       older ones might be better, close any circuits pending on that
2092       new entry guard connection. This fix should make us recover much
2093       faster when our network is down and then comes back. Bugfix on
2094       0.1.2.8-beta; found by lodger.
2095
2096   o Memory fixes and improvements:
2097     - Add a malloc_good_size implementation to OpenBSD_malloc_linux.c,
2098       to avoid unused RAM in buffer chunks and memory pools.
2099     - Speed up parsing and cut down on memory fragmentation by using
2100       stack-style allocations for parsing directory objects. Previously,
2101       this accounted for over 40% of allocations from within Tor's code
2102       on a typical directory cache.
2103     - Use a Bloom filter rather than a digest-based set to track which
2104       descriptors we need to keep around when we're cleaning out old
2105       router descriptors. This speeds up the computation significantly,
2106       and may reduce fragmentation.
2107     - Reduce the default smartlist size from 32 to 16; it turns out that
2108       most smartlists hold around 8-12 elements tops.
2109     - Make dumpstats() log the fullness and size of openssl-internal
2110       buffers.
2111     - If the user has applied the experimental SSL_MODE_RELEASE_BUFFERS
2112       patch to their OpenSSL, turn it on to save memory on servers. This
2113       patch will (with any luck) get included in a mainline distribution
2114       before too long.
2115     - Never use OpenSSL compression: it wastes RAM and CPU trying to
2116       compress cells, which are basically all encrypted, compressed,
2117       or both.
2118
2119   o Minor bugfixes:
2120     - Stop reloading the router list from disk for no reason when we
2121       run out of reachable directory mirrors. Once upon a time reloading
2122       it would set the 'is_running' flag back to 1 for them. It hasn't
2123       done that for a long time.
2124     - In very rare situations new hidden service descriptors were
2125       published earlier than 30 seconds after the last change to the
2126       service. (We currently think that a hidden service descriptor
2127       that's been stable for 30 seconds is worth publishing.)
2128
2129   o Minor features:
2130     - Allow separate log levels to be configured for different logging
2131       domains. For example, this allows one to log all notices, warnings,
2132       or errors, plus all memory management messages of level debug or
2133       higher, with: Log [MM] debug-err [*] notice-err file /var/log/tor.
2134     - Add a couple of extra warnings to --enable-gcc-warnings for GCC 4.3,
2135       and stop using a warning that had become unfixably verbose under
2136       GCC 4.3.
2137     - New --hush command-line option similar to --quiet. While --quiet
2138       disables all logging to the console on startup, --hush limits the
2139       output to messages of warning and error severity.
2140     - Servers support a new URL scheme for consensus downloads that
2141       allows the client to specify which authorities are trusted.
2142       The server then only sends the consensus if the client will trust
2143       it. Otherwise a 404 error is sent back. Clients use this
2144       new scheme when the server supports it (meaning it's running
2145       0.2.1.1-alpha or later). Implements proposal 134.
2146     - New configure/torrc options (--enable-geoip-stats,
2147       DirRecordUsageByCountry) to record how many IPs we've served
2148       directory info to in each country code, how many status documents
2149       total we've sent to each country code, and what share of the total
2150       directory requests we should expect to see.
2151     - Use the TLS1 hostname extension to more closely resemble browser
2152       behavior.
2153     - Lots of new unit tests.
2154     - Add a macro to implement the common pattern of iterating through
2155       two parallel lists in lockstep.
2156
2157
2158 Changes in version 0.2.0.28-rc - 2008-06-13
2159   Tor 0.2.0.28-rc fixes an anonymity-related bug, fixes a hidden-service
2160   performance bug, and fixes a bunch of smaller bugs.
2161
2162   o Anonymity fixes:
2163     - Fix a bug where, when we were choosing the 'end stream reason' to
2164       put in our relay end cell that we send to the exit relay, Tor
2165       clients on Windows were sometimes sending the wrong 'reason'. The
2166       anonymity problem is that exit relays may be able to guess whether
2167       the client is running Windows, thus helping partition the anonymity
2168       set. Down the road we should stop sending reasons to exit relays,
2169       or otherwise prevent future versions of this bug.
2170
2171   o Major bugfixes:
2172     - While setting up a hidden service, some valid introduction circuits
2173       were overlooked and abandoned. This might be the reason for
2174       the long delay in making a hidden service available. Bugfix on
2175       0.2.0.14-alpha.
2176
2177   o Minor features:
2178     - Update to the "June 9 2008" ip-to-country file.
2179     - Run 'make test' as part of 'make dist', so we stop releasing so
2180       many development snapshots that fail their unit tests.
2181
2182   o Minor bugfixes:
2183     - When we're checking if we have enough dir info for each relay
2184       to begin establishing circuits, make sure that we actually have
2185       the descriptor listed in the consensus, not just any descriptor.
2186       Bugfix on 0.1.2.x.
2187     - Bridge relays no longer print "xx=0" in their extrainfo document
2188       for every single country code in the geoip db. Bugfix on
2189       0.2.0.27-rc.
2190     - Only warn when we fail to load the geoip file if we were planning to
2191       include geoip stats in our extrainfo document. Bugfix on 0.2.0.27-rc.
2192     - If we change our MaxAdvertisedBandwidth and then reload torrc,
2193       Tor won't realize it should publish a new relay descriptor. Fixes
2194       bug 688, reported by mfr. Bugfix on 0.1.2.x.
2195     - When we haven't had any application requests lately, don't bother
2196       logging that we have expired a bunch of descriptors. Bugfix
2197       on 0.1.2.x.
2198     - Make relay cells written on a connection count as non-padding when
2199       tracking how long a connection has been in use. Bugfix on
2200       0.2.0.1-alpha. Spotted by lodger.
2201     - Fix unit tests in 0.2.0.27-rc.
2202     - Fix compile on Windows.
2203
2204
2205 Changes in version 0.2.0.27-rc - 2008-06-03
2206   Tor 0.2.0.27-rc adds a few features we left out of the earlier
2207   release candidates. In particular, we now include an IP-to-country
2208   GeoIP database, so controllers can easily look up what country a
2209   given relay is in, and so bridge relays can give us some sanitized
2210   summaries about which countries are making use of bridges. (See proposal
2211   126-geoip-fetching.txt for details.)
2212
2213   o Major features:
2214     - Include an IP-to-country GeoIP file in the tarball, so bridge
2215       relays can report sanitized summaries of the usage they're seeing.
2216
2217   o Minor features:
2218     - Add a "PURPOSE=" argument to "STREAM NEW" events, as suggested by
2219       Robert Hogan. Fixes the first part of bug 681.
2220     - Make bridge authorities never serve extrainfo docs.
2221     - Add support to detect Libevent versions in the 1.4.x series
2222       on mingw.
2223     - Fix build on gcc 4.3 with --enable-gcc-warnings set.
2224     - Include a new contrib/tor-exit-notice.html file that exit relay
2225       operators can put on their website to help reduce abuse queries.
2226
2227   o Minor bugfixes:
2228     - When tunneling an encrypted directory connection, and its first
2229       circuit fails, do not leave it unattached and ask the controller
2230       to deal. Fixes the second part of bug 681.
2231     - Make bridge authorities correctly expire old extrainfo documents
2232       from time to time.
2233
2234
2235 Changes in version 0.2.0.26-rc - 2008-05-13
2236   Tor 0.2.0.26-rc fixes a major security vulnerability caused by a bug
2237   in Debian's OpenSSL packages. All users running any 0.2.0.x version
2238   should upgrade, whether they're running Debian or not.
2239
2240   o Major security fixes:
2241     - Use new V3 directory authority keys on the tor26, gabelmoo, and
2242       moria1 V3 directory authorities. The old keys were generated with
2243       a vulnerable version of Debian's OpenSSL package, and must be
2244       considered compromised. Other authorities' keys were not generated
2245       with an affected version of OpenSSL.
2246
2247   o Major bugfixes:
2248     - List authority signatures as "unrecognized" based on DirServer
2249       lines, not on cert cache. Bugfix on 0.2.0.x.
2250
2251   o Minor features:
2252     - Add a new V3AuthUseLegacyKey option to make it easier for
2253       authorities to change their identity keys if they have to.
2254
2255
2256 Changes in version 0.2.0.25-rc - 2008-04-23
2257   Tor 0.2.0.25-rc makes Tor work again on OS X and certain BSDs.
2258
2259   o Major bugfixes:
2260     - Remember to initialize threading before initializing logging.
2261       Otherwise, many BSD-family implementations will crash hard on
2262       startup. Fixes bug 671. Bugfix on 0.2.0.24-rc.
2263
2264   o Minor bugfixes:
2265     - Authorities correctly free policies on bad servers on
2266       exit. Fixes bug 672. Bugfix on 0.2.0.x.
2267
2268
2269 Changes in version 0.2.0.24-rc - 2008-04-22
2270   Tor 0.2.0.24-rc adds dizum (run by Alex de Joode) as the new sixth
2271   v3 directory authority, makes relays with dynamic IP addresses and no
2272   DirPort notice more quickly when their IP address changes, fixes a few
2273   rare crashes and memory leaks, and fixes a few other miscellaneous bugs.
2274
2275   o New directory authorities:
2276     - Take lefkada out of the list of v3 directory authorities, since
2277       it has been down for months.
2278     - Set up dizum (run by Alex de Joode) as the new sixth v3 directory
2279       authority.
2280
2281   o Major bugfixes:
2282     - Detect address changes more quickly on non-directory mirror
2283       relays. Bugfix on 0.2.0.18-alpha; fixes bug 652.
2284
2285   o Minor features (security):
2286     - Reject requests for reverse-dns lookup of names that are in
2287       a private address space. Patch from lodger.
2288     - Non-exit relays no longer allow DNS requests. Fixes bug 619. Patch
2289       from lodger.
2290
2291   o Minor bugfixes (crashes):
2292     - Avoid a rare assert that can trigger when Tor doesn't have much
2293       directory information yet and it tries to fetch a v2 hidden
2294       service descriptor. Fixes bug 651, reported by nwf.
2295     - Initialize log mutex before initializing dmalloc. Otherwise,
2296       running with dmalloc would crash. Bugfix on 0.2.0.x-alpha.
2297     - Use recursive pthread mutexes in order to avoid deadlock when
2298       logging debug-level messages to a controller. Bug spotted by nwf,
2299       bugfix on 0.2.0.16-alpha.
2300
2301   o Minor bugfixes (resource management):
2302     - Keep address policies from leaking memory: start their refcount
2303       at 1, not 2. Bugfix on 0.2.0.16-alpha.
2304     - Free authority certificates on exit, so they don't look like memory
2305       leaks. Bugfix on 0.2.0.19-alpha.
2306     - Free static hashtables for policy maps and for TLS connections on
2307       shutdown, so they don't look like memory leaks. Bugfix on 0.2.0.x.
2308     - Avoid allocating extra space when computing consensuses on 64-bit
2309       platforms. Bug spotted by aakova.
2310
2311   o Minor bugfixes (misc):
2312     - Do not read the configuration file when we've only been told to
2313       generate a password hash. Fixes bug 643. Bugfix on 0.0.9pre5. Fix
2314       based on patch from Sebastian Hahn.
2315     - Exit relays that are used as a client can now reach themselves
2316       using the .exit notation, rather than just launching an infinite
2317       pile of circuits. Fixes bug 641. Reported by Sebastian Hahn.
2318     - When attempting to open a logfile fails, tell us why.
2319     - Fix a dumb bug that was preventing us from knowing that we should
2320       preemptively build circuits to handle expected directory requests.
2321       Fixes bug 660. Bugfix on 0.1.2.x.
2322     - Warn less verbosely about clock skew from netinfo cells from
2323       untrusted sources. Fixes bug 663.
2324     - Make controller stream events for DNS requests more consistent,
2325       by adding "new stream" events for DNS requests, and removing
2326       spurious "stream closed" events" for cached reverse resolves.
2327       Patch from mwenge. Fixes bug 646.
2328     - Correctly notify one-hop connections when a circuit build has
2329       failed. Possible fix for bug 669. Found by lodger.
2330
2331
2332 Changes in version 0.2.0.23-rc - 2008-03-24
2333   Tor 0.2.0.23-rc is the fourth release candidate for the 0.2.0 series. It
2334   makes bootstrapping faster if the first directory mirror you contact
2335   is down. The bundles also include the new Vidalia 0.1.2 release.
2336
2337   o Major bugfixes:
2338     - When a tunneled directory request is made to a directory server
2339       that's down, notice after 30 seconds rather than 120 seconds. Also,
2340       fail any begindir streams that are pending on it, so they can
2341       retry elsewhere. This was causing multi-minute delays on bootstrap.
2342
2343
2344 Changes in version 0.2.0.22-rc - 2008-03-18
2345   Tor 0.2.0.22-rc is the third release candidate for the 0.2.0 series. It
2346   enables encrypted directory connections by default for non-relays, fixes
2347   some broken TLS behavior we added in 0.2.0.20-rc, and resolves many
2348   other bugs. The bundles also include Vidalia 0.1.1 and Torbutton 1.1.17.
2349
2350   o Major features:
2351     - Enable encrypted directory connections by default for non-relays,
2352       so censor tools that block Tor directory connections based on their
2353       plaintext patterns will no longer work. This means Tor works in
2354       certain censored countries by default again.
2355
2356   o Major bugfixes:
2357     - Make sure servers always request certificates from clients during
2358       TLS renegotiation. Reported by lodger; bugfix on 0.2.0.20-rc.
2359     - Do not enter a CPU-eating loop when a connection is closed in
2360       the middle of client-side TLS renegotiation. Fixes bug 622. Bug
2361       diagnosed by lodger; bugfix on 0.2.0.20-rc.
2362     - Fix assertion failure that could occur when a blocked circuit
2363       became unblocked, and it had pending client DNS requests. Bugfix
2364       on 0.2.0.1-alpha. Fixes bug 632.
2365
2366   o Minor bugfixes (on 0.1.2.x):
2367     - Generate "STATUS_SERVER" events rather than misspelled
2368       "STATUS_SEVER" events. Caught by mwenge.
2369     - When counting the number of bytes written on a TLS connection,
2370       look at the BIO actually used for writing to the network, not
2371       at the BIO used (sometimes) to buffer data for the network.
2372       Looking at different BIOs could result in write counts on the
2373       order of ULONG_MAX. Fixes bug 614.
2374     - On Windows, correctly detect errors when listing the contents of
2375       a directory. Fix from lodger.
2376
2377   o Minor bugfixes (on 0.2.0.x):
2378     - Downgrade "sslv3 alert handshake failure" message to INFO.
2379     - If we set RelayBandwidthRate and RelayBandwidthBurst very high but
2380       left BandwidthRate and BandwidthBurst at the default, we would be
2381       silently limited by those defaults. Now raise them to match the
2382       RelayBandwidth* values.
2383     - Fix the SVK version detection logic to work correctly on a branch.
2384     - Make --enable-openbsd-malloc work correctly on Linux with alpha
2385       CPUs. Fixes bug 625.
2386     - Logging functions now check that the passed severity is sane.
2387     - Use proper log levels in the testsuite call of
2388       get_interface_address6().
2389     - When using a nonstandard malloc, do not use the platform values for
2390       HAVE_MALLOC_GOOD_SIZE or HAVE_MALLOC_USABLE_SIZE.
2391     - Make the openbsd malloc code use 8k pages on alpha CPUs and
2392       16k pages on ia64.
2393     - Detect mismatched page sizes when using --enable-openbsd-malloc.
2394     - Avoid double-marked-for-close warning when certain kinds of invalid
2395       .in-addr.arpa addresses are passed to the DNSPort. Part of a fix
2396       for bug 617. Bugfix on 0.2.0.1-alpha.
2397     - Make sure that the "NULL-means-reject *:*" convention is followed by
2398       all the policy manipulation functions, avoiding some possible crash
2399       bugs. Bug found by lodger. Bugfix on 0.2.0.16-alpha.
2400     - Fix the implementation of ClientDNSRejectInternalAddresses so that it
2401       actually works, and doesn't warn about every single reverse lookup.
2402       Fixes the other part of bug 617.  Bugfix on 0.2.0.1-alpha.
2403
2404   o Minor features:
2405     - Only log guard node status when guard node status has changed.
2406     - Downgrade the 3 most common "INFO" messages to "DEBUG". This will
2407       make "INFO" 75% less verbose.
2408
2409
2410 Changes in version 0.2.0.21-rc - 2008-03-02
2411   Tor 0.2.0.21-rc is the second release candidate for the 0.2.0 series. It
2412   makes Tor work well with Vidalia again, fixes a rare assert bug,
2413   and fixes a pair of more minor bugs. The bundles also include Vidalia
2414   0.1.0 and Torbutton 1.1.16.
2415
2416   o Major bugfixes:
2417     - The control port should declare that it requires password auth
2418       when HashedControlSessionPassword is set too. Patch from Matt Edman;
2419       bugfix on 0.2.0.20-rc. Fixes bug 615.
2420     - Downgrade assert in connection_buckets_decrement() to a log message.
2421       This may help us solve bug 614, and in any case will make its
2422       symptoms less severe. Bugfix on 0.2.0.20-rc. Reported by fredzupy.
2423     - We were sometimes miscounting the number of bytes read from the
2424       network, causing our rate limiting to not be followed exactly.
2425       Bugfix on 0.2.0.16-alpha. Reported by lodger.
2426
2427   o Minor bugfixes:
2428     - Fix compilation with OpenSSL 0.9.8 and 0.9.8a. All other supported
2429       OpenSSL versions should have been working fine. Diagnosis and patch
2430       from lodger, Karsten Loesing, and Sebastian Hahn. Fixes bug 616.
2431       Bugfix on 0.2.0.20-rc.
2432
2433
2434 Changes in version 0.2.0.20-rc - 2008-02-24
2435   Tor 0.2.0.20-rc is the first release candidate for the 0.2.0 series. It
2436   makes more progress towards normalizing Tor's TLS handshake, makes
2437   hidden services work better again, helps relays bootstrap if they don't
2438   know their IP address, adds optional support for linking in openbsd's
2439   allocator or tcmalloc, allows really fast relays to scale past 15000
2440   sockets, and fixes a bunch of minor bugs reported by Veracode.
2441
2442   o Major features:
2443     - Enable the revised TLS handshake based on the one designed by
2444       Steven Murdoch in proposal 124, as revised in proposal 130. It
2445       includes version negotiation for OR connections as described in
2446       proposal 105. The new handshake is meant to be harder for censors
2447       to fingerprint, and it adds the ability to detect certain kinds of
2448       man-in-the-middle traffic analysis attacks. The version negotiation
2449       feature will allow us to improve Tor's link protocol more safely
2450       in the future.
2451     - Choose which bridge to use proportional to its advertised bandwidth,
2452       rather than uniformly at random. This should speed up Tor for
2453       bridge users. Also do this for people who set StrictEntryNodes.
2454     - When a TrackHostExits-chosen exit fails too many times in a row,
2455       stop using it. Bugfix on 0.1.2.x; fixes bug 437.
2456
2457   o Major bugfixes:
2458     - Resolved problems with (re-)fetching hidden service descriptors.
2459       Patch from Karsten Loesing; fixes problems with 0.2.0.18-alpha
2460       and 0.2.0.19-alpha.
2461     - If we only ever used Tor for hidden service lookups or posts, we
2462       would stop building circuits and start refusing connections after
2463       24 hours, since we falsely believed that Tor was dormant. Reported
2464       by nwf; bugfix on 0.1.2.x.
2465     - Servers that don't know their own IP address should go to the
2466       authorities for their first directory fetch, even if their DirPort
2467       is off or if they don't know they're reachable yet. This will help
2468       them bootstrap better. Bugfix on 0.2.0.18-alpha; fixes bug 609.
2469     - When counting the number of open sockets, count not only the number
2470       of sockets we have received from the socket() call, but also
2471       the number we've gotten from accept() and socketpair(). This bug
2472       made us fail to count all sockets that we were using for incoming
2473       connections. Bugfix on 0.2.0.x.
2474     - Fix code used to find strings within buffers, when those strings
2475       are not in the first chunk of the buffer. Bugfix on 0.2.0.x.
2476     - Fix potential segfault when parsing HTTP headers. Bugfix on 0.2.0.x.
2477     - Add a new __HashedControlSessionPassword option for controllers
2478       to use for one-off session password hashes that shouldn't get
2479       saved to disk by SAVECONF --- Vidalia users were accumulating a
2480       pile of HashedControlPassword lines in their torrc files, one for
2481       each time they had restarted Tor and then clicked Save. Make Tor
2482       automatically convert "HashedControlPassword" to this new option but
2483       only when it's given on the command line. Partial fix for bug 586.
2484
2485   o Minor features (performance):
2486     - Tune parameters for cell pool allocation to minimize amount of
2487       RAM overhead used.
2488     - Add OpenBSD malloc code from phk as an optional malloc
2489       replacement on Linux: some glibc libraries do very poorly
2490       with Tor's memory allocation patterns. Pass
2491       --enable-openbsd-malloc to get the replacement malloc code.
2492     - Add a --with-tcmalloc option to the configure script to link
2493       against tcmalloc (if present). Does not yet search for
2494       non-system include paths.
2495     - Stop imposing an arbitrary maximum on the number of file descriptors
2496       used for busy servers. Bug reported by Olaf Selke; patch from
2497       Sebastian Hahn.
2498
2499   o Minor features (other):
2500     - When SafeLogging is disabled, log addresses along with all TLS
2501       errors.
2502     - When building with --enable-gcc-warnings, check for whether Apple's
2503       warning "-Wshorten-64-to-32" is available.
2504     - Add a --passphrase-fd argument to the tor-gencert command for
2505       scriptability.
2506
2507   o Minor bugfixes (memory leaks and code problems):
2508     - We were leaking a file descriptor if Tor started with a zero-length
2509       cached-descriptors file. Patch by freddy77; bugfix on 0.1.2.
2510     - Detect size overflow in zlib code. Reported by Justin Ferguson and
2511       Dan Kaminsky.
2512     - We were comparing the raw BridgePassword entry with a base64'ed
2513       version of it, when handling a "/tor/networkstatus-bridges"
2514       directory request. Now compare correctly. Noticed by Veracode.
2515     - Recover from bad tracked-since value in MTBF-history file.
2516       Should fix bug 537.
2517     - Alter the code that tries to recover from unhandled write
2518       errors, to not try to flush onto a socket that's given us
2519       unhandled errors. Bugfix on 0.1.2.x.
2520     - Make Unix controlsockets work correctly on OpenBSD. Patch from
2521       tup. Bugfix on 0.2.0.3-alpha.
2522
2523   o Minor bugfixes (other):
2524     - If we have an extra-info document for our server, always make
2525       it available on the control port, even if we haven't gotten
2526       a copy of it from an authority yet. Patch from mwenge.
2527     - Log the correct memory chunk sizes for empty RAM chunks in mempool.c.
2528     - Directory mirrors no longer include a guess at the client's IP
2529       address if the connection appears to be coming from the same /24
2530       network; it was producing too many wrong guesses.
2531     - Make the new hidden service code respect the SafeLogging setting.
2532       Bugfix on 0.2.0.x. Patch from Karsten.
2533     - When starting as an authority, do not overwrite all certificates
2534       cached from other authorities. Bugfix on 0.2.0.x. Fixes bug 606.
2535     - If we're trying to flush the last bytes on a connection (for
2536       example, when answering a directory request), reset the
2537       time-to-give-up timeout every time we manage to write something
2538       on the socket. Bugfix on 0.1.2.x.
2539     - Change the behavior of "getinfo status/good-server-descriptor"
2540       so it doesn't return failure when any authority disappears.
2541     - Even though the man page said that "TrackHostExits ." should
2542       work, nobody had ever implemented it. Bugfix on 0.1.0.x.
2543     - Report TLS "zero return" case as a "clean close" and "IO error"
2544       as a "close". Stop calling closes "unexpected closes": existing
2545       Tors don't use SSL_close(), so having a connection close without
2546       the TLS shutdown handshake is hardly unexpected.
2547     - Send NAMESERVER_STATUS messages for a single failed nameserver
2548       correctly.
2549
2550   o Code simplifications and refactoring:
2551     - Remove the tor_strpartition function: its logic was confused,
2552       and it was only used for one thing that could be implemented far
2553       more easily.
2554
2555
2556 Changes in version 0.2.0.19-alpha - 2008-02-09
2557   Tor 0.2.0.19-alpha makes more progress towards normalizing Tor's TLS
2558   handshake, makes path selection for relays more secure and IP address
2559   guessing more robust, and generally fixes a lot of bugs in preparation
2560   for calling the 0.2.0 branch stable.
2561
2562   o Major features:
2563     - Do not include recognizeable strings in the commonname part of
2564       Tor's x509 certificates.
2565
2566   o Major bugfixes:
2567     - If we're a relay, avoid picking ourselves as an introduction point,
2568       a rendezvous point, or as the final hop for internal circuits. Bug
2569       reported by taranis and lodger. Bugfix on 0.1.2.x.
2570     - Patch from "Andrew S. Lists" to catch when we contact a directory
2571       mirror at IP address X and he says we look like we're coming from
2572       IP address X. Bugfix on 0.1.2.x.
2573
2574   o Minor features (security):
2575     - Be more paranoid about overwriting sensitive memory on free(),
2576       as a defensive programming tactic to ensure forward secrecy.
2577
2578   o Minor features (directory authority):
2579     - Actually validate the options passed to AuthDirReject,
2580       AuthDirInvalid, AuthDirBadDir, and AuthDirBadExit.
2581     - Reject router descriptors with out-of-range bandwidthcapacity or
2582       bandwidthburst values.
2583
2584   o Minor features (controller):
2585     - Reject controller commands over 1MB in length.  This keeps rogue
2586       processes from running us out of memory.
2587
2588   o Minor features (misc):
2589     - Give more descriptive well-formedness errors for out-of-range
2590       hidden service descriptor/protocol versions.
2591     - Make memory debugging information describe more about history
2592       of cell allocation, so we can help reduce our memory use.
2593
2594   o Deprecated features (controller):
2595     - The status/version/num-versioning and status/version/num-concurring
2596       GETINFO options are no longer useful in the v3 directory protocol:
2597       treat them as deprecated, and warn when they're used.
2598
2599   o Minor bugfixes:
2600     - When our consensus networkstatus has been expired for a while, stop
2601       being willing to build circuits using it. Fixes bug 401. Bugfix
2602       on 0.1.2.x.
2603     - Directory caches now fetch certificates from all authorities
2604       listed in a networkstatus consensus, even when they do not
2605       recognize them. Fixes bug 571. Bugfix on 0.2.0.x.
2606     - When connecting to a bridge without specifying its key, insert
2607       the connection into the identity-to-connection map as soon as
2608       a key is learned. Fixes bug 574. Bugfix on 0.2.0.x.
2609     - Detect versions of OS X where malloc_good_size() is present in the
2610       library but never actually declared. Resolves bug 587. Bugfix
2611       on 0.2.0.x.
2612     - Stop incorrectly truncating zlib responses to directory authority
2613       signature download requests. Fixes bug 593. Bugfix on 0.2.0.x.
2614     - Stop recommending that every server operator send mail to tor-ops.
2615       Resolves bug 597. Bugfix on 0.1.2.x.
2616     - Don't trigger an assert if we start a directory authority with a
2617       private IP address (like 127.0.0.1).
2618     - Avoid possible failures when generating a directory with routers
2619       with over-long versions strings, or too many flags set. Bugfix
2620       on 0.1.2.x.
2621     - If an attempt to launch a DNS resolve request over the control
2622       port fails because we have overrun the limit on the number of
2623       connections, tell the controller that the request has failed.
2624     - Avoid using too little bandwidth when our clock skips a few
2625       seconds. Bugfix on 0.1.2.x.
2626     - Fix shell error when warning about missing packages in configure
2627       script, on Fedora or Red Hat machines. Bugfix on 0.2.0.x.
2628     - Do not become confused when receiving a spurious VERSIONS-like
2629       cell from a confused v1 client.  Bugfix on 0.2.0.x.
2630     - Re-fetch v2 (as well as v0) rendezvous descriptors when all
2631       introduction points for a hidden service have failed. Patch from
2632       Karsten Loesing. Bugfix on 0.2.0.x.
2633
2634   o Code simplifications and refactoring:
2635     - Remove some needless generality from cpuworker code, for improved
2636       type-safety.
2637     - Stop overloading the circuit_t.onionskin field for both "onionskin
2638       from a CREATE cell that we are waiting for a cpuworker to be
2639       assigned" and "onionskin from an EXTEND cell that we are going to
2640       send to an OR as soon as we are connected". Might help with bug 600.
2641     - Add an in-place version of aes_crypt() so that we can avoid doing a
2642       needless memcpy() call on each cell payload.
2643
2644
2645 Changes in version 0.2.0.18-alpha - 2008-01-25
2646   Tor 0.2.0.18-alpha adds a sixth v3 directory authority run by CCC,
2647   fixes a big memory leak in 0.2.0.17-alpha, and adds new config options
2648   that can warn or reject connections to ports generally associated with
2649   vulnerable-plaintext protocols.
2650
2651   o New directory authorities:
2652     - Set up dannenberg (run by CCC) as the sixth v3 directory
2653       authority.
2654
2655   o Major bugfixes:
2656     - Fix a major memory leak when attempting to use the v2 TLS
2657       handshake code. Bugfix on 0.2.0.x; fixes bug 589.
2658     - We accidentally enabled the under-development v2 TLS handshake
2659       code, which was causing log entries like "TLS error while
2660       renegotiating handshake". Disable it again. Resolves bug 590.
2661     - We were computing the wrong Content-Length: header for directory
2662       responses that need to be compressed on the fly, causing clients
2663       asking for those items to always fail. Bugfix on 0.2.0.x; partially
2664       fixes bug 593.
2665
2666   o Major features:
2667     - Avoid going directly to the directory authorities even if you're a
2668       relay, if you haven't found yourself reachable yet or if you've
2669       decided not to advertise your dirport yet. Addresses bug 556.
2670     - If we've gone 12 hours since our last bandwidth check, and we
2671       estimate we have less than 50KB bandwidth capacity but we could
2672       handle more, do another bandwidth test.
2673     - New config options WarnPlaintextPorts and RejectPlaintextPorts so
2674       Tor can warn and/or refuse connections to ports commonly used with
2675       vulnerable-plaintext protocols. Currently we warn on ports 23,
2676       109, 110, and 143, but we don't reject any.
2677
2678   o Minor bugfixes:
2679     - When we setconf ClientOnly to 1, close any current OR and Dir
2680       listeners. Reported by mwenge.
2681     - When we get a consensus that's been signed by more people than
2682       we expect, don't log about it; it's not a big deal. Reported
2683       by Kyle Williams.
2684
2685   o Minor features:
2686     - Don't answer "/tor/networkstatus-bridges" directory requests if
2687       the request isn't encrypted.
2688     - Make "ClientOnly 1" config option disable directory ports too.
2689     - Patches from Karsten Loesing to make v2 hidden services more
2690       robust: work even when there aren't enough HSDir relays available;
2691       retry when a v2 rend desc fetch fails; but don't retry if we
2692       already have a usable v0 rend desc.
2693
2694
2695 Changes in version 0.2.0.17-alpha - 2008-01-17
2696   Tor 0.2.0.17-alpha makes the tarball build cleanly again (whoops).
2697
2698   o Compile fixes:
2699     - Make the tor-gencert man page get included correctly in the tarball.
2700
2701
2702 Changes in version 0.2.0.16-alpha - 2008-01-17
2703   Tor 0.2.0.16-alpha adds a fifth v3 directory authority run by Karsten
2704   Loesing, and generally cleans up a lot of features and minor bugs.
2705
2706   o New directory authorities:
2707     - Set up gabelmoo (run by Karsten Loesing) as the fifth v3 directory
2708       authority.
2709
2710   o Major performance improvements:
2711     - Switch our old ring buffer implementation for one more like that
2712       used by free Unix kernels. The wasted space in a buffer with 1mb
2713       of data will now be more like 8k than 1mb. The new implementation
2714       also avoids realloc();realloc(); patterns that can contribute to
2715       memory fragmentation.
2716
2717   o Minor features:
2718     - Configuration files now accept C-style strings as values. This
2719       helps encode characters not allowed in the current configuration
2720       file format, such as newline or #. Addresses bug 557.
2721     - Although we fixed bug 539 (where servers would send HTTP status 503
2722       responses _and_ send a body too), there are still servers out
2723       there that haven't upgraded. Therefore, make clients parse such
2724       bodies when they receive them.
2725     - When we're not serving v2 directory information, there is no reason
2726       to actually keep any around. Remove the obsolete files and directory
2727       on startup if they are very old and we aren't going to serve them.
2728
2729   o Minor performance improvements:
2730     - Reference-count and share copies of address policy entries; only 5%
2731       of them were actually distinct.
2732     - Never walk through the list of logs if we know that no log is
2733       interested in a given message.
2734
2735   o Minor bugfixes:
2736     - When an authority has not signed a consensus, do not try to
2737       download a nonexistent "certificate with key 00000000". Bugfix
2738       on 0.2.0.x. Fixes bug 569.
2739     - Fix a rare assert error when we're closing one of our threads:
2740       use a mutex to protect the list of logs, so we never write to the
2741       list as it's being freed. Bugfix on 0.1.2.x. Fixes the very rare
2742       bug 575, which is kind of the revenge of bug 222.
2743     - Patch from Karsten Loesing to complain less at both the client
2744       and the relay when a relay used to have the HSDir flag but doesn't
2745       anymore, and we try to upload a hidden service descriptor.
2746     - Stop leaking one cert per TLS context. Fixes bug 582. Bugfix on
2747       0.2.0.15-alpha.
2748     - Do not try to download missing certificates until we have tried
2749       to check our fallback consensus. Fixes bug 583.
2750     - Make bridges round reported GeoIP stats info up to the nearest
2751       estimate, not down. Now we can distinguish between "0 people from
2752       this country" and "1 person from this country".
2753     - Avoid a spurious free on base64 failure. Bugfix on 0.1.2.
2754     - Avoid possible segfault if key generation fails in
2755       crypto_pk_hybrid_encrypt. Bugfix on 0.2.0.
2756     - Avoid segfault in the case where a badly behaved v2 versioning
2757       directory sends a signed networkstatus with missing client-versions.
2758       Bugfix on 0.1.2.
2759     - Avoid segfaults on certain complex invocations of
2760       router_get_by_hexdigest(). Bugfix on 0.1.2.
2761     - Correct bad index on array access in parse_http_time(). Bugfix
2762       on 0.2.0.
2763     - Fix possible bug in vote generation when server versions are present
2764       but client versions are not.
2765     - Fix rare bug on REDIRECTSTREAM control command when called with no
2766       port set: it could erroneously report an error when none had
2767       happened.
2768     - Avoid bogus crash-prone, leak-prone tor_realloc when we're
2769       compressing large objects and find ourselves with more than 4k
2770       left over. Bugfix on 0.2.0.
2771     - Fix a small memory leak when setting up a hidden service.
2772     - Fix a few memory leaks that could in theory happen under bizarre
2773       error conditions.
2774     - Fix an assert if we post a general-purpose descriptor via the
2775       control port but that descriptor isn't mentioned in our current
2776       network consensus. Bug reported by Jon McLachlan; bugfix on
2777       0.2.0.9-alpha.
2778
2779   o Minor features (controller):
2780     - Get NS events working again. Patch from tup.
2781     - The GETCONF command now escapes and quotes configuration values
2782       that don't otherwise fit into the torrc file.
2783     - The SETCONF command now handles quoted values correctly.
2784
2785   o Minor features (directory authorities):
2786     - New configuration options to override default maximum number of
2787       servers allowed on a single IP address. This is important for
2788       running a test network on a single host.
2789     - Actually implement the -s option to tor-gencert.
2790     - Add a manual page for tor-gencert.
2791
2792   o Minor features (bridges):
2793     - Bridge authorities no longer serve bridge descriptors over
2794       unencrypted connections.
2795
2796   o Minor features (other):
2797     - Add hidden services and DNSPorts to the list of things that make
2798       Tor accept that it has running ports. Change starting Tor with no
2799       ports from a fatal error to a warning; we might change it back if
2800       this turns out to confuse anybody. Fixes bug 579.
2801
2802
2803 Changes in version 0.1.2.19 - 2008-01-17
2804   Tor 0.1.2.19 fixes a huge memory leak on exit relays, makes the default
2805   exit policy a little bit more conservative so it's safer to run an
2806   exit relay on a home system, and fixes a variety of smaller issues.
2807
2808   o Security fixes:
2809     - Exit policies now reject connections that are addressed to a
2810       relay's public (external) IP address too, unless
2811       ExitPolicyRejectPrivate is turned off. We do this because too
2812       many relays are running nearby to services that trust them based
2813       on network address.
2814
2815   o Major bugfixes:
2816     - When the clock jumps forward a lot, do not allow the bandwidth
2817       buckets to become negative. Fixes bug 544.
2818     - Fix a memory leak on exit relays; we were leaking a cached_resolve_t
2819       on every successful resolve. Reported by Mike Perry.
2820     - Purge old entries from the "rephist" database and the hidden
2821       service descriptor database even when DirPort is zero.
2822     - Stop thinking that 0.1.2.x directory servers can handle "begin_dir"
2823       requests. Should ease bugs 406 and 419 where 0.1.2.x relays are
2824       crashing or mis-answering these requests.
2825     - When we decide to send a 503 response to a request for servers, do
2826       not then also send the server descriptors: this defeats the whole
2827       purpose. Fixes bug 539.
2828
2829   o Minor bugfixes:
2830     - Changing the ExitPolicyRejectPrivate setting should cause us to
2831       rebuild our server descriptor.
2832     - Fix handling of hex nicknames when answering controller requests for
2833       networkstatus by name, or when deciding whether to warn about
2834       unknown routers in a config option. (Patch from mwenge.)
2835     - Fix a couple of hard-to-trigger autoconf problems that could result
2836       in really weird results on platforms whose sys/types.h files define
2837       nonstandard integer types.
2838     - Don't try to create the datadir when running --verify-config or
2839       --hash-password. Resolves bug 540.
2840     - If we were having problems getting a particular descriptor from the
2841       directory caches, and then we learned about a new descriptor for
2842       that router, we weren't resetting our failure count. Reported
2843       by lodger.
2844     - Although we fixed bug 539 (where servers would send HTTP status 503
2845       responses _and_ send a body too), there are still servers out there
2846       that haven't upgraded. Therefore, make clients parse such bodies
2847       when they receive them.
2848     - Run correctly on systems where rlim_t is larger than unsigned long.
2849       This includes some 64-bit systems.
2850     - Run correctly on platforms (like some versions of OS X 10.5) where
2851       the real limit for number of open files is OPEN_FILES, not rlim_max
2852       from getrlimit(RLIMIT_NOFILES).
2853     - Avoid a spurious free on base64 failure.
2854     - Avoid segfaults on certain complex invocations of
2855       router_get_by_hexdigest().
2856     - Fix rare bug on REDIRECTSTREAM control command when called with no
2857       port set: it could erroneously report an error when none had
2858       happened.
2859
2860
2861 Changes in version 0.2.0.15-alpha - 2007-12-25
2862   Tor 0.2.0.14-alpha and 0.2.0.15-alpha fix a bunch of bugs with the
2863   features added in 0.2.0.13-alpha.
2864
2865   o Major bugfixes:
2866     - Fix several remotely triggerable asserts based on DirPort requests
2867       for a v2 or v3 networkstatus object before we were prepared. This
2868       was particularly bad for 0.2.0.13 and later bridge relays, who
2869       would never have a v2 networkstatus and would thus always crash
2870       when used. Bugfixes on 0.2.0.x.
2871     - Estimate the v3 networkstatus size more accurately, rather than
2872       estimating it at zero bytes and giving it artificially high priority
2873       compared to other directory requests. Bugfix on 0.2.0.x.
2874
2875   o Minor bugfixes:
2876     - Fix configure.in logic for cross-compilation.
2877     - When we load a bridge descriptor from the cache, and it was
2878       previously unreachable, mark it as retriable so we won't just
2879       ignore it. Also, try fetching a new copy immediately. Bugfixes
2880       on 0.2.0.13-alpha.
2881     - The bridge GeoIP stats were counting other relays, for example
2882       self-reachability and authority-reachability tests.
2883
2884   o Minor features:
2885     - Support compilation to target iPhone; patch from cjacker huang.
2886       To build for iPhone, pass the --enable-iphone option to configure.
2887
2888
2889 Changes in version 0.2.0.14-alpha - 2007-12-23
2890   o Major bugfixes:
2891     - Fix a crash on startup if you install Tor 0.2.0.13-alpha fresh
2892       without a datadirectory from a previous Tor install. Reported
2893       by Zax.
2894     - Fix a crash when we fetch a descriptor that turns out to be
2895       unexpected (it used to be in our networkstatus when we started
2896       fetching it, but it isn't in our current networkstatus), and we
2897       aren't using bridges. Bugfix on 0.2.0.x.
2898     - Fix a crash when accessing hidden services: it would work the first
2899       time you use a given introduction point for your service, but
2900       on subsequent requests we'd be using garbage memory. Fixed by
2901       Karsten Loesing. Bugfix on 0.2.0.13-alpha.
2902     - Fix a crash when we load a bridge descriptor from disk but we don't
2903       currently have a Bridge line for it in our torrc. Bugfix on
2904       0.2.0.13-alpha.
2905
2906   o Major features:
2907     - If bridge authorities set BridgePassword, they will serve a
2908       snapshot of known bridge routerstatuses from their DirPort to
2909       anybody who knows that password. Unset by default.
2910
2911   o Minor bugfixes:
2912     - Make the unit tests build again.
2913     - Make "GETINFO/desc-annotations/id/<OR digest>" actually work.
2914     - Make PublishServerDescriptor default to 1, so the default doesn't
2915       have to change as we invent new directory protocol versions.
2916     - Fix test for rlim_t on OSX 10.3: sys/resource.h doesn't want to
2917       be included unless sys/time.h is already included.  Fixes
2918       bug 553.  Bugfix on 0.2.0.x.
2919     - If we receive a general-purpose descriptor and then receive an
2920       identical bridge-purpose descriptor soon after, don't discard
2921       the next one as a duplicate.
2922
2923   o Minor features:
2924     - If BridgeRelay is set to 1, then the default for
2925       PublishServerDescriptor is now "bridge" rather than "v2,v3".
2926     - If the user sets RelayBandwidthRate but doesn't set
2927       RelayBandwidthBurst, then make them equal rather than erroring out.
2928
2929
2930 Changes in version 0.2.0.13-alpha - 2007-12-21
2931   Tor 0.2.0.13-alpha adds a fourth v3 directory authority run by Geoff
2932   Goodell, fixes many more bugs, and adds a lot of infrastructure for
2933   upcoming features.
2934
2935   o New directory authorities:
2936     - Set up lefkada (run by Geoff Goodell) as the fourth v3 directory
2937       authority.
2938
2939   o Major bugfixes:
2940     - Only update guard status (usable / not usable) once we have
2941       enough directory information. This was causing us to always pick
2942       two new guards on startup (bugfix on 0.2.0.9-alpha), and it was
2943       causing us to discard all our guards on startup if we hadn't been
2944       running for a few weeks (bugfix on 0.1.2.x). Fixes bug 448.
2945     - Purge old entries from the "rephist" database and the hidden
2946       service descriptor databases even when DirPort is zero. Bugfix
2947       on 0.1.2.x.
2948     - We were ignoring our RelayBandwidthRate for the first 30 seconds
2949       after opening a circuit -- even a relayed circuit. Bugfix on
2950       0.2.0.3-alpha.
2951     - Stop thinking that 0.1.2.x directory servers can handle "begin_dir"
2952       requests. Should ease bugs 406 and 419 where 0.1.2.x relays are
2953       crashing or mis-answering these types of requests.
2954     - Relays were publishing their server descriptor to v1 and v2
2955       directory authorities, but they didn't try publishing to v3-only
2956       authorities. Fix this; and also stop publishing to v1 authorities.
2957       Bugfix on 0.2.0.x.
2958     - When we were reading router descriptors from cache, we were ignoring
2959       the annotations -- so for example we were reading in bridge-purpose
2960       descriptors as general-purpose descriptors. Bugfix on 0.2.0.8-alpha.
2961     - When we decided to send a 503 response to a request for servers, we
2962       were then also sending the server descriptors: this defeats the
2963       whole purpose. Fixes bug 539; bugfix on 0.1.2.x.
2964
2965   o Major features:
2966     - Bridge relays now behave like clients with respect to time
2967       intervals for downloading new consensus documents -- otherwise they
2968       stand out. Bridge users now wait until the end of the interval,
2969       so their bridge relay will be sure to have a new consensus document.
2970     - Three new config options (AlternateDirAuthority,
2971       AlternateBridgeAuthority, and AlternateHSAuthority) that let the
2972       user selectively replace the default directory authorities by type,
2973       rather than the all-or-nothing replacement that DirServer offers.
2974     - Tor can now be configured to read a GeoIP file from disk in one
2975       of two formats. This can be used by controllers to map IP addresses
2976       to countries. Eventually, it may support exit-by-country.
2977     - When possible, bridge relays remember which countries users
2978       are coming from, and report aggregate information in their
2979       extra-info documents, so that the bridge authorities can learn
2980       where Tor is blocked.
2981     - Bridge directory authorities now do reachability testing on the
2982       bridges they know. They provide router status summaries to the
2983       controller via "getinfo ns/purpose/bridge", and also dump summaries
2984       to a file periodically.
2985     - Stop fetching directory info so aggressively if your DirPort is
2986       on but your ORPort is off; stop fetching v2 dir info entirely.
2987       You can override these choices with the new FetchDirInfoEarly
2988       config option.
2989
2990   o Minor bugfixes:
2991     - The fix in 0.2.0.12-alpha cleared the "hsdir" flag in v3 network
2992       consensus documents when there are too many relays at a single
2993       IP address. Now clear it in v2 network status documents too, and
2994       also clear it in routerinfo_t when the relay is no longer listed
2995       in the relevant networkstatus document.
2996     - Don't crash if we get an unexpected value for the
2997       PublishServerDescriptor config option. Reported by Matt Edman;
2998       bugfix on 0.2.0.9-alpha.
2999     - Our new v2 hidden service descriptor format allows descriptors
3000       that have no introduction points. But Tor crashed when we tried
3001       to build a descriptor with no intro points (and it would have
3002       crashed if we had tried to parse one). Bugfix on 0.2.0.x; patch
3003       by Karsten Loesing.
3004     - Fix building with dmalloc 5.5.2 with glibc.
3005     - Reject uploaded descriptors and extrainfo documents if they're
3006       huge. Otherwise we'll cache them all over the network and it'll
3007       clog everything up. Reported by Aljosha Judmayer.
3008     - Check for presence of s6_addr16 and s6_addr32 fields in in6_addr
3009       via autoconf. Should fix compile on solaris. Bugfix on 0.2.0.x.
3010     - When the DANGEROUS_VERSION controller status event told us we're
3011       running an obsolete version, it used the string "OLD" to describe
3012       it. Yet the "getinfo" interface used the string "OBSOLETE". Now use
3013       "OBSOLETE" in both cases. Bugfix on 0.1.2.x.
3014     - If we can't expand our list of entry guards (e.g. because we're
3015       using bridges or we have StrictEntryNodes set), don't mark relays
3016       down when they fail a directory request. Otherwise we're too quick
3017       to mark all our entry points down. Bugfix on 0.1.2.x.
3018     - Fix handling of hex nicknames when answering controller requests for
3019       networkstatus by name, or when deciding whether to warn about unknown
3020       routers in a config option. Bugfix on 0.1.2.x. (Patch from mwenge.)
3021     - Fix a couple of hard-to-trigger autoconf problems that could result
3022       in really weird results on platforms whose sys/types.h files define
3023       nonstandard integer types. Bugfix on 0.1.2.x.
3024     - Fix compilation with --disable-threads set. Bugfix on 0.2.0.x.
3025     - Don't crash on name lookup when we have no current consensus.  Fixes
3026       bug 538; bugfix on 0.2.0.x.
3027     - Only Tors that want to mirror the v2 directory info should
3028       create the "cached-status" directory in their datadir. (All Tors
3029       used to create it.) Bugfix on 0.2.0.9-alpha.
3030     - Directory authorities should only automatically download Extra Info
3031       documents if they're v1, v2, or v3 authorities. Bugfix on 0.1.2.x.
3032
3033   o Minor features:
3034     - On the USR1 signal, when dmalloc is in use, log the top 10 memory
3035       consumers. (We already do this on HUP.)
3036     - Authorities and caches fetch the v2 networkstatus documents
3037       less often, now that v3 is encouraged.
3038     - Add a new config option BridgeRelay that specifies you want to
3039       be a bridge relay. Right now the only difference is that it makes
3040       you answer begin_dir requests, and it makes you cache dir info,
3041       even if your DirPort isn't on.
3042     - Add "GETINFO/desc-annotations/id/<OR digest>" so controllers can
3043       ask about source, timestamp of arrival, purpose, etc. We need
3044       something like this to help Vidalia not do GeoIP lookups on bridge
3045       addresses.
3046     - Allow multiple HashedControlPassword config lines, to support
3047       multiple controller passwords.
3048     - Authorities now decide whether they're authoritative for a given
3049       router based on the router's purpose.
3050     - New config options AuthDirBadDir and AuthDirListBadDirs for
3051       authorities to mark certain relays as "bad directories" in the
3052       networkstatus documents. Also supports the "!baddir" directive in
3053       the approved-routers file.
3054
3055
3056 Changes in version 0.2.0.12-alpha - 2007-11-16
3057   This twelfth development snapshot fixes some more build problems as
3058   well as a few minor bugs.
3059
3060   o Compile fixes:
3061     - Make it build on OpenBSD again. Patch from tup.
3062     - Substitute BINDIR and LOCALSTATEDIR in scripts. Fixes
3063       package-building for Red Hat, OS X, etc.
3064
3065   o Minor bugfixes (on 0.1.2.x):
3066     - Changing the ExitPolicyRejectPrivate setting should cause us to
3067       rebuild our server descriptor.
3068
3069   o Minor bugfixes (on 0.2.0.x):
3070     - When we're lacking a consensus, don't try to perform rendezvous
3071       operations. Reported by Karsten Loesing.
3072     - Fix a small memory leak whenever we decide against using a
3073       newly picked entry guard. Reported by Mike Perry.
3074     - When authorities detected more than two relays running on the same
3075       IP address, they were clearing all the status flags but forgetting
3076       to clear the "hsdir" flag. So clients were being told that a
3077       given relay was the right choice for a v2 hsdir lookup, yet they
3078       never had its descriptor because it was marked as 'not running'
3079       in the consensus.
3080     - If we're trying to fetch a bridge descriptor and there's no way
3081       the bridge authority could help us (for example, we don't know
3082       a digest, or there is no bridge authority), don't be so eager to
3083       fall back to asking the bridge authority.
3084     - If we're using bridges or have strictentrynodes set, and our
3085       chosen exit is in the same family as all our bridges/entry guards,
3086       then be flexible about families.
3087
3088   o Minor features:
3089     - When we negotiate a v2 link-layer connection (not yet implemented),
3090       accept RELAY_EARLY cells and turn them into RELAY cells if we've
3091       negotiated a v1 connection for their next step. Initial code for
3092       proposal 110.
3093
3094
3095 Changes in version 0.2.0.11-alpha - 2007-11-12
3096   This eleventh development snapshot fixes some build problems with
3097   the previous snapshot. It also includes a more secure-by-default exit
3098   policy for relays, fixes an enormous memory leak for exit relays, and
3099   fixes another bug where servers were falling out of the directory list.
3100
3101   o Security fixes:
3102     - Exit policies now reject connections that are addressed to a
3103       relay's public (external) IP address too, unless
3104       ExitPolicyRejectPrivate is turned off. We do this because too
3105       many relays are running nearby to services that trust them based
3106       on network address. Bugfix on 0.1.2.x.
3107
3108   o Major bugfixes:
3109     - Fix a memory leak on exit relays; we were leaking a cached_resolve_t
3110       on every successful resolve. Reported by Mike Perry; bugfix
3111       on 0.1.2.x.
3112     - On authorities, never downgrade to old router descriptors simply
3113       because they're listed in the consensus. This created a catch-22
3114       where we wouldn't list a new descriptor because there was an
3115       old one in the consensus, and we couldn't get the new one in the
3116       consensus because we wouldn't list it. Possible fix for bug 548.
3117       Also, this might cause bug 543 to appear on authorities; if so,
3118       we'll need a band-aid for that. Bugfix on 0.2.0.9-alpha.
3119
3120   o Packaging fixes on 0.2.0.10-alpha:
3121     - We were including instructions about what to do with the
3122       src/config/fallback-consensus file, but we weren't actually
3123       including it in the tarball. Disable all of that for now.
3124
3125   o Minor features:
3126     - Allow people to say PreferTunnelledDirConns rather than
3127       PreferTunneledDirConns, for those alternate-spellers out there.
3128
3129   o Minor bugfixes:
3130     - Don't reevaluate all the information from our consensus document
3131       just because we've downloaded a v2 networkstatus that we intend
3132       to cache. Fixes bug 545; bugfix on 0.2.0.x.
3133
3134
3135 Changes in version 0.2.0.10-alpha - 2007-11-10
3136   This tenth development snapshot adds a third v3 directory authority
3137   run by Mike Perry, adds most of Karsten Loesing's new hidden service
3138   descriptor format, fixes a bad crash bug and new bridge bugs introduced
3139   in 0.2.0.9-alpha, fixes many bugs with the v3 directory implementation,
3140   fixes some minor memory leaks in previous 0.2.0.x snapshots, and
3141   addresses many more minor issues.
3142
3143   o New directory authorities:
3144     - Set up ides (run by Mike Perry) as the third v3 directory authority.
3145
3146   o Major features:
3147     - Allow tunnelled directory connections to ask for an encrypted
3148       "begin_dir" connection or an anonymized "uses a full Tor circuit"
3149       connection independently. Now we can make anonymized begin_dir
3150       connections for (e.g.) more secure hidden service posting and
3151       fetching.
3152     - More progress on proposal 114: code from Karsten Loesing to
3153       implement new hidden service descriptor format.
3154     - Raise the default BandwidthRate/BandwidthBurst to 5MB/10MB, to
3155       accommodate the growing number of servers that use the default
3156       and are reaching it.
3157     - Directory authorities use a new formula for selecting which nodes
3158       to advertise as Guards: they must be in the top 7/8 in terms of
3159       how long we have known about them, and above the median of those
3160       nodes in terms of weighted fractional uptime.
3161     - Make "not enough dir info yet" warnings describe *why* Tor feels
3162       it doesn't have enough directory info yet.
3163
3164   o Major bugfixes:
3165     - Stop servers from crashing if they set a Family option (or
3166       maybe in other situations too). Bugfix on 0.2.0.9-alpha; reported
3167       by Fabian Keil.
3168     - Make bridge users work again -- the move to v3 directories in
3169       0.2.0.9-alpha had introduced a number of bugs that made bridges
3170       no longer work for clients.
3171     - When the clock jumps forward a lot, do not allow the bandwidth
3172       buckets to become negative. Bugfix on 0.1.2.x; fixes bug 544.
3173
3174   o Major bugfixes (v3 dir, bugfixes on 0.2.0.9-alpha):
3175     - When the consensus lists a router descriptor that we previously were
3176       mirroring, but that we considered non-canonical, reload the
3177       descriptor as canonical. This fixes bug 543 where Tor servers
3178       would start complaining after a few days that they don't have
3179       enough directory information to build a circuit.
3180     - Consider replacing the current consensus when certificates arrive
3181       that make the pending consensus valid. Previously, we were only
3182       considering replacement when the new certs _didn't_ help.
3183     - Fix an assert error on startup if we didn't already have the
3184       consensus and certs cached in our datadirectory: we were caching
3185       the consensus in consensus_waiting_for_certs but then free'ing it
3186       right after.
3187     - Avoid sending a request for "keys/fp" (for which we'll get a 400 Bad
3188       Request) if we need more v3 certs but we've already got pending
3189       requests for all of them.
3190     - Correctly back off from failing certificate downloads. Fixes
3191       bug 546.
3192     - Authorities don't vote on the Running flag if they have been running
3193       for less than 30 minutes themselves. Fixes bug 547, where a newly
3194       started authority would vote that everyone was down.
3195
3196   o New requirements:
3197     - Drop support for OpenSSL version 0.9.6. Just about nobody was using
3198       it, it had no AES, and it hasn't seen any security patches since
3199       2004.
3200
3201   o Minor features:
3202     - Clients now hold circuitless TLS connections open for 1.5 times
3203       MaxCircuitDirtiness (15 minutes), since it is likely that they'll
3204       rebuild a new circuit over them within that timeframe. Previously,
3205       they held them open only for KeepalivePeriod (5 minutes).
3206     - Use "If-Modified-Since" to avoid retrieving consensus
3207       networkstatuses that we already have.
3208     - When we have no consensus, check FallbackNetworkstatusFile (defaults
3209       to $PREFIX/share/tor/fallback-consensus) for a consensus.  This way
3210       we start knowing some directory caches.
3211     - When we receive a consensus from the future, warn about skew.
3212     - Improve skew reporting: try to give the user a better log message
3213       about how skewed they are, and how much this matters.
3214     - When we have a certificate for an authority, believe that
3215       certificate's claims about the authority's IP address.
3216     - New --quiet command-line option to suppress the default console log.
3217       Good in combination with --hash-password.
3218     - Authorities send back an X-Descriptor-Not-New header in response to
3219       an accepted-but-discarded descriptor upload.  Partially implements
3220       fix for bug 535.
3221     - Make the log message for "tls error. breaking." more useful.
3222     - Better log messages about certificate downloads, to attempt to
3223       track down the second incarnation of bug 546.
3224
3225   o Minor features (bridges):
3226     - If bridge users set UpdateBridgesFromAuthority, but the digest
3227       they ask for is a 404 from the bridge authority, they now fall
3228       back to trying the bridge directly.
3229     - Bridges now use begin_dir to publish their server descriptor to
3230       the bridge authority, even when they haven't set TunnelDirConns.
3231
3232   o Minor features (controller):
3233     - When reporting clock skew, and we know that the clock is _at least
3234       as skewed_ as some value, but we don't know the actual value,
3235       report the value as a "minimum skew."
3236
3237   o Utilities:
3238     - Update linux-tor-prio.sh script to allow QoS based on the uid of
3239       the Tor process. Patch from Marco Bonetti with tweaks from Mike
3240       Perry.
3241
3242   o Minor bugfixes:
3243     - Refuse to start if both ORPort and UseBridges are set. Bugfix
3244       on 0.2.0.x, suggested by Matt Edman.
3245     - Don't stop fetching descriptors when FetchUselessDescriptors is
3246       set, even if we stop asking for circuits. Bugfix on 0.1.2.x;
3247       reported by tup and ioerror.
3248     - Better log message on vote from unknown authority.
3249     - Don't log "Launching 0 request for 0 router" message.
3250
3251   o Minor bugfixes (memory leaks):
3252     - Stop leaking memory every time we parse a v3 certificate. Bugfix
3253       on 0.2.0.1-alpha.
3254     - Stop leaking memory every time we load a v3 certificate. Bugfix
3255       on 0.2.0.1-alpha. Fixes bug 536.
3256     - Stop leaking a cached networkstatus on exit.  Bugfix on
3257       0.2.0.3-alpha.
3258     - Stop leaking voter information every time we free a consensus.
3259       Bugfix on 0.2.0.3-alpha.
3260     - Stop leaking signed data every time we check a voter signature.
3261       Bugfix on 0.2.0.3-alpha.
3262     - Stop leaking a signature every time we fail to parse a consensus or
3263       a vote.  Bugfix on 0.2.0.3-alpha.
3264     - Stop leaking v2_download_status_map on shutdown.  Bugfix on
3265       0.2.0.9-alpha.
3266     - Stop leaking conn->nickname every time we make a connection to a
3267       Tor relay without knowing its expected identity digest (e.g. when
3268       using bridges). Bugfix on 0.2.0.3-alpha.
3269
3270   - Minor bugfixes (portability):
3271     - Run correctly on platforms where rlim_t is larger than unsigned
3272       long, and/or where the real limit for number of open files is
3273       OPEN_FILES, not rlim_max from getrlimit(RLIMIT_NOFILES). In
3274       particular, these may be needed for OS X 10.5.
3275
3276
3277 Changes in version 0.1.2.18 - 2007-10-28
3278   Tor 0.1.2.18 fixes many problems including crash bugs, problems with
3279   hidden service introduction that were causing huge delays, and a big
3280   bug that was causing some servers to disappear from the network status
3281   lists for a few hours each day.
3282
3283   o Major bugfixes (crashes):
3284     - If a connection is shut down abruptly because of something that
3285       happened inside connection_flushed_some(), do not call
3286       connection_finished_flushing(). Should fix bug 451:
3287       "connection_stop_writing: Assertion conn->write_event failed"
3288       Bugfix on 0.1.2.7-alpha.
3289     - Fix possible segfaults in functions called from
3290       rend_process_relay_cell().
3291
3292   o Major bugfixes (hidden services):
3293     - Hidden services were choosing introduction points uniquely by
3294       hexdigest, but when constructing the hidden service descriptor
3295       they merely wrote the (potentially ambiguous) nickname.
3296     - Clients now use the v2 intro format for hidden service
3297       connections: they specify their chosen rendezvous point by identity
3298       digest rather than by (potentially ambiguous) nickname. These
3299       changes could speed up hidden service connections dramatically.
3300
3301   o Major bugfixes (other):
3302     - Stop publishing a new server descriptor just because we get a
3303       HUP signal. This led (in a roundabout way) to some servers getting
3304       dropped from the networkstatus lists for a few hours each day.
3305     - When looking for a circuit to cannibalize, consider family as well
3306       as identity. Fixes bug 438. Bugfix on 0.1.0.x (which introduced
3307       circuit cannibalization).
3308     - When a router wasn't listed in a new networkstatus, we were leaving
3309       the flags for that router alone -- meaning it remained Named,
3310       Running, etc -- even though absence from the networkstatus means
3311       that it shouldn't be considered to exist at all anymore. Now we
3312       clear all the flags for routers that fall out of the networkstatus
3313       consensus. Fixes bug 529.
3314
3315   o Minor bugfixes:
3316     - Don't try to access (or alter) the state file when running
3317       --list-fingerprint or --verify-config or --hash-password. Resolves
3318       bug 499.
3319     - When generating information telling us how to extend to a given
3320       router, do not try to include the nickname if it is
3321       absent. Resolves bug 467.
3322     - Fix a user-triggerable segfault in expand_filename(). (There isn't
3323       a way to trigger this remotely.)
3324     - When sending a status event to the controller telling it that an
3325       OR address is reachable, set the port correctly. (Previously we
3326       were reporting the dir port.)
3327     - Fix a minor memory leak whenever a controller sends the PROTOCOLINFO
3328       command. Bugfix on 0.1.2.17.
3329     - When loading bandwidth history, do not believe any information in
3330       the future. Fixes bug 434.
3331     - When loading entry guard information, do not believe any information
3332       in the future.
3333     - When we have our clock set far in the future and generate an
3334       onion key, then re-set our clock to be correct, we should not stop
3335       the onion key from getting rotated.
3336     - On some platforms, accept() can return a broken address. Detect
3337       this more quietly, and deal accordingly. Fixes bug 483.
3338     - It's not actually an error to find a non-pending entry in the DNS
3339       cache when canceling a pending resolve. Don't log unless stuff
3340       is fishy. Resolves bug 463.
3341     - Don't reset trusted dir server list when we set a configuration
3342       option. Patch from Robert Hogan.
3343     - Don't try to create the datadir when running --verify-config or
3344       --hash-password. Resolves bug 540.
3345
3346
3347 Changes in version 0.2.0.9-alpha - 2007-10-24
3348   This ninth development snapshot switches clients to the new v3 directory
3349   system; allows servers to be listed in the network status even when they
3350   have the same nickname as a registered server; and fixes many other
3351   bugs including a big one that was causing some servers to disappear
3352   from the network status lists for a few hours each day.
3353
3354   o Major features (directory system):
3355     - Clients now download v3 consensus networkstatus documents instead
3356       of v2 networkstatus documents. Clients and caches now base their
3357       opinions about routers on these consensus documents. Clients only
3358       download router descriptors listed in the consensus.
3359     - Authorities now list servers who have the same nickname as
3360       a different named server, but list them with a new flag,
3361       "Unnamed". Now we can list servers that happen to pick the same
3362       nickname as a server that registered two years ago and then
3363       disappeared. Partially implements proposal 122.
3364     - If the consensus lists a router as "Unnamed", the name is assigned
3365       to a different router: do not identify the router by that name.
3366       Partially implements proposal 122.
3367     - Authorities can now come to a consensus on which method to use to
3368       compute the consensus. This gives us forward compatibility.
3369
3370   o Major bugfixes:
3371     - Stop publishing a new server descriptor just because we HUP or
3372       when we find our DirPort to be reachable but won't actually publish
3373       it. New descriptors without any real changes are dropped by the
3374       authorities, and can screw up our "publish every 18 hours" schedule.
3375       Bugfix on 0.1.2.x.
3376     - When a router wasn't listed in a new networkstatus, we were leaving
3377       the flags for that router alone -- meaning it remained Named,
3378       Running, etc -- even though absence from the networkstatus means
3379       that it shouldn't be considered to exist at all anymore. Now we
3380       clear all the flags for routers that fall out of the networkstatus
3381       consensus. Fixes bug 529; bugfix on 0.1.2.x.
3382     - Fix awful behavior in DownloadExtraInfo option where we'd fetch
3383       extrainfo documents and then discard them immediately for not
3384       matching the latest router. Bugfix on 0.2.0.1-alpha.
3385
3386   o Minor features (v3 directory protocol):
3387     - Allow tor-gencert to generate a new certificate without replacing
3388       the signing key.
3389     - Allow certificates to include an address.
3390     - When we change our directory-cache settings, reschedule all voting
3391       and download operations.
3392     - Reattempt certificate downloads immediately on failure, as long as
3393       we haven't failed a threshold number of times yet.
3394     - Delay retrying consensus downloads while we're downloading
3395       certificates to verify the one we just got.  Also, count getting a
3396       consensus that we already have (or one that isn't valid) as a failure,
3397       and count failing to get the certificates after 20 minutes as a
3398       failure.
3399     - Build circuits and download descriptors even if our consensus is a
3400       little expired. (This feature will go away once authorities are
3401       more reliable.)
3402
3403   o Minor features (router descriptor cache):
3404     - If we find a cached-routers file that's been sitting around for more
3405       than 28 days unmodified, then most likely it's a leftover from
3406       when we upgraded to 0.2.0.8-alpha. Remove it. It has no good
3407       routers anyway.
3408     - When we (as a cache) download a descriptor because it was listed
3409       in a consensus, remember when the consensus was supposed to expire,
3410       and don't expire the descriptor until then.
3411
3412   o Minor features (performance):
3413     - Call routerlist_remove_old_routers() much less often. This should
3414       speed startup, especially on directory caches.
3415     - Don't try to launch new descriptor downloads quite so often when we
3416       already have enough directory information to build circuits.
3417     - Base64 decoding was actually showing up on our profile when parsing
3418       the initial descriptor file; switch to an in-process all-at-once
3419       implementation that's about 3.5x times faster than calling out to
3420       OpenSSL.
3421
3422   o Minor features (compilation):
3423     - Detect non-ASCII platforms (if any still exist) and refuse to
3424       build there: some of our code assumes that 'A' is 65 and so on.
3425
3426   o Minor bugfixes (v3 directory authorities, bugfixes on 0.2.0.x):
3427     - Make the "next period" votes into "current period" votes immediately
3428       after publishing the consensus; avoid a heisenbug that made them
3429       stick around indefinitely.
3430     - When we discard a vote as a duplicate, do not report this as
3431       an error.
3432     - Treat missing v3 keys or certificates as an error when running as a
3433       v3 directory authority.
3434     - When we're configured to be a v3 authority, but we're only listed
3435       as a non-v3 authority in our DirServer line for ourself, correct
3436       the listing.
3437     - If an authority doesn't have a qualified hostname, just put
3438       its address in the vote. This fixes the problem where we referred to
3439       "moria on moria:9031."
3440     - Distinguish between detached signatures for the wrong period, and
3441       detached signatures for a divergent vote.
3442     - Fix a small memory leak when computing a consensus.
3443     - When there's no concensus, we were forming a vote every 30
3444       minutes, but writing the "valid-after" line in our vote based
3445       on our configured V3AuthVotingInterval: so unless the intervals
3446       matched up, we immediately rejected our own vote because it didn't
3447       start at the voting interval that caused us to construct a vote.
3448
3449   o Minor bugfixes (v3 directory protocol, bugfixes on 0.2.0.x):
3450     - Delete unverified-consensus when the real consensus is set.
3451     - Consider retrying a consensus networkstatus fetch immediately
3452       after one fails: don't wait 60 seconds to notice.
3453     - When fetching a consensus as a cache, wait until a newer consensus
3454       should exist before trying to replace the current one.
3455     - Use a more forgiving schedule for retrying failed consensus
3456       downloads than for other types.
3457
3458   o Minor bugfixes (other directory issues):
3459     - Correct the implementation of "download votes by digest." Bugfix on
3460       0.2.0.8-alpha.
3461     - Authorities no longer send back "400 you're unreachable please fix
3462       it" errors to Tor servers that aren't online all the time. We're
3463       supposed to tolerate these servers now. Bugfix on 0.1.2.x.
3464
3465   o Minor bugfixes (controller):
3466     - Don't reset trusted dir server list when we set a configuration
3467       option. Patch from Robert Hogan; bugfix on 0.1.2.x.
3468     - Respond to INT and TERM SIGNAL commands before we execute the
3469       signal, in case the signal shuts us down. We had a patch in
3470       0.1.2.1-alpha that tried to do this by queueing the response on
3471       the connection's buffer before shutting down, but that really
3472       isn't the same thing at all. Bug located by Matt Edman.
3473
3474   o Minor bugfixes (misc):
3475     - Correctly check for bad options to the "PublishServerDescriptor"
3476       config option. Bugfix on 0.2.0.1-alpha; reported by Matt Edman.
3477     - Stop leaking memory on failing case of base32_decode, and make
3478       it accept upper-case letters. Bugfixes on 0.2.0.7-alpha.
3479     - Don't try to download extrainfo documents when we're trying to
3480       fetch enough directory info to build a circuit: having enough
3481       info should get priority. Bugfix on 0.2.0.x.
3482     - Don't complain that "your server has not managed to confirm that its
3483       ports are reachable" if we haven't been able to build any circuits
3484       yet. Bug found by spending four hours without a v3 consensus. Bugfix
3485       on 0.1.2.x.
3486     - Detect the reason for failing to mmap a descriptor file we just
3487       wrote, and give a more useful log message.  Fixes bug 533. Bugfix
3488       on 0.1.2.x.
3489
3490   o Code simplifications and refactoring:
3491     - Remove support for the old bw_accounting file: we've been storing
3492       bandwidth accounting information in the state file since
3493       0.1.2.5-alpha.  This may result in bandwidth accounting errors
3494       if you try to upgrade from 0.1.1.x or earlier, or if you try to
3495       downgrade to 0.1.1.x or earlier.
3496     - New convenience code to locate a file within the DataDirectory.
3497     - Move non-authority functionality out of dirvote.c.
3498     - Refactor the arguments for router_pick_{directory_|trusteddir}server
3499       so that they all take the same named flags.
3500
3501   o Utilities
3502     - Include the "tor-ctrl.sh" bash script by Stefan Behte to provide
3503       Unix users an easy way to script their Tor process (e.g. by
3504       adjusting bandwidth based on the time of the day).
3505
3506
3507 Changes in version 0.2.0.8-alpha - 2007-10-12
3508   This eighth development snapshot fixes a crash bug that's been bothering
3509   us since February 2007, lets bridge authorities store a list of bridge
3510   descriptors they've seen, gets v3 directory voting closer to working,
3511   starts caching v3 directory consensus documents on directory mirrors,
3512   and fixes a variety of smaller issues including some minor memory leaks.
3513
3514   o Major features (router descriptor cache):
3515     - Store routers in a file called cached-descriptors instead of in
3516       cached-routers. Initialize cached-descriptors from cached-routers
3517       if the old format is around. The new format allows us to store
3518       annotations along with descriptors.
3519     - Use annotations to record the time we received each descriptor, its
3520       source, and its purpose.
3521     - Disable the SETROUTERPURPOSE controller command: it is now
3522       obsolete.
3523     - Controllers should now specify cache=no or cache=yes when using
3524       the +POSTDESCRIPTOR command.
3525     - Bridge authorities now write bridge descriptors to disk, meaning
3526       we can export them to other programs and begin distributing them
3527       to blocked users.
3528
3529   o Major features (directory authorities):
3530     - When a v3 authority is missing votes or signatures, it now tries
3531       to fetch them.
3532     - Directory authorities track weighted fractional uptime as well as
3533       weighted mean-time-between failures.  WFU is suitable for deciding
3534       whether a node is "usually up", while MTBF is suitable for deciding
3535       whether a node is "likely to stay up."  We need both, because
3536       "usually up" is a good requirement for guards, while "likely to
3537       stay up" is a good requirement for long-lived connections.
3538
3539   o Major features (v3 directory system):
3540     - Caches now download v3 network status documents as needed,
3541       and download the descriptors listed in them.
3542     - All hosts now attempt to download and keep fresh v3 authority
3543       certificates, and re-attempt after failures.
3544     - More internal-consistency checks for vote parsing.
3545
3546   o Major bugfixes (crashes):
3547     - If a connection is shut down abruptly because of something that
3548       happened inside connection_flushed_some(), do not call
3549       connection_finished_flushing(). Should fix bug 451. Bugfix on
3550       0.1.2.7-alpha.
3551
3552   o Major bugfixes (performance):
3553     - Fix really bad O(n^2) performance when parsing a long list of
3554       routers: Instead of searching the entire list for an "extra-info "
3555       string which usually wasn't there, once for every routerinfo
3556       we read, just scan lines forward until we find one we like.
3557       Bugfix on 0.2.0.1.
3558     - When we add data to a write buffer in response to the data on that
3559       write buffer getting low because of a flush, do not consider the
3560       newly added data as a candidate for immediate flushing, but rather
3561       make it wait until the next round of writing. Otherwise, we flush
3562       and refill recursively, and a single greedy TLS connection can
3563       eat all of our bandwidth. Bugfix on 0.1.2.7-alpha.
3564
3565   o Minor features (v3 authority system):
3566     - Add more ways for tools to download the votes that lead to the
3567       current consensus.
3568     - Send a 503 when low on bandwidth and a vote, consensus, or
3569       certificate is requested.
3570     - If-modified-since is now implemented properly for all kinds of
3571       certificate requests.
3572
3573   o Minor bugfixes (network statuses):
3574     - Tweak the implementation of proposal 109 slightly: allow at most
3575       two Tor servers on the same IP address, except if it's the location
3576       of a directory authority, in which case allow five. Bugfix on
3577       0.2.0.3-alpha.
3578
3579   o Minor bugfixes (controller):
3580     - When sending a status event to the controller telling it that an
3581       OR address is reachable, set the port correctly. (Previously we
3582       were reporting the dir port.) Bugfix on 0.1.2.x.
3583
3584   o Minor bugfixes (v3 directory system):
3585     - Fix logic to look up a cert by its signing key digest. Bugfix on
3586       0.2.0.7-alpha.
3587     - Only change the reply to a vote to "OK" if it's not already
3588       set. This gets rid of annoying "400 OK" log messages, which may
3589       have been masking some deeper issue. Bugfix on 0.2.0.7-alpha.
3590     - When we get a valid consensus, recompute the voting schedule.
3591     - Base the valid-after time of a vote on the consensus voting
3592       schedule, not on our preferred schedule.
3593     - Make the return values and messages from signature uploads and
3594       downloads more sensible.
3595     - Fix a memory leak when serving votes and consensus documents, and
3596       another when serving certificates.
3597
3598   o Minor bugfixes (performance):
3599     - Use a slightly simpler string hashing algorithm (copying Python's
3600       instead of Java's) and optimize our digest hashing algorithm to take
3601       advantage of 64-bit platforms and to remove some possibly-costly
3602       voodoo.
3603     - Fix a minor memory leak whenever we parse guards from our state
3604       file. Bugfix on 0.2.0.7-alpha.
3605     - Fix a minor memory leak whenever we write out a file. Bugfix on
3606       0.2.0.7-alpha.
3607     - Fix a minor memory leak whenever a controller sends the PROTOCOLINFO
3608       command. Bugfix on 0.2.0.5-alpha.
3609
3610   o Minor bugfixes (portability):
3611     - On some platforms, accept() can return a broken address. Detect
3612       this more quietly, and deal accordingly. Fixes bug 483.
3613     - Stop calling tor_strlower() on uninitialized memory in some cases.
3614       Bugfix in 0.2.0.7-alpha.
3615
3616   o Minor bugfixes (usability):
3617     - Treat some 403 responses from directory servers as INFO rather than
3618       WARN-severity events.
3619     - It's not actually an error to find a non-pending entry in the DNS
3620       cache when canceling a pending resolve. Don't log unless stuff is
3621       fishy. Resolves bug 463.
3622
3623   o Minor bugfixes (anonymity):
3624     - Never report that we've used more bandwidth than we're willing to
3625       relay: it leaks how much non-relay traffic we're using. Resolves
3626       bug 516.
3627     - When looking for a circuit to cannibalize, consider family as well
3628       as identity. Fixes bug 438. Bugfix on 0.1.0.x (which introduced
3629       circuit cannibalization).
3630
3631   o Code simplifications and refactoring:
3632     - Make a bunch of functions static. Remove some dead code.
3633     - Pull out about a third of the really big routerlist.c; put it in a
3634       new module, networkstatus.c.
3635     - Merge the extra fields in local_routerstatus_t back into
3636       routerstatus_t: we used to need one routerstatus_t for each
3637       authority's opinion, plus a local_routerstatus_t for the locally
3638       computed consensus opinion. To save space, we put the locally
3639       modified fields into local_routerstatus_t, and only the common
3640       stuff into routerstatus_t. But once v3 directories are in use,
3641       clients and caches will no longer need to hold authority opinions;
3642       thus, the rationale for keeping the types separate is now gone.
3643     - Make the code used to reschedule and reattempt downloads more
3644       uniform.
3645     - Turn all 'Are we a directory server/mirror?' logic into a call to
3646       dirserver_mode().
3647     - Remove the code to generate the oldest (v1) directory format.
3648       The code has been disabled since 0.2.0.5-alpha.
3649
3650
3651 Changes in version 0.2.0.7-alpha - 2007-09-21
3652   This seventh development snapshot makes bridges work again, makes bridge
3653   authorities work for the first time, fixes two huge performance flaws
3654   in hidden services, and fixes a variety of minor issues.
3655
3656   o New directory authorities:
3657     - Set up moria1 and tor26 as the first v3 directory authorities. See
3658       doc/spec/dir-spec.txt for details on the new directory design.
3659
3660   o Major bugfixes (crashes):
3661     - Fix possible segfaults in functions called from
3662       rend_process_relay_cell(). Bugfix on 0.1.2.x.
3663
3664   o Major bugfixes (bridges):
3665     - Fix a bug that made servers send a "404 Not found" in response to
3666       attempts to fetch their server descriptor. This caused Tor servers
3667       to take many minutes to establish reachability for their DirPort,
3668       and it totally crippled bridges. Bugfix on 0.2.0.5-alpha.
3669     - Make "UpdateBridgesFromAuthority" torrc option work: when bridge
3670       users configure that and specify a bridge with an identity
3671       fingerprint, now they will lookup the bridge descriptor at the
3672       default bridge authority via a one-hop tunnel, but once circuits
3673       are established they will switch to a three-hop tunnel for later
3674       connections to the bridge authority. Bugfix in 0.2.0.3-alpha.
3675
3676   o Major bugfixes (hidden services):
3677     - Hidden services were choosing introduction points uniquely by
3678       hexdigest, but when constructing the hidden service descriptor
3679       they merely wrote the (potentially ambiguous) nickname.
3680     - Clients now use the v2 intro format for hidden service
3681       connections: they specify their chosen rendezvous point by identity
3682       digest rather than by (potentially ambiguous) nickname. Both
3683       are bugfixes on 0.1.2.x, and they could speed up hidden service
3684       connections dramatically. Thanks to Karsten Loesing.
3685
3686   o Minor features (security):
3687     - As a client, do not believe any server that tells us that an
3688       address maps to an internal address space.
3689     - Make it possible to enable HashedControlPassword and
3690       CookieAuthentication at the same time.
3691
3692   o Minor features (guard nodes):
3693     - Tag every guard node in our state file with the version that
3694       we believe added it, or with our own version if we add it. This way,
3695       if a user temporarily runs an old version of Tor and then switches
3696       back to a new one, she doesn't automatically lose her guards.
3697
3698   o Minor features (speed):
3699     - When implementing AES counter mode, update only the portions of the
3700       counter buffer that need to change, and don't keep separate
3701       network-order and host-order counters when they are the same (i.e.,
3702       on big-endian hosts.)
3703
3704   o Minor features (controller):
3705     - Accept LF instead of CRLF on controller, since some software has a
3706       hard time generating real Internet newlines.
3707     - Add GETINFO values for the server status events
3708       "REACHABILITY_SUCCEEDED" and "GOOD_SERVER_DESCRIPTOR". Patch from
3709       Robert Hogan.
3710
3711   o Removed features:
3712      - Routers no longer include bandwidth-history lines in their
3713        descriptors; this information is already available in extra-info
3714        documents, and including it in router descriptors took up 60%
3715        (!) of compressed router descriptor downloads. Completes
3716        implementation of proposal 104.
3717      - Remove the contrib scripts ExerciseServer.py, PathDemo.py,
3718        and TorControl.py, as they use the old v0 controller protocol,
3719        and are obsoleted by TorFlow anyway.
3720      - Drop support for v1 rendezvous descriptors, since we never used
3721        them anyway, and the code has probably rotted by now. Based on
3722        patch from Karsten Loesing.
3723      - On OSX, stop warning the user that kqueue support in libevent is
3724       "experimental", since it seems to have worked fine for ages.
3725
3726   o Minor bugfixes:
3727     - When generating information telling us how to extend to a given
3728       router, do not try to include the nickname if it is absent. Fixes
3729       bug 467. Bugfix on 0.2.0.3-alpha.
3730     - Fix a user-triggerable (but not remotely-triggerable) segfault
3731       in expand_filename(). Bugfix on 0.1.2.x.
3732     - Fix a memory leak when freeing incomplete requests from DNSPort.
3733       Found by Niels Provos with valgrind. Bugfix on 0.2.0.1-alpha.
3734     - Don't try to access (or alter) the state file when running
3735       --list-fingerprint or --verify-config or --hash-password. (Resolves
3736       bug 499.) Bugfix on 0.1.2.x.
3737     - Servers used to decline to publish their DirPort if their
3738       BandwidthRate, RelayBandwidthRate, or MaxAdvertisedBandwidth
3739       were below a threshold. Now they only look at BandwidthRate and
3740       RelayBandwidthRate. Bugfix on 0.1.2.x.
3741     - Remove an optimization in the AES counter-mode code that assumed
3742       that the counter never exceeded 2^68. When the counter can be set
3743       arbitrarily as an IV (as it is by Karsten's new hidden services
3744       code), this assumption no longer holds. Bugfix on 0.1.2.x.
3745     - Resume listing "AUTHORITY" flag for authorities in network status.
3746       Bugfix on 0.2.0.3-alpha; reported by Alex de Joode.
3747
3748   o Code simplifications and refactoring:
3749     - Revamp file-writing logic so we don't need to have the entire
3750       contents of a file in memory at once before we write to disk. Tor,
3751       meet stdio.
3752     - Turn "descriptor store" into a full-fledged type.
3753     - Move all NT services code into a separate source file.
3754     - Unify all code that computes medians, percentile elements, etc.
3755     - Get rid of a needless malloc when parsing address policies.
3756
3757
3758 Changes in version 0.1.2.17 - 2007-08-30
3759   Tor 0.1.2.17 features a new Vidalia version in the Windows and OS
3760   X bundles. Vidalia 0.0.14 makes authentication required for the
3761   ControlPort in the default configuration, which addresses important
3762   security risks. Everybody who uses Vidalia (or another controller)
3763   should upgrade.
3764
3765   In addition, this Tor update fixes major load balancing problems with
3766   path selection, which should speed things up a lot once many people
3767   have upgraded.
3768
3769   o Major bugfixes (security):
3770     - We removed support for the old (v0) control protocol. It has been
3771       deprecated since Tor 0.1.1.1-alpha, and keeping it secure has
3772       become more of a headache than it's worth.
3773
3774   o Major bugfixes (load balancing):
3775     - When choosing nodes for non-guard positions, weight guards
3776       proportionally less, since they already have enough load. Patch
3777       from Mike Perry.
3778     - Raise the "max believable bandwidth" from 1.5MB/s to 10MB/s. This
3779       will allow fast Tor servers to get more attention.
3780     - When we're upgrading from an old Tor version, forget our current
3781       guards and pick new ones according to the new weightings. These
3782       three load balancing patches could raise effective network capacity
3783       by a factor of four. Thanks to Mike Perry for measurements.
3784
3785   o Major bugfixes (stream expiration):
3786     - Expire not-yet-successful application streams in all cases if
3787       they've been around longer than SocksTimeout. Right now there are
3788       some cases where the stream will live forever, demanding a new
3789       circuit every 15 seconds. Fixes bug 454; reported by lodger.
3790
3791   o Minor features (controller):
3792     - Add a PROTOCOLINFO controller command. Like AUTHENTICATE, it
3793       is valid before any authentication has been received. It tells
3794       a controller what kind of authentication is expected, and what
3795       protocol is spoken. Implements proposal 119.
3796
3797   o Minor bugfixes (performance):
3798     - Save on most routerlist_assert_ok() calls in routerlist.c, thus
3799       greatly speeding up loading cached-routers from disk on startup.
3800     - Disable sentinel-based debugging for buffer code: we squashed all
3801       the bugs that this was supposed to detect a long time ago, and now
3802       its only effect is to change our buffer sizes from nice powers of
3803       two (which platform mallocs tend to like) to values slightly over
3804       powers of two (which make some platform mallocs sad).
3805
3806   o Minor bugfixes (misc):
3807     - If exit bandwidth ever exceeds one third of total bandwidth, then
3808       use the correct formula to weight exit nodes when choosing paths.
3809       Based on patch from Mike Perry.
3810     - Choose perfectly fairly among routers when choosing by bandwidth and
3811       weighting by fraction of bandwidth provided by exits. Previously, we
3812       would choose with only approximate fairness, and correct ourselves
3813       if we ran off the end of the list.
3814     - If we require CookieAuthentication but we fail to write the
3815       cookie file, we would warn but not exit, and end up in a state
3816       where no controller could authenticate. Now we exit.
3817     - If we require CookieAuthentication, stop generating a new cookie
3818       every time we change any piece of our config.
3819     - Refuse to start with certain directory authority keys, and
3820       encourage people using them to stop.
3821     - Terminate multi-line control events properly. Original patch
3822       from tup.
3823     - Fix a minor memory leak when we fail to find enough suitable
3824       servers to choose a circuit.
3825     - Stop leaking part of the descriptor when we run into a particularly
3826       unparseable piece of it.
3827
3828
3829 Changes in version 0.2.0.6-alpha - 2007-08-26
3830   This sixth development snapshot features a new Vidalia version in the
3831   Windows and OS X bundles. Vidalia 0.0.14 makes authentication required for
3832   the ControlPort in the default configuration, which addresses important
3833   security risks.
3834
3835   In addition, this snapshot fixes major load balancing problems
3836   with path selection, which should speed things up a lot once many
3837   people have upgraded. The directory authorities also use a new
3838   mean-time-between-failure approach to tracking which servers are stable,
3839   rather than just looking at the most recent uptime.
3840
3841   o New directory authorities:
3842     - Set up Tonga as the default bridge directory authority.
3843
3844   o Major features:
3845     - Directory authorities now track servers by weighted
3846       mean-times-between-failures. When we have 4 or more days of data,
3847       use measured MTBF rather than declared uptime to decide whether
3848       to call a router Stable. Implements proposal 108.
3849
3850   o Major bugfixes (load balancing):
3851     - When choosing nodes for non-guard positions, weight guards
3852       proportionally less, since they already have enough load. Patch
3853       from Mike Perry.
3854     - Raise the "max believable bandwidth" from 1.5MB/s to 10MB/s. This
3855       will allow fast Tor servers to get more attention.
3856     - When we're upgrading from an old Tor version, forget our current
3857       guards and pick new ones according to the new weightings. These
3858       three load balancing patches could raise effective network capacity
3859       by a factor of four. Thanks to Mike Perry for measurements.
3860
3861   o Major bugfixes (descriptor parsing):
3862     - Handle unexpected whitespace better in malformed descriptors. Bug
3863       found using Benedikt Boss's new Tor fuzzer! Bugfix on 0.2.0.x.
3864
3865   o Minor features:
3866     - There is now an ugly, temporary "desc/all-recent-extrainfo-hack"
3867       GETINFO for Torstat to use until it can switch to using extrainfos.
3868     - Optionally (if built with -DEXPORTMALLINFO) export the output
3869       of mallinfo via http, as tor/mallinfo.txt. Only accessible
3870       from localhost.
3871
3872   o Minor bugfixes:
3873     - Do not intermix bridge routers with controller-added
3874       routers. (Bugfix on 0.2.0.x)
3875     - Do not fail with an assert when accept() returns an unexpected
3876       address family. Addresses but does not wholly fix bug 483. (Bugfix
3877       on 0.2.0.x)
3878     - Let directory authorities startup even when they can't generate
3879       a descriptor immediately, e.g. because they don't know their
3880       address.
3881     - Stop putting the authentication cookie in a file called "0"
3882       in your working directory if you don't specify anything for the
3883       new CookieAuthFile option. Reported by Matt Edman.
3884     - Make it possible to read the PROTOCOLINFO response in a way that
3885       conforms to our control-spec. Reported by Matt Edman.
3886     - Fix a minor memory leak when we fail to find enough suitable
3887       servers to choose a circuit. Bugfix on 0.1.2.x.
3888     - Stop leaking part of the descriptor when we run into a particularly
3889       unparseable piece of it. Bugfix on 0.1.2.x.
3890     - Unmap the extrainfo cache file on exit.
3891
3892
3893 Changes in version 0.2.0.5-alpha - 2007-08-19
3894   This fifth development snapshot fixes compilation on Windows again;
3895   fixes an obnoxious client-side bug that slowed things down and put
3896   extra load on the network; gets us closer to using the v3 directory
3897   voting scheme; makes it easier for Tor controllers to use cookie-based
3898   authentication; and fixes a variety of other bugs.
3899
3900   o Removed features:
3901     - Version 1 directories are no longer generated in full. Instead,
3902       authorities generate and serve "stub" v1 directories that list
3903       no servers. This will stop Tor versions 0.1.0.x and earlier from
3904       working, but (for security reasons) nobody should be running those
3905       versions anyway.
3906
3907   o Major bugfixes (compilation, 0.2.0.x):
3908     - Try to fix Win32 compilation again: improve checking for IPv6 types.
3909     - Try to fix MSVC compilation: build correctly on platforms that do
3910       not define s6_addr16 or s6_addr32.
3911     - Fix compile on platforms without getaddrinfo: bug found by Li-Hui
3912       Zhou.
3913
3914   o Major bugfixes (stream expiration):
3915     - Expire not-yet-successful application streams in all cases if
3916       they've been around longer than SocksTimeout. Right now there are
3917       some cases where the stream will live forever, demanding a new
3918       circuit every 15 seconds. Bugfix on 0.1.2.7-alpha; fixes bug 454;
3919       reported by lodger.
3920
3921   o Minor features (directory servers):
3922     - When somebody requests a list of statuses or servers, and we have
3923       none of those, return a 404 rather than an empty 200.
3924
3925   o Minor features (directory voting):
3926     - Store v3 consensus status consensuses on disk, and reload them
3927       on startup.
3928
3929   o Minor features (security):
3930     - Warn about unsafe ControlPort configurations.
3931     - Refuse to start with certain directory authority keys, and
3932       encourage people using them to stop.
3933
3934   o Minor features (controller):
3935     - Add a PROTOCOLINFO controller command. Like AUTHENTICATE, it
3936       is valid before any authentication has been received. It tells
3937       a controller what kind of authentication is expected, and what
3938       protocol is spoken. Implements proposal 119.
3939     - New config option CookieAuthFile to choose a new location for the
3940       cookie authentication file, and config option
3941       CookieAuthFileGroupReadable to make it group-readable.
3942
3943   o Minor features (unit testing):
3944     - Add command-line arguments to unit-test executable so that we can
3945       invoke any chosen test from the command line rather than having
3946       to run the whole test suite at once; and so that we can turn on
3947       logging for the unit tests.
3948
3949   o Minor bugfixes (on 0.1.2.x):
3950     - If we require CookieAuthentication but we fail to write the
3951       cookie file, we would warn but not exit, and end up in a state
3952       where no controller could authenticate. Now we exit.
3953     - If we require CookieAuthentication, stop generating a new cookie
3954       every time we change any piece of our config.
3955     - When loading bandwidth history, do not believe any information in
3956       the future.  Fixes bug 434.
3957     - When loading entry guard information, do not believe any information
3958       in the future.
3959     - When we have our clock set far in the future and generate an
3960       onion key, then re-set our clock to be correct, we should not stop
3961       the onion key from getting rotated.
3962     - Clean up torrc sample config file.
3963     - Do not automatically run configure from autogen.sh. This
3964       non-standard behavior tended to annoy people who have built other
3965       programs.
3966
3967   o Minor bugfixes (on 0.2.0.x):
3968     - Fix a bug with AutomapHostsOnResolve that would always cause
3969       the second request to fail. Bug reported by Kate. Bugfix on
3970       0.2.0.3-alpha.
3971     - Fix a bug in ADDRMAP controller replies that would sometimes
3972       try to print a NULL. Patch from tup.
3973     - Read v3 directory authority keys from the right location.
3974     - Numerous bugfixes to directory voting code.
3975
3976
3977 Changes in version 0.1.2.16 - 2007-08-01
3978   Tor 0.1.2.16 fixes a critical security vulnerability that allows a
3979   remote attacker in certain situations to rewrite the user's torrc
3980   configuration file. This can completely compromise anonymity of users
3981   in most configurations, including those running the Vidalia bundles,
3982   TorK, etc. Or worse.
3983
3984   o Major security fixes:
3985     - Close immediately after missing authentication on control port;
3986       do not allow multiple authentication attempts.
3987
3988
3989 Changes in version 0.2.0.4-alpha - 2007-08-01
3990   This fourth development snapshot fixes a critical security vulnerability
3991   for most users, specifically those running Vidalia, TorK, etc. Everybody
3992   should upgrade to either 0.1.2.16 or 0.2.0.4-alpha.
3993
3994   o Major security fixes:
3995     - Close immediately after missing authentication on control port;
3996       do not allow multiple authentication attempts.
3997
3998   o Major bugfixes (compilation):
3999     - Fix win32 compilation: apparently IN_ADDR and IN6_ADDR are already
4000       defined there.
4001
4002   o Minor features (performance):
4003     - Be even more aggressive about releasing RAM from small
4004       empty buffers. Thanks to our free-list code, this shouldn't be too
4005       performance-intensive.
4006     - Disable sentinel-based debugging for buffer code: we squashed all
4007       the bugs that this was supposed to detect a long time ago, and
4008       now its only effect is to change our buffer sizes from nice
4009       powers of two (which platform mallocs tend to like) to values
4010       slightly over powers of two (which make some platform mallocs sad).
4011     - Log malloc statistics from mallinfo() on platforms where it
4012       exists.
4013
4014
4015 Changes in version 0.2.0.3-alpha - 2007-07-29
4016   This third development snapshot introduces new experimental
4017   blocking-resistance features and a preliminary version of the v3
4018   directory voting design, and includes many other smaller features
4019   and bugfixes.
4020
4021   o Major features:
4022     - The first pieces of our "bridge" design for blocking-resistance
4023       are implemented. People can run bridge directory authorities;
4024       people can run bridges; and people can configure their Tor clients
4025       with a set of bridges to use as the first hop into the Tor network.
4026       See http://archives.seul.org/or/talk/Jul-2007/msg00249.html for
4027       details.
4028     - Create listener connections before we setuid to the configured
4029       User and Group. Now non-Windows users can choose port values
4030       under 1024, start Tor as root, and have Tor bind those ports
4031       before it changes to another UID. (Windows users could already
4032       pick these ports.)
4033     - Added a new ConstrainedSockets config option to set SO_SNDBUF and
4034       SO_RCVBUF on TCP sockets. Hopefully useful for Tor servers running
4035       on "vserver" accounts. (Patch from coderman.)
4036     - Be even more aggressive about separating local traffic from relayed
4037       traffic when RelayBandwidthRate is set. (Refines proposal 111.)
4038
4039   o Major features (experimental):
4040     - First cut of code for "v3 dir voting": directory authorities will
4041       vote on a common network status document rather than each publishing
4042       their own opinion. This code needs more testing and more corner-case
4043       handling before it's ready for use.
4044
4045   o Security fixes:
4046     - Directory authorities now call routers Fast if their bandwidth is
4047       at least 100KB/s, and consider their bandwidth adequate to be a
4048       Guard if it is at least 250KB/s, no matter the medians. This fix
4049       complements proposal 107. [Bugfix on 0.1.2.x]
4050     - Directory authorities now never mark more than 3 servers per IP as
4051       Valid and Running. (Implements proposal 109, by Kevin Bauer and
4052       Damon McCoy.)
4053     - Minor change to organizationName and commonName generation
4054       procedures in TLS certificates during Tor handshakes, to invalidate
4055       some earlier censorware approaches. This is not a long-term
4056       solution, but applying it will give us a bit of time to look into
4057       the epidemiology of countermeasures as they spread.
4058
4059   o Major bugfixes (directory):
4060     - Rewrite directory tokenization code to never run off the end of
4061       a string. Fixes bug 455. Patch from croup. [Bugfix on 0.1.2.x]
4062
4063   o Minor features (controller):
4064     - Add a SOURCE_ADDR field to STREAM NEW events so that controllers can
4065       match requests to applications. (Patch from Robert Hogan.)
4066     - Report address and port correctly on connections to DNSPort. (Patch
4067       from Robert Hogan.)
4068     - Add a RESOLVE command to launch hostname lookups. (Original patch
4069       from Robert Hogan.)
4070     - Add GETINFO status/enough-dir-info to let controllers tell whether
4071       Tor has downloaded sufficient directory information. (Patch
4072       from Tup.)
4073     - You can now use the ControlSocket option to tell Tor to listen for
4074       controller connections on Unix domain sockets on systems that
4075       support them. (Patch from Peter Palfrader.)
4076     - STREAM NEW events are generated for DNSPort requests and for
4077       tunneled directory connections. (Patch from Robert Hogan.)
4078     - New "GETINFO address-mappings/*" command to get address mappings
4079       with expiry information. "addr-mappings/*" is now deprecated.
4080       (Patch from Tup.)
4081
4082   o Minor features (misc):
4083     - Merge in some (as-yet-unused) IPv6 address manipulation code. (Patch
4084       from croup.)
4085     - The tor-gencert tool for v3 directory authorities now creates all
4086       files as readable to the file creator only, and write-protects
4087       the authority identity key.
4088     - When dumping memory usage, list bytes used in buffer memory
4089       free-lists.
4090     - When running with dmalloc, dump more stats on hup and on exit.
4091     - Directory authorities now fail quickly and (relatively) harmlessly
4092       if they generate a network status document that is somehow
4093       malformed.
4094
4095   o Traffic load balancing improvements:
4096     - If exit bandwidth ever exceeds one third of total bandwidth, then
4097       use the correct formula to weight exit nodes when choosing paths.
4098       (Based on patch from Mike Perry.)
4099     - Choose perfectly fairly among routers when choosing by bandwidth and
4100       weighting by fraction of bandwidth provided by exits. Previously, we
4101       would choose with only approximate fairness, and correct ourselves
4102       if we ran off the end of the list. [Bugfix on 0.1.2.x]
4103
4104   o Performance improvements:
4105     - Be more aggressive with freeing buffer RAM or putting it on the
4106       memory free lists.
4107     - Use Critical Sections rather than Mutexes for synchronizing threads
4108       on win32; Mutexes are heavier-weight, and designed for synchronizing
4109       between processes.
4110
4111   o Deprecated and removed features:
4112     - RedirectExits is now deprecated.
4113     - Stop allowing address masks that do not correspond to bit prefixes.
4114       We have warned about these for a really long time; now it's time
4115       to reject them. (Patch from croup.)
4116
4117   o Minor bugfixes (directory):
4118     - Fix another crash bug related to extra-info caching. (Bug found by
4119       Peter Palfrader.) [Bugfix on 0.2.0.2-alpha]
4120     - Directories no longer return a "304 not modified" when they don't
4121       have the networkstatus the client asked for. Also fix a memory
4122       leak when returning 304 not modified. [Bugfixes on 0.2.0.2-alpha]
4123     - We had accidentally labelled 0.1.2.x directory servers as not
4124       suitable for begin_dir requests, and had labelled no directory
4125       servers as suitable for uploading extra-info documents. [Bugfix
4126       on 0.2.0.1-alpha]
4127
4128   o Minor bugfixes (dns):
4129     - Fix a crash when DNSPort is set more than once. (Patch from Robert
4130       Hogan.) [Bugfix on 0.2.0.2-alpha]
4131     - Add DNSPort connections to the global connection list, so that we
4132       can time them out correctly. (Bug found by Robert Hogan.) [Bugfix
4133       on 0.2.0.2-alpha]
4134     - Fix a dangling reference that could lead to a crash when DNSPort is
4135       changed or closed (Patch from Robert Hogan.) [Bugfix on
4136       0.2.0.2-alpha]
4137
4138   o Minor bugfixes (controller):
4139     - Provide DNS expiry times in GMT, not in local time. For backward
4140       compatibility, ADDRMAP events only provide GMT expiry in an extended
4141       field. "GETINFO address-mappings" always does the right thing.
4142     - Use CRLF line endings properly in NS events.
4143     - Terminate multi-line control events properly. (Original patch
4144       from tup.) [Bugfix on 0.1.2.x-alpha]
4145     - Do not include spaces in SOURCE_ADDR fields in STREAM
4146       events. Resolves bug 472. [Bugfix on 0.2.0.x-alpha]
4147
4148
4149 Changes in version 0.1.2.15 - 2007-07-17
4150   Tor 0.1.2.15 fixes several crash bugs, fixes some anonymity-related
4151   problems, fixes compilation on BSD, and fixes a variety of other
4152   bugs. Everybody should upgrade.
4153
4154   o Major bugfixes (compilation):
4155     - Fix compile on FreeBSD/NetBSD/OpenBSD. Oops.
4156
4157   o Major bugfixes (crashes):
4158     - Try even harder not to dereference the first character after
4159       an mmap(). Reported by lodger.
4160     - Fix a crash bug in directory authorities when we re-number the
4161       routerlist while inserting a new router.
4162     - When the cached-routers file is an even multiple of the page size,
4163       don't run off the end and crash. (Fixes bug 455; based on idea
4164       from croup.)
4165     - Fix eventdns.c behavior on Solaris: It is critical to include
4166       orconfig.h _before_ sys/types.h, so that we can get the expected
4167       definition of _FILE_OFFSET_BITS.
4168
4169   o Major bugfixes (security):
4170     - Fix a possible buffer overrun when using BSD natd support. Bug
4171       found by croup.
4172     - When sending destroy cells from a circuit's origin, don't include
4173       the reason for tearing down the circuit. The spec says we didn't,
4174       and now we actually don't. Reported by lodger.
4175     - Keep streamids from different exits on a circuit separate. This
4176       bug may have allowed other routers on a given circuit to inject
4177       cells into streams. Reported by lodger; fixes bug 446.
4178     - If there's a never-before-connected-to guard node in our list,
4179       never choose any guards past it. This way we don't expand our
4180       guard list unless we need to.
4181
4182   o Minor bugfixes (guard nodes):
4183     - Weight guard selection by bandwidth, so that low-bandwidth nodes
4184       don't get overused as guards.
4185
4186   o Minor bugfixes (directory):
4187     - Correctly count the number of authorities that recommend each
4188       version. Previously, we were under-counting by 1.
4189     - Fix a potential crash bug when we load many server descriptors at
4190       once and some of them make others of them obsolete. Fixes bug 458.
4191
4192   o Minor bugfixes (hidden services):
4193     - Stop tearing down the whole circuit when the user asks for a
4194       connection to a port that the hidden service didn't configure.
4195       Resolves bug 444.
4196
4197   o Minor bugfixes (misc):
4198     - On Windows, we were preventing other processes from reading
4199       cached-routers while Tor was running. Reported by janbar.
4200     - Fix a possible (but very unlikely) bug in picking routers by
4201       bandwidth. Add a log message to confirm that it is in fact
4202       unlikely. Patch from lodger.
4203     - Backport a couple of memory leak fixes.
4204     - Backport miscellaneous cosmetic bugfixes.
4205
4206