bump to 0.2.2.39
[tor.git] / ChangeLog
1 Changes in version 0.2.2.39 - 2012-09-11
2   Tor 0.2.2.39 fixes two more opportunities for remotely triggerable
3   assertions.
4
5   o Security fixes:
6     - Fix an assertion failure in tor_timegm() that could be triggered
7       by a badly formatted directory object. Bug found by fuzzing with
8       Radamsa. Fixes bug 6811; bugfix on 0.2.0.20-rc.
9     - Do not crash when comparing an address with port value 0 to an
10       address policy. This bug could have been used to cause a remote
11       assertion failure by or against directory authorities, or to
12       allow some applications to crash clients. Fixes bug 6690; bugfix
13       on 0.2.1.10-alpha.
14
15
16 Changes in version 0.2.2.38 - 2012-08-12
17   Tor 0.2.2.38 fixes a remotely triggerable crash bug, and fixes a timing
18   attack that could in theory leak path information.
19
20   o Security fixes:
21     - Avoid an uninitialized memory read when reading a vote or consensus
22       document that has an unrecognized flavor name. This read could
23       lead to a remote crash bug. Fixes bug 6530; bugfix on 0.2.2.6-alpha.
24     - Try to leak less information about what relays a client is
25       choosing to a side-channel attacker. Previously, a Tor client would
26       stop iterating through the list of available relays as soon as it
27       had chosen one, thus finishing a little earlier when it picked
28       a router earlier in the list. If an attacker can recover this
29       timing information (nontrivial but not proven to be impossible),
30       they could learn some coarse-grained information about which relays
31       a client was picking (middle nodes in particular are likelier to
32       be affected than exits). The timing attack might be mitigated by
33       other factors (see bug 6537 for some discussion), but it's best
34       not to take chances. Fixes bug 6537; bugfix on 0.0.8rc1.
35
36
37 Changes in version 0.2.2.37 - 2012-06-06
38   Tor 0.2.2.37 introduces a workaround for a critical renegotiation
39   bug in OpenSSL 1.0.1 (where 20% of the Tor network can't talk to itself
40   currently).
41
42   o Major bugfixes:
43     - Work around a bug in OpenSSL that broke renegotiation with TLS
44       1.1 and TLS 1.2. Without this workaround, all attempts to speak
45       the v2 Tor connection protocol when both sides were using OpenSSL
46       1.0.1 would fail. Resolves ticket 6033.
47     - When waiting for a client to renegotiate, don't allow it to add
48       any bytes to the input buffer. This fixes a potential DoS issue.
49       Fixes bugs 5934 and 6007; bugfix on 0.2.0.20-rc.
50     - Fix an edge case where if we fetch or publish a hidden service
51       descriptor, we might build a 4-hop circuit and then use that circuit
52       for exiting afterwards -- even if the new last hop doesn't obey our
53       ExitNodes config option. Fixes bug 5283; bugfix on 0.2.0.10-alpha.
54
55   o Minor bugfixes:
56     - Fix a build warning with Clang 3.1 related to our use of vasprintf.
57       Fixes bug 5969. Bugfix on 0.2.2.11-alpha.
58
59   o Minor features:
60     - Tell GCC and Clang to check for any errors in format strings passed
61       to the tor_v*(print|scan)f functions.
62
63
64 Changes in version 0.2.2.36 - 2012-05-24
65   Tor 0.2.2.36 updates the addresses for two of the eight directory
66   authorities, fixes some potential anonymity and security issues,
67   and fixes several crash bugs.
68
69   Tor 0.2.1.x has reached its end-of-life. Those Tor versions have many
70   known flaws, and nobody should be using them. You should upgrade. If
71   you're using a Linux or BSD and its packages are obsolete, stop using
72   those packages and upgrade anyway.
73
74   o Directory authority changes:
75     - Change IP address for maatuska (v3 directory authority).
76     - Change IP address for ides (v3 directory authority), and rename
77       it to turtles.
78
79   o Security fixes:
80     - When building or running with any version of OpenSSL earlier
81       than 0.9.8s or 1.0.0f, disable SSLv3 support. These OpenSSL
82       versions have a bug (CVE-2011-4576) in which their block cipher
83       padding includes uninitialized data, potentially leaking sensitive
84       information to any peer with whom they make a SSLv3 connection. Tor
85       does not use SSL v3 by default, but a hostile client or server
86       could force an SSLv3 connection in order to gain information that
87       they shouldn't have been able to get. The best solution here is to
88       upgrade to OpenSSL 0.9.8s or 1.0.0f (or later). But when building
89       or running with a non-upgraded OpenSSL, we disable SSLv3 entirely
90       to make sure that the bug can't happen.
91     - Never use a bridge or a controller-supplied node as an exit, even
92       if its exit policy allows it. Found by wanoskarnet. Fixes bug
93       5342. Bugfix on 0.1.1.15-rc (for controller-purpose descriptors)
94       and 0.2.0.3-alpha (for bridge-purpose descriptors).
95     - Only build circuits if we have a sufficient threshold of the total
96       descriptors that are marked in the consensus with the "Exit"
97       flag. This mitigates an attack proposed by wanoskarnet, in which
98       all of a client's bridges collude to restrict the exit nodes that
99       the client knows about. Fixes bug 5343.
100     - Provide controllers with a safer way to implement the cookie
101       authentication mechanism. With the old method, if another locally
102       running program could convince a controller that it was the Tor
103       process, then that program could trick the contoller into telling
104       it the contents of an arbitrary 32-byte file. The new "SAFECOOKIE"
105       authentication method uses a challenge-response approach to prevent
106       this attack. Fixes bug 5185; implements proposal 193.
107
108   o Major bugfixes:
109     - Avoid logging uninitialized data when unable to decode a hidden
110       service descriptor cookie. Fixes bug 5647; bugfix on 0.2.1.5-alpha.
111     - Avoid a client-side assertion failure when receiving an INTRODUCE2
112       cell on a general purpose circuit. Fixes bug 5644; bugfix on
113       0.2.1.6-alpha.
114     - Fix builds when the path to sed, openssl, or sha1sum contains
115       spaces, which is pretty common on Windows. Fixes bug 5065; bugfix
116       on 0.2.2.1-alpha.
117     - Correct our replacements for the timeradd() and timersub() functions
118       on platforms that lack them (for example, Windows). The timersub()
119       function is used when expiring circuits, while timeradd() is
120       currently unused. Bug report and patch by Vektor. Fixes bug 4778;
121       bugfix on 0.2.2.24-alpha.
122     - Fix the SOCKET_OK test that we use to tell when socket
123       creation fails so that it works on Win64. Fixes part of bug 4533;
124       bugfix on 0.2.2.29-beta. Bug found by wanoskarnet.
125
126   o Minor bugfixes:
127     - Reject out-of-range times like 23:59:61 in parse_rfc1123_time().
128       Fixes bug 5346; bugfix on 0.0.8pre3.
129     - Make our number-parsing functions always treat too-large values
130       as an error, even when those values exceed the width of the
131       underlying type. Previously, if the caller provided these
132       functions with minima or maxima set to the extreme values of the
133       underlying integer type, these functions would return those
134       values on overflow rather than treating overflow as an error.
135       Fixes part of bug 5786; bugfix on 0.0.9.
136     - Older Linux kernels erroneously respond to strange nmap behavior
137       by having accept() return successfully with a zero-length
138       socket. When this happens, just close the connection. Previously,
139       we would try harder to learn the remote address: but there was
140       no such remote address to learn, and our method for trying to
141       learn it was incorrect. Fixes bugs 1240, 4745, and 4747. Bugfix
142       on 0.1.0.3-rc. Reported and diagnosed by "r1eo".
143     - Correct parsing of certain date types in parse_http_time().
144       Without this patch, If-Modified-Since would behave
145       incorrectly. Fixes bug 5346; bugfix on 0.2.0.2-alpha. Patch from
146       Esteban Manchado Velázques.
147     - Change the BridgePassword feature (part of the "bridge community"
148       design, which is not yet implemented) to use a time-independent
149       comparison. The old behavior might have allowed an adversary
150       to use timing to guess the BridgePassword value. Fixes bug 5543;
151       bugfix on 0.2.0.14-alpha.
152     - Detect and reject certain misformed escape sequences in
153       configuration values. Previously, these values would cause us
154       to crash if received in a torrc file or over an authenticated
155       control port. Bug found by Esteban Manchado Velázquez, and
156       independently by Robert Connolly from Matta Consulting who further
157       noted that it allows a post-authentication heap overflow. Patch
158       by Alexander Schrijver. Fixes bugs 5090 and 5402 (CVE 2012-1668);
159       bugfix on 0.2.0.16-alpha.
160     - Fix a compile warning when using the --enable-openbsd-malloc
161       configure option. Fixes bug 5340; bugfix on 0.2.0.20-rc.
162     - During configure, detect when we're building with clang version
163       3.0 or lower and disable the -Wnormalized=id and -Woverride-init
164       CFLAGS. clang doesn't support them yet.
165     - When sending an HTTP/1.1 proxy request, include a Host header.
166       Fixes bug 5593; bugfix on 0.2.2.1-alpha.
167     - Fix a NULL-pointer dereference on a badly formed SETCIRCUITPURPOSE
168       command. Found by mikeyc. Fixes bug 5796; bugfix on 0.2.2.9-alpha.
169     - If we hit the error case where routerlist_insert() replaces an
170       existing (old) server descriptor, make sure to remove that
171       server descriptor from the old_routers list. Fix related to bug
172       1776. Bugfix on 0.2.2.18-alpha.
173
174   o Minor bugfixes (documentation and log messages):
175     - Fix a typo in a log message in rend_service_rendezvous_has_opened().
176       Fixes bug 4856; bugfix on Tor 0.0.6.
177     - Update "ClientOnly" man page entry to explain that there isn't
178       really any point to messing with it. Resolves ticket 5005.
179     - Document the GiveGuardFlagTo_CVE_2011_2768_VulnerableRelays
180       directory authority option (introduced in Tor 0.2.2.34).
181     - Downgrade the "We're missing a certificate" message from notice
182       to info: people kept mistaking it for a real problem, whereas it
183       is seldom the problem even when we are failing to bootstrap. Fixes
184       bug 5067; bugfix on 0.2.0.10-alpha.
185     - Correctly spell "connect" in a log message on failure to create a
186       controlsocket. Fixes bug 4803; bugfix on 0.2.2.26-beta.
187     - Clarify the behavior of MaxCircuitDirtiness with hidden service
188       circuits. Fixes issue 5259.
189
190   o Minor features:
191     - Directory authorities now reject versions of Tor older than
192       0.2.1.30, and Tor versions between 0.2.2.1-alpha and 0.2.2.20-alpha
193       inclusive. These versions accounted for only a small fraction of
194       the Tor network, and have numerous known security issues. Resolves
195       issue 4788.
196     - Update to the May 1 2012 Maxmind GeoLite Country database.
197
198   - Feature removal:
199     - When sending or relaying a RELAY_EARLY cell, we used to convert
200       it to a RELAY cell if the connection was using the v1 link
201       protocol. This was a workaround for older versions of Tor, which
202       didn't handle RELAY_EARLY cells properly. Now that all supported
203       versions can handle RELAY_EARLY cells, and now that we're enforcing
204       the "no RELAY_EXTEND commands except in RELAY_EARLY cells" rule,
205       remove this workaround. Addresses bug 4786.
206
207
208 Changes in version 0.2.2.35 - 2011-12-16
209   Tor 0.2.2.35 fixes a critical heap-overflow security issue in Tor's
210   buffers code. Absolutely everybody should upgrade.
211
212   The bug relied on an incorrect calculation when making data continuous
213   in one of our IO buffers, if the first chunk of the buffer was
214   misaligned by just the wrong amount. The miscalculation would allow an
215   attacker to overflow a piece of heap-allocated memory. To mount this
216   attack, the attacker would need to either open a SOCKS connection to
217   Tor's SocksPort (usually restricted to localhost), or target a Tor
218   instance configured to make its connections through a SOCKS proxy
219   (which Tor does not do by default).
220
221   Good security practice requires that all heap-overflow bugs should be
222   presumed to be exploitable until proven otherwise, so we are treating
223   this as a potential code execution attack. Please upgrade immediately!
224   This bug does not affect bufferevents-based builds of Tor. Special
225   thanks to "Vektor" for reporting this issue to us!
226
227   Tor 0.2.2.35 also fixes several bugs in previous versions, including
228   crash bugs for unusual configurations, and a long-term bug that
229   would prevent Tor from starting on Windows machines with draconian
230   AV software.
231
232   With this release, we remind everyone that 0.2.0.x has reached its
233   formal end-of-life. Those Tor versions have many known flaws, and
234   nobody should be using them. You should upgrade -- ideally to the
235   0.2.2.x series. If you're using a Linux or BSD and its packages are
236   obsolete, stop using those packages and upgrade anyway.
237
238   The Tor 0.2.1.x series is also approaching its end-of-life: it will no
239   longer receive support after some time in early 2012.
240
241   o Major bugfixes:
242     - Fix a heap overflow bug that could occur when trying to pull
243       data into the first chunk of a buffer, when that chunk had
244       already had some data drained from it. Fixes CVE-2011-2778;
245       bugfix on 0.2.0.16-alpha. Reported by "Vektor".
246     - Initialize Libevent with the EVENT_BASE_FLAG_NOLOCK flag enabled, so
247       that it doesn't attempt to allocate a socketpair. This could cause
248       some problems on Windows systems with overzealous firewalls. Fix for
249       bug 4457; workaround for Libevent versions 2.0.1-alpha through
250       2.0.15-stable.
251     - If we mark an OR connection for close based on a cell we process,
252       don't process any further cells on it. We already avoid further
253       reads on marked-for-close connections, but now we also discard the
254       cells we'd already read. Fixes bug 4299; bugfix on 0.2.0.10-alpha,
255       which was the first version where we might mark a connection for
256       close based on processing a cell on it.
257     - Correctly sanity-check that we don't underflow on a memory
258       allocation (and then assert) for hidden service introduction
259       point decryption. Bug discovered by Dan Rosenberg. Fixes bug 4410;
260       bugfix on 0.2.1.5-alpha.
261     - Fix a memory leak when we check whether a hidden service
262       descriptor has any usable introduction points left. Fixes bug
263       4424. Bugfix on 0.2.2.25-alpha.
264     - Don't crash when we're running as a relay and don't have a GeoIP
265       file. Bugfix on 0.2.2.34; fixes bug 4340. This backports a fix
266       we've had in the 0.2.3.x branch already.
267     - When running as a client, do not print a misleading (and plain
268       wrong) log message that we're collecting "directory request"
269       statistics: clients don't collect statistics. Also don't create a
270       useless (because empty) stats file in the stats/ directory. Fixes
271       bug 4353; bugfix on 0.2.2.34.
272
273   o Minor bugfixes:
274     - Detect failure to initialize Libevent. This fix provides better
275       detection for future instances of bug 4457.
276     - Avoid frequent calls to the fairly expensive cull_wedged_cpuworkers
277       function. This was eating up hideously large amounts of time on some
278       busy servers. Fixes bug 4518; bugfix on 0.0.9.8.
279     - Resolve an integer overflow bug in smartlist_ensure_capacity().
280       Fixes bug 4230; bugfix on Tor 0.1.0.1-rc. Based on a patch by
281       Mansour Moufid.
282     - Don't warn about unused log_mutex in log.c when building with
283       --disable-threads using a recent GCC. Fixes bug 4437; bugfix on
284       0.1.0.6-rc which introduced --disable-threads.
285     - When configuring, starting, or stopping an NT service, stop
286       immediately after the service configuration attempt has succeeded
287       or failed. Fixes bug 3963; bugfix on 0.2.0.7-alpha.
288     - When sending a NETINFO cell, include the original address
289       received for the other side, not its canonical address. Found
290       by "troll_un"; fixes bug 4349; bugfix on 0.2.0.10-alpha.
291     - Fix a typo in a hibernation-related log message. Fixes bug 4331;
292       bugfix on 0.2.2.23-alpha; found by "tmpname0901".
293     - Fix a memory leak in launch_direct_bridge_descriptor_fetch() that
294       occurred when a client tried to fetch a descriptor for a bridge
295       in ExcludeNodes. Fixes bug 4383; bugfix on 0.2.2.25-alpha.
296     - Backport fixes for a pair of compilation warnings on Windows.
297       Fixes bug 4521; bugfix on 0.2.2.28-beta and on 0.2.2.29-beta.
298     - If we had ever tried to call tor_addr_to_str on an address of
299       unknown type, we would have done a strdup on an uninitialized
300       buffer. Now we won't. Fixes bug 4529; bugfix on 0.2.1.3-alpha.
301       Reported by "troll_un".
302     - Correctly detect and handle transient lookup failures from
303       tor_addr_lookup. Fixes bug 4530; bugfix on 0.2.1.5-alpha.
304       Reported by "troll_un".
305     - Fix null-pointer access that could occur if TLS allocation failed.
306       Fixes bug 4531; bugfix on 0.2.0.20-rc. Found by "troll_un".
307     - Use tor_socket_t type for listener argument to accept(). Fixes bug
308       4535; bugfix on 0.2.2.28-beta. Found by "troll_un".
309
310   o Minor features:
311     - Add two new config options for directory authorities:
312       AuthDirFastGuarantee sets a bandwidth threshold for guaranteeing the
313       Fast flag, and AuthDirGuardBWGuarantee sets a bandwidth threshold
314       that is always sufficient to satisfy the bandwidth requirement for
315       the Guard flag. Now it will be easier for researchers to simulate
316       Tor networks with different values. Resolves ticket 4484.
317     - When Tor ignores a hidden service specified in its configuration,
318       include the hidden service's directory in the warning message.
319       Previously, we would only tell the user that some hidden service
320       was ignored. Bugfix on 0.0.6; fixes bug 4426.
321     - Update to the December 6 2011 Maxmind GeoLite Country database.
322
323   o Packaging changes:
324     - Make it easier to automate expert package builds on Windows,
325       by removing an absolute path from makensis.exe command.
326
327
328 Changes in version 0.2.1.32 - 2011-12-16
329   Tor 0.2.1.32 backports important security and privacy fixes for
330   oldstable. This release is intended only for package maintainers and
331   others who cannot use the 0.2.2 stable series. All others should be
332   using Tor 0.2.2.x or newer.
333
334   The Tor 0.2.1.x series will reach formal end-of-life some time in
335   early 2012; we will stop releasing patches for it then.
336
337   o Major bugfixes (also included in 0.2.2.x):
338     - Correctly sanity-check that we don't underflow on a memory
339       allocation (and then assert) for hidden service introduction
340       point decryption. Bug discovered by Dan Rosenberg. Fixes bug 4410;
341       bugfix on 0.2.1.5-alpha.
342     - Fix a heap overflow bug that could occur when trying to pull
343       data into the first chunk of a buffer, when that chunk had
344       already had some data drained from it. Fixes CVE-2011-2778;
345       bugfix on 0.2.0.16-alpha. Reported by "Vektor".
346
347   o Minor features:
348     - Update to the December 6 2011 Maxmind GeoLite Country database.
349
350
351 Changes in version 0.2.2.34 - 2011-10-26
352   Tor 0.2.2.34 fixes a critical anonymity vulnerability where an attacker
353   can deanonymize Tor users. Everybody should upgrade.
354
355   The attack relies on four components: 1) Clients reuse their TLS cert
356   when talking to different relays, so relays can recognize a user by
357   the identity key in her cert. 2) An attacker who knows the client's
358   identity key can probe each guard relay to see if that identity key
359   is connected to that guard relay right now. 3) A variety of active
360   attacks in the literature (starting from "Low-Cost Traffic Analysis
361   of Tor" by Murdoch and Danezis in 2005) allow a malicious website to
362   discover the guard relays that a Tor user visiting the website is using.
363   4) Clients typically pick three guards at random, so the set of guards
364   for a given user could well be a unique fingerprint for her. This
365   release fixes components #1 and #2, which is enough to block the attack;
366   the other two remain as open research problems. Special thanks to
367   "frosty_un" for reporting the issue to us!
368
369   Clients should upgrade so they are no longer recognizable by the TLS
370   certs they present. Relays should upgrade so they no longer allow a
371   remote attacker to probe them to test whether unpatched clients are
372   currently connected to them.
373
374   This release also fixes several vulnerabilities that allow an attacker
375   to enumerate bridge relays. Some bridge enumeration attacks still
376   remain; see for example proposal 188.
377
378   o Privacy/anonymity fixes (clients):
379     - Clients and bridges no longer send TLS certificate chains on
380       outgoing OR connections. Previously, each client or bridge would
381       use the same cert chain for all outgoing OR connections until
382       its IP address changes, which allowed any relay that the client
383       or bridge contacted to determine which entry guards it is using.
384       Fixes CVE-2011-2768. Bugfix on 0.0.9pre5; found by "frosty_un".
385     - If a relay receives a CREATE_FAST cell on a TLS connection, it
386       no longer considers that connection as suitable for satisfying a
387       circuit EXTEND request. Now relays can protect clients from the
388       CVE-2011-2768 issue even if the clients haven't upgraded yet.
389     - Directory authorities no longer assign the Guard flag to relays
390       that haven't upgraded to the above "refuse EXTEND requests
391       to client connections" fix. Now directory authorities can
392       protect clients from the CVE-2011-2768 issue even if neither
393       the clients nor the relays have upgraded yet. There's a new
394       "GiveGuardFlagTo_CVE_2011_2768_VulnerableRelays" config option
395       to let us transition smoothly, else tomorrow there would be no
396       guard relays.
397
398   o Privacy/anonymity fixes (bridge enumeration):
399     - Bridge relays now do their directory fetches inside Tor TLS
400       connections, like all the other clients do, rather than connecting
401       directly to the DirPort like public relays do. Removes another
402       avenue for enumerating bridges. Fixes bug 4115; bugfix on 0.2.0.35.
403     - Bridges relays now build circuits for themselves in a more similar
404       way to how clients build them. Removes another avenue for
405       enumerating bridges. Fixes bug 4124; bugfix on 0.2.0.3-alpha,
406       when bridges were introduced.
407     - Bridges now refuse CREATE or CREATE_FAST cells on OR connections
408       that they initiated. Relays could distinguish incoming bridge
409       connections from client connections, creating another avenue for
410       enumerating bridges. Fixes CVE-2011-2769. Bugfix on 0.2.0.3-alpha.
411       Found by "frosty_un".
412
413   o Major bugfixes:
414     - Fix a crash bug when changing node restrictions while a DNS lookup
415       is in-progress. Fixes bug 4259; bugfix on 0.2.2.25-alpha. Bugfix
416       by "Tey'".
417     - Don't launch a useless circuit after failing to use one of a
418       hidden service's introduction points. Previously, we would
419       launch a new introduction circuit, but not set the hidden service
420       which that circuit was intended to connect to, so it would never
421       actually be used. A different piece of code would then create a
422       new introduction circuit correctly. Bug reported by katmagic and
423       found by Sebastian Hahn. Bugfix on 0.2.1.13-alpha; fixes bug 4212.
424
425   o Minor bugfixes:
426     - Change an integer overflow check in the OpenBSD_Malloc code so
427       that GCC is less likely to eliminate it as impossible. Patch
428       from Mansour Moufid. Fixes bug 4059.
429     - When a hidden service turns an extra service-side introduction
430       circuit into a general-purpose circuit, free the rend_data and
431       intro_key fields first, so we won't leak memory if the circuit
432       is cannibalized for use as another service-side introduction
433       circuit. Bugfix on 0.2.1.7-alpha; fixes bug 4251.
434     - Bridges now skip DNS self-tests, to act a little more stealthily.
435       Fixes bug 4201; bugfix on 0.2.0.3-alpha, which first introduced
436       bridges. Patch by "warms0x".
437     - Fix internal bug-checking logic that was supposed to catch
438       failures in digest generation so that it will fail more robustly
439       if we ask for a nonexistent algorithm. Found by Coverity Scan.
440       Bugfix on 0.2.2.1-alpha; fixes Coverity CID 479.
441     - Report any failure in init_keys() calls launched because our
442       IP address has changed. Spotted by Coverity Scan. Bugfix on
443       0.1.1.4-alpha; fixes CID 484.
444
445   o Minor bugfixes (log messages and documentation):
446     - Remove a confusing dollar sign from the example fingerprint in the
447       man page, and also make the example fingerprint a valid one. Fixes
448       bug 4309; bugfix on 0.2.1.3-alpha.
449     - The next version of Windows will be called Windows 8, and it has
450       a major version of 6, minor version of 2. Correctly identify that
451       version instead of calling it "Very recent version". Resolves
452       ticket 4153; reported by funkstar.
453     - Downgrade log messages about circuit timeout calibration from
454       "notice" to "info": they don't require or suggest any human
455       intervention. Patch from Tom Lowenthal. Fixes bug 4063;
456       bugfix on 0.2.2.14-alpha.
457
458   o Minor features:
459     - Turn on directory request statistics by default and include them in
460       extra-info descriptors. Don't break if we have no GeoIP database.
461       Backported from 0.2.3.1-alpha; implements ticket 3951.
462     - Update to the October 4 2011 Maxmind GeoLite Country database.
463
464
465 Changes in version 0.2.1.31 - 2011-10-26
466   Tor 0.2.1.31 backports important security and privacy fixes for
467   oldstable. This release is intended only for package maintainers and
468   others who cannot use the 0.2.2 stable series. All others should be
469   using Tor 0.2.2.x or newer.
470
471   o Security fixes (also included in 0.2.2.x):
472     - Replace all potentially sensitive memory comparison operations
473       with versions whose runtime does not depend on the data being
474       compared. This will help resist a class of attacks where an
475       adversary can use variations in timing information to learn
476       sensitive data. Fix for one case of bug 3122. (Safe memcmp
477       implementation by Robert Ransom based partially on code by DJB.)
478     - Fix an assert in parsing router descriptors containing IPv6
479       addresses. This one took down the directory authorities when
480       somebody tried some experimental code. Bugfix on 0.2.1.3-alpha.
481
482   o Privacy/anonymity fixes (also included in 0.2.2.x):
483     - Clients and bridges no longer send TLS certificate chains on
484       outgoing OR connections. Previously, each client or bridge
485       would use the same cert chain for all outgoing OR connections
486       for up to 24 hours, which allowed any relay that the client or
487       bridge contacted to determine which entry guards it is using.
488       Fixes CVE-2011-2768. Bugfix on 0.0.9pre5; found by frosty_un.
489     - If a relay receives a CREATE_FAST cell on a TLS connection, it
490       no longer considers that connection as suitable for satisfying a
491       circuit EXTEND request. Now relays can protect clients from the
492       CVE-2011-2768 issue even if the clients haven't upgraded yet.
493     - Bridges now refuse CREATE or CREATE_FAST cells on OR connections
494       that they initiated. Relays could distinguish incoming bridge 
495       connections from client connections, creating another avenue for
496       enumerating bridges. Fixes CVE-2011-2769. Bugfix on 0.2.0.3-alpha.
497       Found by "frosty_un".
498     - When receiving a hidden service descriptor, check that it is for
499       the hidden service we wanted. Previously, Tor would store any
500       hidden service descriptors that a directory gave it, whether it
501       wanted them or not. This wouldn't have let an attacker impersonate
502       a hidden service, but it did let directories pre-seed a client
503       with descriptors that it didn't want. Bugfix on 0.0.6.
504     - Avoid linkability based on cached hidden service descriptors: forget
505       all hidden service descriptors cached as a client when processing a
506       SIGNAL NEWNYM command. Fixes bug 3000; bugfix on 0.0.6.
507     - Make the bridge directory authority refuse to answer directory
508       requests for "all" descriptors. It used to include bridge
509       descriptors in its answer, which was a major information leak.
510       Found by "piebeer". Bugfix on 0.2.0.3-alpha.
511     - Don't attach new streams to old rendezvous circuits after SIGNAL
512       NEWNYM. Previously, we would keep using an existing rendezvous
513       circuit if it remained open (i.e. if it were kept open by a
514       long-lived stream, or if a new stream were attached to it before
515       Tor could notice that it was old and no longer in use). Bugfix on
516       0.1.1.15-rc; fixes bug 3375.
517
518   o Minor bugfixes (also included in 0.2.2.x):
519     - When we restart our relay, we might get a successful connection
520       from the outside before we've started our reachability tests,
521       triggering a warning: "ORPort found reachable, but I have no
522       routerinfo yet. Failing to inform controller of success." This
523       bug was harmless unless Tor is running under a controller
524       like Vidalia, in which case the controller would never get a
525       REACHABILITY_SUCCEEDED status event. Bugfix on 0.1.2.6-alpha;
526       fixes bug 1172.
527     - Build correctly on OSX with zlib 1.2.4 and higher with all warnings
528       enabled. Fixes bug 1526.
529     - Remove undocumented option "-F" from tor-resolve: it hasn't done
530       anything since 0.2.1.16-rc.
531     - Avoid signed/unsigned comparisons by making SIZE_T_CEILING unsigned.
532       None of the cases where we did this before were wrong, but by making
533       this change we avoid warnings. Fixes bug 2475; bugfix on 0.2.1.28.
534     - Fix a rare crash bug that could occur when a client was configured
535       with a large number of bridges. Fixes bug 2629; bugfix on
536       0.2.1.2-alpha. Bugfix by trac user "shitlei".
537     - Correct the warning displayed when a rendezvous descriptor exceeds
538       the maximum size. Fixes bug 2750; bugfix on 0.2.1.5-alpha. Found by
539       John Brooks.
540     - Fix an uncommon assertion failure when running with DNSPort under
541       heavy load. Fixes bug 2933; bugfix on 0.2.0.1-alpha.
542     - When warning about missing zlib development packages during compile,
543       give the correct package names. Bugfix on 0.2.0.1-alpha.
544     - Require that introduction point keys and onion keys have public
545       exponent 65537. Bugfix on 0.2.0.10-alpha.
546     - Do not crash when our configuration file becomes unreadable, for
547       example due to a permissions change, between when we start up
548       and when a controller calls SAVECONF. Fixes bug 3135; bugfix
549       on 0.0.9pre6.
550     - Fix warnings from GCC 4.6's "-Wunused-but-set-variable" option.
551       Fixes bug 3208.
552     - Always NUL-terminate the sun_path field of a sockaddr_un before
553       passing it to the kernel. (Not a security issue: kernels are
554       smart enough to reject bad sockaddr_uns.) Found by Coverity;
555       CID #428. Bugfix on Tor 0.2.0.3-alpha.
556     - Don't stack-allocate the list of supplementary GIDs when we're
557       about to log them. Stack-allocating NGROUPS_MAX gid_t elements
558       could take up to 256K, which is way too much stack. Found by
559       Coverity; CID #450. Bugfix on 0.2.1.7-alpha.
560
561   o Minor bugfixes (only in 0.2.1.x):
562     - Resume using micro-version numbers in 0.2.1.x: our Debian packages
563       rely on them. Bugfix on 0.2.1.30.
564     - Use git revisions instead of svn revisions when generating our
565       micro-version numbers. Bugfix on 0.2.1.15-rc; fixes bug 2402.
566
567   o Minor features (also included in 0.2.2.x):
568     - Adjust the expiration time on our SSL session certificates to
569       better match SSL certs seen in the wild. Resolves ticket 4014.
570     - Allow nameservers with IPv6 address. Resolves bug 2574.
571     - Update to the October 4 2011 Maxmind GeoLite Country database.
572
573
574 Changes in version 0.2.2.33 - 2011-09-13
575   Tor 0.2.2.33 fixes several bugs, and includes a slight tweak to Tor's
576   TLS handshake that makes relays and bridges that run this new version
577   reachable from Iran again.
578
579   o Major bugfixes:
580     - Avoid an assertion failure when reloading a configuration with
581       TrackExitHosts changes. Found and fixed by 'laruldan'. Fixes bug
582       3923; bugfix on 0.2.2.25-alpha.
583
584   o Minor features (security):
585     - Check for replays of the public-key encrypted portion of an
586       INTRODUCE1 cell, in addition to the current check for replays of
587       the g^x value. This prevents a possible class of active attacks
588       by an attacker who controls both an introduction point and a
589       rendezvous point, and who uses the malleability of AES-CTR to
590       alter the encrypted g^x portion of the INTRODUCE1 cell. We think
591       that these attacks are infeasible (requiring the attacker to send
592       on the order of zettabytes of altered cells in a short interval),
593       but we'd rather block them off in case there are any classes of
594       this attack that we missed. Reported by Willem Pinckaers.
595
596   o Minor features:
597     - Adjust the expiration time on our SSL session certificates to
598       better match SSL certs seen in the wild. Resolves ticket 4014.
599     - Change the default required uptime for a relay to be accepted as
600       a HSDir (hidden service directory) from 24 hours to 25 hours.
601       Improves on 0.2.0.10-alpha; resolves ticket 2649.
602     - Add a VoteOnHidServDirectoriesV2 config option to allow directory
603       authorities to abstain from voting on assignment of the HSDir
604       consensus flag. Related to bug 2649.
605     - Update to the September 6 2011 Maxmind GeoLite Country database.
606
607   o Minor bugfixes (documentation and log messages):
608     - Correct the man page to explain that HashedControlPassword and
609       CookieAuthentication can both be set, in which case either method
610       is sufficient to authenticate to Tor. Bugfix on 0.2.0.7-alpha,
611       when we decided to allow these config options to both be set. Issue
612       raised by bug 3898.
613     - Demote the 'replay detected' log message emitted when a hidden
614       service receives the same Diffie-Hellman public key in two different
615       INTRODUCE2 cells to info level. A normal Tor client can cause that
616       log message during its normal operation. Bugfix on 0.2.1.6-alpha;
617       fixes part of bug 2442.
618     - Demote the 'INTRODUCE2 cell is too {old,new}' log message to info
619       level. There is nothing that a hidden service's operator can do
620       to fix its clients' clocks. Bugfix on 0.2.1.6-alpha; fixes part
621       of bug 2442.
622     - Clarify a log message specifying the characters permitted in
623       HiddenServiceAuthorizeClient client names. Previously, the log
624       message said that "[A-Za-z0-9+-_]" were permitted; that could have
625       given the impression that every ASCII character between "+" and "_"
626       was permitted. Now we say "[A-Za-z0-9+_-]". Bugfix on 0.2.1.5-alpha.
627
628   o Build fixes:
629     - Provide a substitute implementation of lround() for MSVC, which
630       apparently lacks it. Patch from Gisle Vanem.
631     - Clean up some code issues that prevented Tor from building on older
632       BSDs. Fixes bug 3894; reported by "grarpamp".
633     - Search for a platform-specific version of "ar" when cross-compiling.
634       Should fix builds on iOS. Resolves bug 3909, found by Marco Bonetti.
635
636
637 Changes in version 0.2.2.32 - 2011-08-27
638   The Tor 0.2.2 release series is dedicated to the memory of Andreas
639   Pfitzmann (1958-2010), a pioneer in anonymity and privacy research,
640   a founder of the PETS community, a leader in our field, a mentor,
641   and a friend. He left us with these words: "I had the possibility
642   to contribute to this world that is not as it should be. I hope I
643   could help in some areas to make the world a better place, and that
644   I could also encourage other people to be engaged in improving the
645   world. Please, stay engaged. This world needs you, your love, your
646   initiative -- now I cannot be part of that anymore."
647
648   Tor 0.2.2.32, the first stable release in the 0.2.2 branch, is finally
649   ready. More than two years in the making, this release features improved
650   client performance and hidden service reliability, better compatibility
651   for Android, correct behavior for bridges that listen on more than
652   one address, more extensible and flexible directory object handling,
653   better reporting of network statistics, improved code security, and
654   many many other features and bugfixes.
655
656
657 Changes in version 0.2.2.31-rc - 2011-08-17
658   Tor 0.2.2.31-rc is the second and hopefully final release candidate
659   for the Tor 0.2.2.x series.
660
661   o Major bugfixes:
662     - Remove an extra pair of quotation marks around the error
663       message in control-port STATUS_GENERAL BUG events. Bugfix on
664       0.1.2.6-alpha; fixes bug 3732.
665     - If we're configured to write our ControlPorts to disk, only write
666       them after switching UID and creating the data directory. This way,
667       we don't fail when starting up with a nonexistent DataDirectory
668       and a ControlPortWriteToFile setting based on that directory. Fixes
669       bug 3747; bugfix on Tor 0.2.2.26-beta.
670
671   o Minor features:
672     - Update to the August 2 2011 Maxmind GeoLite Country database.
673
674   o Minor bugfixes:
675     - Allow GETINFO fingerprint to return a fingerprint even when
676       we have not yet built a router descriptor. Fixes bug 3577;
677       bugfix on 0.2.0.1-alpha.
678     - Write several files in text mode, on OSes that distinguish text
679       mode from binary mode (namely, Windows). These files are:
680       'buffer-stats', 'dirreq-stats', and 'entry-stats' on relays
681       that collect those statistics; 'client_keys' and 'hostname' for
682       hidden services that use authentication; and (in the tor-gencert
683       utility) newly generated identity and signing keys. Previously,
684       we wouldn't specify text mode or binary mode, leading to an
685       assertion failure. Fixes bug 3607. Bugfix on 0.2.1.1-alpha (when
686       the DirRecordUsageByCountry option which would have triggered
687       the assertion failure was added), although this assertion failure
688       would have occurred in tor-gencert on Windows in 0.2.0.1-alpha.
689     - Selectively disable deprecation warnings on OS X because Lion
690       started deprecating the shipped copy of openssl. Fixes bug 3643.
691     - When unable to format an address as a string, report its value
692       as "???" rather than reusing the last formatted address. Bugfix
693       on 0.2.1.5-alpha.
694
695
696 Changes in version 0.2.2.30-rc - 2011-07-07
697   Tor 0.2.2.30-rc is the first release candidate for the Tor 0.2.2.x
698   series. It fixes a few smaller bugs, but generally appears stable.
699   Please test it and let us know whether it is!
700
701   o Minor bugfixes:
702     - Send a SUCCEEDED stream event to the controller when a reverse
703       resolve succeeded. Fixes bug 3536; bugfix on 0.0.8pre1. Issue
704       discovered by katmagic.
705     - Always NUL-terminate the sun_path field of a sockaddr_un before
706       passing it to the kernel. (Not a security issue: kernels are
707       smart enough to reject bad sockaddr_uns.) Found by Coverity;
708       CID #428. Bugfix on Tor 0.2.0.3-alpha.
709     - Don't stack-allocate the list of supplementary GIDs when we're
710       about to log them. Stack-allocating NGROUPS_MAX gid_t elements
711       could take up to 256K, which is way too much stack. Found by
712       Coverity; CID #450. Bugfix on 0.2.1.7-alpha.
713     - Add BUILDTIMEOUT_SET to the list returned by the 'GETINFO
714       events/names' control-port command. Bugfix on 0.2.2.9-alpha;
715       fixes part of bug 3465.
716     - Fix a memory leak when receiving a descriptor for a hidden
717       service we didn't ask for. Found by Coverity; CID #30. Bugfix
718       on 0.2.2.26-beta.
719
720   o Minor features:
721     - Update to the July 1 2011 Maxmind GeoLite Country database.
722
723
724 Changes in version 0.2.2.29-beta - 2011-06-20
725   Tor 0.2.2.29-beta reverts an accidental behavior change for users who
726   have bridge lines in their torrc but don't want to use them; gets
727   us closer to having the control socket feature working on Debian;
728   and fixes a variety of smaller bugs.
729
730   o Major bugfixes:
731     - Revert the UseBridges option to its behavior before 0.2.2.28-beta.
732       When we changed the default behavior to "use bridges if any
733       are listed in the torrc", we surprised users who had bridges
734       in their torrc files but who didn't actually want to use them.
735       Partial resolution for bug 3354.
736
737   o Privacy fixes:
738     - Don't attach new streams to old rendezvous circuits after SIGNAL
739       NEWNYM. Previously, we would keep using an existing rendezvous
740       circuit if it remained open (i.e. if it were kept open by a
741       long-lived stream, or if a new stream were attached to it before
742       Tor could notice that it was old and no longer in use). Bugfix on
743       0.1.1.15-rc; fixes bug 3375.
744
745   o Minor bugfixes:
746     - Fix a bug when using ControlSocketsGroupWritable with User. The
747       directory's group would be checked against the current group, not
748       the configured group. Patch by Jérémy Bobbio. Fixes bug 3393;
749       bugfix on 0.2.2.26-beta.
750     - Make connection_printf_to_buf()'s behaviour sane. Its callers
751       expect it to emit a CRLF iff the format string ends with CRLF;
752       it actually emitted a CRLF iff (a) the format string ended with
753       CRLF or (b) the resulting string was over 1023 characters long or
754       (c) the format string did not end with CRLF *and* the resulting
755       string was 1021 characters long or longer. Bugfix on 0.1.1.9-alpha;
756       fixes part of bug 3407.
757     - Make send_control_event_impl()'s behaviour sane. Its callers
758       expect it to always emit a CRLF at the end of the string; it
759       might have emitted extra control characters as well. Bugfix on
760       0.1.1.9-alpha; fixes another part of bug 3407.
761     - Make crypto_rand_int() check the value of its input correctly.
762       Previously, it accepted values up to UINT_MAX, but could return a
763       negative number if given a value above INT_MAX+1. Found by George
764       Kadianakis. Fixes bug 3306; bugfix on 0.2.2pre14.
765     - Avoid a segfault when reading a malformed circuit build state
766       with more than INT_MAX entries. Found by wanoskarnet. Bugfix on
767       0.2.2.4-alpha.
768     - When asked about a DNS record type we don't support via a
769       client DNSPort, reply with NOTIMPL rather than an empty
770       reply. Patch by intrigeri. Fixes bug 3369; bugfix on 2.0.1-alpha.
771     - Fix a rare memory leak during stats writing. Found by coverity.
772
773   o Minor features:
774     - Update to the June 1 2011 Maxmind GeoLite Country database.
775
776   o Code simplifications and refactoring:
777     - Remove some dead code as indicated by coverity.
778     - Remove a few dead assignments during router parsing. Found by
779       coverity.
780     - Add some forgotten return value checks during unit tests. Found
781       by coverity.
782     - Don't use 1-bit wide signed bit fields. Found by coverity.
783
784
785 Changes in version 0.2.2.28-beta - 2011-06-04
786   Tor 0.2.2.28-beta makes great progress towards a new stable release: we
787   fixed a big bug in whether relays stay in the consensus consistently,
788   we moved closer to handling bridges and hidden services correctly,
789   and we started the process of better handling the dreaded "my Vidalia
790   died, and now my Tor demands a password when I try to reconnect to it"
791   usability issue.
792
793   o Major bugfixes:
794     - Don't decide to make a new descriptor when receiving a HUP signal.
795       This bug has caused a lot of 0.2.2.x relays to disappear from the
796       consensus periodically. Fixes the most common case of triggering
797       bug 1810; bugfix on 0.2.2.7-alpha.
798     - Actually allow nameservers with IPv6 addresses. Fixes bug 2574.
799     - Don't try to build descriptors if "ORPort auto" is set and we
800       don't know our actual ORPort yet. Fix for bug 3216; bugfix on
801       0.2.2.26-beta.
802     - Resolve a crash that occurred when setting BridgeRelay to 1 with
803       accounting enabled. Fixes bug 3228; bugfix on 0.2.2.18-alpha.
804     - Apply circuit timeouts to opened hidden-service-related circuits
805       based on the correct start time. Previously, we would apply the
806       circuit build timeout based on time since the circuit's creation;
807       it was supposed to be applied based on time since the circuit
808       entered its current state. Bugfix on 0.0.6; fixes part of bug 1297.
809     - Use the same circuit timeout for client-side introduction
810       circuits as for other four-hop circuits, rather than the timeout
811       for single-hop directory-fetch circuits; the shorter timeout may
812       have been appropriate with the static circuit build timeout in
813       0.2.1.x and earlier, but caused many hidden service access attempts
814       to fail with the adaptive CBT introduced in 0.2.2.2-alpha. Bugfix
815       on 0.2.2.2-alpha; fixes another part of bug 1297.
816     - In ticket 2511 we fixed a case where you could use an unconfigured
817       bridge if you had configured it as a bridge the last time you ran
818       Tor. Now fix another edge case: if you had configured it as a bridge
819       but then switched to a different bridge via the controller, you
820       would still be willing to use the old one. Bugfix on 0.2.0.1-alpha;
821       fixes bug 3321.
822
823   o Major features:
824     - Add an __OwningControllerProcess configuration option and a
825       TAKEOWNERSHIP control-port command. Now a Tor controller can ensure
826       that when it exits, Tor will shut down. Implements feature 3049.
827     - If "UseBridges 1" is set and no bridges are configured, Tor will
828       now refuse to build any circuits until some bridges are set.
829       If "UseBridges auto" is set, Tor will use bridges if they are
830       configured and we are not running as a server, but otherwise will
831       make circuits as usual. The new default is "auto". Patch by anonym,
832       so the Tails LiveCD can stop automatically revealing you as a Tor
833       user on startup.
834
835   o Minor bugfixes:
836     - Fix warnings from GCC 4.6's "-Wunused-but-set-variable" option.
837     - Remove a trailing asterisk from "exit-policy/default" in the
838       output of the control port command "GETINFO info/names". Bugfix
839       on 0.1.2.5-alpha.
840     - Use a wide type to hold sockets when built for 64-bit Windows builds.
841       Fixes bug 3270.
842     - Warn when the user configures two HiddenServiceDir lines that point
843       to the same directory. Bugfix on 0.0.6 (the version introducing
844       HiddenServiceDir); fixes bug 3289.
845     - Remove dead code from rend_cache_lookup_v2_desc_as_dir. Fixes
846       part of bug 2748; bugfix on 0.2.0.10-alpha.
847     - Log malformed requests for rendezvous descriptors as protocol
848       warnings, not warnings. Also, use a more informative log message
849       in case someone sees it at log level warning without prior
850       info-level messages. Fixes the other part of bug 2748; bugfix
851       on 0.2.0.10-alpha.
852     - Clear the table recording the time of the last request for each
853       hidden service descriptor from each HS directory on SIGNAL NEWNYM.
854       Previously, we would clear our HS descriptor cache on SIGNAL
855       NEWNYM, but if we had previously retrieved a descriptor (or tried
856       to) from every directory responsible for it, we would refuse to
857       fetch it again for up to 15 minutes. Bugfix on 0.2.2.25-alpha;
858       fixes bug 3309.
859     - Fix a log message that said "bits" while displaying a value in
860       bytes. Found by wanoskarnet. Fixes bug 3318; bugfix on
861       0.2.0.1-alpha.
862     - When checking for 1024-bit keys, check for 1024 bits, not 128
863       bytes. This allows Tor to correctly discard keys of length 1017
864       through 1023. Bugfix on 0.0.9pre5.
865
866   o Minor features:
867     - Relays now log the reason for publishing a new relay descriptor,
868       so we have a better chance of hunting down instances of bug 1810.
869       Resolves ticket 3252.
870     - Revise most log messages that refer to nodes by nickname to
871       instead use the "$key=nickname at address" format. This should be
872       more useful, especially since nicknames are less and less likely
873       to be unique. Resolves ticket 3045.
874     - Log (at info level) when purging pieces of hidden-service-client
875       state because of SIGNAL NEWNYM.
876
877   o Removed options:
878     - Remove undocumented option "-F" from tor-resolve: it hasn't done
879       anything since 0.2.1.16-rc.
880
881
882 Changes in version 0.2.2.27-beta - 2011-05-18
883   Tor 0.2.2.27-beta fixes a bridge-related stability bug in the previous
884   release, and also adds a few more general bugfixes.
885
886   o Major bugfixes:
887     - Fix a crash bug when changing bridges in a running Tor process.
888       Fixes bug 3213; bugfix on 0.2.2.26-beta.
889     - When the controller configures a new bridge, don't wait 10 to 60
890       seconds before trying to fetch its descriptor. Bugfix on
891       0.2.0.3-alpha; fixes bug 3198 (suggested by 2355).
892
893   o Minor bugfixes:
894     - Require that onion keys have exponent 65537 in microdescriptors too.
895       Fixes more of bug 3207; bugfix on 0.2.2.26-beta.
896     - Tor used to limit HttpProxyAuthenticator values to 48 characters.
897       Changed the limit to 512 characters by removing base64 newlines.
898       Fixes bug 2752. Fix by Michael Yakubovich.
899     - When a client starts or stops using bridges, never use a circuit
900       that was built before the configuration change. This behavior could
901       put at risk a user who uses bridges to ensure that her traffic
902       only goes to the chosen addresses. Bugfix on 0.2.0.3-alpha; fixes
903       bug 3200.
904
905
906 Changes in version 0.2.2.26-beta - 2011-05-17
907   Tor 0.2.2.26-beta fixes a variety of potential privacy problems. It
908   also introduces a new "socksport auto" approach that should make it
909   easier to run multiple Tors on the same system, and does a lot of
910   cleanup to get us closer to a release candidate.
911
912   o Security/privacy fixes:
913     - Replace all potentially sensitive memory comparison operations
914       with versions whose runtime does not depend on the data being
915       compared. This will help resist a class of attacks where an
916       adversary can use variations in timing information to learn
917       sensitive data. Fix for one case of bug 3122. (Safe memcmp
918       implementation by Robert Ransom based partially on code by DJB.)
919     - When receiving a hidden service descriptor, check that it is for
920       the hidden service we wanted. Previously, Tor would store any
921       hidden service descriptors that a directory gave it, whether it
922       wanted them or not. This wouldn't have let an attacker impersonate
923       a hidden service, but it did let directories pre-seed a client
924       with descriptors that it didn't want. Bugfix on 0.0.6.
925     - On SIGHUP, do not clear out all TrackHostExits mappings, client
926       DNS cache entries, and virtual address mappings: that's what
927       NEWNYM is for. Fixes bug 1345; bugfix on 0.1.0.1-rc.
928
929   o Major features:
930     - The options SocksPort, ControlPort, and so on now all accept a
931       value "auto" that opens a socket on an OS-selected port. A
932       new ControlPortWriteToFile option tells Tor to write its
933       actual control port or ports to a chosen file. If the option
934       ControlPortFileGroupReadable is set, the file is created as
935       group-readable. Now users can run two Tor clients on the same
936       system without needing to manually mess with parameters. Resolves
937       part of ticket 3076.
938     - Set SO_REUSEADDR on all sockets, not just listeners. This should
939       help busy exit nodes avoid running out of useable ports just
940       because all the ports have been used in the near past. Resolves
941       issue 2850.
942
943   o Minor features:
944     - New "GETINFO net/listeners/(type)" controller command to return
945       a list of addresses and ports that are bound for listeners for a
946       given connection type. This is useful when the user has configured
947       "SocksPort auto" and the controller needs to know which port got
948       chosen. Resolves another part of ticket 3076.
949     - Add a new ControlSocketsGroupWritable configuration option: when
950       it is turned on, ControlSockets are group-writeable by the default
951       group of the current user. Patch by Jérémy Bobbio; implements
952       ticket 2972.
953     - Tor now refuses to create a ControlSocket in a directory that is
954       world-readable (or group-readable if ControlSocketsGroupWritable
955       is 0). This is necessary because some operating systems do not
956       enforce permissions on an AF_UNIX sockets. Permissions on the
957       directory holding the socket, however, seems to work everywhere.
958     - Rate-limit a warning about failures to download v2 networkstatus
959       documents. Resolves part of bug 1352.
960     - Backport code from 0.2.3.x that allows directory authorities to
961       clean their microdescriptor caches. Needed to resolve bug 2230.
962     - When an HTTPS proxy reports "403 Forbidden", we now explain
963       what it means rather than calling it an unexpected status code.
964       Closes bug 2503. Patch from Michael Yakubovich.
965     - Update to the May 1 2011 Maxmind GeoLite Country database.
966
967   o Minor bugfixes:
968     - Authorities now clean their microdesc cache periodically and when
969       reading from disk initially, not only when adding new descriptors.
970       This prevents a bug where we could lose microdescriptors. Bugfix
971       on 0.2.2.6-alpha. 2230
972     - Do not crash when our configuration file becomes unreadable, for
973       example due to a permissions change, between when we start up
974       and when a controller calls SAVECONF. Fixes bug 3135; bugfix
975       on 0.0.9pre6.
976     - Avoid a bug that would keep us from replacing a microdescriptor
977       cache on Windows. (We would try to replace the file while still
978       holding it open. That's fine on Unix, but Windows doesn't let us
979       do that.) Bugfix on 0.2.2.6-alpha; bug found by wanoskarnet.
980     - Add missing explanations for the authority-related torrc options
981       RephistTrackTime, BridgePassword, and V3AuthUseLegacyKey in the
982       man page. Resolves issue 2379.
983     - As an authority, do not upload our own vote or signature set to
984       ourself. It would tell us nothing new, and as of 0.2.2.24-alpha,
985       it would get flagged as a duplicate. Resolves bug 3026.
986     - Accept hidden service descriptors if we think we might be a hidden
987       service directory, regardless of what our consensus says. This
988       helps robustness, since clients and hidden services can sometimes
989       have a more up-to-date view of the network consensus than we do,
990       and if they think that the directory authorities list us a HSDir,
991       we might actually be one. Related to bug 2732; bugfix on
992       0.2.0.10-alpha.
993     - When a controller changes TrackHostExits, remove mappings for
994       hosts that should no longer have their exits tracked. Bugfix on
995       0.1.0.1-rc.
996     - When a controller changes VirtualAddrNetwork, remove any mappings
997       for hosts that were automapped to the old network. Bugfix on
998       0.1.1.19-rc.
999     - When a controller changes one of the AutomapHosts* options, remove
1000       any mappings for hosts that should no longer be automapped. Bugfix
1001       on 0.2.0.1-alpha.
1002     - Do not reset the bridge descriptor download status every time we
1003       re-parse our configuration or get a configuration change. Fixes
1004       bug 3019; bugfix on 0.2.0.3-alpha.
1005
1006   o Minor bugfixes (code cleanup):
1007     - When loading the microdesc journal, remember its current size.
1008       In 0.2.2, this helps prevent the microdesc journal from growing
1009       without limit on authorities (who are the only ones to use it in
1010       0.2.2). Fixes a part of bug 2230; bugfix on 0.2.2.6-alpha.
1011       Fix posted by "cypherpunks."
1012     - The microdesc journal is supposed to get rebuilt only if it is
1013       at least _half_ the length of the store, not _twice_ the length
1014       of the store. Bugfix on 0.2.2.6-alpha; fixes part of bug 2230.
1015     - Fix a potential null-pointer dereference while computing a
1016       consensus. Bugfix on tor-0.2.0.3-alpha, found with the help of
1017       clang's analyzer.
1018     - Avoid a possible null-pointer dereference when rebuilding the mdesc
1019       cache without actually having any descriptors to cache. Bugfix on
1020       0.2.2.6-alpha. Issue discovered using clang's static analyzer.
1021     - If we fail to compute the identity digest of a v3 legacy keypair,
1022       warn, and don't use a buffer-full of junk instead. Bugfix on
1023       0.2.1.1-alpha; fixes bug 3106.
1024     - Resolve an untriggerable issue in smartlist_string_num_isin(),
1025       where if the function had ever in the future been used to check
1026       for the presence of a too-large number, it would have given an
1027       incorrect result. (Fortunately, we only used it for 16-bit
1028       values.) Fixes bug 3175; bugfix on 0.1.0.1-rc.
1029     - Require that introduction point keys and onion handshake keys
1030       have a public exponent of 65537. Starts to fix bug 3207; bugfix
1031       on 0.2.0.10-alpha.
1032
1033   o Removed features:
1034     - Caches no longer download and serve v2 networkstatus documents
1035       unless FetchV2Networkstatus flag is set: these documents haven't
1036       haven't been used by clients or relays since 0.2.0.x. Resolves
1037       bug 3022.
1038
1039
1040 Changes in version 0.2.2.25-alpha - 2011-04-29
1041   Tor 0.2.2.25-alpha fixes many bugs: hidden service clients are more
1042   robust, routers no longer overreport their bandwidth, Win7 should crash
1043   a little less, and NEWNYM (as used by Vidalia's "new identity" button)
1044   now prevents hidden service-related activity from being linkable. It
1045   provides more information to Vidalia so you can see if your bridge is
1046   working. Also, 0.2.2.25-alpha revamps the Entry/Exit/ExcludeNodes and
1047   StrictNodes configuration options to make them more reliable, more
1048   understandable, and more regularly applied. If you use those options,
1049   please see the revised documentation for them in the manual page.
1050
1051   o Major bugfixes:
1052     - Relays were publishing grossly inflated bandwidth values because
1053       they were writing their state files wrong--now they write the
1054       correct value. Also, resume reading bandwidth history from the
1055       state file correctly. Fixes bug 2704; bugfix on 0.2.2.23-alpha.
1056     - Improve hidden service robustness: When we find that we have
1057       extended a hidden service's introduction circuit to a relay not
1058       listed as an introduction point in the HS descriptor we currently
1059       have, retry with an introduction point from the current
1060       descriptor. Previously we would just give up. Fixes bugs 1024 and
1061       1930; bugfix on 0.2.0.10-alpha.
1062     - Clients now stop trying to use an exit node associated with a given
1063       destination by TrackHostExits if they fail to reach that exit node.
1064       Fixes bug 2999. Bugfix on 0.2.0.20-rc.
1065     - Fix crash bug on platforms where gmtime and localtime can return
1066       NULL. Windows 7 users were running into this one. Fixes part of bug
1067       2077. Bugfix on all versions of Tor. Found by boboper.
1068
1069   o Security and stability fixes:
1070     - Don't double-free a parsable, but invalid, microdescriptor, even if
1071       it is followed in the blob we're parsing by an unparsable
1072       microdescriptor. Fixes an issue reported in a comment on bug 2954.
1073       Bugfix on 0.2.2.6-alpha; fix by "cypherpunks".
1074     - If the Nickname configuration option isn't given, Tor would pick a
1075       nickname based on the local hostname as the nickname for a relay.
1076       Because nicknames are not very important in today's Tor and the
1077       "Unnamed" nickname has been implemented, this is now problematic
1078       behavior: It leaks information about the hostname without being
1079       useful at all. Fixes bug 2979; bugfix on 0.1.2.2-alpha, which
1080       introduced the Unnamed nickname. Reported by tagnaq.
1081     - Fix an uncommon assertion failure when running with DNSPort under
1082       heavy load. Fixes bug 2933; bugfix on 0.2.0.1-alpha.
1083     - Avoid linkability based on cached hidden service descriptors: forget
1084       all hidden service descriptors cached as a client when processing a
1085       SIGNAL NEWNYM command. Fixes bug 3000; bugfix on 0.0.6.
1086
1087   o Major features:
1088     - Export GeoIP information on bridge usage to controllers even if we
1089       have not yet been running for 24 hours. Now Vidalia bridge operators
1090       can get more accurate and immediate feedback about their
1091       contributions to the network.
1092
1093   o Major features and bugfixes (node selection):
1094     - Revise and reconcile the meaning of the ExitNodes, EntryNodes,
1095       ExcludeEntryNodes, ExcludeExitNodes, ExcludeNodes, and StrictNodes
1096       options. Previously, we had been ambiguous in describing what
1097       counted as an "exit" node, and what operations exactly "StrictNodes
1098       0" would permit. This created confusion when people saw nodes built
1099       through unexpected circuits, and made it hard to tell real bugs from
1100       surprises. Now the intended behavior is:
1101         . "Exit", in the context of ExitNodes and ExcludeExitNodes, means
1102           a node that delivers user traffic outside the Tor network.
1103         . "Entry", in the context of EntryNodes, means a node used as the
1104           first hop of a multihop circuit. It doesn't include direct
1105           connections to directory servers.
1106         . "ExcludeNodes" applies to all nodes.
1107         . "StrictNodes" changes the behavior of ExcludeNodes only. When
1108           StrictNodes is set, Tor should avoid all nodes listed in
1109           ExcludeNodes, even when it will make user requests fail. When
1110           StrictNodes is *not* set, then Tor should follow ExcludeNodes
1111           whenever it can, except when it must use an excluded node to
1112           perform self-tests, connect to a hidden service, provide a
1113           hidden service, fulfill a .exit request, upload directory
1114           information, or fetch directory information.
1115       Collectively, the changes to implement the behavior fix bug 1090.
1116     - ExcludeNodes now takes precedence over EntryNodes and ExitNodes: if
1117       a node is listed in both, it's treated as excluded.
1118     - ExcludeNodes now applies to directory nodes -- as a preference if
1119       StrictNodes is 0, or an absolute requirement if StrictNodes is 1.
1120       Don't exclude all the directory authorities and set StrictNodes to 1
1121       unless you really want your Tor to break.
1122     - ExcludeNodes and ExcludeExitNodes now override exit enclaving.
1123     - ExcludeExitNodes now overrides .exit requests.
1124     - We don't use bridges listed in ExcludeNodes.
1125     - When StrictNodes is 1:
1126        . We now apply ExcludeNodes to hidden service introduction points
1127          and to rendezvous points selected by hidden service users. This
1128          can make your hidden service less reliable: use it with caution!
1129        . If we have used ExcludeNodes on ourself, do not try relay
1130          reachability self-tests.
1131        . If we have excluded all the directory authorities, we will not
1132          even try to upload our descriptor if we're a relay.
1133        . Do not honor .exit requests to an excluded node.
1134     - Remove a misfeature that caused us to ignore the Fast/Stable flags
1135       when ExitNodes is set. Bugfix on 0.2.2.7-alpha.
1136     - When the set of permitted nodes changes, we now remove any mappings
1137       introduced via TrackExitHosts to now-excluded nodes. Bugfix on
1138       0.1.0.1-rc.
1139     - We never cannibalize a circuit that had excluded nodes on it, even
1140       if StrictNodes is 0. Bugfix on 0.1.0.1-rc.
1141     - Revert a change where we would be laxer about attaching streams to
1142       circuits than when building the circuits. This was meant to prevent
1143       a set of bugs where streams were never attachable, but our improved
1144       code here should make this unnecessary. Bugfix on 0.2.2.7-alpha.
1145     - Keep track of how many times we launch a new circuit to handle a
1146       given stream. Too many launches could indicate an inconsistency
1147       between our "launch a circuit to handle this stream" logic and our
1148       "attach this stream to one of the available circuits" logic.
1149     - Improve log messages related to excluded nodes.
1150
1151   o Minor bugfixes:
1152     - Fix a spurious warning when moving from a short month to a long
1153       month on relays with month-based BandwidthAccounting. Bugfix on
1154       0.2.2.17-alpha; fixes bug 3020.
1155     - When a client finds that an origin circuit has run out of 16-bit
1156       stream IDs, we now mark it as unusable for new streams. Previously,
1157       we would try to close the entire circuit. Bugfix on 0.0.6.
1158     - Add a forgotten cast that caused a compile warning on OS X 10.6.
1159       Bugfix on 0.2.2.24-alpha.
1160     - Be more careful about reporting the correct error from a failed
1161       connect() system call. Under some circumstances, it was possible to
1162       look at an incorrect value for errno when sending the end reason.
1163       Bugfix on 0.1.0.1-rc.
1164     - Correctly handle an "impossible" overflow cases in connection byte
1165       counting, where we write or read more than 4GB on an edge connection
1166       in a single second. Bugfix on 0.1.2.8-beta.
1167     - Correct the warning displayed when a rendezvous descriptor exceeds
1168       the maximum size. Fixes bug 2750; bugfix on 0.2.1.5-alpha. Found by
1169       John Brooks.
1170     - Clients and hidden services now use HSDir-flagged relays for hidden
1171       service descriptor downloads and uploads even if the relays have no
1172       DirPort set and the client has disabled TunnelDirConns. This will
1173       eventually allow us to give the HSDir flag to relays with no
1174       DirPort. Fixes bug 2722; bugfix on 0.2.1.6-alpha.
1175     - Downgrade "no current certificates known for authority" message from
1176       Notice to Info. Fixes bug 2899; bugfix on 0.2.0.10-alpha.
1177     - Make the SIGNAL DUMP control-port command work on FreeBSD. Fixes bug
1178       2917. Bugfix on 0.1.1.1-alpha.
1179     - Only limit the lengths of single HS descriptors, even when multiple
1180       HS descriptors are published to an HSDir relay in a single POST
1181       operation. Fixes bug 2948; bugfix on 0.2.1.5-alpha. Found by hsdir.
1182     - Write the current time into the LastWritten line in our state file,
1183       rather than the time from the previous write attempt. Also, stop
1184       trying to use a time of -1 in our log statements. Fixes bug 3039;
1185       bugfix on 0.2.2.14-alpha.
1186     - Be more consistent in our treatment of file system paths. "~" should
1187       get expanded to the user's home directory in the Log config option.
1188       Fixes bug 2971; bugfix on 0.2.0.1-alpha, which introduced the
1189       feature for the -f and --DataDirectory options.
1190
1191   o Minor features:
1192     - Make sure every relay writes a state file at least every 12 hours.
1193       Previously, a relay could go for weeks without writing its state
1194       file, and on a crash could lose its bandwidth history, capacity
1195       estimates, client country statistics, and so on. Addresses bug 3012.
1196     - Send END_STREAM_REASON_NOROUTE in response to EHOSTUNREACH errors.
1197       Clients before 0.2.1.27 didn't handle NOROUTE correctly, but such
1198       clients are already deprecated because of security bugs.
1199     - Don't allow v0 hidden service authorities to act as clients.
1200       Required by fix for bug 3000.
1201     - Ignore SIGNAL NEWNYM commands on relay-only Tor instances. Required
1202       by fix for bug 3000.
1203     - Ensure that no empty [dirreq-](read|write)-history lines are added
1204       to an extrainfo document. Implements ticket 2497.
1205
1206   o Code simplification and refactoring:
1207     - Remove workaround code to handle directory responses from servers
1208       that had bug 539 (they would send HTTP status 503 responses _and_
1209       send a body too). Since only server versions before
1210       0.2.0.16-alpha/0.1.2.19 were affected, there is no longer reason to
1211       keep the workaround in place.
1212     - Remove the old 'fuzzy time' logic. It was supposed to be used for
1213       handling calculations where we have a known amount of clock skew and
1214       an allowed amount of unknown skew. But we only used it in three
1215       places, and we never adjusted the known/unknown skew values. This is
1216       still something we might want to do someday, but if we do, we'll
1217       want to do it differently.
1218     - Avoid signed/unsigned comparisons by making SIZE_T_CEILING unsigned.
1219       None of the cases where we did this before were wrong, but by making
1220       this change we avoid warnings. Fixes bug 2475; bugfix on 0.2.1.28.
1221     - Use GetTempDir to find the proper temporary directory location on
1222       Windows when generating temporary files for the unit tests. Patch by
1223       Gisle Vanem.
1224
1225
1226 Changes in version 0.2.2.24-alpha - 2011-04-08
1227   Tor 0.2.2.24-alpha fixes a variety of bugs, including a big bug that
1228   prevented Tor clients from effectively using "multihomed" bridges,
1229   that is, bridges that listen on multiple ports or IP addresses so users
1230   can continue to use some of their addresses even if others get blocked.
1231
1232   o Major bugfixes:
1233     - Fix a bug where bridge users who configure the non-canonical
1234       address of a bridge automatically switch to its canonical
1235       address. If a bridge listens at more than one address, it should be
1236       able to advertise those addresses independently and any non-blocked
1237       addresses should continue to work. Bugfix on Tor 0.2.0.x. Fixes
1238       bug 2510.
1239     - If you configured Tor to use bridge A, and then quit and
1240       configured Tor to use bridge B instead, it would happily continue
1241       to use bridge A if it's still reachable. While this behavior is
1242       a feature if your goal is connectivity, in some scenarios it's a
1243       dangerous bug. Bugfix on Tor 0.2.0.1-alpha; fixes bug 2511.
1244     - Directory authorities now use data collected from their own
1245       uptime observations when choosing whether to assign the HSDir flag
1246       to relays, instead of trusting the uptime value the relay reports in
1247       its descriptor. This change helps prevent an attack where a small
1248       set of nodes with frequently-changing identity keys can blackhole
1249       a hidden service. (Only authorities need upgrade; others will be
1250       fine once they do.) Bugfix on 0.2.0.10-alpha; fixes bug 2709.
1251
1252   o Minor bugfixes:
1253     - When we restart our relay, we might get a successful connection
1254       from the outside before we've started our reachability tests,
1255       triggering a warning: "ORPort found reachable, but I have no
1256       routerinfo yet. Failing to inform controller of success." This
1257       bug was harmless unless Tor is running under a controller
1258       like Vidalia, in which case the controller would never get a
1259       REACHABILITY_SUCCEEDED status event. Bugfix on 0.1.2.6-alpha;
1260       fixes bug 1172.
1261     - Make directory authorities more accurate at recording when
1262       relays that have failed several reachability tests became
1263       unreachable, so we can provide more accuracy at assigning Stable,
1264       Guard, HSDir, etc flags. Bugfix on 0.2.0.6-alpha. Resolves bug 2716.
1265     - Fix an issue that prevented static linking of libevent on
1266       some platforms (notably Linux). Fixes bug 2698; bugfix on
1267       versions 0.2.1.23/0.2.2.8-alpha (the versions introducing
1268       the --with-static-libevent configure option).
1269     - We now ask the other side of a stream (the client or the exit)
1270       for more data on that stream when the amount of queued data on
1271       that stream dips low enough. Previously, we wouldn't ask the
1272       other side for more data until either it sent us more data (which
1273       it wasn't supposed to do if it had exhausted its window!) or we
1274       had completely flushed all our queued data. This flow control fix
1275       should improve throughput. Fixes bug 2756; bugfix on the earliest
1276       released versions of Tor (svn commit r152).
1277     - Avoid a double-mark-for-free warning when failing to attach a
1278       transparent proxy connection. (We thought we had fixed this in
1279       0.2.2.23-alpha, but it turns out our fix was checking the wrong
1280       connection.) Fixes bug 2757; bugfix on 0.1.2.1-alpha (the original
1281       bug) and 0.2.2.23-alpha (the incorrect fix).
1282     - When warning about missing zlib development packages during compile,
1283       give the correct package names. Bugfix on 0.2.0.1-alpha.
1284
1285   o Minor features:
1286     - Directory authorities now log the source of a rejected POSTed v3
1287       networkstatus vote.
1288     - Make compilation with clang possible when using
1289       --enable-gcc-warnings by removing two warning options that clang
1290       hasn't implemented yet and by fixing a few warnings. Implements
1291       ticket 2696.
1292     - When expiring circuits, use microsecond timers rather than
1293       one-second timers. This can avoid an unpleasant situation where a
1294       circuit is launched near the end of one second and expired right
1295       near the beginning of the next, and prevent fluctuations in circuit
1296       timeout values.
1297     - Use computed circuit-build timeouts to decide when to launch
1298       parallel introduction circuits for hidden services. (Previously,
1299       we would retry after 15 seconds.)
1300     - Update to the April 1 2011 Maxmind GeoLite Country database.
1301
1302   o Packaging fixes:
1303     - Create the /var/run/tor directory on startup on OpenSUSE if it is
1304       not already created. Patch from Andreas Stieger. Fixes bug 2573.
1305
1306   o Documentation changes:
1307     - Modernize the doxygen configuration file slightly. Fixes bug 2707.
1308     - Resolve all doxygen warnings except those for missing documentation.
1309       Fixes bug 2705.
1310     - Add doxygen documentation for more functions, fields, and types.
1311
1312
1313 Changes in version 0.2.2.23-alpha - 2011-03-08
1314   Tor 0.2.2.23-alpha lets relays record their bandwidth history so when
1315   they restart they don't lose their bandwidth capacity estimate. This
1316   release also fixes a diverse set of user-facing bugs, ranging from
1317   relays overrunning their rate limiting to clients falsely warning about
1318   clock skew to bridge descriptor leaks by our bridge directory authority.
1319
1320   o Major bugfixes:
1321     - Stop sending a CLOCK_SKEW controller status event whenever
1322       we fetch directory information from a relay that has a wrong clock.
1323       Instead, only inform the controller when it's a trusted authority
1324       that claims our clock is wrong. Bugfix on 0.1.2.6-alpha; fixes
1325       the rest of bug 1074.
1326     - Fix an assert in parsing router descriptors containing IPv6
1327       addresses. This one took down the directory authorities when
1328       somebody tried some experimental code. Bugfix on 0.2.1.3-alpha.
1329     - Make the bridge directory authority refuse to answer directory
1330       requests for "all" descriptors. It used to include bridge
1331       descriptors in its answer, which was a major information leak.
1332       Found by "piebeer". Bugfix on 0.2.0.3-alpha.
1333     - If relays set RelayBandwidthBurst but not RelayBandwidthRate,
1334       Tor would ignore their RelayBandwidthBurst setting,
1335       potentially using more bandwidth than expected. Bugfix on
1336       0.2.0.1-alpha. Reported by Paul Wouters. Fixes bug 2470.
1337     - Ignore and warn if the user mistakenly sets "PublishServerDescriptor
1338       hidserv" in her torrc. The 'hidserv' argument never controlled
1339       publication of hidden service descriptors. Bugfix on 0.2.0.1-alpha.
1340
1341   o Major features:
1342     - Relays now save observed peak bandwidth throughput rates to their
1343       state file (along with total usage, which was already saved)
1344       so that they can determine their correct estimated bandwidth on
1345       restart. Resolves bug 1863, where Tor relays would reset their
1346       estimated bandwidth to 0 after restarting.
1347     - Directory authorities now take changes in router IP address and
1348       ORPort into account when determining router stability. Previously,
1349       if a router changed its IP or ORPort, the authorities would not
1350       treat it as having any downtime for the purposes of stability
1351       calculation, whereas clients would experience downtime since the
1352       change could take a while to propagate to them. Resolves issue 1035.
1353     - Enable Address Space Layout Randomization (ASLR) and Data Execution
1354       Prevention (DEP) by default on Windows to make it harder for
1355       attackers to exploit vulnerabilities. Patch from John Brooks.
1356
1357   o Minor bugfixes (on 0.2.1.x and earlier):
1358     - Fix a rare crash bug that could occur when a client was configured
1359       with a large number of bridges. Fixes bug 2629; bugfix on
1360       0.2.1.2-alpha. Bugfix by trac user "shitlei".
1361     - Avoid a double mark-for-free warning when failing to attach a
1362       transparent proxy connection. Bugfix on 0.1.2.1-alpha. Fixes
1363       bug 2279.
1364     - Correctly detect failure to allocate an OpenSSL BIO. Fixes bug 2378;
1365       found by "cypherpunks". This bug was introduced before the first
1366       Tor release, in svn commit r110.
1367     - Country codes aren't supported in EntryNodes until 0.2.3.x, so
1368       don't mention them in the manpage. Fixes bug 2450; issue
1369       spotted by keb and G-Lo.
1370     - Fix a bug in bandwidth history state parsing that could have been
1371       triggered if a future version of Tor ever changed the timing
1372       granularity at which bandwidth history is measured. Bugfix on
1373       Tor 0.1.1.11-alpha.
1374     - When a relay decides that its DNS is too broken for it to serve
1375       as an exit server, it advertised itself as a non-exit, but
1376       continued to act as an exit. This could create accidental
1377       partitioning opportunities for users. Instead, if a relay is
1378       going to advertise reject *:* as its exit policy, it should
1379       really act with exit policy "reject *:*". Fixes bug 2366.
1380       Bugfix on Tor 0.1.2.5-alpha. Bugfix by user "postman" on trac.
1381     - In the special case where you configure a public exit relay as your
1382       bridge, Tor would be willing to use that exit relay as the last
1383       hop in your circuit as well. Now we fail that circuit instead.
1384       Bugfix on 0.2.0.12-alpha. Fixes bug 2403. Reported by "piebeer".
1385     - Fix a bug with our locking implementation on Windows that couldn't
1386       correctly detect when a file was already locked. Fixes bug 2504,
1387       bugfix on 0.2.1.6-alpha.
1388     - Fix IPv6-related connect() failures on some platforms (BSD, OS X).
1389       Bugfix on 0.2.0.3-alpha; fixes first part of bug 2660. Patch by
1390       "piebeer".
1391     - Set target port in get_interface_address6() correctly. Bugfix
1392       on 0.1.1.4-alpha and 0.2.0.3-alpha; fixes second part of bug 2660.
1393     - Directory authorities are now more robust to hops back in time
1394       when calculating router stability. Previously, if a run of uptime
1395       or downtime appeared to be negative, the calculation could give
1396       incorrect results. Bugfix on 0.2.0.6-alpha; noticed when fixing
1397       bug 1035.
1398     - Fix an assert that got triggered when using the TestingTorNetwork
1399       configuration option and then issuing a GETINFO config-text control
1400       command. Fixes bug 2250; bugfix on 0.2.1.2-alpha.
1401
1402   o Minor bugfixes (on 0.2.2.x):
1403     - Clients should not weight BadExit nodes as Exits in their node
1404       selection. Similarly, directory authorities should not count BadExit
1405       bandwidth as Exit bandwidth when computing bandwidth-weights.
1406       Bugfix on 0.2.2.10-alpha; fixes bug 2203.
1407     - Correctly clear our dir_read/dir_write history when there is an
1408       error parsing any bw history value from the state file. Bugfix on
1409       Tor 0.2.2.15-alpha.
1410     - Resolve a bug in verifying signatures of directory objects
1411       with digests longer than SHA1. Bugfix on 0.2.2.20-alpha.
1412       Fixes bug 2409. Found by "piebeer".
1413     - Bridge authorities no longer crash on SIGHUP when they try to
1414       publish their relay descriptor to themselves. Fixes bug 2572. Bugfix
1415       on 0.2.2.22-alpha.
1416
1417   o Minor features:
1418     - Log less aggressively about circuit timeout changes, and improve
1419       some other circuit timeout messages. Resolves bug 2004.
1420     - Log a little more clearly about the times at which we're no longer
1421       accepting new connections. Resolves bug 2181.
1422     - Reject attempts at the client side to open connections to private
1423       IP addresses (like 127.0.0.1, 10.0.0.1, and so on) with
1424       a randomly chosen exit node. Attempts to do so are always
1425       ill-defined, generally prevented by exit policies, and usually
1426       in error. This will also help to detect loops in transparent
1427       proxy configurations. You can disable this feature by setting
1428       "ClientRejectInternalAddresses 0" in your torrc.
1429     - Always treat failure to allocate an RSA key as an unrecoverable
1430       allocation error.
1431     - Update to the March 1 2011 Maxmind GeoLite Country database.
1432
1433   o Minor features (log subsystem):
1434     - Add documentation for configuring logging at different severities in
1435       different log domains. We've had this feature since 0.2.1.1-alpha,
1436       but for some reason it never made it into the manpage. Fixes
1437       bug 2215.
1438     - Make it simpler to specify "All log domains except for A and B".
1439       Previously you needed to say "[*,~A,~B]". Now you can just say
1440       "[~A,~B]".
1441     - Add a "LogMessageDomains 1" option to include the domains of log
1442       messages along with the messages. Without this, there's no way
1443       to use log domains without reading the source or doing a lot
1444       of guessing.
1445
1446   o Packaging changes:
1447     - Stop shipping the Tor specs files and development proposal documents
1448       in the tarball. They are now in a separate git repository at
1449       git://git.torproject.org/torspec.git
1450
1451
1452 Changes in version 0.2.1.30 - 2011-02-23
1453   Tor 0.2.1.30 fixes a variety of less critical bugs. The main other
1454   change is a slight tweak to Tor's TLS handshake that makes relays
1455   and bridges that run this new version reachable from Iran again.
1456   We don't expect this tweak will win the arms race long-term, but it
1457   buys us time until we roll out a better solution.
1458
1459   o Major bugfixes:
1460     - Stop sending a CLOCK_SKEW controller status event whenever
1461       we fetch directory information from a relay that has a wrong clock.
1462       Instead, only inform the controller when it's a trusted authority
1463       that claims our clock is wrong. Bugfix on 0.1.2.6-alpha; fixes
1464       the rest of bug 1074.
1465     - Fix a bounds-checking error that could allow an attacker to
1466       remotely crash a directory authority. Bugfix on 0.2.1.5-alpha.
1467       Found by "piebeer".
1468     - If relays set RelayBandwidthBurst but not RelayBandwidthRate,
1469       Tor would ignore their RelayBandwidthBurst setting,
1470       potentially using more bandwidth than expected. Bugfix on
1471       0.2.0.1-alpha. Reported by Paul Wouters. Fixes bug 2470.
1472     - Ignore and warn if the user mistakenly sets "PublishServerDescriptor
1473       hidserv" in her torrc. The 'hidserv' argument never controlled
1474       publication of hidden service descriptors. Bugfix on 0.2.0.1-alpha.
1475
1476   o Minor features:
1477     - Adjust our TLS Diffie-Hellman parameters to match those used by
1478       Apache's mod_ssl.
1479     - Update to the February 1 2011 Maxmind GeoLite Country database.
1480
1481   o Minor bugfixes:
1482     - Check for and reject overly long directory certificates and
1483       directory tokens before they have a chance to hit any assertions.
1484       Bugfix on 0.2.1.28. Found by "doorss".
1485     - Bring the logic that gathers routerinfos and assesses the
1486       acceptability of circuits into line. This prevents a Tor OP from
1487       getting locked in a cycle of choosing its local OR as an exit for a
1488       path (due to a .exit request) and then rejecting the circuit because
1489       its OR is not listed yet. It also prevents Tor clients from using an
1490       OR running in the same instance as an exit (due to a .exit request)
1491       if the OR does not meet the same requirements expected of an OR
1492       running elsewhere. Fixes bug 1859; bugfix on 0.1.0.1-rc.
1493
1494   o Packaging changes:
1495     - Stop shipping the Tor specs files and development proposal documents
1496       in the tarball. They are now in a separate git repository at
1497       git://git.torproject.org/torspec.git
1498     - Do not include Git version tags as though they are SVN tags when
1499       generating a tarball from inside a repository that has switched
1500       between branches. Bugfix on 0.2.1.15-rc; fixes bug 2402.
1501
1502
1503 Changes in version 0.2.2.22-alpha - 2011-01-25
1504   Tor 0.2.2.22-alpha fixes a few more less-critical security issues. The
1505   main other change is a slight tweak to Tor's TLS handshake that makes
1506   relays and bridges that run this new version reachable from Iran again.
1507   We don't expect this tweak will win the arms race long-term, but it
1508   will buy us a bit more time until we roll out a better solution.
1509
1510   o Major bugfixes:
1511     - Fix a bounds-checking error that could allow an attacker to
1512       remotely crash a directory authority. Bugfix on 0.2.1.5-alpha.
1513       Found by "piebeer".
1514     - Don't assert when changing from bridge to relay or vice versa
1515       via the controller. The assert happened because we didn't properly
1516       initialize our keys in this case. Bugfix on 0.2.2.18-alpha; fixes
1517       bug 2433. Reported by bastik.
1518
1519   o Minor features:
1520     - Adjust our TLS Diffie-Hellman parameters to match those used by
1521       Apache's mod_ssl.
1522     - Provide a log message stating which geoip file we're parsing
1523       instead of just stating that we're parsing the geoip file.
1524       Implements ticket 2432.
1525
1526   o Minor bugfixes:
1527     - Check for and reject overly long directory certificates and
1528       directory tokens before they have a chance to hit any assertions.
1529       Bugfix on 0.2.1.28 / 0.2.2.20-alpha. Found by "doorss".
1530
1531
1532 Changes in version 0.2.2.21-alpha - 2011-01-15
1533   Tor 0.2.2.21-alpha includes all the patches from Tor 0.2.1.29, which
1534   continues our recent code security audit work. The main fix resolves
1535   a remote heap overflow vulnerability that can allow remote code
1536   execution (CVE-2011-0427). Other fixes address a variety of assert
1537   and crash bugs, most of which we think are hard to exploit remotely.
1538
1539   o Major bugfixes (security), also included in 0.2.1.29:
1540     - Fix a heap overflow bug where an adversary could cause heap
1541       corruption. This bug probably allows remote code execution
1542       attacks. Reported by "debuger". Fixes CVE-2011-0427. Bugfix on
1543       0.1.2.10-rc.
1544     - Prevent a denial-of-service attack by disallowing any
1545       zlib-compressed data whose compression factor is implausibly
1546       high. Fixes part of bug 2324; reported by "doorss".
1547     - Zero out a few more keys in memory before freeing them. Fixes
1548       bug 2384 and part of bug 2385. These key instances found by
1549       "cypherpunks", based on Andrew Case's report about being able
1550       to find sensitive data in Tor's memory space if you have enough
1551       permissions. Bugfix on 0.0.2pre9.
1552
1553   o Major bugfixes (crashes), also included in 0.2.1.29:
1554     - Prevent calls to Libevent from inside Libevent log handlers.
1555       This had potential to cause a nasty set of crashes, especially
1556       if running Libevent with debug logging enabled, and running
1557       Tor with a controller watching for low-severity log messages.
1558       Bugfix on 0.1.0.2-rc. Fixes bug 2190.
1559     - Add a check for SIZE_T_MAX to tor_realloc() to try to avoid
1560       underflow errors there too. Fixes the other part of bug 2324.
1561     - Fix a bug where we would assert if we ever had a
1562       cached-descriptors.new file (or another file read directly into
1563       memory) of exactly SIZE_T_CEILING bytes. Fixes bug 2326; bugfix
1564       on 0.2.1.25. Found by doorss.
1565     - Fix some potential asserts and parsing issues with grossly
1566       malformed router caches. Fixes bug 2352; bugfix on Tor 0.2.1.27.
1567       Found by doorss.
1568
1569   o Minor bugfixes (other), also included in 0.2.1.29:
1570     - Fix a bug with handling misformed replies to reverse DNS lookup
1571       requests in DNSPort. Bugfix on Tor 0.2.0.1-alpha. Related to a
1572       bug reported by doorss.
1573     - Fix compilation on mingw when a pthreads compatibility library
1574       has been installed. (We don't want to use it, so we shouldn't
1575       be including pthread.h.) Fixes bug 2313; bugfix on 0.1.0.1-rc.
1576     - Fix a bug where we would declare that we had run out of virtual
1577       addresses when the address space was only half-exhausted. Bugfix
1578       on 0.1.2.1-alpha.
1579     - Correctly handle the case where AutomapHostsOnResolve is set but
1580       no virtual addresses are available. Fixes bug 2328; bugfix on
1581       0.1.2.1-alpha. Bug found by doorss.
1582     - Correctly handle wrapping around when we run out of virtual
1583       address space. Found by cypherpunks; bugfix on 0.2.0.5-alpha.
1584
1585   o Minor features, also included in 0.2.1.29:
1586     - Update to the January 1 2011 Maxmind GeoLite Country database.
1587     - Introduce output size checks on all of our decryption functions.
1588
1589   o Build changes, also included in 0.2.1.29:
1590     - Tor does not build packages correctly with Automake 1.6 and earlier;
1591       added a check to Makefile.am to make sure that we're building with
1592       Automake 1.7 or later.
1593     - The 0.2.1.28 tarball was missing src/common/OpenBSD_malloc_Linux.c
1594       because we built it with a too-old version of automake. Thus that
1595       release broke ./configure --enable-openbsd-malloc, which is popular
1596       among really fast exit relays on Linux.
1597
1598   o Major bugfixes, new in 0.2.2.21-alpha:
1599     - Prevent crash/heap corruption when the cbtnummodes consensus
1600       parameter is set to 0 or large values. Fixes bug 2317; bugfix
1601       on 0.2.2.14-alpha.
1602
1603   o Major features, new in 0.2.2.21-alpha:
1604     - Introduce minimum/maximum values that clients will believe
1605       from the consensus. Now we'll have a better chance to avoid crashes
1606       or worse when a consensus param has a weird value.
1607
1608   o Minor features, new in 0.2.2.21-alpha:
1609     - Make sure to disable DirPort if running as a bridge. DirPorts aren't
1610       used on bridges, and it makes bridge scanning somewhat easier.
1611     - If writing the state file to disk fails, wait up to an hour before
1612       retrying again, rather than trying again each second. Fixes bug
1613       2346; bugfix on Tor 0.1.1.3-alpha.
1614     - Make Libevent log messages get delivered to controllers later,
1615       and not from inside the Libevent log handler. This prevents unsafe
1616       reentrant Libevent calls while still letting the log messages
1617       get through.
1618     - Detect platforms that brokenly use a signed size_t, and refuse to
1619       build there. Found and analyzed by doorss and rransom.
1620     - Fix a bunch of compile warnings revealed by mingw with gcc 4.5.
1621       Resolves bug 2314.
1622
1623   o Minor bugfixes, new in 0.2.2.21-alpha:
1624     - Handle SOCKS messages longer than 128 bytes long correctly, rather
1625       than waiting forever for them to finish. Fixes bug 2330; bugfix
1626       on 0.2.0.16-alpha. Found by doorss.
1627     - Add assertions to check for overflow in arguments to
1628       base32_encode() and base32_decode(); fix a signed-unsigned
1629       comparison there too. These bugs are not actually reachable in Tor,
1630       but it's good to prevent future errors too. Found by doorss.
1631     - Correctly detect failures to create DNS requests when using Libevent
1632       versions before v2. (Before Libevent 2, we used our own evdns
1633       implementation. Its return values for Libevent's evdns_resolve_*()
1634       functions are not consistent with those from Libevent.) Fixes bug
1635       2363; bugfix on 0.2.2.6-alpha. Found by "lodger".
1636
1637   o Documentation, new in 0.2.2.21-alpha:
1638     - Document the default socks host and port (127.0.0.1:9050) for
1639       tor-resolve.
1640
1641
1642 Changes in version 0.2.1.29 - 2011-01-15
1643   Tor 0.2.1.29 continues our recent code security audit work. The main
1644   fix resolves a remote heap overflow vulnerability that can allow remote
1645   code execution. Other fixes address a variety of assert and crash bugs,
1646   most of which we think are hard to exploit remotely.
1647
1648   o Major bugfixes (security):
1649     - Fix a heap overflow bug where an adversary could cause heap
1650       corruption. This bug probably allows remote code execution
1651       attacks. Reported by "debuger". Fixes CVE-2011-0427. Bugfix on
1652       0.1.2.10-rc.
1653     - Prevent a denial-of-service attack by disallowing any
1654       zlib-compressed data whose compression factor is implausibly
1655       high. Fixes part of bug 2324; reported by "doorss".
1656     - Zero out a few more keys in memory before freeing them. Fixes
1657       bug 2384 and part of bug 2385. These key instances found by
1658       "cypherpunks", based on Andrew Case's report about being able
1659       to find sensitive data in Tor's memory space if you have enough
1660       permissions. Bugfix on 0.0.2pre9.
1661
1662   o Major bugfixes (crashes):
1663     - Prevent calls to Libevent from inside Libevent log handlers.
1664       This had potential to cause a nasty set of crashes, especially
1665       if running Libevent with debug logging enabled, and running
1666       Tor with a controller watching for low-severity log messages.
1667       Bugfix on 0.1.0.2-rc. Fixes bug 2190.
1668     - Add a check for SIZE_T_MAX to tor_realloc() to try to avoid
1669       underflow errors there too. Fixes the other part of bug 2324.
1670     - Fix a bug where we would assert if we ever had a
1671       cached-descriptors.new file (or another file read directly into
1672       memory) of exactly SIZE_T_CEILING bytes. Fixes bug 2326; bugfix
1673       on 0.2.1.25. Found by doorss.
1674     - Fix some potential asserts and parsing issues with grossly
1675       malformed router caches. Fixes bug 2352; bugfix on Tor 0.2.1.27.
1676       Found by doorss.
1677
1678   o Minor bugfixes (other):
1679     - Fix a bug with handling misformed replies to reverse DNS lookup
1680       requests in DNSPort. Bugfix on Tor 0.2.0.1-alpha. Related to a
1681       bug reported by doorss.
1682     - Fix compilation on mingw when a pthreads compatibility library
1683       has been installed. (We don't want to use it, so we shouldn't
1684       be including pthread.h.) Fixes bug 2313; bugfix on 0.1.0.1-rc.
1685     - Fix a bug where we would declare that we had run out of virtual
1686       addresses when the address space was only half-exhausted. Bugfix
1687       on 0.1.2.1-alpha.
1688     - Correctly handle the case where AutomapHostsOnResolve is set but
1689       no virtual addresses are available. Fixes bug 2328; bugfix on
1690       0.1.2.1-alpha. Bug found by doorss.
1691     - Correctly handle wrapping around to when we run out of virtual
1692       address space. Found by cypherpunks, bugfix on 0.2.0.5-alpha.
1693     - The 0.2.1.28 tarball was missing src/common/OpenBSD_malloc_Linux.c
1694       because we built it with a too-old version of automake. Thus that
1695       release broke ./configure --enable-openbsd-malloc, which is popular
1696       among really fast exit relays on Linux.
1697
1698   o Minor features:
1699     - Update to the January 1 2011 Maxmind GeoLite Country database.
1700     - Introduce output size checks on all of our decryption functions.
1701
1702   o Build changes:
1703     - Tor does not build packages correctly with Automake 1.6 and earlier;
1704       added a check to Makefile.am to make sure that we're building with
1705       Automake 1.7 or later.
1706
1707
1708 Changes in version 0.2.2.20-alpha - 2010-12-17
1709   Tor 0.2.2.20-alpha does some code cleanup to reduce the risk of remotely
1710   exploitable bugs. We also fix a variety of other significant bugs,
1711   change the IP address for one of our directory authorities, and update
1712   the minimum version that Tor relays must run to join the network.
1713
1714   o Major bugfixes:
1715     - Fix a remotely exploitable bug that could be used to crash instances
1716       of Tor remotely by overflowing on the heap. Remote-code execution
1717       hasn't been confirmed, but can't be ruled out. Everyone should
1718       upgrade. Bugfix on the 0.1.1 series and later.
1719     - Fix a bug that could break accounting on 64-bit systems with large
1720       time_t values, making them hibernate for impossibly long intervals.
1721       Fixes bug 2146. Bugfix on 0.0.9pre6; fix by boboper.
1722     - Fix a logic error in directory_fetches_from_authorities() that
1723       would cause all _non_-exits refusing single-hop-like circuits
1724       to fetch from authorities, when we wanted to have _exits_ fetch
1725       from authorities. Fixes more of 2097. Bugfix on 0.2.2.16-alpha;
1726       fix by boboper.
1727     - Fix a stream fairness bug that would cause newer streams on a given
1728       circuit to get preference when reading bytes from the origin or
1729       destination. Fixes bug 2210. Fix by Mashael AlSabah. This bug was
1730       introduced before the first Tor release, in svn revision r152.
1731
1732   o Directory authority changes:
1733     - Change IP address and ports for gabelmoo (v3 directory authority).
1734
1735   o Minor bugfixes:
1736     - Avoid crashes when AccountingMax is set on clients. Fixes bug 2235.
1737       Bugfix on 0.2.2.18-alpha. Diagnosed by boboper.
1738     - Fix an off-by-one error in calculating some controller command
1739       argument lengths. Fortunately, this mistake is harmless since
1740       the controller code does redundant NUL termination too. Found by
1741       boboper. Bugfix on 0.1.1.1-alpha.
1742     - Do not dereference NULL if a bridge fails to build its
1743       extra-info descriptor. Found by an anonymous commenter on
1744       Trac. Bugfix on 0.2.2.19-alpha.
1745
1746   o Minor features:
1747     - Update to the December 1 2010 Maxmind GeoLite Country database.
1748     - Directory authorities now reject relays running any versions of
1749       Tor between 0.2.1.3-alpha and 0.2.1.18 inclusive; they have
1750       known bugs that keep RELAY_EARLY cells from working on rendezvous
1751       circuits. Followup to fix for bug 2081.
1752     - Directory authorities now reject relays running any version of Tor
1753       older than 0.2.0.26-rc. That version is the earliest that fetches
1754       current directory information correctly. Fixes bug 2156.
1755     - Report only the top 10 ports in exit-port stats in order not to
1756       exceed the maximum extra-info descriptor length of 50 KB. Implements
1757       task 2196.
1758
1759
1760 Changes in version 0.2.1.28 - 2010-12-17
1761   Tor 0.2.1.28 does some code cleanup to reduce the risk of remotely
1762   exploitable bugs. We also took this opportunity to change the IP address
1763   for one of our directory authorities, and to update the geoip database
1764   we ship.
1765
1766   o Major bugfixes:
1767     - Fix a remotely exploitable bug that could be used to crash instances
1768       of Tor remotely by overflowing on the heap. Remote-code execution
1769       hasn't been confirmed, but can't be ruled out. Everyone should
1770       upgrade. Bugfix on the 0.1.1 series and later.
1771
1772   o Directory authority changes:
1773     - Change IP address and ports for gabelmoo (v3 directory authority).
1774
1775   o Minor features:
1776     - Update to the December 1 2010 Maxmind GeoLite Country database.
1777
1778
1779 Changes in version 0.2.1.27 - 2010-11-23
1780   Yet another OpenSSL security patch broke its compatibility with Tor:
1781   Tor 0.2.1.27 makes relays work with openssl 0.9.8p and 1.0.0.b. We
1782   also took this opportunity to fix several crash bugs, integrate a new
1783   directory authority, and update the bundled GeoIP database.
1784
1785   o Major bugfixes:
1786     - Resolve an incompatibility with OpenSSL 0.9.8p and OpenSSL 1.0.0b:
1787       No longer set the tlsext_host_name extension on server SSL objects;
1788       but continue to set it on client SSL objects. Our goal in setting
1789       it was to imitate a browser, not a vhosting server. Fixes bug 2204;
1790       bugfix on 0.2.1.1-alpha.
1791     - Do not log messages to the controller while shrinking buffer
1792       freelists. Doing so would sometimes make the controller connection
1793       try to allocate a buffer chunk, which would mess up the internals
1794       of the freelist and cause an assertion failure. Fixes bug 1125;
1795       fixed by Robert Ransom. Bugfix on 0.2.0.16-alpha.
1796     - Learn our external IP address when we're a relay or bridge, even if
1797       we set PublishServerDescriptor to 0. Bugfix on 0.2.0.3-alpha,
1798       where we introduced bridge relays that don't need to publish to
1799       be useful. Fixes bug 2050.
1800     - Do even more to reject (and not just ignore) annotations on
1801       router descriptors received anywhere but from the cache. Previously
1802       we would ignore such annotations at first, but cache them to disk
1803       anyway. Bugfix on 0.2.0.8-alpha. Found by piebeer.
1804     - When you're using bridges and your network goes away and your
1805       bridges get marked as down, recover when you attempt a new socks
1806       connection (if the network is back), rather than waiting up to an
1807       hour to try fetching new descriptors for your bridges. Bugfix on
1808       0.2.0.3-alpha; fixes bug 1981.
1809
1810   o Major features:
1811     - Move to the November 2010 Maxmind GeoLite country db (rather
1812       than the June 2009 ip-to-country GeoIP db) for our statistics that
1813       count how many users relays are seeing from each country. Now we'll
1814       have more accurate data, especially for many African countries.
1815
1816   o New directory authorities:
1817     - Set up maatuska (run by Linus Nordberg) as the eighth v3 directory
1818       authority.
1819
1820   o Minor bugfixes:
1821     - Fix an assertion failure that could occur in directory caches or
1822       bridge users when using a very short voting interval on a testing
1823       network. Diagnosed by Robert Hogan. Fixes bug 1141; bugfix on
1824       0.2.0.8-alpha.
1825     - Enforce multiplicity rules when parsing annotations. Bugfix on
1826       0.2.0.8-alpha. Found by piebeer.
1827     - Allow handshaking OR connections to take a full KeepalivePeriod
1828       seconds to handshake. Previously, we would close them after
1829       IDLE_OR_CONN_TIMEOUT (180) seconds, the same timeout as if they
1830       were open. Bugfix on 0.2.1.26; fixes bug 1840. Thanks to mingw-san
1831       for analysis help.
1832     - When building with --enable-gcc-warnings on OpenBSD, disable
1833       warnings in system headers. This makes --enable-gcc-warnings
1834       pass on OpenBSD 4.8.
1835
1836   o Minor features:
1837     - Exit nodes didn't recognize EHOSTUNREACH as a plausible error code,
1838       and so sent back END_STREAM_REASON_MISC. Clients now recognize a new
1839       stream ending reason for this case: END_STREAM_REASON_NOROUTE.
1840       Servers can start sending this code when enough clients recognize
1841       it. Bugfix on 0.1.0.1-rc; fixes part of bug 1793.
1842     - Build correctly on mingw with more recent versions of OpenSSL 0.9.8.
1843       Patch from mingw-san.
1844
1845   o Removed files:
1846     - Remove the old debian/ directory from the main Tor distribution.
1847       The official Tor-for-debian git repository lives at the URL
1848       https://git.torproject.org/debian/tor.git
1849     - Stop shipping the old doc/website/ directory in the tarball. We
1850       changed the website format in late 2010, and what we shipped in
1851       0.2.1.26 really wasn't that useful anyway.
1852
1853
1854 Changes in version 0.2.2.19-alpha - 2010-11-22
1855   Yet another OpenSSL security patch broke its compatibility with Tor:
1856   Tor 0.2.2.19-alpha makes relays work with OpenSSL 0.9.8p and 1.0.0.b.
1857
1858   o Major bugfixes:
1859     - Resolve an incompatibility with OpenSSL 0.9.8p and OpenSSL 1.0.0b:
1860       No longer set the tlsext_host_name extension on server SSL objects;
1861       but continue to set it on client SSL objects. Our goal in setting
1862       it was to imitate a browser, not a vhosting server. Fixes bug 2204;
1863       bugfix on 0.2.1.1-alpha.
1864
1865   o Minor bugfixes:
1866     - Try harder not to exceed the maximum length of 50 KB when writing
1867       statistics to extra-info descriptors. This bug was triggered by very
1868       fast relays reporting exit-port, entry, and dirreq statistics.
1869       Reported by Olaf Selke. Bugfix on 0.2.2.1-alpha. Fixes bug 2183.
1870     - Publish a router descriptor even if generating an extra-info
1871       descriptor fails. Previously we would not publish a router
1872       descriptor without an extra-info descriptor; this can cause fast
1873       exit relays collecting exit-port statistics to drop from the
1874       consensus. Bugfix on 0.1.2.9-rc; fixes bug 2195.
1875
1876
1877 Changes in version 0.2.2.18-alpha - 2010-11-16
1878   Tor 0.2.2.18-alpha fixes several crash bugs that have been nagging
1879   us lately, makes unpublished bridge relays able to detect their IP
1880   address, and fixes a wide variety of other bugs to get us much closer
1881   to a stable release.
1882
1883   o Major bugfixes:
1884     - Do even more to reject (and not just ignore) annotations on
1885       router descriptors received anywhere but from the cache. Previously
1886       we would ignore such annotations at first, but cache them to disk
1887       anyway. Bugfix on 0.2.0.8-alpha. Found by piebeer.
1888     - Do not log messages to the controller while shrinking buffer
1889       freelists. Doing so would sometimes make the controller connection
1890       try to allocate a buffer chunk, which would mess up the internals
1891       of the freelist and cause an assertion failure. Fixes bug 1125;
1892       fixed by Robert Ransom. Bugfix on 0.2.0.16-alpha.
1893     - Learn our external IP address when we're a relay or bridge, even if
1894       we set PublishServerDescriptor to 0. Bugfix on 0.2.0.3-alpha,
1895       where we introduced bridge relays that don't need to publish to
1896       be useful. Fixes bug 2050.
1897     - Maintain separate TLS contexts and certificates for incoming and
1898       outgoing connections in bridge relays. Previously we would use the
1899       same TLS contexts and certs for incoming and outgoing connections.
1900       Bugfix on 0.2.0.3-alpha; addresses bug 988.
1901     - Maintain separate identity keys for incoming and outgoing TLS
1902       contexts in bridge relays. Previously we would use the same
1903       identity keys for incoming and outgoing TLS contexts. Bugfix on
1904       0.2.0.3-alpha; addresses the other half of bug 988.
1905     - Avoid an assertion failure when we as an authority receive a
1906       duplicate upload of a router descriptor that we already have,
1907       but which we previously considered an obsolete descriptor.
1908       Fixes another case of bug 1776. Bugfix on 0.2.2.16-alpha.
1909     - Avoid a crash bug triggered by looking at a dangling pointer while
1910       setting the network status consensus. Found by Robert Ransom.
1911       Bugfix on 0.2.2.17-alpha. Fixes bug 2097.
1912     - Fix a logic error where servers that _didn't_ act as exits would
1913       try to keep their server lists more aggressively up to date than
1914       exits, when it was supposed to be the other way around. Bugfix
1915       on 0.2.2.17-alpha.
1916
1917   o Minor bugfixes (on Tor 0.2.1.x and earlier):
1918     - When we're trying to guess whether we know our IP address as
1919       a relay, we would log various ways that we failed to guess
1920       our address, but never log that we ended up guessing it
1921       successfully. Now add a log line to help confused and anxious
1922       relay operators. Bugfix on 0.1.2.1-alpha; fixes bug 1534.
1923     - Bring the logic that gathers routerinfos and assesses the
1924       acceptability of circuits into line. This prevents a Tor OP from
1925       getting locked in a cycle of choosing its local OR as an exit for a
1926       path (due to a .exit request) and then rejecting the circuit because
1927       its OR is not listed yet. It also prevents Tor clients from using an
1928       OR running in the same instance as an exit (due to a .exit request)
1929       if the OR does not meet the same requirements expected of an OR
1930       running elsewhere. Fixes bug 1859; bugfix on 0.1.0.1-rc.
1931     - Correctly describe errors that occur when generating a TLS object.
1932       Previously we would attribute them to a failure while generating a
1933       TLS context. Patch by Robert Ransom. Bugfix on 0.1.0.4-rc; fixes
1934       bug 1994.
1935     - Enforce multiplicity rules when parsing annotations. Bugfix on
1936       0.2.0.8-alpha. Found by piebeer.
1937     - Fix warnings that newer versions of autoconf produced during
1938       ./autogen.sh. These warnings appear to be harmless in our case,
1939       but they were extremely verbose. Fixes bug 2020.
1940
1941   o Minor bugfixes (on Tor 0.2.2.x):
1942     - Enable protection of small arrays whenever we build with gcc
1943       hardening features, not only when also building with warnings
1944       enabled. Fixes bug 2031; bugfix on 0.2.2.14-alpha. Reported by keb.
1945
1946   o Minor features:
1947     - Make hidden services work better in private Tor networks by not
1948       requiring any uptime to join the hidden service descriptor
1949       DHT. Implements ticket 2088.
1950     - Rate-limit the "your application is giving Tor only an IP address"
1951       warning. Addresses bug 2000; bugfix on 0.0.8pre2.
1952     - When AllowSingleHopExits is set, print a warning to explain to the
1953       relay operator why most clients are avoiding her relay.
1954     - Update to the November 1 2010 Maxmind GeoLite Country database.
1955
1956   o Code simplifications and refactoring:
1957     - When we fixed bug 1038 we had to put in a restriction not to send
1958       RELAY_EARLY cells on rend circuits. This was necessary as long
1959       as relays using Tor 0.2.1.3-alpha through 0.2.1.18-alpha were
1960       active. Now remove this obsolete check. Resolves bug 2081.
1961     - Some options used different conventions for uppercasing of acronyms
1962       when comparing manpage and source. Fix those in favor of the
1963       manpage, as it makes sense to capitalize acronyms.
1964     - Remove the torrc.complete file. It hasn't been kept up to date
1965       and users will have better luck checking out the manpage.
1966     - Remove the obsolete "NoPublish" option; it has been flagged
1967       as obsolete and has produced a warning since 0.1.1.18-rc.
1968     - Remove everything related to building the expert bundle for OS X.
1969       It has confused many users, doesn't work right on OS X 10.6,
1970       and is hard to get rid of once installed. Resolves bug 1274.
1971
1972
1973 Changes in version 0.2.2.17-alpha - 2010-09-30
1974   Tor 0.2.2.17-alpha introduces a feature to make it harder for clients
1975   to use one-hop circuits (which can put the exit relays at higher risk,
1976   plus unbalance the network); fixes a big bug in bandwidth accounting
1977   for relays that want to limit their monthly bandwidth use; fixes a
1978   big pile of bugs in how clients tolerate temporary network failure;
1979   and makes our adaptive circuit build timeout feature (which improves
1980   client performance if your network is fast while not breaking things
1981   if your network is slow) better handle bad networks.
1982
1983   o Major features:
1984     - Exit relays now try harder to block exit attempts from unknown
1985       relays, to make it harder for people to use them as one-hop proxies
1986       a la tortunnel. Controlled by the refuseunknownexits consensus
1987       parameter (currently enabled), or you can override it on your
1988       relay with the RefuseUnknownExits torrc option. Resolves bug 1751.
1989
1990   o Major bugfixes (0.2.1.x and earlier):
1991     - Fix a bug in bandwidth accounting that could make us use twice
1992       the intended bandwidth when our interval start changes due to
1993       daylight saving time. Now we tolerate skew in stored vs computed
1994       interval starts: if the start of the period changes by no more than
1995       50% of the period's duration, we remember bytes that we transferred
1996       in the old period. Fixes bug 1511; bugfix on 0.0.9pre5.
1997     - Always search the Windows system directory for system DLLs, and
1998       nowhere else. Bugfix on 0.1.1.23; fixes bug 1954.
1999     - When you're using bridges and your network goes away and your
2000       bridges get marked as down, recover when you attempt a new socks
2001       connection (if the network is back), rather than waiting up to an
2002       hour to try fetching new descriptors for your bridges. Bugfix on
2003       0.2.0.3-alpha; fixes bug 1981.
2004
2005   o Major bugfixes (on 0.2.2.x):
2006     - Fix compilation on Windows. Bugfix on 0.2.2.16-alpha; related to
2007       bug 1797.
2008     - Fix a segfault that could happen when operating a bridge relay with
2009       no GeoIP database set. Fixes bug 1964; bugfix on 0.2.2.15-alpha.
2010     - The consensus bandwidth-weights (used by clients to choose fast
2011       relays) entered an unexpected edge case in September where
2012       Exits were much scarcer than Guards, resulting in bad weight
2013       recommendations. Now we compute them using new constraints that
2014       should succeed in all cases. Also alter directory authorities to
2015       not include the bandwidth-weights line if they fail to produce
2016       valid values. Fixes bug 1952; bugfix on 0.2.2.10-alpha.
2017     - When weighting bridges during path selection, we used to trust
2018       the bandwidths they provided in their descriptor, only capping them
2019       at 10MB/s. This turned out to be problematic for two reasons:
2020       Bridges could claim to handle a lot more traffic then they
2021       actually would, thus making more clients pick them and have a
2022       pretty effective DoS attack. The other issue is that new bridges
2023       that might not have a good estimate for their bw capacity yet
2024       would not get used at all unless no other bridges are available
2025       to a client. Fixes bug 1912; bugfix on 0.2.2.7-alpha.
2026
2027   o Major bugfixes (on the circuit build timeout feature, 0.2.2.x):
2028     - Ignore cannibalized circuits when recording circuit build times.
2029       This should provide for a minor performance improvement for hidden
2030       service users using 0.2.2.14-alpha, and should remove two spurious
2031       notice log messages. Bugfix on 0.2.2.14-alpha; fixes bug 1740.
2032     - Simplify the logic that causes us to decide if the network is
2033       unavailable for purposes of recording circuit build times. If we
2034       receive no cells whatsoever for the entire duration of a circuit's
2035       full measured lifetime, the network is probably down. Also ignore
2036       one-hop directory fetching circuit timeouts when calculating our
2037       circuit build times. These changes should hopefully reduce the
2038       cases where we see ridiculous circuit build timeouts for people
2039       with spotty wireless connections. Fixes part of bug 1772; bugfix
2040       on 0.2.2.2-alpha.
2041     - Prevent the circuit build timeout from becoming larger than
2042       the maximum build time we have ever seen. Also, prevent the time
2043       period for measurement circuits from becoming larger than twice that
2044       value. Fixes the other part of bug 1772; bugfix on 0.2.2.2-alpha.
2045
2046   o Minor features:
2047     - When we run out of directory information such that we can't build
2048       circuits, but then get enough that we can build circuits, log when
2049       we actually construct a circuit, so the user has a better chance of
2050       knowing what's going on. Fixes bug 1362.
2051     - Be more generous with how much bandwidth we'd use up (with
2052       accounting enabled) before entering "soft hibernation". Previously,
2053       we'd refuse new connections and circuits once we'd used up 95% of
2054       our allotment. Now, we use up 95% of our allotment, AND make sure
2055       that we have no more than 500MB (or 3 hours of expected traffic,
2056       whichever is lower) remaining before we enter soft hibernation.
2057     - If we've configured EntryNodes and our network goes away and/or all
2058       our entrynodes get marked down, optimistically retry them all when
2059       a new socks application request appears. Fixes bug 1882.
2060     - Add some more defensive programming for architectures that can't
2061       handle unaligned integer accesses. We don't know of any actual bugs
2062       right now, but that's the best time to fix them. Fixes bug 1943.
2063     - Support line continuations in the torrc config file. If a line
2064       ends with a single backslash character, the newline is ignored, and
2065       the configuration value is treated as continuing on the next line.
2066       Resolves bug 1929.
2067
2068   o Minor bugfixes (on 0.2.1.x and earlier):
2069     - For bandwidth accounting, calculate our expected bandwidth rate
2070       based on the time during which we were active and not in
2071       soft-hibernation during the last interval. Previously, we were
2072       also considering the time spent in soft-hibernation. If this
2073       was a long time, we would wind up underestimating our bandwidth
2074       by a lot, and skewing our wakeup time towards the start of the
2075       accounting interval. Fixes bug 1789. Bugfix on 0.0.9pre5.
2076
2077   o Minor bugfixes (on 0.2.2.x):
2078     - Resume generating CIRC FAILED REASON=TIMEOUT control port messages,
2079       which were disabled by the circuit build timeout changes in
2080       0.2.2.14-alpha. Bugfix on 0.2.2.14-alpha; fixes bug 1739.
2081     - Make sure we don't warn about missing bandwidth weights when
2082       choosing bridges or other relays not in the consensus. Bugfix on
2083       0.2.2.10-alpha; fixes bug 1805.
2084     - In our logs, do not double-report signatures from unrecognized
2085       authorities both as "from unknown authority" and "not
2086       present". Fixes bug 1956, bugfix on 0.2.2.16-alpha.
2087
2088
2089 Changes in version 0.2.2.16-alpha - 2010-09-17
2090   Tor 0.2.2.16-alpha fixes a variety of old stream fairness bugs (most
2091   evident at exit relays), and also continues to resolve all the little
2092   bugs that have been filling up trac lately.
2093
2094   o Major bugfixes (stream-level fairness):
2095     - When receiving a circuit-level SENDME for a blocked circuit, try
2096       to package cells fairly from all the streams that had previously
2097       been blocked on that circuit. Previously, we had started with the
2098       oldest stream, and allowed each stream to potentially exhaust
2099       the circuit's package window. This gave older streams on any
2100       given circuit priority over newer ones. Fixes bug 1937. Detected
2101       originally by Camilo Viecco. This bug was introduced before the
2102       first Tor release, in svn commit r152: it is the new winner of
2103       the longest-lived bug prize.
2104     - When the exit relay got a circuit-level sendme cell, it started
2105       reading on the exit streams, even if had 500 cells queued in the
2106       circuit queue already, so the circuit queue just grew and grew in
2107       some cases. We fix this by not re-enabling reading on receipt of a
2108       sendme cell when the cell queue is blocked. Fixes bug 1653. Bugfix
2109       on 0.2.0.1-alpha. Detected by Mashael AlSabah. Original patch by
2110       "yetonetime".
2111     - Newly created streams were allowed to read cells onto circuits,
2112       even if the circuit's cell queue was blocked and waiting to drain.
2113       This created potential unfairness, as older streams would be
2114       blocked, but newer streams would gladly fill the queue completely.
2115       We add code to detect this situation and prevent any stream from
2116       getting more than one free cell. Bugfix on 0.2.0.1-alpha. Partially
2117       fixes bug 1298.
2118
2119   o Minor features:
2120     - Update to the September 1 2010 Maxmind GeoLite Country database.
2121     - Warn when CookieAuthFileGroupReadable is set but CookieAuthFile is
2122       not. This would lead to a cookie that is still not group readable.
2123       Closes bug 1843. Suggested by katmagic.
2124     - When logging a rate-limited warning, we now mention how many messages
2125       got suppressed since the last warning.
2126     - Add new "perconnbwrate" and "perconnbwburst" consensus params to
2127       do individual connection-level rate limiting of clients. The torrc
2128       config options with the same names trump the consensus params, if
2129       both are present. Replaces the old "bwconnrate" and "bwconnburst"
2130       consensus params which were broken from 0.2.2.7-alpha through
2131       0.2.2.14-alpha. Closes bug 1947.
2132     - When a router changes IP address or port, authorities now launch
2133       a new reachability test for it. Implements ticket 1899.
2134     - Make the formerly ugly "2 unknown, 7 missing key, 0 good, 0 bad,
2135       2 no signature, 4 required" messages about consensus signatures
2136       easier to read, and make sure they get logged at the same severity
2137       as the messages explaining which keys are which. Fixes bug 1290.
2138     - Don't warn when we have a consensus that we can't verify because
2139       of missing certificates, unless those certificates are ones
2140       that we have been trying and failing to download. Fixes bug 1145.
2141     - If you configure your bridge with a known identity fingerprint,
2142       and the bridge authority is unreachable (as it is in at least
2143       one country now), fall back to directly requesting the descriptor
2144       from the bridge. Finishes the feature started in 0.2.0.10-alpha;
2145       closes bug 1138.
2146     - When building with --enable-gcc-warnings on OpenBSD, disable
2147       warnings in system headers. This makes --enable-gcc-warnings
2148       pass on OpenBSD 4.8.
2149
2150   o Minor bugfixes (on 0.2.1.x and earlier):
2151     - Authorities will now attempt to download consensuses if their
2152       own efforts to make a live consensus have failed. This change
2153       means authorities that restart will fetch a valid consensus, and
2154       it means authorities that didn't agree with the current consensus
2155       will still fetch and serve it if it has enough signatures. Bugfix
2156       on 0.2.0.9-alpha; fixes bug 1300.
2157     - Ensure DNS requests launched by "RESOLVE" commands from the
2158       controller respect the __LeaveStreamsUnattached setconf options. The
2159       same goes for requests launched via DNSPort or transparent
2160       proxying. Bugfix on 0.2.0.1-alpha; fixes bug 1525.
2161     - Allow handshaking OR connections to take a full KeepalivePeriod
2162       seconds to handshake. Previously, we would close them after
2163       IDLE_OR_CONN_TIMEOUT (180) seconds, the same timeout as if they
2164       were open. Bugfix on 0.2.1.26; fixes bug 1840. Thanks to mingw-san
2165       for analysis help.
2166     - Rate-limit "Failed to hand off onionskin" warnings.
2167     - Never relay a cell for a circuit we have already destroyed.
2168       Between marking a circuit as closeable and finally closing it,
2169       it may have been possible for a few queued cells to get relayed,
2170       even though they would have been immediately dropped by the next
2171       OR in the circuit. Fixes bug 1184; bugfix on 0.2.0.1-alpha.
2172     - Never queue a cell for a circuit that's already been marked
2173       for close.
2174     - Never vote for a server as "Running" if we have a descriptor for
2175       it claiming to be hibernating, and that descriptor was published
2176       more recently than our last contact with the server. Bugfix on
2177       0.2.0.3-alpha; fixes bug 911.
2178     - Squash a compile warning on OpenBSD. Reported by Tas; fixes
2179       bug 1848.
2180
2181   o Minor bugfixes (on 0.2.2.x):
2182     - Fix a regression introduced in 0.2.2.7-alpha that marked relays
2183       down if a directory fetch fails and you've configured either
2184       bridges or EntryNodes. The intent was to mark the relay as down
2185       _unless_ you're using bridges or EntryNodes, since if you are
2186       then you could quickly run out of entry points.
2187     - Fix the Windows directory-listing code. A bug introduced in
2188       0.2.2.14-alpha could make Windows directory servers forget to load
2189       some of their cached v2 networkstatus files.
2190     - Really allow clients to use relays as bridges. Fixes bug 1776;
2191       bugfix on 0.2.2.15-alpha.
2192     - Demote a warn to info that happens when the CellStatistics option
2193       was just enabled. Bugfix on 0.2.2.15-alpha; fixes bug 1921.
2194       Reported by Moritz Bartl.
2195     - On Windows, build correctly either with or without Unicode support.
2196       This is necessary so that Tor can support fringe platforms like
2197       Windows 98 (which has no Unicode), or Windows CE (which has no
2198       non-Unicode). Bugfix on 0.2.2.14-alpha; fixes bug 1797.
2199
2200   o Testing
2201     - Add a unit test for cross-platform directory-listing code.
2202
2203
2204 Changes in version 0.2.2.15-alpha - 2010-08-18
2205   Tor 0.2.2.15-alpha fixes a big bug in hidden service availability,
2206   fixes a variety of other bugs that were preventing performance
2207   experiments from moving forward, fixes several bothersome memory leaks,
2208   and generally closes a lot of smaller bugs that have been filling up
2209   trac lately.
2210
2211   o Major bugfixes:
2212     - Stop assigning the HSDir flag to relays that disable their
2213       DirPort (and thus will refuse to answer directory requests). This
2214       fix should dramatically improve the reachability of hidden services:
2215       hidden services and hidden service clients pick six HSDir relays
2216       to store and retrieve the hidden service descriptor, and currently
2217       about half of the HSDir relays will refuse to work. Bugfix on
2218       0.2.0.10-alpha; fixes part of bug 1693.
2219     - The PerConnBWRate and Burst config options, along with the
2220       bwconnrate and bwconnburst consensus params, initialized each conn's
2221       token bucket values only when the connection is established. Now we
2222       update them if the config options change, and update them every time
2223       we get a new consensus. Otherwise we can encounter an ugly edge
2224       case where we initialize an OR conn to client-level bandwidth,
2225       but then later the relay joins the consensus and we leave it
2226       throttled. Bugfix on 0.2.2.7-alpha; fixes bug 1830.
2227     - Fix a regression that caused Tor to rebind its ports if it receives
2228       SIGHUP while hibernating. Bugfix in 0.1.1.6-alpha; closes bug 919.
2229
2230   o Major features:
2231     - Lower the maximum weighted-fractional-uptime cutoff to 98%. This
2232       should give us approximately 40-50% more Guard-flagged nodes,
2233       improving the anonymity the Tor network can provide and also
2234       decreasing the dropoff in throughput that relays experience when
2235       they first get the Guard flag.
2236     - Allow enabling or disabling the *Statistics config options while
2237       Tor is running.
2238
2239   o Minor features:
2240     - Update to the August 1 2010 Maxmind GeoLite Country database.
2241     - Have the controller interface give a more useful message than
2242       "Internal Error" in response to failed GETINFO requests.
2243     - Warn when the same option is provided more than once in a torrc
2244       file, on the command line, or in a single SETCONF statement, and
2245       the option is one that only accepts a single line. Closes bug 1384.
2246     - Build correctly on mingw with more recent versions of OpenSSL 0.9.8.
2247       Patch from mingw-san.
2248     - Add support for the country code "{??}" in torrc options like
2249       ExcludeNodes, to indicate all routers of unknown country. Closes
2250       bug 1094.
2251     - Relays report the number of bytes spent on answering directory
2252       requests in extra-info descriptors similar to {read,write}-history.
2253       Implements enhancement 1790.
2254
2255   o Minor bugfixes (on 0.2.1.x and earlier):
2256     - Complain if PublishServerDescriptor is given multiple arguments that
2257       include 0 or 1. This configuration will be rejected in the future.
2258       Bugfix on 0.2.0.1-alpha; closes bug 1107.
2259     - Disallow BridgeRelay 1 and ORPort 0 at once in the configuration.
2260       Bugfix on 0.2.0.13-alpha; closes bug 928.
2261     - Change "Application request when we're believed to be offline."
2262       notice to "Application request when we haven't used client
2263       functionality lately.", to clarify that it's not an error. Bugfix
2264       on 0.0.9.3; fixes bug 1222.
2265     - Fix a bug in the controller interface where "GETINFO ns/asdaskljkl"
2266       would return "551 Internal error" rather than "552 Unrecognized key
2267       ns/asdaskljkl". Bugfix on 0.1.2.3-alpha.
2268     - Users can't configure a regular relay to be their bridge. It didn't
2269       work because when Tor fetched the bridge descriptor, it found
2270       that it already had it, and didn't realize that the purpose of the
2271       descriptor had changed. Now we replace routers with a purpose other
2272       than bridge with bridge descriptors when fetching them. Bugfix on
2273       0.1.1.9-alpha. Bug 1776 not yet fixed because now we immediately
2274       refetch the descriptor with router purpose 'general', disabling
2275       it as a bridge.
2276     - Fix a rare bug in rend_fn unit tests: we would fail a test when
2277       a randomly generated port is 0. Diagnosed by Matt Edman. Bugfix
2278       on 0.2.0.10-alpha; fixes bug 1808.
2279     - Exit nodes didn't recognize EHOSTUNREACH as a plausible error code,
2280       and so sent back END_STREAM_REASON_MISC. Clients now recognize a new
2281       stream ending reason for this case: END_STREAM_REASON_NOROUTE.
2282       Servers can start sending this code when enough clients recognize
2283       it. Also update the spec to reflect this new reason. Bugfix on
2284       0.1.0.1-rc; fixes part of bug 1793.
2285     - Delay geoip stats collection by bridges for 6 hours, not 2 hours,
2286       when we switch from being a public relay to a bridge. Otherwise
2287       there will still be clients that see the relay in their consensus,
2288       and the stats will end up wrong. Bugfix on 0.2.1.15-rc; fixes bug
2289       932 even more.
2290     - Instead of giving an assertion failure on an internal mismatch
2291       on estimated freelist size, just log a BUG warning and try later.
2292       Mitigates but does not fix bug 1125.
2293     - Fix an assertion failure that could occur in caches or bridge users
2294       when using a very short voting interval on a testing network.
2295       Diagnosed by Robert Hogan. Fixes bug 1141; bugfix on 0.2.0.8-alpha.
2296
2297   o Minor bugfixes (on 0.2.2.x):
2298     - Alter directory authorities to always consider Exit-flagged nodes
2299       as potential Guard nodes in their votes. The actual decision to
2300       use Exits as Guards is done in the consensus bandwidth weights.
2301       Fixes bug 1294; bugfix on 0.2.2.10-alpha.
2302     - When the controller is reporting the purpose of circuits that
2303       didn't finish building before the circuit build timeout, it was
2304       printing UNKNOWN_13. Now print EXPIRED. Bugfix on 0.2.2.14-alpha.
2305     - Our libevent version parsing code couldn't handle versions like
2306       1.4.14b-stable and incorrectly warned the user about using an
2307       old and broken version of libevent. Treat 1.4.14b-stable like
2308       1.4.14-stable when parsing the version. Fixes bug 1731; bugfix
2309       on 0.2.2.1-alpha.
2310     - Don't use substitution references like $(VAR:MOD) when
2311       $(asciidoc_files) is empty -- make(1) on NetBSD transforms
2312       '$(:x)' to 'x' rather than the empty string. This bites us in
2313       doc/ when configured with --disable-asciidoc. Bugfix on
2314       0.2.2.9-alpha; fixes bug 1773.
2315     - Remove a spurious hidden service server-side log notice about
2316       "Ancient non-dirty circuits". Bugfix on 0.2.2.14-alpha; fixes
2317       bug 1741.
2318     - Fix compilation with --with-dmalloc set. Bugfix on 0.2.2.6-alpha;
2319       fixes bug 1832.
2320     - Correctly report written bytes on linked connections. Found while
2321       implementing 1790. Bugfix on 0.2.2.4-alpha.
2322     - Fix three memory leaks: one in circuit_build_times_parse_state(),
2323       one in dirvote_add_signatures_to_pending_consensus(), and one every
2324       time we parse a v3 network consensus. Bugfixes on 0.2.2.14-alpha,
2325       0.2.2.6-alpha, and 0.2.2.10-alpha respectively; fixes bug 1831.
2326
2327   o Code simplifications and refactoring:
2328     - Take a first step towards making or.h smaller by splitting out
2329       function definitions for all source files in src/or/. Leave
2330       structures and defines in or.h for now.
2331     - Remove a bunch of unused function declarations as well as a block of
2332       #if 0'd code from the unit tests. Closes bug 1824.
2333     - New unit tests for exit-port history statistics; refactored exit
2334       statistics code to be more easily tested.
2335     - Remove the old debian/ directory from the main Tor distribution.
2336       The official Tor-for-debian git repository lives at the URL
2337       https://git.torproject.org/debian/tor.git
2338
2339
2340 Changes in version 0.2.2.14-alpha - 2010-07-12
2341   Tor 0.2.2.14-alpha greatly improves client-side handling of
2342   circuit build timeouts, which are used to estimate speed and improve
2343   performance. We also move to a much better GeoIP database, port Tor to
2344   Windows CE, introduce new compile flags that improve code security,
2345   add an eighth v3 directory authority, and address a lot of more
2346   minor issues.
2347
2348   o Major bugfixes:
2349     - Tor directory authorities no longer crash when started with a
2350       cached-microdesc-consensus file in their data directory. Bugfix
2351       on 0.2.2.6-alpha; fixes bug 1532.
2352     - Treat an unset $HOME like an empty $HOME rather than triggering an
2353       assert. Bugfix on 0.0.8pre1; fixes bug 1522.
2354     - Ignore negative and large circuit build timeout values that can
2355       happen during a suspend or hibernate. These values caused various
2356       asserts to fire. Bugfix on 0.2.2.2-alpha; fixes bug 1245.
2357     - Alter calculation of Pareto distribution parameter 'Xm' for
2358       Circuit Build Timeout learning to use the weighted average of the
2359       top N=3 modes (because we have three entry guards). Considering
2360       multiple modes should improve the timeout calculation in some cases,
2361       and prevent extremely high timeout values. Bugfix on 0.2.2.2-alpha;
2362       fixes bug 1335.
2363     - Alter calculation of Pareto distribution parameter 'Alpha' to use a
2364       right censored distribution model. This approach improves over the
2365       synthetic timeout generation approach that was producing insanely
2366       high timeout values. Now we calculate build timeouts using truncated
2367       times. Bugfix on 0.2.2.2-alpha; fixes bugs 1245 and 1335.
2368     - Do not close circuits that are under construction when they reach
2369       the circuit build timeout. Instead, leave them building (but do not
2370       use them) for up until the time corresponding to the 95th percentile
2371       on the Pareto CDF or 60 seconds, whichever is greater. This is done
2372       to provide better data for the new Pareto model. This percentile
2373       can be controlled by the consensus.
2374
2375   o Major features:
2376     - Move to the June 2010 Maxmind GeoLite country db (rather than the
2377       June 2009 ip-to-country GeoIP db) for our statistics that count
2378       how many users relays are seeing from each country. Now we have
2379       more accurate data for many African countries.
2380     - Port Tor to build and run correctly on Windows CE systems, using
2381       the wcecompat library. Contributed by Valerio Lupi.
2382     - New "--enable-gcc-hardening" ./configure flag (off by default)
2383       to turn on gcc compile time hardening options. It ensures
2384       that signed ints have defined behavior (-fwrapv), enables
2385       -D_FORTIFY_SOURCE=2 (requiring -O2), adds stack smashing protection
2386       with canaries (-fstack-protector-all), turns on ASLR protection if
2387       supported by the kernel (-fPIE, -pie), and adds additional security
2388       related warnings. Verified to work on Mac OS X and Debian Lenny.
2389     - New "--enable-linker-hardening" ./configure flag (off by default)
2390       to turn on ELF specific hardening features (relro, now). This does
2391       not work with Mac OS X or any other non-ELF binary format.
2392
2393   o New directory authorities:
2394     - Set up maatuska (run by Linus Nordberg) as the eighth v3 directory
2395       authority.
2396
2397   o Minor features:
2398     - New config option "WarnUnsafeSocks 0" disables the warning that
2399       occurs whenever Tor receives a socks handshake using a version of
2400       the socks protocol that can only provide an IP address (rather
2401       than a hostname). Setups that do DNS locally over Tor are fine,
2402       and we shouldn't spam the logs in that case.
2403     - Convert the HACKING file to asciidoc, and add a few new sections
2404       to it, explaining how we use Git, how we make changelogs, and
2405       what should go in a patch.
2406     - Add a TIMEOUT_RATE keyword to the BUILDTIMEOUT_SET control port
2407       event, to give information on the current rate of circuit timeouts
2408       over our stored history.
2409     - Add ability to disable circuit build time learning via consensus
2410       parameter and via a LearnCircuitBuildTimeout config option. Also
2411       automatically disable circuit build time calculation if we are
2412       either a AuthoritativeDirectory, or if we fail to write our state
2413       file. Fixes bug 1296.
2414     - More gracefully handle corrupt state files, removing asserts
2415       in favor of saving a backup and resetting state.
2416     - Rename the "log.h" header to "torlog.h" so as to conflict with fewer
2417       system headers.
2418
2419   o Minor bugfixes:
2420     - Build correctly on OSX with zlib 1.2.4 and higher with all warnings
2421       enabled.
2422     - When a2x fails, mention that the user could disable manpages instead
2423       of trying to fix their asciidoc installation.
2424     - Where available, use Libevent 2.0's periodic timers so that our
2425       once-per-second cleanup code gets called even more closely to
2426       once per second than it would otherwise. Fixes bug 943.
2427     - If you run a bridge that listens on multiple IP addresses, and
2428       some user configures a bridge address that uses a different IP
2429       address than your bridge writes in its router descriptor, and the
2430       user doesn't specify an identity key, their Tor would discard the
2431       descriptor because "it isn't one of our configured bridges", and
2432       fail to bootstrap. Now believe the descriptor and bootstrap anyway.
2433       Bugfix on 0.2.0.3-alpha.
2434     - If OpenSSL fails to make a duplicate of a private or public key, log
2435       an error message and try to exit cleanly. May help with debugging
2436       if bug 1209 ever remanifests.
2437     - Save a couple bytes in memory allocation every time we escape
2438       certain characters in a string. Patch from Florian Zumbiehl.
2439     - Make it explicit that we don't cannibalize one-hop circuits. This
2440       happens in the wild, but doesn't turn out to be a problem because
2441       we fortunately don't use those circuits. Many thanks to outofwords
2442       for the initial analysis and to swissknife who confirmed that
2443       two-hop circuits are actually created.
2444     - Make directory mirrors report non-zero dirreq-v[23]-shares again.
2445       Fixes bug 1564; bugfix on 0.2.2.9-alpha.
2446     - Eliminate a case where a circuit build time warning was displayed
2447       after network connectivity resumed. Bugfix on 0.2.2.2-alpha.
2448
2449
2450 Changes in version 0.2.1.26 - 2010-05-02
2451   Tor 0.2.1.26 addresses the recent connection and memory overload
2452   problems we've been seeing on relays, especially relays with their
2453   DirPort open. If your relay has been crashing, or you turned it off
2454   because it used too many resources, give this release a try.
2455
2456   This release also fixes yet another instance of broken OpenSSL libraries
2457   that was causing some relays to drop out of the consensus.
2458
2459   o Major bugfixes:
2460     - Teach relays to defend themselves from connection overload. Relays
2461       now close idle circuits early if it looks like they were intended
2462       for directory fetches. Relays are also more aggressive about closing
2463       TLS connections that have no circuits on them. Such circuits are
2464       unlikely to be re-used, and tens of thousands of them were piling
2465       up at the fast relays, causing the relays to run out of sockets
2466       and memory. Bugfix on 0.2.0.22-rc (where clients started tunneling
2467       their directory fetches over TLS).
2468     - Fix SSL renegotiation behavior on OpenSSL versions like on Centos
2469       that claim to be earlier than 0.9.8m, but which have in reality
2470       backported huge swaths of 0.9.8m or 0.9.8n renegotiation
2471       behavior. Possible fix for some cases of bug 1346.
2472     - Directory mirrors were fetching relay descriptors only from v2
2473       directory authorities, rather than v3 authorities like they should.
2474       Only 2 v2 authorities remain (compared to 7 v3 authorities), leading
2475       to a serious bottleneck. Bugfix on 0.2.0.9-alpha. Fixes bug 1324.
2476
2477   o Minor bugfixes:
2478     - Finally get rid of the deprecated and now harmful notion of "clique
2479       mode", where directory authorities maintain TLS connections to
2480       every other relay.
2481
2482   o Testsuite fixes:
2483     - In the util/threads test, no longer free the test_mutex before all
2484       worker threads have finished. Bugfix on 0.2.1.6-alpha.
2485     - The master thread could starve the worker threads quite badly on
2486       certain systems, causing them to run only partially in the allowed
2487       window. This resulted in test failures. Now the master thread sleeps
2488       occasionally for a few microseconds while the two worker-threads
2489       compete for the mutex. Bugfix on 0.2.0.1-alpha.
2490
2491
2492 Changes in version 0.2.2.13-alpha - 2010-04-24
2493   Tor 0.2.2.13-alpha addresses the recent connection and memory overload
2494   problems we've been seeing on relays, especially relays with their
2495   DirPort open. If your relay has been crashing, or you turned it off
2496   because it used too many resources, give this release a try.
2497
2498   o Major bugfixes:
2499     - Teach relays to defend themselves from connection overload. Relays
2500       now close idle circuits early if it looks like they were intended
2501       for directory fetches. Relays are also more aggressive about closing
2502       TLS connections that have no circuits on them. Such circuits are
2503       unlikely to be re-used, and tens of thousands of them were piling
2504       up at the fast relays, causing the relays to run out of sockets
2505       and memory. Bugfix on 0.2.0.22-rc (where clients started tunneling
2506       their directory fetches over TLS).
2507
2508   o Minor features:
2509     - Finally get rid of the deprecated and now harmful notion of "clique
2510       mode", where directory authorities maintain TLS connections to
2511       every other relay.
2512     - Directory authorities now do an immediate reachability check as soon
2513       as they hear about a new relay. This change should slightly reduce
2514       the time between setting up a relay and getting listed as running
2515       in the consensus. It should also improve the time between setting
2516       up a bridge and seeing use by bridge users.
2517     - Directory authorities no longer launch a TLS connection to every
2518       relay as they startup. Now that we have 2k+ descriptors cached,
2519       the resulting network hiccup is becoming a burden. Besides,
2520       authorities already avoid voting about Running for the first half
2521       hour of their uptime.
2522
2523
2524 Changes in version 0.2.2.12-alpha - 2010-04-20
2525   Tor 0.2.2.12-alpha fixes a critical bug in how directory authorities
2526   handle and vote on descriptors. It was causing relays to drop out of
2527   the consensus.
2528
2529   o Major bugfixes:
2530     - Many relays have been falling out of the consensus lately because
2531       not enough authorities know about their descriptor for them to get
2532       a majority of votes. When we deprecated the v2 directory protocol,
2533       we got rid of the only way that v3 authorities can hear from each
2534       other about other descriptors. Now authorities examine every v3
2535       vote for new descriptors, and fetch them from that authority. Bugfix
2536       on 0.2.1.23.
2537     - Fix two typos in tor_vasprintf() that broke the compile on Windows,
2538       and a warning in or.h related to bandwidth_weight_rule_t that
2539       prevented clean compile on OS X. Fixes bug 1363; bugfix on
2540       0.2.2.11-alpha.
2541     - Fix a segfault on relays when DirReqStatistics is enabled
2542       and 24 hours pass. Bug found by keb. Fixes bug 1365; bugfix on
2543       0.2.2.11-alpha.
2544
2545   o Minor bugfixes:
2546     - Demote a confusing TLS warning that relay operators might get when
2547       someone tries to talk to their OrPort. It is neither the operator's
2548       fault nor can they do anything about it. Fixes bug 1364; bugfix
2549       on 0.2.0.14-alpha.
2550
2551
2552 Changes in version 0.2.2.11-alpha - 2010-04-15
2553   Tor 0.2.2.11-alpha fixes yet another instance of broken OpenSSL
2554   libraries that was causing some relays to drop out of the consensus.
2555
2556   o Major bugfixes:
2557     - Directory mirrors were fetching relay descriptors only from v2
2558       directory authorities, rather than v3 authorities like they should.
2559       Only 2 v2 authorities remain (compared to 7 v3 authorities), leading
2560       to a serious bottleneck. Bugfix on 0.2.0.9-alpha. Fixes bug 1324.
2561     - Fix a parsing error that made every possible value of
2562       CircPriorityHalflifeMsec get treated as "1 msec". Bugfix
2563       on 0.2.2.7-alpha. Rename CircPriorityHalflifeMsec to
2564       CircuitPriorityHalflifeMsec, so authorities can tell newer relays
2565       about the option without breaking older ones.
2566     - Fix SSL renegotiation behavior on OpenSSL versions like on Centos
2567       that claim to be earlier than 0.9.8m, but which have in reality
2568       backported huge swaths of 0.9.8m or 0.9.8n renegotiation
2569       behavior. Possible fix for some cases of bug 1346.
2570
2571   o Minor features:
2572     - Experiment with a more aggressive approach to preventing clients
2573       from making one-hop exit streams. Exit relays who want to try it
2574       out can set "RefuseUnknownExits 1" in their torrc, and then look
2575       for "Attempt by %s to open a stream" log messages. Let us know
2576       how it goes!
2577     - Add support for statically linking zlib by specifying
2578       --enable-static-zlib, to go with our support for statically linking
2579       openssl and libevent. Resolves bug 1358.
2580
2581   o Minor bugfixes:
2582     - Fix a segfault that happens whenever a Tor client that is using
2583       libevent2's bufferevents gets a hup signal. Bugfix on 0.2.2.5-alpha;
2584       fixes bug 1341.
2585     - When we cleaned up the contrib/tor-exit-notice.html file, we left
2586       out the first line. Fixes bug 1295.
2587     - When building the manpage from a tarball, we required asciidoc, but
2588       the asciidoc -> roff/html conversion was already done for the
2589       tarball. Make 'make' complain only when we need asciidoc (either
2590       because we're compiling directly from git, or because we altered
2591       the asciidoc manpage in the tarball). Bugfix on 0.2.2.9-alpha.
2592     - When none of the directory authorities vote on any params, Tor
2593       segfaulted when trying to make the consensus from the votes. We
2594       didn't trigger the bug in practice, because authorities do include
2595       params in their votes. Bugfix on 0.2.2.10-alpha; fixes bug 1322.
2596
2597   o Testsuite fixes:
2598     - In the util/threads test, no longer free the test_mutex before all
2599       worker threads have finished. Bugfix on 0.2.1.6-alpha.
2600     - The master thread could starve the worker threads quite badly on
2601       certain systems, causing them to run only partially in the allowed
2602       window. This resulted in test failures. Now the master thread sleeps
2603       occasionally for a few microseconds while the two worker-threads
2604       compete for the mutex. Bugfix on 0.2.0.1-alpha.
2605
2606
2607 Changes in version 0.2.2.10-alpha - 2010-03-07
2608   Tor 0.2.2.10-alpha fixes a regression introduced in 0.2.2.9-alpha that
2609   could prevent relays from guessing their IP address correctly. It also
2610   starts the groundwork for another client-side performance boost, since
2611   currently we're not making efficient use of relays that have both the
2612   Guard flag and the Exit flag.
2613
2614   o Major bugfixes:
2615     - Fix a regression from our patch for bug 1244 that caused relays
2616       to guess their IP address incorrectly if they didn't set Address
2617       in their torrc and/or their address fails to resolve. Bugfix on
2618       0.2.2.9-alpha; fixes bug 1269.
2619
2620   o Major features (performance):
2621     - Directory authorities now compute consensus weightings that instruct
2622       clients how to weight relays flagged as Guard, Exit, Guard+Exit,
2623       and no flag. Clients that use these weightings will distribute
2624       network load more evenly across these different relay types. The
2625       weightings are in the consensus so we can change them globally in
2626       the future. Extra thanks to "outofwords" for finding some nasty
2627       security bugs in the first implementation of this feature.
2628
2629   o Minor features (performance):
2630     - Always perform router selections using weighted relay bandwidth,
2631       even if we don't need a high capacity circuit at the time. Non-fast
2632       circuits now only differ from fast ones in that they can use relays
2633       not marked with the Fast flag. This "feature" could turn out to
2634       be a horrible bug; we should investigate more before it goes into
2635       a stable release.
2636
2637   o Minor features:
2638     - Allow disabling building of the manpages. Skipping the manpage
2639       speeds up the build considerably.
2640
2641   o Minor bugfixes (on 0.2.2.x):
2642     - Fix a memleak in the EXTENDCIRCUIT logic. Spotted by coverity.
2643       Bugfix on 0.2.2.9-alpha.
2644     - Disallow values larger than INT32_MAX for PerConnBWRate|Burst
2645       config option. Bugfix on 0.2.2.7-alpha.
2646     - Ship the asciidoc-helper file in the tarball, so that people can
2647       build from source if they want to, and touching the .1.txt files
2648       doesn't break the build. Bugfix on 0.2.2.9-alpha.
2649
2650   o Minor bugfixes (on 0.2.1.x or earlier):
2651     - Fix a dereference-then-NULL-check sequence when publishing
2652       descriptors. Bugfix on 0.2.1.5-alpha. Discovered by ekir; fixes
2653       bug 1255.
2654     - Fix another dereference-then-NULL-check sequence. Bugfix on
2655       0.2.1.14-rc. Discovered by ekir; fixes bug 1256.
2656     - Make sure we treat potentially not NUL-terminated strings correctly.
2657       Bugfix on 0.1.1.13-alpha. Discovered by rieo; fixes bug 1257.
2658
2659   o Code simplifications and refactoring:
2660     - Fix some urls in the exit notice file and make it XHTML1.1 strict
2661       compliant. Based on a patch from Christian Kujau.
2662     - Don't use sed in asciidoc-helper anymore.
2663     - Make the build process fail if asciidoc cannot be found and
2664       building with asciidoc isn't disabled.
2665
2666
2667 Changes in version 0.2.2.9-alpha - 2010-02-22
2668   Tor 0.2.2.9-alpha makes Tor work again on the latest OS X, updates the
2669   location of a directory authority, and cleans up a bunch of small bugs.
2670
2671   o Directory authority changes:
2672     - Change IP address for dannenberg (v3 directory authority), and
2673       remove moria2 (obsolete v1, v2 directory authority and v0 hidden
2674       service directory authority) from the list.
2675
2676   o Major bugfixes:
2677     - Make Tor work again on the latest OS X: when deciding whether to
2678       use strange flags to turn TLS renegotiation on, detect the OpenSSL
2679       version at run-time, not compile time. We need to do this because
2680       Apple doesn't update its dev-tools headers when it updates its
2681       libraries in a security patch.
2682     - Fix a potential buffer overflow in lookup_last_hid_serv_request()
2683       that could happen on 32-bit platforms with 64-bit time_t. Also fix
2684       a memory leak when requesting a hidden service descriptor we've
2685       requested before. Fixes bug 1242, bugfix on 0.2.0.18-alpha. Found
2686       by aakova.
2687     - Authorities could be tricked into giving out the Exit flag to relays
2688       that didn't allow exiting to any ports. This bug could screw
2689       with load balancing and stats. Bugfix on 0.1.1.6-alpha; fixes bug
2690       1238. Bug discovered by Martin Kowalczyk.
2691     - When freeing a session key, zero it out completely. We only zeroed
2692       the first ptrsize bytes. Bugfix on 0.0.2pre8. Discovered and
2693       patched by ekir. Fixes bug 1254.
2694
2695   o Minor bugfixes:
2696     - Fix static compilation by listing the openssl libraries in the right
2697       order. Bugfix on Tor 0.2.2.8-alpha; fixes bug 1237.
2698     - Resume handling .exit hostnames in a special way: originally we
2699       stripped the .exit part and used the requested exit relay. In
2700       0.2.2.1-alpha we stopped treating them in any special way, meaning
2701       if you use a .exit address then Tor will pass it on to the exit
2702       relay. Now we reject the .exit stream outright, since that behavior
2703       might be more expected by the user. Found and diagnosed by Scott
2704       Bennett and Downie on or-talk.
2705     - Don't spam the controller with events when we have no file
2706       descriptors available. Bugfix on 0.2.1.5-alpha. (Rate-limiting
2707       for log messages was already solved from bug 748.)
2708     - Avoid a bogus overlapped memcpy in tor_addr_copy(). Reported by
2709       "memcpyfail".
2710     - Make the DNSPort option work with libevent 2.x. Don't alter the
2711       behaviour for libevent 1.x. Fixes bug 1143. Found by SwissTorExit.
2712     - Emit a GUARD DROPPED controller event for a case we missed.
2713     - Make more fields in the controller protocol case-insensitive, since
2714       control-spec.txt said they were.
2715     - Refactor resolve_my_address() to not use gethostbyname() anymore.
2716       Fixes bug 1244; bugfix on 0.0.2pre25. Reported by Mike Mestnik.
2717     - Fix a spec conformance issue: the network-status-version token
2718       must be the first token in a v3 consensus or vote. Discovered by
2719       parakeep. Bugfix on 0.2.0.3-alpha.
2720
2721   o Code simplifications and refactoring:
2722     - Generate our manpage and HTML documentation using Asciidoc. This
2723       change should make it easier to maintain the documentation, and
2724       produce nicer HTML.
2725     - Remove the --enable-iphone option. According to reports from Marco
2726       Bonetti, Tor builds fine without any special tweaking on recent
2727       iPhone SDK versions.
2728     - Removed some unnecessary files from the source distribution. The
2729       AUTHORS file has now been merged into the people page on the
2730       website. The roadmaps and design doc can now be found in the
2731       projects directory in svn.
2732     - Enabled various circuit build timeout constants to be controlled
2733       by consensus parameters. Also set better defaults for these
2734       parameters based on experimentation on broadband and simulated
2735       high latency links.
2736
2737   o Minor features:
2738     - The 'EXTENDCIRCUIT' control port command can now be used with
2739       a circ id of 0 and no path. This feature will cause Tor to build
2740       a new 'fast' general purpose circuit using its own path selection
2741       algorithms.
2742     - Added a BUILDTIMEOUT_SET controller event to describe changes
2743       to the circuit build timeout.
2744     - Future-proof the controller protocol a bit by ignoring keyword
2745       arguments we do not recognize.
2746     - Expand homedirs passed to tor-checkkey. This should silence a
2747       coverity complaint about passing a user-supplied string into
2748       open() without checking it.
2749
2750
2751 Changes in version 0.2.1.25 - 2010-03-16
2752   Tor 0.2.1.25 fixes a regression introduced in 0.2.1.23 that could
2753   prevent relays from guessing their IP address correctly. It also fixes
2754   several minor potential security bugs.
2755
2756   o Major bugfixes:
2757     - Fix a regression from our patch for bug 1244 that caused relays
2758       to guess their IP address incorrectly if they didn't set Address
2759       in their torrc and/or their address fails to resolve. Bugfix on
2760       0.2.1.23; fixes bug 1269.
2761     - When freeing a session key, zero it out completely. We only zeroed
2762       the first ptrsize bytes. Bugfix on 0.0.2pre8. Discovered and
2763       patched by ekir. Fixes bug 1254.
2764
2765   o Minor bugfixes:
2766     - Fix a dereference-then-NULL-check sequence when publishing
2767       descriptors. Bugfix on 0.2.1.5-alpha. Discovered by ekir; fixes
2768       bug 1255.
2769     - Fix another dereference-then-NULL-check sequence. Bugfix on
2770       0.2.1.14-rc. Discovered by ekir; fixes bug 1256.
2771     - Make sure we treat potentially not NUL-terminated strings correctly.
2772       Bugfix on 0.1.1.13-alpha. Discovered by rieo; fixes bug 1257.
2773
2774
2775
2776 Changes in version 0.2.1.24 - 2010-02-21
2777   Tor 0.2.1.24 makes Tor work again on the latest OS X -- this time
2778   for sure!
2779
2780   o Minor bugfixes:
2781     - Work correctly out-of-the-box with even more vendor-patched versions
2782       of OpenSSL. In particular, make it so Debian and OS X don't need
2783       customized patches to run/build.
2784
2785
2786 Changes in version 0.2.1.23 - 2010-02-13
2787   Tor 0.2.1.23 fixes a huge client-side performance bug, makes Tor work
2788   again on the latest OS X, and updates the location of a directory
2789   authority.
2790
2791   o Major bugfixes (performance):
2792     - We were selecting our guards uniformly at random, and then weighting
2793       which of our guards we'd use uniformly at random. This imbalance
2794       meant that Tor clients were severely limited on throughput (and
2795       probably latency too) by the first hop in their circuit. Now we
2796       select guards weighted by currently advertised bandwidth. We also
2797       automatically discard guards picked using the old algorithm. Fixes
2798       bug 1217; bugfix on 0.2.1.3-alpha. Found by Mike Perry.
2799
2800   o Major bugfixes:
2801     - Make Tor work again on the latest OS X: when deciding whether to
2802       use strange flags to turn TLS renegotiation on, detect the OpenSSL
2803       version at run-time, not compile time. We need to do this because
2804       Apple doesn't update its dev-tools headers when it updates its
2805       libraries in a security patch.
2806     - Fix a potential buffer overflow in lookup_last_hid_serv_request()
2807       that could happen on 32-bit platforms with 64-bit time_t. Also fix
2808       a memory leak when requesting a hidden service descriptor we've
2809       requested before. Fixes bug 1242, bugfix on 0.2.0.18-alpha. Found
2810       by aakova.
2811
2812   o Directory authority changes:
2813     - Change IP address for dannenberg (v3 directory authority), and
2814       remove moria2 (obsolete v1, v2 directory authority and v0 hidden
2815       service directory authority) from the list.
2816
2817   o Minor bugfixes:
2818     - Refactor resolve_my_address() to not use gethostbyname() anymore.
2819       Fixes bug 1244; bugfix on 0.0.2pre25. Reported by Mike Mestnik.
2820
2821   o Minor features:
2822     - Avoid a mad rush at the beginning of each month when each client
2823       rotates half of its guards. Instead we spread the rotation out
2824       throughout the month, but we still avoid leaving a precise timestamp
2825       in the state file about when we first picked the guard. Improves
2826       over the behavior introduced in 0.1.2.17.
2827
2828
2829 Changes in version 0.2.2.8-alpha - 2010-01-26
2830   Tor 0.2.2.8-alpha fixes a crash bug in 0.2.2.7-alpha that has been
2831   causing bridge relays to disappear. If you're running a bridge,
2832   please upgrade.
2833
2834   o Major bugfixes:
2835     - Fix a memory corruption bug on bridges that occured during the
2836       inclusion of stats data in extra-info descriptors. Also fix the
2837       interface for geoip_get_bridge_stats* to prevent similar bugs in
2838       the future. Diagnosis by Tas, patch by Karsten and Sebastian.
2839       Fixes bug 1208; bugfix on 0.2.2.7-alpha.
2840
2841   o Minor bugfixes:
2842     - Ignore OutboundBindAddress when connecting to localhost.
2843       Connections to localhost need to come _from_ localhost, or else
2844       local servers (like DNS and outgoing HTTP/SOCKS proxies) will often
2845       refuse to listen.
2846
2847
2848 Changes in version 0.2.2.7-alpha - 2010-01-19
2849   Tor 0.2.2.7-alpha fixes a huge client-side performance bug, as well
2850   as laying the groundwork for further relay-side performance fixes. It
2851   also starts cleaning up client behavior with respect to the EntryNodes,
2852   ExitNodes, and StrictNodes config options.
2853
2854   This release also rotates two directory authority keys, due to a
2855   security breach of some of the Torproject servers.
2856
2857   o Directory authority changes:
2858     - Rotate keys (both v3 identity and relay identity) for moria1
2859       and gabelmoo.
2860
2861   o Major features (performance):
2862     - We were selecting our guards uniformly at random, and then weighting
2863       which of our guards we'd use uniformly at random. This imbalance
2864       meant that Tor clients were severely limited on throughput (and
2865       probably latency too) by the first hop in their circuit. Now we
2866       select guards weighted by currently advertised bandwidth. We also
2867       automatically discard guards picked using the old algorithm. Fixes
2868       bug 1217; bugfix on 0.2.1.3-alpha. Found by Mike Perry.
2869     - When choosing which cells to relay first, relays can now favor
2870       circuits that have been quiet recently, to provide lower latency
2871       for low-volume circuits. By default, relays enable or disable this
2872       feature based on a setting in the consensus. You can override
2873       this default by using the new "CircuitPriorityHalflife" config
2874       option. Design and code by Ian Goldberg, Can Tang, and Chris
2875       Alexander.
2876     - Add separate per-conn write limiting to go with the per-conn read
2877       limiting. We added a global write limit in Tor 0.1.2.5-alpha,
2878       but never per-conn write limits.
2879     - New consensus params "bwconnrate" and "bwconnburst" to let us
2880       rate-limit client connections as they enter the network. It's
2881       controlled in the consensus so we can turn it on and off for
2882       experiments. It's starting out off. Based on proposal 163.
2883
2884   o Major features (relay selection options):
2885     - Switch to a StrictNodes config option, rather than the previous
2886       "StrictEntryNodes" / "StrictExitNodes" separation that was missing a
2887       "StrictExcludeNodes" option.
2888     - If EntryNodes, ExitNodes, ExcludeNodes, or ExcludeExitNodes
2889       change during a config reload, mark and discard all our origin
2890       circuits. This fix should address edge cases where we change the
2891       config options and but then choose a circuit that we created before
2892       the change.
2893     - If EntryNodes or ExitNodes are set, be more willing to use an
2894       unsuitable (e.g. slow or unstable) circuit. The user asked for it,
2895       they get it.
2896     - Make EntryNodes config option much more aggressive even when
2897       StrictNodes is not set. Before it would prepend your requested
2898       entrynodes to your list of guard nodes, but feel free to use others
2899       after that. Now it chooses only from your EntryNodes if any of
2900       those are available, and only falls back to others if a) they're
2901       all down and b) StrictNodes is not set.
2902     - Now we refresh your entry guards from EntryNodes at each consensus
2903       fetch -- rather than just at startup and then they slowly rot as
2904       the network changes.
2905
2906   o Major bugfixes:
2907     - Stop bridge directory authorities from answering dbg-stability.txt
2908       directory queries, which would let people fetch a list of all
2909       bridge identities they track. Bugfix on 0.2.1.6-alpha.
2910
2911   o Minor features:
2912     - Log a notice when we get a new control connection. Now it's easier
2913       for security-conscious users to recognize when a local application
2914       is knocking on their controller door. Suggested by bug 1196.
2915     - New config option "CircuitStreamTimeout" to override our internal
2916       timeout schedule for how many seconds until we detach a stream from
2917       a circuit and try a new circuit. If your network is particularly
2918       slow, you might want to set this to a number like 60.
2919     - New controller command "getinfo config-text". It returns the
2920       contents that Tor would write if you send it a SAVECONF command,
2921       so the controller can write the file to disk itself.
2922     - New options for SafeLogging to allow scrubbing only log messages
2923       generated while acting as a relay.
2924     - Ship the bridges spec file in the tarball too.
2925     - Avoid a mad rush at the beginning of each month when each client
2926       rotates half of its guards. Instead we spread the rotation out
2927       throughout the month, but we still avoid leaving a precise timestamp
2928       in the state file about when we first picked the guard. Improves
2929       over the behavior introduced in 0.1.2.17.
2930
2931   o Minor bugfixes (compiling):
2932     - Fix compilation on OS X 10.3, which has a stub mlockall() but
2933       hides it. Bugfix on 0.2.2.6-alpha.
2934     - Fix compilation on Solaris by removing support for the
2935       DisableAllSwap config option. Solaris doesn't have an rlimit for
2936       mlockall, so we cannot use it safely. Fixes bug 1198; bugfix on
2937       0.2.2.6-alpha.
2938
2939   o Minor bugfixes (crashes):
2940     - Do not segfault when writing buffer stats when we haven't observed
2941       a single circuit to report about. Found by Fabian Lanze. Bugfix on
2942       0.2.2.1-alpha.
2943     - If we're in the pathological case where there's no exit bandwidth
2944       but there is non-exit bandwidth, or no guard bandwidth but there
2945       is non-guard bandwidth, don't crash during path selection. Bugfix
2946       on 0.2.0.3-alpha.
2947     - Fix an impossible-to-actually-trigger buffer overflow in relay
2948       descriptor generation. Bugfix on 0.1.0.15.
2949
2950   o Minor bugfixes (privacy):
2951     - Fix an instance where a Tor directory mirror might accidentally
2952       log the IP address of a misbehaving Tor client. Bugfix on
2953       0.1.0.1-rc.
2954     - Don't list Windows capabilities in relay descriptors. We never made
2955       use of them, and maybe it's a bad idea to publish them. Bugfix
2956       on 0.1.1.8-alpha.
2957
2958   o Minor bugfixes (other):
2959     - Resolve an edge case in path weighting that could make us misweight
2960       our relay selection. Fixes bug 1203; bugfix on 0.0.8rc1.
2961     - Fix statistics on client numbers by country as seen by bridges that
2962       were broken in 0.2.2.1-alpha. Also switch to reporting full 24-hour
2963       intervals instead of variable 12-to-48-hour intervals.
2964     - After we free an internal connection structure, overwrite it
2965       with a different memory value than we use for overwriting a freed
2966       internal circuit structure. Should help with debugging. Suggested
2967       by bug 1055.
2968     - Update our OpenSSL 0.9.8l fix so that it works with OpenSSL 0.9.8m
2969       too.
2970
2971   o Removed features:
2972     - Remove the HSAuthorityRecordStats option that version 0 hidden
2973       service authorities could have used to track statistics of overall
2974       hidden service usage.
2975
2976
2977 Changes in version 0.2.1.22 - 2010-01-19
2978   Tor 0.2.1.22 fixes a critical privacy problem in bridge directory
2979   authorities -- it would tell you its whole history of bridge descriptors
2980   if you make the right directory request. This stable update also
2981   rotates two of the seven v3 directory authority keys and locations.
2982
2983   o Directory authority changes:
2984     - Rotate keys (both v3 identity and relay identity) for moria1
2985       and gabelmoo.
2986
2987   o Major bugfixes:
2988     - Stop bridge directory authorities from answering dbg-stability.txt
2989       directory queries, which would let people fetch a list of all
2990       bridge identities they track. Bugfix on 0.2.1.6-alpha.
2991
2992
2993 Changes in version 0.2.1.21 - 2009-12-21
2994   Tor 0.2.1.21 fixes an incompatibility with the most recent OpenSSL
2995   library. If you use Tor on Linux / Unix and you're getting SSL
2996   renegotiation errors, upgrading should help. We also recommend an
2997   upgrade if you're an exit relay.
2998
2999   o Major bugfixes:
3000     - Work around a security feature in OpenSSL 0.9.8l that prevents our
3001       handshake from working unless we explicitly tell OpenSSL that we
3002       are using SSL renegotiation safely. We are, of course, but OpenSSL
3003       0.9.8l won't work unless we say we are.
3004     - Avoid crashing if the client is trying to upload many bytes and the
3005       circuit gets torn down at the same time, or if the flip side
3006       happens on the exit relay. Bugfix on 0.2.0.1-alpha; fixes bug 1150.
3007
3008   o Minor bugfixes:
3009     - Do not refuse to learn about authority certs and v2 networkstatus
3010       documents that are older than the latest consensus. This bug might
3011       have degraded client bootstrapping. Bugfix on 0.2.0.10-alpha.
3012       Spotted and fixed by xmux.
3013     - Fix a couple of very-hard-to-trigger memory leaks, and one hard-to-
3014       trigger platform-specific option misparsing case found by Coverity
3015       Scan.
3016     - Fix a compilation warning on Fedora 12 by removing an impossible-to-
3017       trigger assert. Fixes bug 1173.
3018
3019
3020 Changes in version 0.2.2.6-alpha - 2009-11-19
3021   Tor 0.2.2.6-alpha lays the groundwork for many upcoming features:
3022   support for the new lower-footprint "microdescriptor" directory design,
3023   future-proofing our consensus format against new hash functions or
3024   other changes, and an Android port. It also makes Tor compatible with
3025   the upcoming OpenSSL 0.9.8l release, and fixes a variety of bugs.
3026
3027   o Major features:
3028     - Directory authorities can now create, vote on, and serve multiple
3029       parallel formats of directory data as part of their voting process.
3030       Partially implements Proposal 162: "Publish the consensus in
3031       multiple flavors".
3032     - Directory authorities can now agree on and publish small summaries
3033       of router information that clients can use in place of regular
3034       server descriptors. This transition will eventually allow clients
3035       to use far less bandwidth for downloading information about the
3036       network. Begins the implementation of Proposal 158: "Clients
3037       download consensus + microdescriptors".
3038     - The directory voting system is now extensible to use multiple hash
3039       algorithms for signatures and resource selection. Newer formats
3040       are signed with SHA256, with a possibility for moving to a better
3041       hash algorithm in the future.
3042     - New DisableAllSwap option. If set to 1, Tor will attempt to lock all
3043       current and future memory pages via mlockall(). On supported
3044       platforms (modern Linux and probably BSD but not Windows or OS X),
3045       this should effectively disable any and all attempts to page out
3046       memory. This option requires that you start your Tor as root --
3047       if you use DisableAllSwap, please consider using the User option
3048       to properly reduce the privileges of your Tor.
3049     - Numerous changes, bugfixes, and workarounds from Nathan Freitas
3050       to help Tor build correctly for Android phones.
3051
3052   o Major bugfixes:
3053     - Work around a security feature in OpenSSL 0.9.8l that prevents our
3054       handshake from working unless we explicitly tell OpenSSL that we
3055       are using SSL renegotiation safely. We are, but OpenSSL 0.9.8l
3056       won't work unless we say we are.
3057
3058   o Minor bugfixes:
3059     - Fix a crash bug when trying to initialize the evdns module in
3060       Libevent 2. Bugfix on 0.2.1.16-rc.
3061     - Stop logging at severity 'warn' when some other Tor client tries
3062       to establish a circuit with us using weak DH keys. It's a protocol
3063       violation, but that doesn't mean ordinary users need to hear about
3064       it. Fixes the bug part of bug 1114. Bugfix on 0.1.0.13.
3065     - Do not refuse to learn about authority certs and v2 networkstatus
3066       documents that are older than the latest consensus. This bug might
3067       have degraded client bootstrapping. Bugfix on 0.2.0.10-alpha.
3068       Spotted and fixed by xmux.
3069     - Fix numerous small code-flaws found by Coverity Scan Rung 3.
3070     - If all authorities restart at once right before a consensus vote,
3071       nobody will vote about "Running", and clients will get a consensus
3072       with no usable relays. Instead, authorities refuse to build a
3073       consensus if this happens. Bugfix on 0.2.0.10-alpha; fixes bug 1066.
3074     - If your relay can't keep up with the number of incoming create
3075       cells, it would log one warning per failure into your logs. Limit
3076       warnings to 1 per minute. Bugfix on 0.0.2pre10; fixes bug 1042.
3077     - Bridges now use "reject *:*" as their default exit policy. Bugfix
3078       on 0.2.0.3-alpha; fixes bug 1113.
3079     - Fix a memory leak on directory authorities during voting that was
3080       introduced in 0.2.2.1-alpha. Found via valgrind.
3081
3082
3083 Changes in version 0.2.1.20 - 2009-10-15
3084   Tor 0.2.1.20 fixes a crash bug when you're accessing many hidden
3085   services at once, prepares for more performance improvements, and
3086   fixes a bunch of smaller bugs.
3087
3088   The Windows and OS X bundles also include a more recent Vidalia,
3089   and switch from Privoxy to Polipo.
3090
3091   The OS X installers are now drag and drop. It's best to un-install
3092   Tor/Vidalia and then install this new bundle, rather than upgrade. If
3093   you want to upgrade, you'll need to update the paths for Tor and Polipo
3094   in the Vidalia Settings window.
3095
3096   o Major bugfixes:
3097     - Send circuit or stream sendme cells when our window has decreased
3098       by 100 cells, not when it has decreased by 101 cells. Bug uncovered
3099       by Karsten when testing the "reduce circuit window" performance
3100       patch. Bugfix on the 54th commit on Tor -- from July 2002,
3101       before the release of Tor 0.0.0. This is the new winner of the
3102       oldest-bug prize.
3103     - Fix a remotely triggerable memory leak when a consensus document
3104       contains more than one signature from the same voter. Bugfix on
3105       0.2.0.3-alpha.
3106     - Avoid segfault in rare cases when finishing an introduction circuit
3107       as a client and finding out that we don't have an introduction key
3108       for it. Fixes bug 1073. Reported by Aaron Swartz.
3109
3110   o Major features:
3111     - Tor now reads the "circwindow" parameter out of the consensus,
3112       and uses that value for its circuit package window rather than the
3113       default of 1000 cells. Begins the implementation of proposal 168.
3114
3115   o New directory authorities:
3116     - Set up urras (run by Jacob Appelbaum) as the seventh v3 directory
3117       authority.
3118     - Move moria1 and tonga to alternate IP addresses.
3119
3120   o Minor bugfixes:
3121     - Fix a signed/unsigned compile warning in 0.2.1.19.
3122     - Fix possible segmentation fault on directory authorities. Bugfix on
3123       0.2.1.14-rc.
3124     - Fix an extremely rare infinite recursion bug that could occur if
3125       we tried to log a message after shutting down the log subsystem.
3126       Found by Matt Edman. Bugfix on 0.2.0.16-alpha.
3127     - Fix an obscure bug where hidden services on 64-bit big-endian
3128       systems might mis-read the timestamp in v3 introduce cells, and
3129       refuse to connect back to the client. Discovered by "rotor".
3130       Bugfix on 0.2.1.6-alpha.
3131     - We were triggering a CLOCK_SKEW controller status event whenever
3132       we connect via the v2 connection protocol to any relay that has
3133       a wrong clock. Instead, we should only inform the controller when
3134       it's a trusted authority that claims our clock is wrong. Bugfix
3135       on 0.2.0.20-rc; starts to fix bug 1074. Reported by SwissTorExit.
3136     - We were telling the controller about CHECKING_REACHABILITY and
3137       REACHABILITY_FAILED status events whenever we launch a testing
3138       circuit or notice that one has failed. Instead, only tell the
3139       controller when we want to inform the user of overall success or
3140       overall failure. Bugfix on 0.1.2.6-alpha. Fixes bug 1075. Reported
3141       by SwissTorExit.
3142     - Don't warn when we're using a circuit that ends with a node
3143       excluded in ExcludeExitNodes, but the circuit is not used to access
3144       the outside world. This should help fix bug 1090. Bugfix on
3145       0.2.1.6-alpha.
3146     - Work around a small memory leak in some versions of OpenSSL that
3147       stopped the memory used by the hostname TLS extension from being
3148       freed.
3149
3150   o Minor features:
3151     - Add a "getinfo status/accepted-server-descriptor" controller
3152       command, which is the recommended way for controllers to learn
3153       whether our server descriptor has been successfully received by at
3154       least on directory authority. Un-recommend good-server-descriptor
3155       getinfo and status events until we have a better design for them.
3156
3157
3158 Changes in version 0.2.2.5-alpha - 2009-10-11
3159   Tor 0.2.2.5-alpha fixes a few compile problems in 0.2.2.4-alpha.
3160
3161   o Major bugfixes:
3162     - Make the tarball compile again. Oops. Bugfix on 0.2.2.4-alpha.
3163
3164   o New directory authorities:
3165     - Move dizum to an alternate IP address.
3166
3167
3168 Changes in version 0.2.2.4-alpha - 2009-10-10
3169   Tor 0.2.2.4-alpha fixes more crash bugs in 0.2.2.2-alpha. It also
3170   introduces a new unit test framework, shifts directry authority
3171   addresses around to reduce the impact from recent blocking events,
3172   and fixes a few smaller bugs.
3173
3174   o Major bugfixes:
3175     - Fix several more asserts in the circuit_build_times code, for
3176       example one that causes Tor to fail to start once we have
3177       accumulated 5000 build times in the state file. Bugfixes on
3178       0.2.2.2-alpha; fixes bug 1108.
3179
3180   o New directory authorities:
3181     - Move moria1 and Tonga to alternate IP addresses.
3182
3183   o Minor features:
3184     - Log SSL state transitions at debug level during handshake, and
3185       include SSL states in error messages. This may help debug future
3186       SSL handshake issues.
3187     - Add a new "Handshake" log domain for activities that happen
3188       during the TLS handshake.
3189     - Revert to the "June 3 2009" ip-to-country file. The September one
3190       seems to have removed most US IP addresses.
3191     - Directory authorities now reject Tor relays with versions less than
3192       0.1.2.14. This step cuts out four relays from the current network,
3193       none of which are very big.
3194
3195   o Minor bugfixes:
3196     - Fix a couple of smaller issues with gathering statistics. Bugfixes
3197       on 0.2.2.1-alpha.
3198     - Fix two memory leaks in the error case of
3199       circuit_build_times_parse_state(). Bugfix on 0.2.2.2-alpha.
3200     - Don't count one-hop circuits when we're estimating how long it
3201       takes circuits to build on average. Otherwise we'll set our circuit
3202       build timeout lower than we should. Bugfix on 0.2.2.2-alpha.
3203     - Directory authorities no longer change their opinion of, or vote on,
3204       whether a router is Running, unless they have themselves been
3205       online long enough to have some idea. Bugfix on 0.2.0.6-alpha.
3206       Fixes bug 1023.
3207
3208   o Code simplifications and refactoring:
3209     - Revise our unit tests to use the "tinytest" framework, so we
3210       can run tests in their own processes, have smarter setup/teardown
3211       code, and so on. The unit test code has moved to its own
3212       subdirectory, and has been split into multiple modules.
3213
3214
3215 Changes in version 0.2.2.3-alpha - 2009-09-23
3216   Tor 0.2.2.3-alpha fixes a few crash bugs in 0.2.2.2-alpha.
3217
3218   o Major bugfixes:
3219     - Fix an overzealous assert in our new circuit build timeout code.
3220       Bugfix on 0.2.2.2-alpha; fixes bug 1103.
3221
3222   o Minor bugfixes:
3223     - If the networkstatus consensus tells us that we should use a
3224       negative circuit package window, ignore it. Otherwise we'll
3225       believe it and then trigger an assert. Bugfix on 0.2.2.2-alpha.
3226
3227
3228 Changes in version 0.2.2.2-alpha - 2009-09-21
3229   Tor 0.2.2.2-alpha introduces our latest performance improvement for
3230   clients: Tor tracks the average time it takes to build a circuit, and
3231   avoids using circuits that take too long to build. For fast connections,
3232   this feature can cut your expected latency in half. For slow or flaky
3233   connections, it could ruin your Tor experience. Let us know if it does!
3234
3235   o Major features:
3236     - Tor now tracks how long it takes to build client-side circuits
3237       over time, and adapts its timeout to local network performance.
3238       Since a circuit that takes a long time to build will also provide
3239       bad performance, we get significant latency improvements by
3240       discarding the slowest 20% of circuits. Specifically, Tor creates
3241       circuits more aggressively than usual until it has enough data
3242       points for a good timeout estimate. Implements proposal 151.
3243       We are especially looking for reports (good and bad) from users with
3244       both EDGE and broadband connections that can move from broadband
3245       to EDGE and find out if the build-time data in the .tor/state gets
3246       reset without loss of Tor usability. You should also see a notice
3247       log message telling you that Tor has reset its timeout.
3248     - Directory authorities can now vote on arbitary integer values as
3249       part of the consensus process. This is designed to help set
3250       network-wide parameters. Implements proposal 167.
3251     - Tor now reads the "circwindow" parameter out of the consensus,
3252       and uses that value for its circuit package window rather than the
3253       default of 1000 cells. Begins the implementation of proposal 168.
3254
3255   o Major bugfixes:
3256     - Fix a remotely triggerable memory leak when a consensus document
3257       contains more than one signature from the same voter. Bugfix on
3258       0.2.0.3-alpha.
3259
3260   o Minor bugfixes:
3261     - Fix an extremely rare infinite recursion bug that could occur if
3262       we tried to log a message after shutting down the log subsystem.
3263       Found by Matt Edman. Bugfix on 0.2.0.16-alpha.
3264     - Fix parsing for memory or time units given without a space between
3265       the number and the unit. Bugfix on 0.2.2.1-alpha; fixes bug 1076.
3266     - A networkstatus vote must contain exactly one signature. Spec
3267       conformance issue. Bugfix on 0.2.0.3-alpha.
3268     - Fix an obscure bug where hidden services on 64-bit big-endian
3269       systems might mis-read the timestamp in v3 introduce cells, and
3270       refuse to connect back to the client. Discovered by "rotor".
3271       Bugfix on 0.2.1.6-alpha.
3272     - We were triggering a CLOCK_SKEW controller status event whenever
3273       we connect via the v2 connection protocol to any relay that has
3274       a wrong clock. Instead, we should only inform the controller when
3275       it's a trusted authority that claims our clock is wrong. Bugfix
3276       on 0.2.0.20-rc; starts to fix bug 1074. Reported by SwissTorExit.
3277     - We were telling the controller about CHECKING_REACHABILITY and
3278       REACHABILITY_FAILED status events whenever we launch a testing
3279       circuit or notice that one has failed. Instead, only tell the
3280       controller when we want to inform the user of overall success or
3281       overall failure. Bugfix on 0.1.2.6-alpha. Fixes bug 1075. Reported
3282       by SwissTorExit.
3283     - Don't warn when we're using a circuit that ends with a node
3284       excluded in ExcludeExitNodes, but the circuit is not used to access
3285       the outside world. This should help fix bug 1090, but more problems
3286       remain. Bugfix on 0.2.1.6-alpha.
3287     - Work around a small memory leak in some versions of OpenSSL that
3288       stopped the memory used by the hostname TLS extension from being
3289       freed.
3290     - Make our 'torify' script more portable; if we have only one of
3291       'torsocks' or 'tsocks' installed, don't complain to the user;
3292       and explain our warning about tsocks better.
3293
3294   o Minor features:
3295     - Add a "getinfo status/accepted-server-descriptor" controller
3296       command, which is the recommended way for controllers to learn
3297       whether our server descriptor has been successfully received by at
3298       least on directory authority. Un-recommend good-server-descriptor
3299       getinfo and status events until we have a better design for them.
3300     - Update to the "September 4 2009" ip-to-country file.
3301
3302
3303 Changes in version 0.2.2.1-alpha - 2009-08-26
3304   Tor 0.2.2.1-alpha disables ".exit" address notation by default, allows
3305   Tor clients to bootstrap on networks where only port 80 is reachable,
3306   makes it more straightforward to support hardware crypto accelerators,
3307   and starts the groundwork for gathering stats safely at relays.
3308
3309   o Security fixes:
3310     - Start the process of disabling ".exit" address notation, since it
3311       can be used for a variety of esoteric application-level attacks
3312       on users. To reenable it, set "AllowDotExit 1" in your torrc. Fix
3313       on 0.0.9rc5.
3314
3315   o New directory authorities:
3316     - Set up urras (run by Jacob Appelbaum) as the seventh v3 directory
3317       authority.
3318
3319   o Major features:
3320     - New AccelName and AccelDir options add support for dynamic OpenSSL
3321       hardware crypto acceleration engines.
3322     - Tor now supports tunneling all of its outgoing connections over
3323       a SOCKS proxy, using the SOCKS4Proxy and/or SOCKS5Proxy
3324       configuration options. Code by Christopher Davis.
3325
3326   o Major bugfixes:
3327     - Send circuit or stream sendme cells when our window has decreased
3328       by 100 cells, not when it has decreased by 101 cells. Bug uncovered
3329       by Karsten when testing the "reduce circuit window" performance
3330       patch. Bugfix on the 54th commit on Tor -- from July 2002,
3331       before the release of Tor 0.0.0. This is the new winner of the
3332       oldest-bug prize.
3333
3334   o New options for gathering stats safely:
3335     - Directory mirrors that set "DirReqStatistics 1" write statistics
3336       about directory requests to disk every 24 hours. As compared to the
3337       --enable-geoip-stats flag in 0.2.1.x, there are a few improvements:
3338       1) stats are written to disk exactly every 24 hours; 2) estimated
3339       shares of v2 and v3 requests are determined as mean values, not at
3340       the end of a measurement period; 3) unresolved requests are listed
3341       with country code '??'; 4) directories also measure download times.
3342     - Exit nodes that set "ExitPortStatistics 1" write statistics on the
3343       number of exit streams and transferred bytes per port to disk every
3344       24 hours.
3345     - Relays that set "CellStatistics 1" write statistics on how long
3346       cells spend in their circuit queues to disk every 24 hours.
3347     - Entry nodes that set "EntryStatistics 1" write statistics on the
3348       rough number and origins of connecting clients to disk every 24
3349       hours.
3350     - Relays that write any of the above statistics to disk and set
3351       "ExtraInfoStatistics 1" include the past 24 hours of statistics in
3352       their extra-info documents.
3353
3354   o Minor features:
3355     - New --digests command-line switch to output the digests of the
3356       source files Tor was built with.
3357     - The "torify" script now uses torsocks where available.
3358     - The memarea code now uses a sentinel value at the end of each area
3359       to make sure nothing writes beyond the end of an area. This might
3360       help debug some conceivable causes of bug 930.
3361     - Time and memory units in the configuration file can now be set to
3362       fractional units. For example, "2.5 GB" is now a valid value for
3363       AccountingMax.
3364     - Certain Tor clients (such as those behind check.torproject.org) may
3365       want to fetch the consensus in an extra early manner. To enable this
3366       a user may now set FetchDirInfoExtraEarly to 1. This also depends on
3367       setting FetchDirInfoEarly to 1. Previous behavior will stay the same
3368       as only certain clients who must have this information sooner should
3369       set this option.
3370     - Instead of adding the svn revision to the Tor version string, report
3371       the git commit (when we're building from a git checkout).
3372
3373   o Minor bugfixes:
3374     - If any of the v3 certs we download are unparseable, we should
3375       actually notice the failure so we don't retry indefinitely. Bugfix
3376       on 0.2.0.x; reported by "rotator".
3377     - If the cached cert file is unparseable, warn but don't exit.
3378     - Fix possible segmentation fault on directory authorities. Bugfix on
3379       0.2.1.14-rc.
3380     - When Tor fails to parse a descriptor of any kind, dump it to disk.
3381       Might help diagnosing bug 1051.
3382
3383   o Deprecated and removed features:
3384     - The controller no longer accepts the old obsolete "addr-mappings/"
3385       or "unregistered-servers-" GETINFO values.
3386     - Hidden services no longer publish version 0 descriptors, and clients
3387       do not request or use version 0 descriptors. However, the old hidden
3388       service authorities still accept and serve version 0 descriptors
3389       when contacted by older hidden services/clients.
3390     - The EXTENDED_EVENTS and VERBOSE_NAMES controller features are now
3391       always on; using them is necessary for correct forward-compatible
3392       controllers.
3393     - Remove support for .noconnect style addresses. Nobody was using
3394       them, and they provided another avenue for detecting Tor users
3395       via application-level web tricks.
3396
3397   o Packaging changes:
3398     - Upgrade Vidalia from 0.1.15 to 0.2.3 in the Windows and OS X
3399       installer bundles. See
3400       https://trac.vidalia-project.net/browser/vidalia/tags/vidalia-0.2.3/CHANGELOG
3401       for details of what's new in Vidalia 0.2.3.
3402     - Windows Vidalia Bundle: update Privoxy from 3.0.6 to 3.0.14-beta.
3403     - OS X Vidalia Bundle: move to Polipo 1.0.4 with Tor specific
3404       configuration file, rather than the old Privoxy.
3405     - OS X Vidalia Bundle: Vidalia, Tor, and Polipo are compiled as
3406       x86-only for better compatibility with OS X 10.6, aka Snow Leopard.
3407     - OS X Tor Expert Bundle: Tor is compiled as x86-only for
3408       better compatibility with OS X 10.6, aka Snow Leopard.
3409     - OS X Vidalia Bundle: The multi-package installer is now replaced
3410       by a simple drag and drop to the /Applications folder. This change
3411       occurred with the upgrade to Vidalia 0.2.3.
3412
3413
3414 Changes in version 0.2.1.19 - 2009-07-28
3415   Tor 0.2.1.19 fixes a major bug with accessing and providing hidden
3416   services on Tor 0.2.1.3-alpha through 0.2.1.18.
3417
3418   o Major bugfixes:
3419     - Make accessing hidden services on 0.2.1.x work right again.
3420       Bugfix on 0.2.1.3-alpha; workaround for bug 1038. Diagnosis and
3421       part of patch provided by "optimist".
3422
3423   o Minor features:
3424     - When a relay/bridge is writing out its identity key fingerprint to
3425       the "fingerprint" file and to its logs, write it without spaces. Now
3426       it will look like the fingerprints in our bridges documentation,
3427       and confuse fewer users.
3428
3429   o Minor bugfixes:
3430     - Relays no longer publish a new server descriptor if they change
3431       their MaxAdvertisedBandwidth config option but it doesn't end up
3432       changing their advertised bandwidth numbers. Bugfix on 0.2.0.28-rc;
3433       fixes bug 1026. Patch from Sebastian.
3434     - Avoid leaking memory every time we get a create cell but we have
3435       so many already queued that we refuse it. Bugfix on 0.2.0.19-alpha;
3436       fixes bug 1034. Reported by BarkerJr.
3437
3438
3439 Changes in version 0.2.1.18 - 2009-07-24
3440   Tor 0.2.1.18 lays the foundations for performance improvements,
3441   adds status events to help users diagnose bootstrap problems, adds
3442   optional authentication/authorization for hidden services, fixes a
3443   variety of potential anonymity problems, and includes a huge pile of
3444   other features and bug fixes.
3445
3446   o Build fixes:
3447     - Add LIBS=-lrt to Makefile.am so the Tor RPMs use a static libevent.
3448
3449
3450 Changes in version 0.2.1.17-rc - 2009-07-07
3451   Tor 0.2.1.17-rc marks the fourth -- and hopefully last -- release
3452   candidate for the 0.2.1.x series. It lays the groundwork for further
3453   client performance improvements, and also fixes a big bug with directory
3454   authorities that were causing them to assign Guard and Stable flags
3455   poorly.
3456
3457   The Windows bundles also finally include the geoip database that we
3458   thought we'd been shipping since 0.2.0.x (oops), and the OS X bundles
3459   should actually install Torbutton rather than giving you a cryptic
3460   failure message (oops).
3461
3462   o Major features:
3463     - Clients now use the bandwidth values in the consensus, rather than
3464       the bandwidth values in each relay descriptor. This approach opens
3465       the door to more accurate bandwidth estimates once the directory
3466       authorities start doing active measurements. Implements more of
3467       proposal 141.
3468
3469   o Major bugfixes:
3470     - When Tor clients restart after 1-5 days, they discard all their
3471       cached descriptors as too old, but they still use the cached
3472       consensus document. This approach is good for robustness, but
3473       bad for performance: since they don't know any bandwidths, they
3474       end up choosing at random rather than weighting their choice by
3475       speed. Fixed by the above feature of putting bandwidths in the
3476       consensus. Bugfix on 0.2.0.x.
3477     - Directory authorities were neglecting to mark relays down in their
3478       internal histories if the relays fall off the routerlist without
3479       ever being found unreachable. So there were relays in the histories
3480       that haven't been seen for eight months, and are listed as being
3481       up for eight months. This wreaked havoc on the "median wfu"
3482       and "median mtbf" calculations, in turn making Guard and Stable
3483       flags very wrong, hurting network performance. Fixes bugs 696 and
3484       969. Bugfix on 0.2.0.6-alpha.
3485
3486   o Minor bugfixes:
3487     - Serve the DirPortFrontPage page even when we have been approaching
3488       our quotas recently. Fixes bug 1013; bugfix on 0.2.1.8-alpha.
3489     - The control port would close the connection before flushing long
3490       replies, such as the network consensus, if a QUIT command was issued
3491       before the reply had completed. Now, the control port flushes all
3492       pending replies before closing the connection. Also fixed a spurious
3493       warning when a QUIT command is issued after a malformed or rejected
3494       AUTHENTICATE command, but before the connection was closed. Patch
3495       by Marcus Griep. Bugfix on 0.2.0.x; fixes bugs 1015 and 1016.
3496     - When we can't find an intro key for a v2 hidden service descriptor,
3497       fall back to the v0 hidden service descriptor and log a bug message.
3498       Workaround for bug 1024.
3499     - Fix a log message that did not respect the SafeLogging option.
3500       Resolves bug 1027.
3501
3502   o Minor features:
3503     - If we're a relay and we change our IP address, be more verbose
3504       about the reason that made us change. Should help track down
3505       further bugs for relays on dynamic IP addresses.
3506
3507
3508 Changes in version 0.2.0.35 - 2009-06-24
3509   o Security fix:
3510     - Avoid crashing in the presence of certain malformed descriptors.
3511       Found by lark, and by automated fuzzing.
3512     - Fix an edge case where a malicious exit relay could convince a
3513       controller that the client's DNS question resolves to an internal IP
3514       address. Bug found and fixed by "optimist"; bugfix on 0.1.2.8-beta.
3515
3516   o Major bugfixes:
3517     - Finally fix the bug where dynamic-IP relays disappear when their
3518       IP address changes: directory mirrors were mistakenly telling
3519       them their old address if they asked via begin_dir, so they
3520       never got an accurate answer about their new address, so they
3521       just vanished after a day. For belt-and-suspenders, relays that
3522       don't set Address in their config now avoid using begin_dir for
3523       all direct connections. Should fix bugs 827, 883, and 900.
3524     - Fix a timing-dependent, allocator-dependent, DNS-related crash bug
3525       that would occur on some exit nodes when DNS failures and timeouts
3526       occurred in certain patterns. Fix for bug 957.
3527
3528   o Minor bugfixes:
3529     - When starting with a cache over a few days old, do not leak
3530       memory for the obsolete router descriptors in it. Bugfix on
3531       0.2.0.33; fixes bug 672.
3532     - Hidden service clients didn't use a cached service descriptor that
3533       was older than 15 minutes, but wouldn't fetch a new one either,
3534       because there was already one in the cache. Now, fetch a v2
3535       descriptor unless the same descriptor was added to the cache within
3536       the last 15 minutes. Fixes bug 997; reported by Marcus Griep.
3537
3538
3539 Changes in version 0.2.1.16-rc - 2009-06-20
3540   Tor 0.2.1.16-rc speeds up performance for fast exit relays, and fixes
3541   a bunch of minor bugs.
3542
3543   o Security fixes:
3544     - Fix an edge case where a malicious exit relay could convince a
3545       controller that the client's DNS question resolves to an internal IP
3546       address. Bug found and fixed by "optimist"; bugfix on 0.1.2.8-beta.
3547
3548   o Major performance improvements (on 0.2.0.x):
3549     - Disable and refactor some debugging checks that forced a linear scan
3550       over the whole server-side DNS cache. These accounted for over 50%
3551       of CPU time on a relatively busy exit node's gprof profile. Found
3552       by Jacob.
3553     - Disable some debugging checks that appeared in exit node profile
3554       data.
3555
3556   o Minor features:
3557     - Update to the "June 3 2009" ip-to-country file.
3558     - Do not have tor-resolve automatically refuse all .onion addresses;
3559       if AutomapHostsOnResolve is set in your torrc, this will work fine.
3560
3561   o Minor bugfixes (on 0.2.0.x):
3562     - Log correct error messages for DNS-related network errors on
3563       Windows.
3564     - Fix a race condition that could cause crashes or memory corruption
3565       when running as a server with a controller listening for log
3566       messages.
3567     - Avoid crashing when we have a policy specified in a DirPolicy or
3568       SocksPolicy or ReachableAddresses option with ports set on it,
3569       and we re-load the policy. May fix bug 996.
3570     - Hidden service clients didn't use a cached service descriptor that
3571       was older than 15 minutes, but wouldn't fetch a new one either,
3572       because there was already one in the cache. Now, fetch a v2
3573       descriptor unless the same descriptor was added to the cache within
3574       the last 15 minutes. Fixes bug 997; reported by Marcus Griep.
3575
3576   o Minor bugfixes (on 0.2.1.x):
3577     - Don't warn users about low port and hibernation mix when they
3578       provide a *ListenAddress directive to fix that. Bugfix on
3579       0.2.1.15-rc.
3580     - When switching back and forth between bridge mode, do not start
3581       gathering GeoIP data until two hours have passed.
3582     - Do not complain that the user has requested an excluded node as
3583       an exit when the node is not really an exit. This could happen
3584       because the circuit was for testing, or an introduction point.
3585       Fix for bug 984.
3586
3587
3588 Changes in version 0.2.1.15-rc - 2009-05-25
3589   Tor 0.2.1.15-rc marks the second release candidate for the 0.2.1.x
3590   series. It fixes a major bug on fast exit relays, as well as a variety
3591   of more minor bugs.
3592
3593   o Major bugfixes (on 0.2.0.x):
3594     - Fix a timing-dependent, allocator-dependent, DNS-related crash bug
3595       that would occur on some exit nodes when DNS failures and timeouts
3596       occurred in certain patterns. Fix for bug 957.
3597
3598   o Minor bugfixes (on 0.2.0.x):
3599     - Actually return -1 in the error case for read_bandwidth_usage().
3600       Harmless bug, since we currently don't care about the return value
3601       anywhere. Bugfix on 0.2.0.9-alpha.
3602     - Provide a more useful log message if bug 977 (related to buffer
3603       freelists) ever reappears, and do not crash right away.
3604     - Fix an assertion failure on 64-bit platforms when we allocated
3605       memory right up to the end of a memarea, then realigned the memory
3606       one step beyond the end. Fixes a possible cause of bug 930.
3607     - Protect the count of open sockets with a mutex, so we can't
3608       corrupt it when two threads are closing or opening sockets at once.
3609       Fix for bug 939. Bugfix on 0.2.0.1-alpha.
3610     - Don't allow a bridge to publish its router descriptor to a
3611       non-bridge directory authority. Fixes part of bug 932.
3612     - When we change to or from being a bridge, reset our counts of
3613       client usage by country. Fixes bug 932.
3614     - Fix a bug that made stream bandwidth get misreported to the
3615       controller.
3616     - Stop using malloc_usable_size() to use more area than we had
3617       actually allocated: it was safe, but made valgrind really unhappy.
3618     - Fix a memory leak when v3 directory authorities load their keys
3619       and cert from disk. Bugfix on 0.2.0.1-alpha.
3620
3621   o Minor bugfixes (on 0.2.1.x):
3622     - Fix use of freed memory when deciding to mark a non-addable
3623       descriptor as never-downloadable. Bugfix on 0.2.1.9-alpha.
3624
3625
3626 Changes in version 0.2.1.14-rc - 2009-04-12
3627   Tor 0.2.1.14-rc marks the first release candidate for the 0.2.1.x
3628   series. It begins fixing some major performance problems, and also
3629   finally addresses the bug that was causing relays on dynamic IP
3630   addresses to fall out of the directory.
3631
3632   o Major features:
3633     - Clients replace entry guards that were chosen more than a few months
3634       ago. This change should significantly improve client performance,
3635       especially once more people upgrade, since relays that have been
3636       a guard for a long time are currently overloaded.
3637
3638   o Major bugfixes (on 0.2.0):
3639     - Finally fix the bug where dynamic-IP relays disappear when their
3640       IP address changes: directory mirrors were mistakenly telling
3641       them their old address if they asked via begin_dir, so they
3642       never got an accurate answer about their new address, so they
3643       just vanished after a day. For belt-and-suspenders, relays that
3644       don't set Address in their config now avoid using begin_dir for
3645       all direct connections. Should fix bugs 827, 883, and 900.
3646     - Relays were falling out of the networkstatus consensus for
3647       part of a day if they changed their local config but the
3648       authorities discarded their new descriptor as "not sufficiently
3649       different". Now directory authorities accept a descriptor as changed
3650       if bandwidthrate or bandwidthburst changed. Partial fix for bug 962;
3651       patch by Sebastian.
3652     - Avoid crashing in the presence of certain malformed descriptors.
3653       Found by lark, and by automated fuzzing.
3654
3655   o Minor features:
3656     - When generating circuit events with verbose nicknames for
3657       controllers, try harder to look up nicknames for routers on a
3658       circuit. (Previously, we would look in the router descriptors we had
3659       for nicknames, but not in the consensus.) Partial fix for bug 941.
3660     - If the bridge config line doesn't specify a port, assume 443.
3661       This makes bridge lines a bit smaller and easier for users to
3662       understand.
3663     - Raise the minimum bandwidth to be a relay from 20000 bytes to 20480
3664       bytes (aka 20KB/s), to match our documentation. Also update
3665       directory authorities so they always assign the Fast flag to relays
3666       with 20KB/s of capacity. Now people running relays won't suddenly
3667       find themselves not seeing any use, if the network gets faster
3668       on average.
3669     - Update to the "April 3 2009" ip-to-country file.
3670
3671   o Minor bugfixes:
3672     - Avoid trying to print raw memory to the logs when we decide to
3673       give up on downloading a given relay descriptor. Bugfix on
3674       0.2.1.9-alpha.
3675     - In tor-resolve, when the Tor client to use is specified by
3676       <hostname>:<port>, actually use the specified port rather than
3677       defaulting to 9050. Bugfix on 0.2.1.6-alpha.
3678     - Make directory usage recording work again. Bugfix on 0.2.1.6-alpha.
3679     - When starting with a cache over a few days old, do not leak
3680       memory for the obsolete router descriptors in it. Bugfix on
3681       0.2.0.33.
3682     - Avoid double-free on list of successfully uploaded hidden
3683       service discriptors. Fix for bug 948. Bugfix on 0.2.1.6-alpha.
3684     - Change memarea_strndup() implementation to work even when
3685       duplicating a string at the end of a page. This bug was
3686       harmless for now, but could have meant crashes later. Fix by
3687       lark. Bugfix on 0.2.1.1-alpha.
3688     - Limit uploaded directory documents to be 16M rather than 500K.
3689       The directory authorities were refusing v3 consensus votes from
3690       other authorities, since the votes are now 504K. Fixes bug 959;
3691       bugfix on 0.0.2pre17 (where we raised it from 50K to 500K ;).
3692     - Directory authorities should never send a 503 "busy" response to
3693       requests for votes or keys. Bugfix on 0.2.0.8-alpha; exposed by
3694       bug 959.
3695
3696
3697 Changes in version 0.2.1.13-alpha - 2009-03-09
3698   Tor 0.2.1.13-alpha includes another big pile of minor bugfixes and
3699   cleanups. We're finally getting close to a release candidate.
3700
3701   o Major bugfixes:
3702     - Correctly update the list of which countries we exclude as
3703       exits, when the GeoIP file is loaded or reloaded. Diagnosed by
3704       lark. Bugfix on 0.2.1.6-alpha.
3705
3706   o Minor bugfixes (on 0.2.0.x and earlier):
3707     - Automatically detect MacOSX versions earlier than 10.4.0, and
3708       disable kqueue from inside Tor when running with these versions.
3709       We previously did this from the startup script, but that was no
3710       help to people who didn't use the startup script. Resolves bug 863.
3711     - When we had picked an exit node for a connection, but marked it as
3712       "optional", and it turned out we had no onion key for the exit,
3713       stop wanting that exit and try again. This situation may not
3714       be possible now, but will probably become feasible with proposal
3715       158. Spotted by rovv. Fixes another case of bug 752.
3716     - Clients no longer cache certificates for authorities they do not
3717       recognize. Bugfix on 0.2.0.9-alpha.
3718     - When we can't transmit a DNS request due to a network error, retry
3719       it after a while, and eventually transmit a failing response to
3720       the RESOLVED cell. Bugfix on 0.1.2.5-alpha.
3721     - If the controller claimed responsibility for a stream, but that
3722       stream never finished making its connection, it would live
3723       forever in circuit_wait state. Now we close it after SocksTimeout
3724       seconds. Bugfix on 0.1.2.7-alpha; reported by Mike Perry.
3725     - Drop begin cells to a hidden service if they come from the middle
3726       of a circuit. Patch from lark.
3727     - When we erroneously receive two EXTEND cells for the same circuit
3728       ID on the same connection, drop the second. Patch from lark.
3729     - Fix a crash that occurs on exit nodes when a nameserver request
3730       timed out. Bugfix on 0.1.2.1-alpha; our CLEAR debugging code had
3731       been suppressing the bug since 0.1.2.10-alpha. Partial fix for
3732       bug 929.
3733     - Do not assume that a stack-allocated character array will be
3734       64-bit aligned on platforms that demand that uint64_t access is
3735       aligned. Possible fix for bug 604.
3736     - Parse dates and IPv4 addresses in a locale- and libc-independent
3737       manner, to avoid platform-dependent behavior on malformed input.
3738     - Build correctly when configured to build outside the main source
3739       path. Patch from Michael Gold.
3740     - We were already rejecting relay begin cells with destination port
3741       of 0. Now also reject extend cells with destination port or address
3742       of 0. Suggested by lark.
3743
3744   o Minor bugfixes (on 0.2.1.x):
3745     - Don't re-extend introduction circuits if we ran out of RELAY_EARLY
3746       cells. Bugfix on 0.2.1.3-alpha. Fixes more of bug 878.
3747     - If we're an exit node, scrub the IP address to which we are exiting
3748       in the logs. Bugfix on 0.2.1.8-alpha.
3749
3750   o Minor features:
3751     - On Linux, use the prctl call to re-enable core dumps when the user
3752       is option is set.
3753     - New controller event NEWCONSENSUS that lists the networkstatus
3754       lines for every recommended relay. Now controllers like Torflow
3755       can keep up-to-date on which relays they should be using.
3756     - Update to the "February 26 2009" ip-to-country file.
3757
3758
3759 Changes in version 0.2.0.34 - 2009-02-08
3760   Tor 0.2.0.34 features several more security-related fixes. You should
3761   upgrade, especially if you run an exit relay (remote crash) or a
3762   directory authority (remote infinite loop), or you're on an older
3763   (pre-XP) or not-recently-patched Windows (remote exploit).
3764
3765   This release marks end-of-life for Tor 0.1.2.x. Those Tor versions
3766   have many known flaws, and nobody should be using them. You should
3767   upgrade. If you're using a Linux or BSD and its packages are obsolete,
3768   stop using those packages and upgrade anyway.
3769
3770   o Security fixes:
3771     - Fix an infinite-loop bug on handling corrupt votes under certain
3772       circumstances. Bugfix on 0.2.0.8-alpha.
3773     - Fix a temporary DoS vulnerability that could be performed by
3774       a directory mirror. Bugfix on 0.2.0.9-alpha; reported by lark.
3775     - Avoid a potential crash on exit nodes when processing malformed
3776       input. Remote DoS opportunity. Bugfix on 0.2.0.33.
3777     - Do not accept incomplete ipv4 addresses (like 192.168.0) as valid.
3778       Spec conformance issue. Bugfix on Tor 0.0.2pre27.
3779
3780   o Minor bugfixes:
3781     - Fix compilation on systems where time_t is a 64-bit integer.
3782       Patch from Matthias Drochner.
3783     - Don't consider expiring already-closed client connections. Fixes
3784       bug 893. Bugfix on 0.0.2pre20.
3785
3786
3787 Changes in version 0.2.1.12-alpha - 2009-02-08
3788   Tor 0.2.1.12-alpha features several more security-related fixes. You
3789   should upgrade, especially if you run an exit relay (remote crash) or
3790   a directory authority (remote infinite loop), or you're on an older
3791   (pre-XP) or not-recently-patched Windows (remote exploit). It also
3792   includes a big pile of minor bugfixes and cleanups.
3793
3794   o Security fixes:
3795     - Fix an infinite-loop bug on handling corrupt votes under certain
3796       circumstances. Bugfix on 0.2.0.8-alpha.
3797     - Fix a temporary DoS vulnerability that could be performed by
3798       a directory mirror. Bugfix on 0.2.0.9-alpha; reported by lark.
3799     - Avoid a potential crash on exit nodes when processing malformed
3800       input. Remote DoS opportunity. Bugfix on 0.2.1.7-alpha.
3801
3802   o Minor bugfixes:
3803     - Let controllers actually ask for the "clients_seen" event for
3804       getting usage summaries on bridge relays. Bugfix on 0.2.1.10-alpha;
3805       reported by Matt Edman.
3806     - Fix a compile warning on OSX Panther. Fixes bug 913; bugfix against
3807       0.2.1.11-alpha.
3808     - Fix a bug in address parsing that was preventing bridges or hidden
3809       service targets from being at IPv6 addresses.
3810     - Solve a bug that kept hardware crypto acceleration from getting
3811       enabled when accounting was turned on. Fixes bug 907. Bugfix on
3812       0.0.9pre6.
3813     - Remove a bash-ism from configure.in to build properly on non-Linux
3814       platforms. Bugfix on 0.2.1.1-alpha.
3815     - Fix code so authorities _actually_ send back X-Descriptor-Not-New
3816       headers. Bugfix on 0.2.0.10-alpha.
3817     - Don't consider expiring already-closed client connections. Fixes
3818       bug 893. Bugfix on 0.0.2pre20.
3819     - Fix another interesting corner-case of bug 891 spotted by rovv:
3820       Previously, if two hosts had different amounts of clock drift, and
3821       one of them created a new connection with just the wrong timing,
3822       the other might decide to deprecate the new connection erroneously.
3823       Bugfix on 0.1.1.13-alpha.
3824     - Resolve a very rare crash bug that could occur when the user forced
3825       a nameserver reconfiguration during the middle of a nameserver
3826       probe. Fixes bug 526. Bugfix on 0.1.2.1-alpha.
3827     - Support changing value of ServerDNSRandomizeCase during SIGHUP.
3828       Bugfix on 0.2.1.7-alpha.
3829     - If we're using bridges and our network goes away, be more willing
3830       to forgive our bridges and try again when we get an application
3831       request. Bugfix on 0.2.0.x.
3832
3833   o Minor features:
3834     - Support platforms where time_t is 64 bits long. (Congratulations,
3835       NetBSD!) Patch from Matthias Drochner.
3836     - Add a 'getinfo status/clients-seen' controller command, in case
3837       controllers want to hear clients_seen events but connect late.
3838
3839   o Build changes:
3840     - Disable GCC's strict alias optimization by default, to avoid the
3841       likelihood of its introducing subtle bugs whenever our code violates
3842       the letter of C99's alias rules.
3843
3844
3845 Changes in version 0.2.0.33 - 2009-01-21
3846   Tor 0.2.0.33 fixes a variety of bugs that were making relays less
3847   useful to users. It also finally fixes a bug where a relay or client
3848   that's been off for many days would take a long time to bootstrap.
3849
3850   This update also fixes an important security-related bug reported by
3851   Ilja van Sprundel. You should upgrade. (We'll send out more details
3852   about the bug once people have had some time to upgrade.)
3853
3854   o Security fixes:
3855     - Fix a heap-corruption bug that may be remotely triggerable on
3856       some platforms. Reported by Ilja van Sprundel.
3857
3858   o Major bugfixes:
3859     - When a stream at an exit relay is in state "resolving" or
3860       "connecting" and it receives an "end" relay cell, the exit relay
3861       would silently ignore the end cell and not close the stream. If
3862       the client never closes the circuit, then the exit relay never
3863       closes the TCP connection. Bug introduced in Tor 0.1.2.1-alpha;
3864       reported by "wood".
3865     - When sending CREATED cells back for a given circuit, use a 64-bit
3866       connection ID to find the right connection, rather than an addr:port
3867       combination. Now that we can have multiple OR connections between
3868       the same ORs, it is no longer possible to use addr:port to uniquely
3869       identify a connection.
3870     - Bridge relays that had DirPort set to 0 would stop fetching
3871       descriptors shortly after startup, and then briefly resume
3872       after a new bandwidth test and/or after publishing a new bridge
3873       descriptor. Bridge users that try to bootstrap from them would
3874       get a recent networkstatus but would get descriptors from up to
3875       18 hours earlier, meaning most of the descriptors were obsolete
3876       already. Reported by Tas; bugfix on 0.2.0.13-alpha.
3877     - Prevent bridge relays from serving their 'extrainfo' document
3878       to anybody who asks, now that extrainfo docs include potentially
3879       sensitive aggregated client geoip summaries. Bugfix on
3880       0.2.0.13-alpha.
3881     - If the cached networkstatus consensus is more than five days old,
3882       discard it rather than trying to use it. In theory it could be
3883       useful because it lists alternate directory mirrors, but in practice
3884       it just means we spend many minutes trying directory mirrors that
3885       are long gone from the network. Also discard router descriptors as
3886       we load them if they are more than five days old, since the onion
3887       key is probably wrong by now. Bugfix on 0.2.0.x. Fixes bug 887.
3888
3889   o Minor bugfixes:
3890     - Do not mark smartlist_bsearch_idx() function as ATTR_PURE. This bug
3891       could make gcc generate non-functional binary search code. Bugfix
3892       on 0.2.0.10-alpha.
3893     - Build correctly on platforms without socklen_t.
3894     - Compile without warnings on solaris.
3895     - Avoid potential crash on internal error during signature collection.
3896       Fixes bug 864. Patch from rovv.
3897     - Correct handling of possible malformed authority signing key
3898       certificates with internal signature types. Fixes bug 880.
3899       Bugfix on 0.2.0.3-alpha.
3900     - Fix a hard-to-trigger resource leak when logging credential status.
3901       CID 349.
3902     - When we can't initialize DNS because the network is down, do not
3903       automatically stop Tor from starting. Instead, we retry failed
3904       dns_init() every 10 minutes, and change the exit policy to reject
3905       *:* until one succeeds. Fixes bug 691.
3906     - Use 64 bits instead of 32 bits for connection identifiers used with
3907       the controller protocol, to greatly reduce risk of identifier reuse.
3908     - When we're choosing an exit node for a circuit, and we have
3909       no pending streams, choose a good general exit rather than one that
3910       supports "all the pending streams". Bugfix on 0.1.1.x. Fix by rovv.
3911     - Fix another case of assuming, when a specific exit is requested,
3912       that we know more than the user about what hosts it allows.
3913       Fixes one case of bug 752. Patch from rovv.
3914     - Clip the MaxCircuitDirtiness config option to a minimum of 10
3915       seconds. Warn the user if lower values are given in the
3916       configuration. Bugfix on 0.1.0.1-rc. Patch by Sebastian.
3917     - Clip the CircuitBuildTimeout to a minimum of 30 seconds. Warn the
3918       user if lower values are given in the configuration. Bugfix on
3919       0.1.1.17-rc. Patch by Sebastian.
3920     - Fix a memory leak when we decline to add a v2 rendezvous descriptor to
3921       the cache because we already had a v0 descriptor with the same ID.
3922       Bugfix on 0.2.0.18-alpha.
3923     - Fix a race condition when freeing keys shared between main thread
3924       and CPU workers that could result in a memory leak. Bugfix on
3925       0.1.0.1-rc. Fixes bug 889.
3926     - Send a valid END cell back when a client tries to connect to a
3927       nonexistent hidden service port. Bugfix on 0.1.2.15. Fixes bug
3928       840. Patch from rovv.
3929     - Check which hops rendezvous stream cells are associated with to
3930       prevent possible guess-the-streamid injection attacks from
3931       intermediate hops. Fixes another case of bug 446. Based on patch
3932       from rovv.
3933     - If a broken client asks a non-exit router to connect somewhere,
3934       do not even do the DNS lookup before rejecting the connection.
3935       Fixes another case of bug 619. Patch from rovv.
3936     - When a relay gets a create cell it can't decrypt (e.g. because it's
3937       using the wrong onion key), we were dropping it and letting the
3938       client time out. Now actually answer with a destroy cell. Fixes
3939       bug 904. Bugfix on 0.0.2pre8.
3940
3941   o Minor bugfixes (hidden services):
3942     - Do not throw away existing introduction points on SIGHUP. Bugfix on
3943       0.0.6pre1. Patch by Karsten. Fixes bug 874.
3944
3945   o Minor features:
3946     - Report the case where all signatures in a detached set are rejected
3947       differently than the case where there is an error handling the
3948       detached set.
3949     - When we realize that another process has modified our cached
3950       descriptors, print out a more useful error message rather than
3951       triggering an assertion. Fixes bug 885. Patch from Karsten.
3952     - Implement the 0x20 hack to better resist DNS poisoning: set the
3953       case on outgoing DNS requests randomly, and reject responses that do
3954       not match the case correctly. This logic can be disabled with the
3955       ServerDNSRamdomizeCase setting, if you are using one of the 0.3%
3956       of servers that do not reliably preserve case in replies. See
3957       "Increased DNS Forgery Resistance through 0x20-Bit Encoding"
3958       for more info.
3959     - Check DNS replies for more matching fields to better resist DNS
3960       poisoning.
3961     - Never use OpenSSL compression: it wastes RAM and CPU trying to
3962       compress cells, which are basically all encrypted, compressed, or
3963       both.
3964
3965
3966 Changes in version 0.2.1.11-alpha - 2009-01-20
3967   Tor 0.2.1.11-alpha finishes fixing the "if your Tor is off for a
3968   week it will take a long time to bootstrap again" bug. It also fixes
3969   an important security-related bug reported by Ilja van Sprundel. You
3970   should upgrade. (We'll send out more details about the bug once people
3971   have had some time to upgrade.)
3972
3973   o Security fixes:
3974     - Fix a heap-corruption bug that may be remotely triggerable on
3975       some platforms. Reported by Ilja van Sprundel.
3976
3977   o Major bugfixes:
3978     - Discard router descriptors as we load them if they are more than
3979       five days old. Otherwise if Tor is off for a long time and then
3980       starts with cached descriptors, it will try to use the onion
3981       keys in those obsolete descriptors when building circuits. Bugfix
3982       on 0.2.0.x. Fixes bug 887.
3983
3984   o Minor features:
3985     - Try to make sure that the version of Libevent we're running with
3986       is binary-compatible with the one we built with. May address bug
3987       897 and others.
3988     - Make setting ServerDNSRandomizeCase to 0 actually work. Bugfix
3989       for bug 905. Bugfix on 0.2.1.7-alpha.
3990     - Add a new --enable-local-appdata configuration switch to change
3991       the default location of the datadir on win32 from APPDATA to
3992       LOCAL_APPDATA. In the future, we should migrate to LOCAL_APPDATA
3993       entirely. Patch from coderman.
3994
3995   o Minor bugfixes:
3996     - Make outbound DNS packets respect the OutboundBindAddress setting.
3997       Fixes the bug part of bug 798. Bugfix on 0.1.2.2-alpha.
3998     - When our circuit fails at the first hop (e.g. we get a destroy
3999       cell back), avoid using that OR connection anymore, and also
4000       tell all the one-hop directory requests waiting for it that they
4001       should fail. Bugfix on 0.2.1.3-alpha.
4002     - In the torify(1) manpage, mention that tsocks will leak your
4003       DNS requests.
4004
4005
4006 Changes in version 0.2.1.10-alpha - 2009-01-06
4007   Tor 0.2.1.10-alpha fixes two major bugs in bridge relays (one that
4008   would make the bridge relay not so useful if it had DirPort set to 0,
4009   and one that could let an attacker learn a little bit of information
4010   about the bridge's users), and a bug that would cause your Tor relay
4011   to ignore a circuit create request it can't decrypt (rather than reply
4012   with an error). It also fixes a wide variety of other bugs.
4013
4014   o Major bugfixes:
4015     - If the cached networkstatus consensus is more than five days old,
4016       discard it rather than trying to use it. In theory it could
4017       be useful because it lists alternate directory mirrors, but in
4018       practice it just means we spend many minutes trying directory
4019       mirrors that are long gone from the network. Helps bug 887 a bit;
4020       bugfix on 0.2.0.x.
4021     - Bridge relays that had DirPort set to 0 would stop fetching
4022       descriptors shortly after startup, and then briefly resume
4023       after a new bandwidth test and/or after publishing a new bridge
4024       descriptor. Bridge users that try to bootstrap from them would
4025       get a recent networkstatus but would get descriptors from up to
4026       18 hours earlier, meaning most of the descriptors were obsolete
4027       already. Reported by Tas; bugfix on 0.2.0.13-alpha.
4028     - Prevent bridge relays from serving their 'extrainfo' document
4029       to anybody who asks, now that extrainfo docs include potentially
4030       sensitive aggregated client geoip summaries. Bugfix on
4031       0.2.0.13-alpha.
4032
4033   o Minor features:
4034     - New controller event "clients_seen" to report a geoip-based summary
4035       of which countries we've seen clients from recently. Now controllers
4036       like Vidalia can show bridge operators that they're actually making
4037       a difference.
4038     - Build correctly against versions of OpenSSL 0.9.8 or later built
4039       without support for deprecated functions.
4040     - Update to the "December 19 2008" ip-to-country file.
4041
4042   o Minor bugfixes (on 0.2.0.x):
4043     - Authorities now vote for the Stable flag for any router whose
4044       weighted MTBF is at least 5 days, regardless of the mean MTBF.
4045     - Do not remove routers as too old if we do not have any consensus
4046       document. Bugfix on 0.2.0.7-alpha.
4047     - Do not accept incomplete ipv4 addresses (like 192.168.0) as valid.
4048       Spec conformance issue. Bugfix on Tor 0.0.2pre27.
4049     - When an exit relay resolves a stream address to a local IP address,
4050       do not just keep retrying that same exit relay over and
4051       over. Instead, just close the stream. Addresses bug 872. Bugfix
4052       on 0.2.0.32. Patch from rovv.
4053     - If a hidden service sends us an END cell, do not consider
4054       retrying the connection; just close it. Patch from rovv.
4055     - When we made bridge authorities stop serving bridge descriptors over
4056       unencrypted links, we also broke DirPort reachability testing for
4057       bridges. So bridges with a non-zero DirPort were printing spurious
4058       warns to their logs. Bugfix on 0.2.0.16-alpha. Fixes bug 709.
4059     - When a relay gets a create cell it can't decrypt (e.g. because it's
4060       using the wrong onion key), we were dropping it and letting the
4061       client time out. Now actually answer with a destroy cell. Fixes
4062       bug 904. Bugfix on 0.0.2pre8.
4063     - Squeeze 2-5% out of client performance (according to oprofile) by
4064       improving the implementation of some policy-manipulation functions.
4065
4066   o Minor bugfixes (on 0.2.1.x):
4067     - Make get_interface_address() function work properly again; stop
4068       guessing the wrong parts of our address as our address.
4069     - Do not cannibalize a circuit if we're out of RELAY_EARLY cells to
4070       send on that circuit. Otherwise we might violate the proposal-110
4071       limit. Bugfix on 0.2.1.3-alpha. Partial fix for bug 878. Diagnosis
4072       thanks to Karsten.
4073     - When we're sending non-EXTEND cells to the first hop in a circuit,
4074       for example to use an encrypted directory connection, we don't need
4075       to use RELAY_EARLY cells: the first hop knows what kind of cell
4076       it is, and nobody else can even see the cell type. Conserving
4077       RELAY_EARLY cells makes it easier to cannibalize circuits like
4078       this later.
4079     - Stop logging nameserver addresses in reverse order.
4080     - If we are retrying a directory download slowly over and over, do
4081       not automatically give up after the 254th failure. Bugfix on
4082       0.2.1.9-alpha.
4083     - Resume reporting accurate "stream end" reasons to the local control
4084       port. They were lost in the changes for Proposal 148. Bugfix on
4085       0.2.1.9-alpha.
4086
4087   o Deprecated and removed features:
4088     - The old "tor --version --version" command, which would print out
4089       the subversion "Id" of most of the source files, is now removed. It
4090       turned out to be less useful than we'd expected, and harder to
4091       maintain.
4092
4093   o Code simplifications and refactoring:
4094     - Change our header file guard macros to be less likely to conflict
4095       with system headers. Adam Langley noticed that we were conflicting
4096       with log.h on Android.
4097     - Tool-assisted documentation cleanup. Nearly every function or
4098       static variable in Tor should have its own documentation now.
4099
4100
4101 Changes in version 0.2.1.9-alpha - 2008-12-25
4102   Tor 0.2.1.9-alpha fixes many more bugs, some of them security-related.
4103
4104   o New directory authorities:
4105     - gabelmoo (the authority run by Karsten Loesing) now has a new
4106       IP address.
4107
4108   o Security fixes:
4109     - Never use a connection with a mismatched address to extend a
4110       circuit, unless that connection is canonical. A canonical
4111       connection is one whose address is authenticated by the router's
4112       identity key, either in a NETINFO cell or in a router descriptor.
4113     - Avoid a possible memory corruption bug when receiving hidden service
4114       descriptors. Bugfix on 0.2.1.6-alpha.
4115
4116   o Major bugfixes:
4117     - Fix a logic error that would automatically reject all but the first
4118       configured DNS server. Bugfix on 0.2.1.5-alpha. Possible fix for
4119       part of bug 813/868. Bug spotted by coderman.
4120     - When a stream at an exit relay is in state "resolving" or
4121       "connecting" and it receives an "end" relay cell, the exit relay
4122       would silently ignore the end cell and not close the stream. If
4123       the client never closes the circuit, then the exit relay never
4124       closes the TCP connection. Bug introduced in 0.1.2.1-alpha;
4125       reported by "wood".