1Changes in version 0.4.6.8 - 2021-10-26
2  This version fixes several bugs from earlier versions of Tor. One
3  highlight is a fix on how we track DNS timeouts to report general
4  relay overload.
5
6  o Major bugfixes (relay, overload state):
7    - Relays report the general overload state for DNS timeout errors
8      only if X% of all DNS queries over Y seconds are errors. Before
9      that, it only took 1 timeout to report the overload state which
10      was just too low of a threshold. The X and Y values are 1% and 10
11      minutes respectively but they are also controlled by consensus
12      parameters. Fixes bug 40491; bugfix on 0.4.6.1-alpha.
13
14  o Minor features (fallbackdir):
15    - Regenerate fallback directories for October 2021. Closes
16      ticket 40493.
17
18  o Minor features (testing):
19    - On a testing network, relays can now use the
20      TestingMinTimeToReportBandwidth option to change the smallest
21      amount of time over which they're willing to report their observed
22      maximum bandwidth. Previously, this was fixed at 1 day. For
23      safety, values under 2 hours are only supported on testing
24      networks. Part of a fix for ticket 40337.
25    - Relays on testing networks no longer rate-limit how frequently
26      they are willing to report new bandwidth measurements. Part of a
27      fix for ticket 40337.
28    - Relays on testing networks now report their observed bandwidths
29      immediately from startup. Previously, they waited until they had
30      been running for a full day. Closes ticket 40337.
31
32  o Minor bugfix (onion service):
33    - Do not flag an HSDir as non-running in case the descriptor upload
34      or fetch fails. An onion service closes pending directory
35      connections before uploading a new descriptor which can thus lead
36      to wrongly flagging many relays and thus affecting circuit building
37      path selection. Fixes bug 40434; bugfix on 0.2.0.13-alpha.
38    - Improve logging when a bad HS version is given. Fixes bug 40476;
39      bugfix on 0.4.6.1-alpha.
40
41  o Minor bugfix (CI, onion service):
42    - Exclude onion service version 2 Stem tests in our CI. Fixes bug 40500;
43      bugfix on 0.3.2.1-alpha.
44
45  o Minor bugfixes (compatibility):
46    - Fix compatibility with the most recent Libevent versions, which no
47      longer have an evdns_set_random_bytes() function. Because this
48      function has been a no-op since Libevent 2.0.4-alpha, it is safe
49      for us to just stop calling it. Fixes bug 40371; bugfix
50      on 0.2.1.7-alpha.
51
52  o Minor bugfixes (onion service, TROVE-2021-008):
53    - Only log v2 access attempts once total, in order to not pollute
54      the logs with warnings and to avoid recording the times on disk
55      when v2 access was attempted. Note that the onion address was
56      _never_ logged. This counts as a Low-severity security issue.
57      Fixes bug 40474; bugfix on 0.4.5.8.
58
59
60Changes in version 0.4.6.7 - 2021-08-16
61  This version fixes several bugs from earlier versions of Tor,
62  including one that could lead to a denial-of-service attack. Everyone
63  running an earlier version, whether as a client, a relay, or an onion
64  service, should upgrade to Tor 0.3.5.16, 0.4.5.10, or 0.4.6.7.
65
66  o Major bugfixes (cryptography, security):
67    - Resolve an assertion failure caused by a behavior mismatch between
68      our batch-signature verification code and our single-signature
69      verification code. This assertion failure could be triggered
70      remotely, leading to a denial of service attack. We fix this issue
71      by disabling batch verification. Fixes bug 40078; bugfix on
72      0.2.6.1-alpha. This issue is also tracked as TROVE-2021-007 and
73      CVE-2021-38385. Found by Henry de Valence.
74
75  o Minor feature (fallbackdir):
76    - Regenerate fallback directories list. Close ticket 40447.
77
78  o Minor features (geoip data):
79    - Update the geoip files to match the IPFire Location Database, as
80      retrieved on 2021/08/12.
81
82  o Minor bugfix (crypto):
83    - Disable the unused batch verification feature of ed25519-donna.
84      Fixes bug 40078; bugfix on 0.2.6.1-alpha. Found by Henry
85      de Valence.
86
87  o Minor bugfixes (onion service):
88    - Send back the extended SOCKS error 0xF6 (Onion Service Invalid
89      Address) for a v2 onion address. Fixes bug 40421; bugfix
90      on 0.4.6.2-alpha.
91
92  o Minor bugfixes (relay):
93    - Reduce the compression level for data streaming from HIGH to LOW
94      in order to reduce CPU load on the directory relays. Fixes bug
95      40301; bugfix on 0.3.5.1-alpha.
96
97  o Minor bugfixes (timekeeping):
98    - Calculate the time of day correctly on systems where the time_t
99      type includes leap seconds. (This is not the case on most
100      operating systems, but on those where it occurs, our tor_timegm
101      function did not correctly invert the system's gmtime function,
102      which could result in assertion failures when calculating voting
103      schedules.) Fixes bug 40383; bugfix on 0.2.0.3-alpha.
104
105
106Changes in version 0.4.6.6 - 2021-06-30
107  Tor 0.4.6.6 makes several small fixes on 0.4.6.5, including one that
108  allows Tor to build correctly on older versions of GCC. You should
109  upgrade to this version if you were having trouble building Tor
110  0.4.6.5; otherwise, there is probably no need.
111
112  o Minor bugfixes (compilation):
113    - Fix a compilation error when trying to build Tor with a compiler
114      that does not support const variables in static initializers.
115      Fixes bug 40410; bugfix on 0.4.6.5.
116    - Suppress a strict-prototype warning when building with some
117      versions of NSS. Fixes bug 40409; bugfix on 0.3.5.1-alpha.
118
119  o Minor bugfixes (testing):
120    - Enable the deterministic RNG for unit tests that covers the
121      address set bloomfilter-based API's. Fixes bug 40419; bugfix
122      on 0.3.3.2-alpha.
123
124
125Changes in version 0.4.6.5 - 2021-06-14
126  Tor 0.4.6.5 is the first stable release in its series. The 0.4.6.x
127  series includes numerous features and bugfixes, including a significant
128  improvement to our circuit timeout algorithm that should improve
129  observed client performance, and a way for relays to report when they are
130  overloaded.
131
132  This release also includes security fixes for several security issues,
133  including a denial-of-service attack against onion service clients,
134  and another denial-of-service attack against relays. Everybody should
135  upgrade to one of 0.3.5.15, 0.4.4.9, 0.4.5.9, or 0.4.6.5.
136
137  Below are the changes since 0.4.6.4-rc. For a complete list of changes
138  since 0.4.5.8, see the ReleaseNotes file.
139
140  o Major bugfixes (security):
141    - Don't allow relays to spoof RELAY_END or RELAY_RESOLVED cell on
142      half-closed streams. Previously, clients failed to validate which
143      hop sent these cells: this would allow a relay on a circuit to end
144      a stream that wasn't actually built with it. Fixes bug 40389;
145      bugfix on 0.3.5.1-alpha. This issue is also tracked as TROVE-2021-
146      003 and CVE-2021-34548.
147
148  o Major bugfixes (security, defense-in-depth):
149    - Detect more failure conditions from the OpenSSL RNG code.
150      Previously, we would detect errors from a missing RNG
151      implementation, but not failures from the RNG code itself.
152      Fortunately, it appears those failures do not happen in practice
153      when Tor is using OpenSSL's default RNG implementation. Fixes bug
154      40390; bugfix on 0.2.8.1-alpha. This issue is also tracked as
155      TROVE-2021-004. Reported by Jann Horn at Google's Project Zero.
156
157  o Major bugfixes (security, denial of service):
158    - Resist a hashtable-based CPU denial-of-service attack against
159      relays. Previously we used a naive unkeyed hash function to look
160      up circuits in a circuitmux object. An attacker could exploit this
161      to construct circuits with chosen circuit IDs, to create
162      collisions and make the hash table inefficient. Now we use a
163      SipHash construction here instead. Fixes bug 40391; bugfix on
164      0.2.4.4-alpha. This issue is also tracked as TROVE-2021-005 and
165      CVE-2021-34549. Reported by Jann Horn from Google's Project Zero.
166    - Fix an out-of-bounds memory access in v3 onion service descriptor
167      parsing. An attacker could exploit this bug by crafting an onion
168      service descriptor that would crash any client that tried to visit
169      it. Fixes bug 40392; bugfix on 0.3.0.1-alpha. This issue is also
170      tracked as TROVE-2021-006 and CVE-2021-34550. Reported by Sergei
171      Glazunov from Google's Project Zero.
172
173  o Minor features (geoip data):
174    - Update the geoip files to match the IPFire Location Database, as
175      retrieved on 2021/06/10.
176
177  o Minor features (logging, diagnostic):
178    - Log decompression failures at a higher severity level, since they
179      can help provide missing context for other warning messages. We
180      rate-limit these messages, to avoid flooding the logs if they
181      begin to occur frequently. Closes ticket 40175.
182
183
184Changes in version 0.4.6.4-rc - 2021-05-28
185  Tor 0.4.6.4-rc fixes a few bugs from previous releases. This, we hope,
186  the final release candidate in its series: unless major new issues are
187  found, the next release will be stable.
188
189  o Minor features (compatibility):
190    - Remove an assertion function related to TLS renegotiation. It was
191      used nowhere outside the unit tests, and it was breaking
192      compilation with recent alpha releases of OpenSSL 3.0.0. Closes
193      ticket 40399.
194
195  o Minor bugfixes (consensus handling):
196    - Avoid a set of bugs that could be caused by inconsistently
197      preferring an out-of-date consensus stored in a stale directory
198      cache over a more recent one stored on disk as the latest
199      consensus. Fixes bug 40375; bugfix on 0.3.1.1-alpha.
200
201  o Minor bugfixes (control, sandbox):
202    - Allow the control command SAVECONF to succeed when the seccomp
203      sandbox is enabled, and make SAVECONF keep only one backup file to
204      simplify implementation. Previously SAVECONF allowed a large
205      number of backup files, which made it incompatible with the
206      sandbox. Fixes bug 40317; bugfix on 0.2.5.4-alpha. Patch by
207      Daniel Pinto.
208
209  o Minor bugfixes (metrics port):
210    - Fix a bug that made tor try to re-bind() on an already open
211      MetricsPort every 60 seconds. Fixes bug 40370; bugfix
212      on 0.4.5.1-alpha.
213
214  o Removed features:
215    - Remove unneeded code for parsing private keys in directory
216      documents. This code was only used for client authentication in v2
217      onion services, which are now unsupported. Closes ticket 40374.
218
219
220Changes in version 0.4.5.8 - 2021-05-10
221  Tor 0.4.5.8 fixes several bugs in earlier version, backporting fixes
222  from the 0.4.6.x series.
223
224  o Minor features (compatibility, Linux seccomp sandbox, backport from 0.4.6.3-rc):
225    - Add a workaround to enable the Linux sandbox to work correctly
226      with Glibc 2.33. This version of Glibc has started using the
227      fstatat() system call, which previously our sandbox did not allow.
228      Closes ticket 40382; see the ticket for a discussion of trade-offs.
229
230  o Minor features (compilation, backport from 0.4.6.3-rc):
231    - Make the autoconf script build correctly with autoconf versions
232      2.70 and later. Closes part of ticket 40335.
233
234  o Minor features (fallback directory list, backport from 0.4.6.2-alpha):
235    - Regenerate the list of fallback directories to contain a new set
236      of 200 relays. Closes ticket 40265.
237
238  o Minor features (geoip data):
239    - Update the geoip files to match the IPFire Location Database, as
240      retrieved on 2021/05/07.
241
242  o Minor features (onion services):
243    - Add warning message when connecting to now deprecated v2 onion
244      services. As announced, Tor 0.4.5.x is the last series that will
245      support v2 onions. Closes ticket 40373.
246
247  o Minor bugfixes (bridge, pluggable transport, backport from 0.4.6.2-alpha):
248    - Fix a regression that made it impossible start Tor using a bridge
249      line with a transport name and no fingerprint. Fixes bug 40360;
250      bugfix on 0.4.5.4-rc.
251
252  o Minor bugfixes (build, cross-compilation, backport from 0.4.6.3-rc):
253    - Allow a custom "ar" for cross-compilation. Our previous build
254      script had used the $AR environment variable in most places, but
255      it missed one. Fixes bug 40369; bugfix on 0.4.5.1-alpha.
256
257  o Minor bugfixes (channel, DoS, backport from 0.4.6.2-alpha):
258    - Fix a non-fatal BUG() message due to a too-early free of a string,
259      when listing a client connection from the DoS defenses subsystem.
260      Fixes bug 40345; bugfix on 0.4.3.4-rc.
261
262  o Minor bugfixes (compiler warnings, backport from 0.4.6.3-rc):
263    - Fix an indentation problem that led to a warning from GCC 11.1.1.
264      Fixes bug 40380; bugfix on 0.3.0.1-alpha.
265
266  o Minor bugfixes (controller, backport from 0.4.6.1-alpha):
267    - Fix a "BUG" warning that would appear when a controller chooses
268      the first hop for a circuit, and that circuit completes. Fixes bug
269      40285; bugfix on 0.3.2.1-alpha.
270
271  o Minor bugfixes (onion service, client, memory leak, backport from 0.4.6.3-rc):
272    - Fix a bug where an expired cached descriptor could get overwritten
273      with a new one without freeing it, leading to a memory leak. Fixes
274      bug 40356; bugfix on 0.3.5.1-alpha.
275
276  o Minor bugfixes (testing, BSD, backport from 0.4.6.2-alpha):
277    - Fix pattern-matching errors when patterns expand to invalid paths
278      on BSD systems. Fixes bug 40318; bugfix on 0.4.5.1-alpha. Patch by
279      Daniel Pinto.
280
281
282Changes in version 0.4.6.3-rc - 2021-05-10
283  Tor 0.4.6.3-rc is the first release candidate in its series. It fixes
284  a few small bugs from previous versions, and adds a better error
285  message when trying to use (no longer supported) v2 onion services.
286
287  Though we anticipate that we'll be doing a bit more clean-up between
288  now and the stable release, we expect that our remaining changes will
289  be fairly simple. There will likely be at least one more release
290  candidate before 0.4.6.x is stable.
291
292  o Major bugfixes (onion service, control port):
293    - Make the ADD_ONION command properly configure client authorization.
294      Before this fix, the created onion failed to add the client(s).
295      Fixes bug 40378; bugfix on 0.4.6.1-alpha.
296
297  o Minor features (compatibility, Linux seccomp sandbox):
298    - Add a workaround to enable the Linux sandbox to work correctly
299      with Glibc 2.33. This version of Glibc has started using the
300      fstatat() system call, which previously our sandbox did not allow.
301      Closes ticket 40382; see the ticket for a discussion of trade-offs.
302
303  o Minor features (compilation):
304    - Make the autoconf script build correctly with autoconf versions
305      2.70 and later. Closes part of ticket 40335.
306
307  o Minor features (geoip data):
308    - Update the geoip files to match the IPFire Location Database, as
309      retrieved on 2021/05/07.
310
311  o Minor features (onion services):
312    - Add a warning message when trying to connect to (no longer
313      supported) v2 onion services. Closes ticket 40373.
314
315  o Minor bugfixes (build, cross-compilation):
316    - Allow a custom "ar" for cross-compilation. Our previous build
317      script had used the $AR environment variable in most places, but
318      it missed one. Fixes bug 40369; bugfix on 0.4.5.1-alpha.
319
320  o Minor bugfixes (compiler warnings):
321    - Fix an indentation problem that led to a warning from GCC 11.1.1.
322      Fixes bug 40380; bugfix on 0.3.0.1-alpha.
323
324  o Minor bugfixes (logging, relay):
325    - Emit a warning if an Address is found to be internal and tor can't
326      use it. Fixes bug 40290; bugfix on 0.4.5.1-alpha.
327
328  o Minor bugfixes (onion service, client, memory leak):
329    - Fix a bug where an expired cached descriptor could get overwritten
330      with a new one without freeing it, leading to a memory leak. Fixes
331      bug 40356; bugfix on 0.3.5.1-alpha.
332
333
334Changes in version 0.4.6.2-alpha - 2021-04-15
335  Tor 0.4.6.2-alpha is the second alpha in its series. It fixes several
336  small bugs in previous releases, and solves other issues that had
337  enabled denial-of-service attacks and affected integration with
338  other tools.
339
340  o Minor features (client):
341    - Clients now check whether their streams are attempting to re-enter
342      the Tor network (i.e. to send Tor traffic over Tor), and close
343      them preemptively if they think exit relays will refuse them for
344      this reason. See ticket 2667 for details. Closes ticket 40271.
345
346  o Minor features (command line):
347    - Add long format name "--torrc-file" equivalent to the existing
348      command-line option "-f". Closes ticket 40324. Patch by
349      Daniel Pinto.
350
351  o Minor features (dormant mode):
352    - Add a new 'DormantTimeoutEnabled' option to allow coarse-grained
353      control over whether the client ever becomes dormant from
354      inactivity. Most people won't need this. Closes ticket 40228.
355
356  o Minor features (fallback directory list):
357    - Regenerate the list of fallback directories to contain a new set
358      of 200 relays. Closes ticket 40265.
359
360  o Minor features (geoip data):
361    - Update the geoip files to match the IPFire Location Database, as
362      retrieved on 2021/04/13.
363
364  o Minor features (logging):
365    - Edit heartbeat log messages so that more of them begin with the
366      string "Heartbeat: ". Closes ticket 40322; patch
367      from 'cypherpunks'.
368
369  o Minor bugfixes (bridge, pluggable transport):
370    - Fix a regression that made it impossible start Tor using a bridge
371      line with a transport name and no fingerprint. Fixes bug 40360;
372      bugfix on 0.4.5.4-rc.
373
374  o Minor bugfixes (channel, DoS):
375    - Fix a non-fatal BUG() message due to a too-early free of a string,
376      when listing a client connection from the DoS defenses subsystem.
377      Fixes bug 40345; bugfix on 0.4.3.4-rc.
378
379  o Minor bugfixes (compilation):
380    - Fix a compilation warning about unused functions when building
381      with a libc that lacks the GLOB_ALTDIRFUNC constant. Fixes bug
382      40354; bugfix on 0.4.5.1-alpha. Patch by Daniel Pinto.
383
384  o Minor bugfixes (configuration):
385    - Fix pattern-matching for directories on all platforms when using
386      %include options in configuration files. This patch also fixes
387      compilation on musl libc based systems. Fixes bug 40141; bugfix
388      on 0.4.5.1-alpha.
389
390  o Minor bugfixes (relay):
391    - Move the "overload-general" line from extrainfo to the server
392      descriptor. Fixes bug 40364; bugfix on 0.4.6.1-alpha.
393
394  o Minor bugfixes (testing, BSD):
395    - Fix pattern-matching errors when patterns expand to invalid paths
396      on BSD systems. Fixes bug 40318; bugfix on 0.4.5.1-alpha. Patch by
397      Daniel Pinto.
398
399  o Documentation (manual):
400    - Move the ServerTransport* options to the "SERVER OPTIONS" section.
401      Closes issue 40331.
402    - Indicate that the HiddenServiceStatistics option also applies to
403      bridges. Closes ticket 40346.
404    - Move the description of BridgeRecordUsageByCountry to the section
405      "STATISTICS OPTIONS". Closes ticket 40323.
406
407
408Changes in version 0.4.6.1-alpha - 2021-03-18
409  Tor 0.4.6.1-alpha is the first alpha release in the 0.4.6.x series. It
410  improves client circuit performance, adds missing features, and
411  improves some of our DoS handling and statistics reporting. It also
412  includes numerous smaller bugfixes.
413
414  Below are the changes since 0.4.5.7. (Note that this release DOES
415  include the fixes for the security bugs already fixed in 0.4.5.7.)
416
417  o Major features (control port, onion services):
418    - Add controller support for creating version 3 onion services with
419      client authorization. Previously, only v2 onion services could be
420      created with client authorization. Closes ticket 40084. Patch by
421      Neel Chauhan.
422
423  o Major features (directory authority):
424    - When voting on a relay with a Sybil-like appearance, add the Sybil
425      flag when clearing out the other flags. This lets a relay operator
426      know why their relay hasn't been included in the consensus. Closes
427      ticket 40255. Patch by Neel Chauhan.
428
429  o Major features (metrics):
430    - Relays now report how overloaded they are in their extrainfo
431      documents. This information is controlled with the
432      OverloadStatistics torrc option, and it will be used to improve
433      decisions about the network's load balancing. Implements proposal
434      328; closes ticket 40222.
435
436  o Major features (relay, denial of service):
437    - Add a new DoS subsystem feature to control the rate of client
438      connections for relays. Closes ticket 40253.
439
440  o Major features (statistics):
441    - Relays now publish statistics about the number of v3 onion
442      services and volume of v3 onion service traffic, in the same
443      manner they already do for v2 onions. Closes ticket 23126.
444
445  o Major bugfixes (circuit build timeout):
446    - Improve the accuracy of our circuit build timeout calculation for
447      60%, 70%, and 80% build rates for various guard choices. We now
448      use a maximum likelihood estimator for Pareto parameters of the
449      circuit build time distribution, instead of a "right-censored
450      estimator". This causes clients to ignore circuits that never
451      finish building in their timeout calculations. Previously, clients
452      were counting such unfinished circuits as having the highest
453      possible build time value, when in reality these circuits most
454      likely just contain relays that are offline. We also now wait a
455      bit longer to let circuits complete for measurement purposes,
456      lower the minimum possible effective timeout from 1.5 seconds to
457      10ms, and increase the resolution of the circuit build time
458      histogram from 50ms bin widths to 10ms bin widths. Additionally,
459      we alter our estimate Xm by taking the maximum of the top 10 most
460      common build time values of the 10ms histogram, and compute Xm as
461      the average of these. Fixes bug 40168; bugfix on 0.2.2.14-alpha.
462    - Remove max_time calculation and associated warning from circuit
463      build timeout 'alpha' parameter estimation, as this is no longer
464      needed by our new estimator from 40168. Fixes bug 34088; bugfix
465      on 0.2.2.9-alpha.
466
467  o Major bugfixes (signing key):
468    - In the tor-gencert utility, give an informative error message if
469      the passphrase given in `--create-identity-key` is too short.
470      Fixes bug 40189; bugfix on 0.2.0.1-alpha. Patch by Neel Chauhan.
471
472  o Minor features (bridge):
473    - We now announce the URL to Tor's new bridge status at
474      https://bridges.torproject.org/ when Tor is configured to run as a
475      bridge relay. Closes ticket 30477.
476
477  o Minor features (build system):
478    - New "make lsp" command to auto generate the compile_commands.json
479      file used by the ccls server. The "bear" program is needed for
480      this. Closes ticket 40227.
481
482  o Minor features (command-line interface):
483    - Add build informations to `tor --version` in order to ease
484      reproducible builds. Closes ticket 32102.
485    - When parsing command-line flags that take an optional argument,
486      treat the argument as absent if it would start with a '-'
487      character. Arguments in that form are not intelligible for any of
488      our optional-argument flags. Closes ticket 40223.
489    - Allow a relay operator to list the ed25519 keys on the command
490      line by adding the `rsa` and `ed25519` arguments to the
491      --list-fingerprint flag to show the respective RSA and ed25519
492      relay fingerprint. Closes ticket 33632. Patch by Neel Chauhan.
493
494  o Minor features (control port, stream handling):
495    - Add the stream ID to the event line in the ADDRMAP control event.
496      Closes ticket 40249. Patch by Neel Chauhan.
497
498  o Minor features (dormant mode):
499    - Add a new 'DormantTimeoutEnabled' option for coarse-grained
500      control over whether the client can become dormant from
501      inactivity. Most people won't need this. Closes ticket 40228.
502
503  o Minor features (logging):
504    - Change the DoS subsystem heartbeat line format to be more clear on
505      what has been detected/rejected, and which option is disabled (if
506      any). Closes ticket 40308.
507    - In src/core/mainloop/mainloop.c and src/core/mainloop/connection.c,
508      put brackets around IPv6 addresses in log messages. Closes ticket
509      40232. Patch by Neel Chauhan.
510
511  o Minor features (performance, windows):
512    - Use SRWLocks to implement locking on Windows. Replaces the
513      "critical section" locking implementation with the faster
514      SRWLocks, available since Windows Vista. Closes ticket 17927.
515      Patch by Daniel Pinto.
516
517  o Minor features (protocol, proxy support, defense in depth):
518    - Close HAProxy connections if they somehow manage to send us data
519      before we start reading. Closes another case of ticket 40017.
520
521  o Minor features (tests, portability):
522    - Port the hs_build_address.py test script to work with recent
523      versions of python. Closes ticket 40213. Patch from
524      Samanta Navarro.
525
526  o Minor features (vote document):
527    - Add a "stats" line to directory authority votes, to report various
528      statistics that authorities compute about the relays. This will
529      help us diagnose the network better. Closes ticket 40314.
530
531  o Minor bugfixes (build):
532    - The configure script now shows whether or not lzma and zstd have
533      been used, not just if the enable flag was passed in. Fixes bug
534      40236; bugfix on 0.4.3.1-alpha.
535
536  o Minor bugfixes (compatibility):
537    - Fix a failure in the test cases when running on the "hppa"
538      architecture, along with a related test that might fail on other
539      architectures in the future. Fixes bug 40274; bugfix
540      on 0.2.5.1-alpha.
541
542  o Minor bugfixes (controller):
543    - Fix a "BUG" warning that would appear when a controller chooses
544      the first hop for a circuit, and that circuit completes. Fixes bug
545      40285; bugfix on 0.3.2.1-alpha.
546
547  o Minor bugfixes (directory authorities, voting):
548    - Add a new consensus method (31) to support any future changes that
549      authorities decide to make to the value of bwweightscale or
550      maxunmeasuredbw. Previously, there was a bug that prevented the
551      authorities from parsing these consensus parameters correctly under
552      most circumstances. Fixes bug 19011; bugfix on 0.2.2.10-alpha.
553
554  o Minor bugfixes (ipv6):
555    - Allow non-SOCKSPorts to disable IPv4, IPv6, and PreferIPv4. Some
556      rare configurations might break, but in this case you can disable
557      NoIPv4Traffic and NoIPv6Traffic as needed. Fixes bug 33607; bugfix
558      on 0.4.1.1-alpha. Patch by Neel Chauhan.
559
560  o Minor bugfixes (key generation):
561    - Do not require a valid torrc when using the `--keygen` argument to
562      generate a signing key. This allows us to generate keys on systems
563      or users which may not run Tor. Fixes bug 40235; bugfix on
564      0.2.7.2-alpha. Patch by Neel Chauhan.
565
566  o Minor bugfixes (onion services, logging):
567    - Downgrade the severity of a few rendezvous circuit-related
568      warnings from warning to info. Fixes bug 40207; bugfix on
569      0.3.2.1-alpha. Patch by Neel Chauhan.
570
571  o Minor bugfixes (relay):
572    - Reduce the compression level for data streaming from HIGH to LOW.
573      This should reduce the CPU and memory burden for directory caches.
574      Fixes bug 40301; bugfix on 0.3.5.1-alpha.
575
576  o Code simplification and refactoring:
577    - Remove the orconn_ext_or_id_map structure and related functions.
578      (Nothing outside of unit tests used them.) Closes ticket 33383.
579      Patch by Neel Chauhan.
580
581  o Removed features:
582    - As of this release, Tor no longer supports the old v2 onion
583      services. They were deprecated last July for security, and support
584      will be removed entirely later this year. We strongly encourage
585      everybody to migrate to v3 onion services. For more information,
586      see https://blog.torproject.org/v2-deprecation-timeline . Closes
587      ticket 40266. (NOTE: We accidentally released an earlier version
588      of the 0.4.6.1-alpha changelog without this entry. Sorry for
589      the confusion!)
590
591  o Code simplification and refactoring (metrics, DoS):
592    - Move the DoS subsystem into the subsys manager, including its
593      configuration options. Closes ticket 40261.
594
595  o Removed features (relay):
596    - Because DirPorts are only used on authorities, relays no longer
597      advertise them. Similarly, self-testing for DirPorts has been
598      disabled, since an unreachable DirPort is no reason for a relay
599      not to advertise itself. (Configuring a DirPort will still work,
600      for now.) Closes ticket 40282.
601
602
603Changes in version 0.3.5.14 - 2021-03-16
604  Tor 0.3.5.14 backports fixes for two important denial-of-service bugs
605  in earlier versions of Tor.
606
607  One of these vulnerabilities (TROVE-2021-001) would allow an attacker
608  who can send directory data to a Tor instance to force that Tor
609  instance to consume huge amounts of CPU. This is easiest to exploit
610  against authorities, since anybody can upload to them, but directory
611  caches could also exploit this vulnerability against relays or clients
612  when they download. The other vulnerability (TROVE-2021-002) only
613  affects directory authorities, and would allow an attacker to remotely
614  crash the authority with an assertion failure. Patches have already
615  been provided to the authority operators, to help ensure
616  network stability.
617
618  We recommend that everybody upgrade to one of the releases that fixes
619  these issues (0.3.5.14, 0.4.4.8, or 0.4.5.7) as they become available
620  to you.
621
622  This release also updates our GeoIP data source, and fixes a
623  compatibility issue.
624
625  o Major bugfixes (security, denial of service, backport from 0.4.5.7):
626    - Disable the dump_desc() function that we used to dump unparseable
627      information to disk. It was called incorrectly in several places,
628      in a way that could lead to excessive CPU usage. Fixes bug 40286;
629      bugfix on 0.2.2.1-alpha. This bug is also tracked as TROVE-2021-
630      001 and CVE-2021-28089.
631    - Fix a bug in appending detached signatures to a pending consensus
632      document that could be used to crash a directory authority. Fixes
633      bug 40316; bugfix on 0.2.2.6-alpha. Tracked as TROVE-2021-002
634      and CVE-2021-28090.
635
636  o Minor features (geoip data, backport from 0.4.5.7):
637    - We have switched geoip data sources. Previously we shipped IP-to-
638      country mappings from Maxmind's GeoLite2, but in 2019 they changed
639      their licensing terms, so we were unable to update them after that
640      point. We now ship geoip files based on the IPFire Location
641      Database instead. (See https://location.ipfire.org/ for more
642      information). This release updates our geoip files to match the
643      IPFire Location Database as retrieved on 2021/03/12. Closes
644      ticket 40224.
645
646  o Removed features (mallinfo deprecated, backport from 0.4.5.7):
647    - Remove mallinfo() usage entirely. Libc 2.33+ now deprecates it.
648      Closes ticket 40309.
649
650
651Changes in version 0.4.4.8 - 2021-03-16
652  Tor 0.4.4.8 backports fixes for two important denial-of-service bugs
653  in earlier versions of Tor.
654
655  One of these vulnerabilities (TROVE-2021-001) would allow an attacker
656  who can send directory data to a Tor instance to force that Tor
657  instance to consume huge amounts of CPU. This is easiest to exploit
658  against authorities, since anybody can upload to them, but directory
659  caches could also exploit this vulnerability against relays or clients
660  when they download. The other vulnerability (TROVE-2021-002) only
661  affects directory authorities, and would allow an attacker to remotely
662  crash the authority with an assertion failure. Patches have already
663  been provided to the authority operators, to help ensure
664  network stability.
665
666  We recommend that everybody upgrade to one of the releases that fixes
667  these issues (0.3.5.14, 0.4.4.8, or 0.4.5.7) as they become available
668  to you.
669
670  This release also updates our GeoIP data source, and fixes a
671  compatibility issue.
672
673  o Major bugfixes (security, denial of service, backport from 0.4.5.7):
674    - Disable the dump_desc() function that we used to dump unparseable
675      information to disk. It was called incorrectly in several places,
676      in a way that could lead to excessive CPU usage. Fixes bug 40286;
677      bugfix on 0.2.2.1-alpha. This bug is also tracked as TROVE-2021-
678      001 and CVE-2021-28089.
679    - Fix a bug in appending detached signatures to a pending consensus
680      document that could be used to crash a directory authority. Fixes
681      bug 40316; bugfix on 0.2.2.6-alpha. Tracked as TROVE-2021-002
682      and CVE-2021-28090.
683
684  o Minor features (geoip data, backport from 0.4.5.7):
685    - We have switched geoip data sources. Previously we shipped IP-to-
686      country mappings from Maxmind's GeoLite2, but in 2019 they changed
687      their licensing terms, so we were unable to update them after that
688      point. We now ship geoip files based on the IPFire Location
689      Database instead. (See https://location.ipfire.org/ for more
690      information). This release updates our geoip files to match the
691      IPFire Location Database as retrieved on 2021/03/12. Closes
692      ticket 40224.
693
694  o Removed features (mallinfo deprecated, backport from 0.4.5.7):
695    - Remove mallinfo() usage entirely. Libc 2.33+ now deprecates it.
696      Closes ticket 40309.
697
698
699Changes in version 0.4.5.7 - 2021-03-16
700  Tor 0.4.5.7 fixes two important denial-of-service bugs in earlier
701  versions of Tor.
702
703  One of these vulnerabilities (TROVE-2021-001) would allow an attacker
704  who can send directory data to a Tor instance to force that Tor
705  instance to consume huge amounts of CPU. This is easiest to exploit
706  against authorities, since anybody can upload to them, but directory
707  caches could also exploit this vulnerability against relays or clients
708  when they download. The other vulnerability (TROVE-2021-002) only
709  affects directory authorities, and would allow an attacker to remotely
710  crash the authority with an assertion failure. Patches have already
711  been provided to the authority operators, to help ensure
712  network stability.
713
714  We recommend that everybody upgrade to one of the releases that fixes
715  these issues (0.3.5.14, 0.4.4.8, or 0.4.5.7) as they become available
716  to you.
717
718  This release also updates our GeoIP data source, and fixes a few
719  smaller bugs in earlier releases.
720
721  o Major bugfixes (security, denial of service):
722    - Disable the dump_desc() function that we used to dump unparseable
723      information to disk. It was called incorrectly in several places,
724      in a way that could lead to excessive CPU usage. Fixes bug 40286;
725      bugfix on 0.2.2.1-alpha. This bug is also tracked as TROVE-2021-
726      001 and CVE-2021-28089.
727    - Fix a bug in appending detached signatures to a pending consensus
728      document that could be used to crash a directory authority. Fixes
729      bug 40316; bugfix on 0.2.2.6-alpha. Tracked as TROVE-2021-002
730      and CVE-2021-28090.
731
732  o Minor features (geoip data):
733    - We have switched geoip data sources. Previously we shipped IP-to-
734      country mappings from Maxmind's GeoLite2, but in 2019 they changed
735      their licensing terms, so we were unable to update them after that
736      point. We now ship geoip files based on the IPFire Location
737      Database instead. (See https://location.ipfire.org/ for more
738      information). This release updates our geoip files to match the
739      IPFire Location Database as retrieved on 2021/03/12. Closes
740      ticket 40224.
741
742  o Minor bugfixes (directory authority):
743    - Now that exit relays don't allow exit connections to directory
744      authority DirPorts (to prevent network reentry), disable
745      authorities' reachability self test on the DirPort. Fixes bug
746      40287; bugfix on 0.4.5.5-rc.
747
748  o Minor bugfixes (documentation):
749    - Fix a formatting error in the documentation for
750      VirtualAddrNetworkIPv6. Fixes bug 40256; bugfix on 0.2.9.4-alpha.
751
752  o Minor bugfixes (Linux, relay):
753    - Fix a bug in determining total available system memory that would
754      have been triggered if the format of Linux's /proc/meminfo file
755      had ever changed to include "MemTotal:" in the middle of a line.
756      Fixes bug 40315; bugfix on 0.2.5.4-alpha.
757
758  o Minor bugfixes (metrics port):
759    - Fix a BUG() warning on the MetricsPort for an internal missing
760      handler. Fixes bug 40295; bugfix on 0.4.5.1-alpha.
761
762  o Minor bugfixes (onion service):
763    - Remove a harmless BUG() warning when reloading tor configured with
764      onion services. Fixes bug 40334; bugfix on 0.4.5.1-alpha.
765
766  o Minor bugfixes (portability):
767    - Fix a non-portable usage of "==" with "test" in the configure
768      script. Fixes bug 40298; bugfix on 0.4.5.1-alpha.
769
770  o Minor bugfixes (relay):
771    - Remove a spammy log notice falsely claiming that the IPv4/v6
772      address was missing. Fixes bug 40300; bugfix on 0.4.5.1-alpha.
773    - Do not query the address cache early in the boot process when
774      deciding if a relay needs to fetch early directory information
775      from an authority. This bug resulted in a relay falsely believing
776      it didn't have an address and thus triggering an authority fetch
777      at each boot. Related to our fix for 40300.
778
779  o Removed features (mallinfo deprecated):
780    - Remove mallinfo() usage entirely. Libc 2.33+ now deprecates it.
781      Closes ticket 40309.
782
783
784Changes in version 0.4.5.6 - 2021-02-15
785  The Tor 0.4.5.x release series is dedicated to the memory of Karsten
786  Loesing (1979-2020), Tor developer, cypherpunk, husband, and father.
787  Karsten is best known for creating the Tor metrics portal and leading
788  the metrics team, but he was involved in Tor from the early days. For
789  example, while he was still a student he invented and implemented the
790  v2 onion service directory design, and he also served as an ambassador
791  to the many German researchers working in the anonymity field. We
792  loved him and respected him for his patience, his consistency, and his
793  welcoming approach to growing our community.
794
795  This release series introduces significant improvements in relay IPv6
796  address discovery, a new "MetricsPort" mechanism for relay operators
797  to measure performance, LTTng support, build system improvements to
798  help when using Tor as a static library, and significant bugfixes
799  related to Windows relay performance. It also includes numerous
800  smaller features and bugfixes.
801
802  Below are the changes since 0.4.4.4-rc. For a complete list of changes
803  since 0.4.4.7, see the ReleaseNotes file.
804
805  o Major bugfixes (IPv6, relay):
806    - Fix a bug that prevented a relay from publishing its descriptor if
807      an auto-discovered IPv6 that was found unreachable. Fixes bug
808      40279; bugfix on 0.4.5.1-alpha.
809
810  o Minor features (protocol versions):
811    - Stop claiming to support the "DirCache=1" subprotocol version.
812      Technically, we stopped supporting this subprotocol back in
813      0.4.5.1-alpha, but we needed to wait for the authorities to stop
814      listing it as "required" before we could drop it from the list.
815      Closes ticket 40221.
816
817  o Minor bugfixes (logging):
818    - Avoid a spurious log message about missing subprotocol versions,
819      when the consensus that we're reading from is older than the
820      current release. Previously we had made this message nonfatal, but
821      in practice, it is never relevant when the consensus is older than
822      the current release. Fixes bug 40281; bugfix on 0.4.0.1-alpha.
823
824  o Minor bugfixes (metrics port):
825    - Fix a bug warning when a metrics port socket was unexpectedly
826      closed. Fixes bug 40257; bugfix on 0.4.5.1-alpha
827
828  o Minor bugfixes (relay):
829    - Allow relays to have a RFC1918 address if PublishServerDescriptor
830      is set to 0 and AssumeReachable is set to 1. This is to support
831      the use case of a bridge on a local network, exposed via a
832      pluggable transport. Fixes bug 40208; bugfix on 0.4.5.1-alpha.
833
834  o Minor bugfixes (relay, config):
835    - Fix a problem in the removal of duplicate ORPorts from the
836      internal port list when loading the config file. We were removing
837      the wrong ports, breaking valid torrc uses cases for multiple
838      ORPorts of the same address family. Fixes bug 40289; bugfix
839      on 0.4.5.1-alpha.
840
841
842Changes in version 0.4.4.7 - 2021-02-03
843  Tor 0.4.4.7 backports numerous bugfixes from later releases,
844  including one that made v3 onion services more susceptible to
845  denial-of-service attacks, and a feature that makes some kinds of
846  DoS attacks harder to perform.
847
848  o Major bugfixes (onion service v3, backport from 0.4.5.3-rc):
849    - Stop requiring a live consensus for v3 clients and services, and
850      allow a "reasonably live" consensus instead. This allows v3 onion
851      services to work even if the authorities fail to generate a
852      consensus for more than 2 hours in a row. Fixes bug 40237; bugfix
853      on 0.3.5.1-alpha.
854
855  o Major feature (exit, backport from 0.4.5.5-rc):
856    - Re-entry into the network is now denied at the Exit level to all
857      relays' ORPorts and authorities' ORPorts and DirPorts. This change
858      should help mitgate a set of denial-of-service attacks. Closes
859      ticket 2667.
860
861  o Minor feature (build system, backport from 0.4.5.4-rc):
862    - New "make lsp" command to generate the compile_commands.json file
863      used by the ccls language server. The "bear" program is needed for
864      this. Closes ticket 40227.
865
866  o Minor features (compilation, backport from 0.4.5.2-rc):
867    - Disable deprecation warnings when building with OpenSSL 3.0.0 or
868      later. There are a number of APIs newly deprecated in OpenSSL
869      3.0.0 that Tor still requires. (A later version of Tor will try to
870      stop depending on these APIs.) Closes ticket 40165.
871
872  o Minor features (crypto, backport from 0.4.5.3-rc):
873    - Fix undefined behavior on our Keccak library. The bug only
874      appeared on platforms with 32-byte CPU cache lines (e.g. armv5tel)
875      and would result in wrong digests. Fixes bug 40210; bugfix on
876      0.2.8.1-alpha. Thanks to Bernhard Übelacker, Arnd Bergmann and
877      weasel for diagnosing this.
878
879  o Minor bugfixes (compatibility, backport from 0.4.5.1-rc):
880    - Strip '\r' characters when reading text files on Unix platforms.
881      This should resolve an issue where a relay operator migrates a
882      relay from Windows to Unix, but does not change the line ending of
883      Tor's various state files to match the platform, and the CRLF line
884      endings from Windows end up leaking into other files such as the
885      extra-info document. Fixes bug 33781; bugfix on 0.0.9pre5.
886
887  o Minor bugfixes (compilation, backport from 0.4.5.3-rc):
888    - Fix a compilation warning about unreachable fallthrough
889      annotations when building with "--enable-all-bugs-are-fatal" on
890      some compilers. Fixes bug 40241; bugfix on 0.3.5.4-alpha.
891
892  o Minor bugfixes (SOCKS5, backport from 0.4.5.3-rc):
893    - Handle partial SOCKS5 messages correctly. Previously, our code
894      would send an incorrect error message if it got a SOCKS5 request
895      that wasn't complete. Fixes bug 40190; bugfix on 0.3.5.1-alpha.
896
897  o Minor bugfixes (testing, backport from 0.4.5.2-alpha):
898    - Fix the `config/parse_tcp_proxy_line` test so that it works
899      correctly on systems where the DNS provider hijacks invalid
900      queries. Fixes part of bug 40179; bugfix on 0.4.3.1-alpha.
901    - Fix our Python reference-implementation for the v3 onion service
902      handshake so that it works correctly with the version of hashlib
903      provided by Python 3.9. Fixes part of bug 40179; bugfix
904      on 0.3.1.6-rc.
905    - Fix the `tortls/openssl/log_one_error` test to work with OpenSSL
906      3.0.0. Fixes bug 40170; bugfix on 0.2.8.1-alpha.
907
908
909Changes in version 0.4.3.8 - 2021-02-03
910  Tor 0.4.3.8 backports numerous bugfixes from later releases,
911  including one that made v3 onion services more susceptible to
912  denial-of-service attacks, and a feature that makes some kinds of
913  DoS attacks harder to perform.
914
915  Note that this is, in all likelihood, the last release of Tor 0.4.3.x,
916  which will reach end-of-life on 15 Feb 2021.
917
918  o Major bugfixes (onion service v3, backport from 0.4.5.3-rc):
919    - Stop requiring a live consensus for v3 clients and services, and
920      allow a "reasonably live" consensus instead. This allows v3 onion
921      services to work even if the authorities fail to generate a
922      consensus for more than 2 hours in a row. Fixes bug 40237; bugfix
923      on 0.3.5.1-alpha.
924
925  o Major bugfixes (stats, onion services, backport from 0.4.4.5):
926    - Fix a bug where we were undercounting the Tor network's total
927      onion service traffic, by ignoring any traffic originating from
928      clients. Now we count traffic from both clients and services.
929      Fixes bug 40117; bugfix on 0.2.6.2-alpha.
930
931  o Major feature (exit, backport from 0.4.5.5-rc):
932    - Re-entry into the network is now denied at the Exit level to all
933      relays' ORPorts and authorities' ORPorts and DirPorts. This change
934      should help mitgate a set of denial-of-service attacks. Closes
935      ticket 2667.
936
937  o Minor feature (build system, backport from 0.4.5.4-rc):
938    - New "make lsp" command to generate the compile_commands.json file
939      used by the ccls language server. The "bear" program is needed for
940      this. Closes ticket 40227.
941
942  o Minor features (compilation, backport from 0.4.5.2-rc):
943    - Disable deprecation warnings when building with OpenSSL 3.0.0 or
944      later. There are a number of APIs newly deprecated in OpenSSL
945      3.0.0 that Tor still requires. (A later version of Tor will try to
946      stop depending on these APIs.) Closes ticket 40165.
947
948  o Minor features (crypto, backport from 0.4.5.3-rc):
949    - Fix undefined behavior on our Keccak library. The bug only
950      appeared on platforms with 32-byte CPU cache lines (e.g. armv5tel)
951      and would result in wrong digests. Fixes bug 40210; bugfix on
952      0.2.8.1-alpha. Thanks to Bernhard Übelacker, Arnd Bergmann and
953      weasel for diagnosing this.
954
955  o Minor bugfixes (compatibility, backport from 0.4.5.1-rc):
956    - Strip '\r' characters when reading text files on Unix platforms.
957      This should resolve an issue where a relay operator migrates a
958      relay from Windows to Unix, but does not change the line ending of
959      Tor's various state files to match the platform, and the CRLF line
960      endings from Windows end up leaking into other files such as the
961      extra-info document. Fixes bug 33781; bugfix on 0.0.9pre5.
962
963  o Minor bugfixes (compilation, backport from 0.4.5.1-rc):
964    - Resolve a compilation warning that could occur in
965      test_connection.c. Fixes bug 40113; bugfix on 0.2.9.3-alpha.
966
967  o Minor bugfixes (compilation, backport from 0.4.5.3-rc):
968    - Fix a compilation warning about unreachable fallthrough
969      annotations when building with "--enable-all-bugs-are-fatal" on
970      some compilers. Fixes bug 40241; bugfix on 0.3.5.4-alpha.
971
972  o Minor bugfixes (SOCKS5, backport from 0.4.5.3-rc):
973    - Handle partial SOCKS5 messages correctly. Previously, our code
974      would send an incorrect error message if it got a SOCKS5 request
975      that wasn't complete. Fixes bug 40190; bugfix on 0.3.5.1-alpha.
976
977  o Minor bugfixes (testing, backport from 0.4.5.2-alpha):
978    - Fix the `config/parse_tcp_proxy_line` test so that it works
979      correctly on systems where the DNS provider hijacks invalid
980      queries. Fixes part of bug 40179; bugfix on 0.4.3.1-alpha.
981    - Fix our Python reference-implementation for the v3 onion service
982      handshake so that it works correctly with the version of hashlib
983      provided by Python 3.9. Fixes part of bug 40179; bugfix
984      on 0.3.1.6-rc.
985    - Fix the `tortls/openssl/log_one_error` test to work with OpenSSL
986      3.0.0. Fixes bug 40170; bugfix on 0.2.8.1-alpha.
987
988
989Changes in version 0.3.5.13 - 2020-02-03
990  Tor 0.3.5.13 backports numerous bugfixes from later releases,
991  including one that made v3 onion services more susceptible to
992  denial-of-service attacks, and a feature that makes some kinds of
993  DoS attacks harder to perform.
994
995  o Major bugfixes (onion service v3, backport from 0.4.5.3-rc):
996    - Stop requiring a live consensus for v3 clients and services, and
997      allow a "reasonably live" consensus instead. This allows v3 onion
998      services to work even if the authorities fail to generate a
999      consensus for more than 2 hours in a row. Fixes bug 40237; bugfix
1000      on 0.3.5.1-alpha.
1001
1002  o Major bugfixes (stats, onion services, backport from 0.4.4.5):
1003    - Fix a bug where we were undercounting the Tor network's total
1004      onion service traffic, by ignoring any traffic originating from
1005      clients. Now we count traffic from both clients and services.
1006      Fixes bug 40117; bugfix on 0.2.6.2-alpha.
1007
1008  o Major feature (exit, backport from 0.4.5.5-rc):
1009    - Re-entry into the network is now denied at the Exit level to all
1010      relays' ORPorts and authorities' ORPorts and DirPorts. This change
1011      should help mitgate a set of denial-of-service attacks. Closes
1012      ticket 2667.
1013
1014  o Minor feature (build system, backport from 0.4.5.4-rc):
1015    - New "make lsp" command to generate the compile_commands.json file
1016      used by the ccls language server. The "bear" program is needed for
1017      this. Closes ticket 40227.
1018
1019  o Minor features (compilation, backport from 0.4.5.2-rc):
1020    - Disable deprecation warnings when building with OpenSSL 3.0.0 or
1021      later. There are a number of APIs newly deprecated in OpenSSL
1022      3.0.0 that Tor still requires. (A later version of Tor will try to
1023      stop depending on these APIs.) Closes ticket 40165.
1024
1025  o Minor features (crypto, backport from 0.4.5.3-rc):
1026    - Fix undefined behavior on our Keccak library. The bug only
1027      appeared on platforms with 32-byte CPU cache lines (e.g. armv5tel)
1028      and would result in wrong digests. Fixes bug 40210; bugfix on
1029      0.2.8.1-alpha. Thanks to Bernhard Übelacker, Arnd Bergmann and
1030      weasel for diagnosing this.
1031
1032  o Minor bugfixes (compatibility, backport from 0.4.5.1-rc):
1033    - Strip '\r' characters when reading text files on Unix platforms.
1034      This should resolve an issue where a relay operator migrates a
1035      relay from Windows to Unix, but does not change the line ending of
1036      Tor's various state files to match the platform, and the CRLF line
1037      endings from Windows end up leaking into other files such as the
1038      extra-info document. Fixes bug 33781; bugfix on 0.0.9pre5.
1039
1040  o Minor bugfixes (compilation, backport from 0.4.5.1-rc):
1041    - Resolve a compilation warning that could occur in
1042      test_connection.c. Fixes bug 40113; bugfix on 0.2.9.3-alpha.
1043
1044  o Minor bugfixes (compilation, backport from 0.4.5.3-rc):
1045    - Fix a compilation warning about unreachable fallthrough
1046      annotations when building with "--enable-all-bugs-are-fatal" on
1047      some compilers. Fixes bug 40241; bugfix on 0.3.5.4-alpha.
1048
1049  o Minor bugfixes (SOCKS5, backport from 0.4.5.3-rc):
1050    - Handle partial SOCKS5 messages correctly. Previously, our code
1051      would send an incorrect error message if it got a SOCKS5 request
1052      that wasn't complete. Fixes bug 40190; bugfix on 0.3.5.1-alpha.
1053
1054  o Minor bugfixes (testing, backport from 0.4.5.2-alpha):
1055    - Fix our Python reference-implementation for the v3 onion service
1056      handshake so that it works correctly with the version of hashlib
1057      provided by Python 3.9. Fixes part of bug 40179; bugfix
1058      on 0.3.1.6-rc.
1059    - Fix the `tortls/openssl/log_one_error` test to work with OpenSSL
1060      3.0.0. Fixes bug 40170; bugfix on 0.2.8.1-alpha.
1061
1062
1063Changes in version 0.4.5.5-rc - 2021-02-01
1064  Tor 0.4.5.5-rc is the third release candidate in its series. We're
1065  coming closer and closer to a stable release series. This release
1066  fixes an annoyance with address detection code, and somewhat mitigates
1067  an ongoing denial-of-service attack.
1068
1069  We anticipate no more code changes between this and the stable
1070  release, though of course that could change.
1071
1072  o Major feature (exit):
1073    - Re-entry into the network is now denied at the Exit level to all
1074      relays' ORPorts and authorities' ORPorts and DirPorts. This change
1075      should help mitgate a set of denial-of-service attacks. Closes
1076      ticket 2667.
1077
1078  o Minor bugfixes (relay, configuration):
1079    - Don't attempt to discover our address (IPv4 or IPv6) if no ORPort
1080      for it can be found in the configuration. Fixes bug 40254; bugfix
1081      on 0.4.5.1-alpha.
1082
1083
1084Changes in version 0.4.5.4-rc - 2021-01-22
1085  Tor 0.4.5.4-rc is the second release candidate in its series. It fixes
1086  several bugs present in previous releases.
1087
1088  We expect that the stable release will be the same, or almost the
1089  same, as this release candidate, unless serious bugs are found.
1090
1091  o Major bugfixes (authority, IPv6):
1092    - Do not consider multiple relays in the same IPv6 /64 network to be
1093      sybils. Fixes bug 40243; bugfix on 0.4.5.1-alpha.
1094
1095  o Major bugfixes (directory cache, performance, windows):
1096    - Limit the number of items in the consensus diff cache to 64 on
1097      Windows. We hope this will mitigate an issue where Windows relay
1098      operators reported Tor using 100% CPU, while we investigate better
1099      solutions. Fixes bug 24857; bugfix on 0.3.1.1-alpha.
1100
1101  o Minor feature (build system):
1102    - New "make lsp" command to generate the compile_commands.json file
1103      used by the ccls language server. The "bear" program is needed for
1104      this. Closes ticket 40227.
1105
1106  o Minor features (authority, logging):
1107    - Log more information for directory authority operators during the
1108      consensus voting process, and while processing relay descriptors.
1109      Closes ticket 40245.
1110    - Reject obsolete router/extrainfo descriptors earlier and more
1111      quietly, to avoid spamming the logs. Fixes bug 40238; bugfix
1112      on 0.4.5.1-alpha.
1113
1114  o Minor bugfixes (compilation):
1115    - Fix another warning about unreachable fallthrough annotations when
1116      building with "--enable-all-bugs-are-fatal" on some compilers.
1117      Fixes bug 40241; bugfix on 0.4.5.3-rc.
1118    - Change the linker flag ordering in our library search code so that
1119      it works for compilers that need the libraries to be listed in the
1120      right order. Fixes bug 33624; bugfix on 0.1.1.0-alpha.
1121
1122  o Minor bugfixes (config, bridge):
1123    - Don't initiate a connection to a bridge configured to use a
1124      missing transport. This change reverts an earlier fix that would
1125      try to avoid such situations during configuration chcecking, but
1126      which doesn't work with DisableNetwork. Fixes bug 40106; bugfix
1127      on 0.4.5.1-alpha.
1128
1129  o Minor bugfixes (onion services):
1130    - Avoid a non-fatal assertion in certain edge-cases when
1131      establishing a circuit to an onion service. Fixes bug 32666;
1132      bugfix on 0.3.0.3-alpha.
1133
1134  o Minor bugfixes (relay):
1135    - If we were unable to build our descriptor, don't mark it as having
1136      been advertised. Also remove an harmless BUG(). Fixes bug 40231;
1137      bugfix on 0.4.5.1-alpha.
1138
1139
1140Changes in version 0.4.5.3-rc - 2021-01-12
1141  Tor 0.4.5.3-rc is the first release candidate in its series. It fixes
1142  several bugs, including one that broke onion services on certain older
1143  ARM CPUs, and another that made v3 onion services less reliable.
1144
1145  Though we anticipate that we'll be doing a bit more clean-up between
1146  now and the stable release, we expect that our remaining changes will
1147  be fairly simple. There will be at least one more release candidate
1148  before 0.4.5.x is stable.
1149
1150  o Major bugfixes (onion service v3):
1151    - Stop requiring a live consensus for v3 clients and services, and
1152      allow a "reasonably live" consensus instead. This allows v3 onion
1153      services to work even if the authorities fail to generate a
1154      consensus for more than 2 hours in a row. Fixes bug 40237; bugfix
1155      on 0.3.5.1-alpha.
1156
1157  o Minor features (crypto):
1158    - Fix undefined behavior on our Keccak library. The bug only
1159      appeared on platforms with 32-byte CPU cache lines (e.g. armv5tel)
1160      and would result in wrong digests. Fixes bug 40210; bugfix on
1161      0.2.8.1-alpha. Thanks to Bernhard Übelacker, Arnd Bergmann and
1162      weasel for diagnosing this.
1163
1164  o Minor features (documentation):
1165    - Mention the "!badexit" directive that can appear in an authority's
1166      approved-routers file, and update the description of the
1167      "!invalid" directive. Closes ticket 40188.
1168
1169  o Minor bugfixes (compilation):
1170    - Fix a compilation warning about unreachable fallthrough
1171      annotations when building with "--enable-all-bugs-are-fatal" on
1172      some compilers. Fixes bug 40241; bugfix on 0.3.5.4-alpha.
1173    - Fix the "--enable-static-tor" switch to properly set the "-static"
1174      compile option onto the tor binary only. Fixes bug 40111; bugfix
1175      on 0.2.3.1-alpha.
1176
1177  o Minor bugfixes (config, bridge):
1178    - Really fix the case where torrc has a missing ClientTransportPlugin
1179      but is configured with a Bridge line and UseBridges. Previously,
1180      we didn't look at the managed proxy list and thus would fail for
1181      the "exec" case. Fixes bug 40106; bugfix on 0.4.5.1-alpha.
1182
1183  o Minor bugfixes (logging, relay):
1184    - Log our address as reported by the directory authorities, if none
1185      was configured or detected before. Fixes bug 40201; bugfix
1186      on 0.4.5.1-alpha.
1187    - When a launching bandwidth testing circuit, don't incorrectly call
1188      it a reachability test, or trigger a "CHECKING_REACHABILITY"
1189      control event. Fixes bug 40205; bugfix on 0.4.5.1-alpha.
1190
1191  o Minor bugfixes (relay, statistics):
1192    - Report the correct connection statistics in our extrainfo
1193      documents. Previously there was a problem in the file loading
1194      function which would wrongly truncate a state file, causing the
1195      wrong information to be reported. Fixes bug 40226; bugfix
1196      on 0.4.5.1-alpha.
1197
1198  o Minor bugfixes (SOCKS5):
1199    - Handle partial SOCKS5 messages correctly. Previously, our code
1200      would send an incorrect error message if it got a SOCKS5 request
1201      that wasn't complete. Fixes bug 40190; bugfix on 0.3.5.1-alpha.
1202
1203
1204Changes in version 0.4.5.2-alpha - 2020-11-23
1205  Tor 0.4.5.2-alpha is the second alpha release in the 0.4.5.x series.
1206  It fixes several bugs present in earlier releases, including one that
1207  made it impractical to run relays on Windows. It also adds a few small
1208  safety features to improve Tor's behavior in the presence of strange
1209  compile-time options, misbehaving proxies, and future versions
1210  of OpenSSL.
1211
1212  o Major bugfixes (relay, windows):
1213    - Fix a bug in our implementation of condition variables on Windows.
1214      Previously, a relay on Windows would use 100% CPU after running
1215      for some time. Because of this change, Tor now require Windows
1216      Vista or later to build and run. Fixes bug 30187; bugfix on
1217      0.2.6.3-alpha. (This bug became more serious in 0.3.1.1-alpha with
1218      the introduction of consensus diffs.) Patch by Daniel Pinto.
1219
1220  o Minor features (compilation):
1221    - Disable deprecation warnings when building with OpenSSL 3.0.0 or
1222      later. There are a number of APIs newly deprecated in OpenSSL
1223      3.0.0 that Tor still requires. (A later version of Tor will try to
1224      stop depending on these APIs.) Closes ticket 40165.
1225
1226  o Minor features (protocol, proxy support, defense in depth):
1227    - Respond more deliberately to misbehaving proxies that leave
1228      leftover data on their connections, so as to make Tor even less
1229      likely to allow the proxies to pass their data off as having come
1230      from a relay. Closes ticket 40017.
1231
1232  o Minor features (safety):
1233    - Log a warning at startup if Tor is built with compile-time options
1234      that are likely to make it less stable or reliable. Closes
1235      ticket 18888.
1236
1237  o Minor bugfixes (circuit, handshake):
1238    - In the v3 handshaking code, use connection_or_change_state() to
1239      change the state. Previously, we changed the state directly, but
1240      this did not pass the state change to the pubsub or channel
1241      objects, potentially leading to bugs. Fixes bug 32880; bugfix on
1242      0.2.3.6-alpha. Patch by Neel Chauhan.
1243
1244  o Minor bugfixes (compilation):
1245    - Use the correct 'ranlib' program when building libtor.a.
1246      Previously we used the default ranlib, which broke some kinds of
1247      cross-compilation. Fixes bug 40172; bugfix on 0.4.5.1-alpha.
1248    - Remove a duplicate typedef in metrics_store.c. Fixes bug 40177;
1249      bugfix on 0.4.5.1-alpha.
1250    - When USDT tracing is enabled, and STAP_PROBEV() is missing, don't
1251      attempt to build. Linux supports that macro but not the BSDs.
1252      Fixes bug 40174; bugfix on 0.4.5.1-alpha.
1253
1254  o Minor bugfixes (configuration):
1255    - Exit Tor on a misconfiguration when the Bridge line is configured
1256      to use a transport but no corresponding ClientTransportPlugin can
1257      be found. Prior to this fix, Tor would attempt to connect to the
1258      bridge directly without using the transport, making it easier for
1259      adversaries to notice the bridge. Fixes bug 25528; bugfix
1260      on 0.2.6.1-alpha.
1261    - Fix an issue where an ORPort was compared with other kinds of
1262      ports, when it should have been only checked against other
1263      ORPorts. This bug would lead to "DirPort auto" getting ignored.
1264      Fixes bug 40195; bugfix on 0.4.5.1-alpha.
1265    - Fix a bug where a second non-ORPort with a variant family (ex:
1266      SocksPort [::1]:9050) would be ignored due to a configuration
1267      parsing error. Fixes bug 40183; bugfix on 0.4.5.1-alpha.
1268
1269  o Minor bugfixes (crash, relay, signing key):
1270    - Avoid assertion failures when we run Tor from the command line
1271      with `--key-expiration sign`, but an ORPort is not set. Fixes bug
1272      40015; bugfix on 0.3.2.1-alpha. Patch by Neel Chauhan.
1273
1274  o Minor bugfixes (logging):
1275    - Remove trailing whitespace from control event log messages. Fixes
1276      bug 32178; bugfix on 0.1.1.1-alpha. Based on a patch by
1277      Amadeusz Pawlik.
1278    - Turn warning-level log message about SENDME failure into a debug-
1279      level message. (This event can happen naturally, and is no reason
1280      for concern). Fixes bug 40142; bugfix on 0.4.1.1-alpha.
1281
1282  o Minor bugfixes (relay, address discovery):
1283    - Don't trigger an IP change when no new valid IP can be found.
1284      Fixes bug 40071; bugfix on 0.4.5.1-alpha.
1285    - When attempting to discover our IP, use a simple test circuit,
1286      rather than a descriptor fetch: the same address information is
1287      present in NETINFO cells, and is better authenticated there. Fixes
1288      bug 40071; bugfix on 0.4.5.1-alpha.
1289
1290  o Minor bugfixes (testing):
1291    - Fix the `config/parse_tcp_proxy_line` test so that it works
1292      correctly on systems where the DNS provider hijacks invalid
1293      queries. Fixes part of bug 40179; bugfix on 0.4.3.1-alpha.
1294    - Fix unit tests that used newly generated list of routers so that
1295      they check them with respect to the date when they were generated,
1296      not with respect to the current time. Fixes bug 40187; bugfix
1297      on 0.4.5.1-alpha.
1298    - Fix our Python reference-implementation for the v3 onion service
1299      handshake so that it works correctly with the version of hashlib
1300      provided by Python 3.9. Fixes part of bug 40179; bugfix
1301      on 0.3.1.6-rc.
1302    - Fix the `tortls/openssl/log_one_error` test to work with OpenSSL
1303      3.0.0. Fixes bug 40170; bugfix on 0.2.8.1-alpha.
1304
1305  o Removed features (controller):
1306    - Remove the "GETINFO network-status" controller command. It has
1307      been deprecated since 0.3.1.1-alpha. Closes ticket 22473.
1308
1309
1310Changes in version 0.4.4.6 - 2020-11-12
1311  Tor 0.4.4.6 is the second stable release in the 0.4.4.x series. It
1312  backports fixes from later releases, including a fix for TROVE-2020-
1313  005, a security issue that could be used, under certain cases, by an
1314  adversary to observe traffic patterns on a limited number of circuits
1315  intended for a different relay.
1316
1317  o Major bugfixes (security, backport from 0.4.5.1-alpha):
1318    - When completing a channel, relays now check more thoroughly to
1319      make sure that it matches any pending circuits before attaching
1320      those circuits. Previously, address correctness and Ed25519
1321      identities were not checked in this case, but only when extending
1322      circuits on an existing channel. Fixes bug 40080; bugfix on
1323      0.2.7.2-alpha. Resolves TROVE-2020-005.
1324
1325  o Minor features (directory authorities, backport from 0.4.5.1-alpha):
1326    - Authorities now list a different set of protocols as required and
1327      recommended. These lists have been chosen so that only truly
1328      recommended and/or required protocols are included, and so that
1329      clients using 0.2.9 or later will continue to work (even though
1330      they are not supported), whereas only relays running 0.3.5 or
1331      later will meet the requirements. Closes ticket 40162.
1332    - Make it possible to specify multiple ConsensusParams torrc lines.
1333      Now directory authority operators can for example put the main
1334      ConsensusParams config in one torrc file and then add to it from a
1335      different torrc file. Closes ticket 40164.
1336
1337  o Minor features (subprotocol versions, backport from 0.4.5.1-alpha):
1338    - Tor no longer allows subprotocol versions larger than 63.
1339      Previously version numbers up to UINT32_MAX were allowed, which
1340      significantly complicated our code. Implements proposal 318;
1341      closes ticket 40133.
1342
1343  o Minor features (tests, v2 onion services, backport from 0.4.5.1-alpha):
1344    - Fix a rendezvous cache unit test that was triggering an underflow
1345      on the global rend cache allocation. Fixes bug 40125; bugfix
1346      on 0.2.8.1-alpha.
1347    - Fix another rendezvous cache unit test that was triggering an
1348      underflow on the global rend cache allocation. Fixes bug 40126;
1349      bugfix on 0.2.8.1-alpha.
1350
1351  o Minor bugfixes (compilation, backport from 0.4.5.1-alpha):
1352    - Fix compiler warnings that would occur when building with
1353      "--enable-all-bugs-are-fatal" and "--disable-module-relay" at the
1354      same time. Fixes bug 40129; bugfix on 0.4.4.1-alpha.
1355    - Resolve a compilation warning that could occur in
1356      test_connection.c. Fixes bug 40113; bugfix on 0.2.9.3-alpha.
1357
1358  o Minor bugfixes (logging, backport from 0.4.5.1-alpha):
1359    - Remove a debug logging statement that uselessly spammed the logs.
1360      Fixes bug 40135; bugfix on 0.3.5.0-alpha.
1361
1362  o Minor bugfixes (relay configuration, crash, backport from 0.4.5.1-alpha):
1363    - Avoid a fatal assert() when failing to create a listener
1364      connection for an address that was in use. Fixes bug 40073; bugfix
1365      on 0.3.5.1-alpha.
1366
1367  o Minor bugfixes (v2 onion services, backport from 0.4.5.1-alpha):
1368    - For HSFETCH commands on v2 onion services addresses, check the
1369      length of bytes decoded, not the base32 length. Fixes bug 34400;
1370      bugfix on 0.4.1.1-alpha. Patch by Neel Chauhan.
1371
1372
1373Changes in version 0.4.3.7 - 2020-11-12
1374  Tor 0.4.3.7 backports several bugfixes from later releases. It
1375  includes a fix for TROVE-2020-005, a security issue that could be
1376  used, under certain cases, by an adversary to observe traffic patterns
1377  on a limited number of circuits intended for a different relay.
1378
1379  Please be aware that support for the 0.4.3.x series will end on 15
1380  February 2021. Please upgrade to 0.4.4.x or 0.4.5.x before then, or
1381  downgrade to 0.3.5.x, which will be supported until at least 1
1382  February 2022.
1383
1384  o Major features (fallback directory list, backport form 0.4.4.3-alpha):
1385    - Replace the 148 fallback directories originally included in Tor
1386      0.4.1.4-rc (of which around 105 are still functional) with a list
1387      of 144 fallbacks generated in July 2020. Closes ticket 40061.
1388
1389  o Major bugfixes (security, backport from 0.4.5.1-alpha):
1390    - When completing a channel, relays now check more thoroughly to
1391      make sure that it matches any pending circuits before attaching
1392      those circuits. Previously, address correctness and Ed25519
1393      identities were not checked in this case, but only when extending
1394      circuits on an existing channel. Fixes bug 40080; bugfix on
1395      0.2.7.2-alpha. Resolves TROVE-2020-005.
1396
1397  o Major bugfixes (NSS, backport from 0.4.4.3-alpha):
1398    - When running with NSS enabled, make sure that NSS knows to expect
1399      nonblocking sockets. Previously, we set our TCP sockets as
1400      nonblocking, but did not tell NSS, which in turn could lead to
1401      unexpected blocking behavior. Fixes bug 40035; bugfix
1402      on 0.3.5.1-alpha.
1403
1404  o Minor features (security, backport from 0.4.4.4-rc):
1405    - Channels using obsolete versions of the Tor link protocol are no
1406      longer allowed to circumvent address-canonicity checks. (This is
1407      only a minor issue, since such channels have no way to set ed25519
1408      keys, and therefore should always be rejected for circuits that
1409      specify ed25519 identities.) Closes ticket 40081.
1410
1411  o Minor features (subprotocol versions, backport from 0.4.5.1-alpha):
1412    - Tor no longer allows subprotocol versions larger than 63.
1413      Previously version numbers up to UINT32_MAX were allowed, which
1414      significantly complicated our code. Implements proposal 318;
1415      closes ticket 40133.
1416
1417  o Minor features (tests, backport from 0.4.4.5):
1418    - Our "make check" target now runs the unit tests in 8 parallel
1419      chunks. Doing this speeds up hardened CI builds by more than a
1420      factor of two. Closes ticket 40098.
1421
1422  o Minor features (tests, v2 onion services, backport from 0.4.5.1-alpha):
1423    - Fix a rendezvous cache unit test that was triggering an underflow
1424      on the global rend cache allocation. Fixes bug 40125; bugfix
1425      on 0.2.8.1-alpha.
1426    - Fix another rendezvous cache unit test that was triggering an
1427      underflow on the global rend cache allocation. Fixes bug 40126;
1428      bugfix on 0.2.8.1-alpha.
1429
1430  o Minor bugfixes (correctness, buffers, backport from 0.4.4.4-rc):
1431    - Fix a correctness bug that could cause an assertion failure if we
1432      ever tried using the buf_move_all() function with an empty input
1433      buffer. As far as we know, no released versions of Tor do this.
1434      Fixes bug 40076; bugfix on 0.3.3.1-alpha.
1435
1436  o Minor bugfixes (logging, backport from 0.4.5.1-alpha):
1437    - Remove a debug logging statement that uselessly spammed the logs.
1438      Fixes bug 40135; bugfix on 0.3.5.0-alpha.
1439
1440  o Minor bugfixes (rate limiting, bridges, pluggable transports, backport from 0.4.4.4-rc):
1441    - On a bridge, treat all connections from an ExtORPort as remote by
1442      default for the purposes of rate-limiting. Previously, bridges
1443      would treat the connection as local unless they explicitly
1444      received a "USERADDR" command. ExtORPort connections still count
1445      as local if there is a USERADDR command with an explicit local
1446      address. Fixes bug 33747; bugfix on 0.2.5.1-alpha.
1447
1448  o Minor bugfixes (relay configuration, crash, backport from 0.4.5.1-alpha):
1449    - Avoid a fatal assert() when failing to create a listener
1450      connection for an address that was in use. Fixes bug 40073; bugfix
1451      on 0.3.5.1-alpha.
1452
1453  o Minor bugfixes (relay, usability, backport from 0.4.4.3-alpha):
1454    - Adjust the rules for when to warn about having too many
1455      connections to other relays. Previously we'd tolerate up to 1.5
1456      connections per relay on average. Now we tolerate more connections
1457      for directory authorities, and raise the number of total
1458      connections we need to see before we warn. Fixes bug 33880; bugfix
1459      on 0.3.1.1-alpha.
1460
1461  o Minor bugfixes (tests, 0.4.4.5):
1462    - Fix the behavior of the rend_cache/clean_v2_descs_as_dir when run
1463      on its own. Previously, it would exit with an error. Fixes bug
1464      40099; bugfix on 0.2.8.1-alpha.
1465
1466  o Minor bugfixes (v2 onion services, backport from 0.4.5.1-alpha):
1467    - For HSFETCH commands on v2 onion services addresses, check the
1468      length of bytes decoded, not the base32 length. Fixes bug 34400;
1469      bugfix on 0.4.1.1-alpha. Patch by Neel Chauhan.
1470
1471  o Minor bugfixes (windows, backport from 0.4.4.4-rc):
1472    - Fix a bug that prevented Tor from starting if its log file grew
1473      above 2GB. Fixes bug 31036; bugfix on 0.2.1.8-alpha.
1474
1475  o Deprecated features (onion service v2, backport form 0.4.4.2-alpha):
1476    - Add a deprecation warning for version 2 onion services. Closes
1477      ticket 40003.
1478
1479  o Removed features (backport from 0.4.4.3-alpha):
1480    - Our "check-local" test target no longer tries to use the
1481      Coccinelle semantic patching tool parse all the C files. While it
1482      is a good idea to try to make sure Coccinelle works on our C
1483      before we run a Coccinelle patch, doing so on every test run has
1484      proven to be disruptive. You can still run this tool manually with
1485      "make check-cocci". Closes ticket 40030. ticket 40030.
1486
1487
1488Changes in version 0.3.5.12 - 2020-11-12
1489  Tor 0.4.3.7 backports several bugfixes from later releases. It
1490  includes a fix for TROVE-2020-005, a security issue that could be
1491  used, under certain cases, by an adversary to observe traffic patterns
1492  on a limited number of circuits intended for a different relay.
1493
1494  o Major features (fallback directory list, backport form 0.4.4.3-alpha):
1495    - Replace the 148 fallback directories originally included in Tor
1496      0.4.1.4-rc (of which around 105 are still functional) with a list
1497      of 144 fallbacks generated in July 2020. Closes ticket 40061.
1498
1499  o Major bugfixes (security, backport from 0.4.5.1-alpha):
1500    - When completing a channel, relays now check more thoroughly to
1501      make sure that it matches any pending circuits before attaching
1502      those circuits. Previously, address correctness and Ed25519
1503      identities were not checked in this case, but only when extending
1504      circuits on an existing channel. Fixes bug 40080; bugfix on
1505      0.2.7.2-alpha. Resolves TROVE-2020-005.
1506
1507  o Major bugfixes (NSS, backport from 0.4.4.3-alpha):
1508    - When running with NSS enabled, make sure that NSS knows to expect
1509      nonblocking sockets. Previously, we set our TCP sockets as
1510      nonblocking, but did not tell NSS, which in turn could lead to
1511      unexpected blocking behavior. Fixes bug 40035; bugfix
1512      on 0.3.5.1-alpha.
1513
1514  o Minor features (security, backport from 0.4.4.4-rc):
1515    - Channels using obsolete versions of the Tor link protocol are no
1516      longer allowed to circumvent address-canonicity checks. (This is
1517      only a minor issue, since such channels have no way to set ed25519
1518      keys, and therefore should always be rejected for circuits that
1519      specify ed25519 identities.) Closes ticket 40081.
1520
1521  o Minor features (debugging, directory system):
1522    - Don't crash when we find a non-guard with a guard-fraction value
1523      set. Instead, log a bug warning, in an attempt to figure out how
1524      this happened. Diagnostic for ticket 32868.
1525
1526  o Minor features (subprotocol versions, backport from 0.4.5.1-alpha):
1527    - Tor no longer allows subprotocol versions larger than 63.
1528      Previously version numbers up to UINT32_MAX were allowed, which
1529      significantly complicated our code. Implements proposal 318;
1530      closes ticket 40133.
1531
1532  o Minor features (tests, backport from 0.4.4.5):
1533    - Our "make check" target now runs the unit tests in 8 parallel
1534      chunks. Doing this speeds up hardened CI builds by more than a
1535      factor of two. Closes ticket 40098.
1536
1537  o Minor features (tests, v2 onion services, backport from 0.4.5.1-alpha):
1538    - Fix a rendezvous cache unit test that was triggering an underflow
1539      on the global rend cache allocation. Fixes bug 40125; bugfix
1540      on 0.2.8.1-alpha.
1541    - Fix another rendezvous cache unit test that was triggering an
1542      underflow on the global rend cache allocation. Fixes bug 40126;
1543      bugfix on 0.2.8.1-alpha.
1544
1545  o Minor bugfixes (correctness, buffers, backport from 0.4.4.4-rc):
1546    - Fix a correctness bug that could cause an assertion failure if we
1547      ever tried using the buf_move_all() function with an empty input
1548      buffer. As far as we know, no released versions of Tor do this.
1549      Fixes bug 40076; bugfix on 0.3.3.1-alpha.
1550
1551  o Minor bugfixes (logging, backport from 0.4.5.1-alpha):
1552    - Remove a debug logging statement that uselessly spammed the logs.
1553      Fixes bug 40135; bugfix on 0.3.5.0-alpha.
1554
1555  o Minor bugfixes (rate limiting, bridges, pluggable transports, backport from 0.4.4.4-rc):
1556    - On a bridge, treat all connections from an ExtORPort as remote by
1557      default for the purposes of rate-limiting. Previously, bridges
1558      would treat the connection as local unless they explicitly
1559      received a "USERADDR" command. ExtORPort connections still count
1560      as local if there is a USERADDR command with an explicit local
1561      address. Fixes bug 33747; bugfix on 0.2.5.1-alpha.
1562
1563  o Minor bugfixes (relay configuration, crash, backport from 0.4.5.1-alpha):
1564    - Avoid a fatal assert() when failing to create a listener
1565      connection for an address that was in use. Fixes bug 40073; bugfix
1566      on 0.3.5.1-alpha.
1567
1568  o Minor bugfixes (relay, usability, backport from 0.4.4.3-alpha):
1569    - Adjust the rules for when to warn about having too many
1570      connections to other relays. Previously we'd tolerate up to 1.5
1571      connections per relay on average. Now we tolerate more connections
1572      for directory authorities, and raise the number of total
1573      connections we need to see before we warn. Fixes bug 33880; bugfix
1574      on 0.3.1.1-alpha.
1575
1576  o Minor bugfixes (relays, backport from 0.4.4.1-alpha):
1577    - Stop advertising incorrect IPv6 ORPorts in relay and bridge
1578      descriptors, when the IPv6 port was configured as "auto". Fixes
1579      bug 32588; bugfix on 0.2.3.9-alpha.
1580
1581  o Minor bugfixes (tests, 0.4.4.5):
1582    - Fix the behavior of the rend_cache/clean_v2_descs_as_dir when run
1583      on its own. Previously, it would exit with an error. Fixes bug
1584      40099; bugfix on 0.2.8.1-alpha.
1585
1586  o Minor bugfixes (windows, backport from 0.4.4.4-rc):
1587    - Fix a bug that prevented Tor from starting if its log file grew
1588      above 2GB. Fixes bug 31036; bugfix on 0.2.1.8-alpha.
1589
1590  o Deprecated features (onion service v2, backport form 0.4.4.2-alpha):
1591    - Add a deprecation warning for version 2 onion services. Closes
1592      ticket 40003.
1593
1594
1595Changes in version 0.4.5.1-alpha - 2020-11-01
1596  Tor 0.4.5.1-alpha is the first alpha release in the 0.4.5.x series. It
1597  improves support for IPv6, address discovery and self-testing, code
1598  metrics and tracing.
1599
1600  This release also fixes TROVE-2020-005, a security issue that could be
1601  used, under certain cases, by an adversary to observe traffic patterns
1602  on a limited number of circuits intended for a different relay. To
1603  mount this attack, the adversary would need to actively extend
1604  circuits to an incorrect address, as well as compromise a relay's
1605  legacy RSA-1024 key. We'll be backporting this fix to other release
1606  series soon, after it has had some testing.
1607
1608  Here are the changes since 0.4.4.5.
1609
1610  o Major features (build):
1611    - When building Tor, first link all object files into a single
1612      static library. This may help with embedding Tor in other
1613      programs. Note that most Tor functions do not constitute a part of
1614      a stable or supported API: only those functions in tor_api.h
1615      should be used if embedding Tor. Closes ticket 40127.
1616
1617  o Major features (metrics):
1618    - Introduce a new MetricsPort which exposes, through an HTTP
1619      interface, a series of metrics that tor collects at runtime. At
1620      the moment, the only supported output format is Prometheus data
1621      model. Closes ticket 40063. See the manual page for more
1622      information and security considerations.
1623  o Major features (relay, IPv6):
1624    - The torrc option Address now supports IPv6. This unifies our
1625      address discovery interface to support IPv4, IPv6, and hostnames.
1626      Closes ticket 33233.
1627    - Launch IPv4 and IPv6 ORPort self-test circuits on relays and
1628      bridges. Closes ticket 33222.
1629    - Relays now automatically bind on IPv6 for their ORPort, unless
1630      specified otherwise with the IPv4Only flag. Closes ticket 33246.
1631    - When a relay with IPv6 support is told to open a connection to
1632      another relay, and the extend cell lists both IPv4 and IPv6
1633      addresses, the first relay now picks randomly which address to
1634      use. Closes ticket 33220.
1635    - Relays now track their IPv6 ORPort reachability separately from
1636      the reachability of their IPv4 ORPort. They will not publish a
1637      descriptor unless _both_ ports appear to be externally reachable.
1638      Closes ticket 34067.
1639
1640  o Major features (tracing):
1641    - Add event-tracing library support for USDT and LTTng-UST, and a
1642      few tracepoints in the circuit subsystem. More will come
1643      incrementally. This feature is compiled out by default: it needs
1644      to be enabled at configure time. See documentation in
1645      doc/HACKING/Tracing.md. Closes ticket 32910.
1646
1647  o Major bugfixes (security):
1648    - When completing a channel, relays now check more thoroughly to
1649      make sure that it matches any pending circuits before attaching
1650      those circuits. Previously, address correctness and Ed25519
1651      identities were not checked in this case, but only when extending
1652      circuits on an existing channel. Fixes bug 40080; bugfix on
1653      0.2.7.2-alpha. Resolves TROVE-2020-005.
1654
1655  o Major bugfixes (TLS, buffer):
1656    - When attempting to read N bytes on a TLS connection, really try to
1657      read all N bytes. Previously, Tor would stop reading after the
1658      first TLS record, which can be smaller than the N bytes requested,
1659      and not check for more data until the next mainloop event. Fixes
1660      bug 40006; bugfix on 0.1.0.5-rc.
1661
1662  o Minor features (address discovery):
1663    - If no Address statements are found, relays now prioritize guessing
1664      their address by looking at the local interface instead of the
1665      local hostname. If the interface address can't be found, the local
1666      hostname is used. Closes ticket 33238.
1667
1668  o Minor features (admin tools):
1669    - Add a new --format argument to -key-expiration option to allow
1670      specifying the time format of the expiration date. Adds Unix
1671      timestamp format support. Patch by Daniel Pinto. Closes
1672      ticket 30045.
1673
1674  o Minor features (bootstrap reporting):
1675    - When reporting bootstrapping status on a relay, do not consider
1676      connections that have never been the target of an origin circuit.
1677      Previously, all connection failures were treated as potential
1678      bootstrapping failures, including connections that had been opened
1679      because of client requests. Closes ticket 25061.
1680
1681  o Minor features (build):
1682    - When running the configure script, try to detect version
1683      mismatches between the OpenSSL headers and libraries, and suggest
1684      that the user should try "--with-openssl-dir". Closes 40138.
1685    - If the configure script has given any warnings, remind the user
1686      about them at the end of the script. Related to 40138.
1687
1688  o Minor features (configuration):
1689    - Allow using wildcards (* and ?) with the %include option on
1690      configuration files. Closes ticket 25140. Patch by Daniel Pinto.
1691    - Allow the configuration options EntryNodes, ExcludeNodes,
1692      ExcludeExitNodes, ExitNodes, MiddleNodes, HSLayer2Nodes and
1693      HSLayer3Nodes to be specified multiple times. Closes ticket 28361.
1694      Patch by Daniel Pinto.
1695
1696  o Minor features (control port):
1697    - Add a DROPTIMEOUTS command to drop circuit build timeout history
1698      and reset the current timeout. Closes ticket 40002.
1699    - When a stream enters the AP_CONN_STATE_CONTROLLER_WAIT status,
1700      send a control port event. Closes ticket 32190. Patch by
1701      Neel Chauhan.
1702    - Introduce GETINFO "stats/ntor/{assigned/requested}" and
1703      "stats/tap/{assigned/requested}" to get the NTor and TAP circuit
1704      onion handshake counts respectively. Closes ticket 28279. Patch by
1705      Neel Chauhan.
1706
1707  o Minor features (control port, IPv6):
1708    - Tor relays now try to report to the controller when they are
1709      launching an IPv6 self-test. Closes ticket 34068.
1710    - Introduce "GETINFO address/v4" and "GETINFO address/v6" in the
1711      control port to fetch the Tor host's respective IPv4 or IPv6
1712      address. We keep "GETINFO address" for backwards-compatibility.
1713      Closes ticket 40039. Patch by Neel Chauhan.
1714
1715  o Minor features (directory authorities):
1716    - Authorities now list a different set of protocols as required and
1717      recommended. These lists have been chosen so that only truly
1718      recommended and/or required protocols are included, and so that
1719      clients using 0.2.9 or later will continue to work (even though
1720      they are not supported), whereas only relays running 0.3.5 or
1721      later will meet the requirements. Closes ticket 40162.
1722    - Add a new consensus method 30 that removes the unnecessary "="
1723      padding from ntor-onion-key. Closes ticket 7869. Patch by
1724      Daniel Pinto.
1725    - Directory authorities now reject descriptors from relays running
1726      Tor versions from the obsolete 0.4.1 series. Resolves ticket
1727      34357. Patch by Neel Chauhan.
1728    - Make it possible to specify multiple ConsensusParams torrc lines.
1729      Now directory authority operators can for example put the main
1730      ConsensusParams config in one torrc file and then add to it from a
1731      different torrc file. Closes ticket 40164.
1732    - The AssumeReachable option no longer stops directory authorities
1733      from checking whether other relays are running. A new
1734      AuthDirTestReachability option can be used to disable these
1735      checks. Closes ticket 34445.
1736    - When looking for possible Sybil attacks, also consider IPv6
1737      addresses. Two routers are considered to have "the same" address
1738      by this metric if they are in the same /64 network. Patch from
1739      Maurice Pibouin. Closes ticket 7193.
1740
1741  o Minor features (directory authorities, IPv6):
1742    - Make authorities add their IPv6 ORPort (if any) to the trusted
1743      servers list. Authorities previously added only their IPv4
1744      addresses. Closes ticket 32822.
1745
1746  o Minor features (ed25519, relay):
1747    - Save a relay's base64-encoded ed25519 identity key to the data
1748      directory in a file named fingerprint-ed25519. Closes ticket
1749      30642. Patch by Neel Chauhan.
1750
1751  o Minor features (heartbeat):
1752    - Include the total number of inbound and outbound IPv4 and IPv6
1753      connections in the heartbeat message. Closes ticket 29113.
1754
1755  o Minor features (IPv6, ExcludeNodes):
1756    - Handle IPv6 addresses in ExcludeNodes; previously they were
1757      ignored. Closes ticket 34065. Patch by Neel Chauhan.
1758
1759  o Minor features (logging):
1760    - Add the running glibc version to the log, and the compiled glibc
1761      version to the library list returned when using --library-versions.
1762      Patch from Daniel Pinto. Closes ticket 40047.
1763    - Consider an HTTP 301 response to be an error (like a 404) when
1764      processing a directory response. Closes ticket 40053.
1765    - Log directory fetch statistics as a single line. Closes
1766      ticket 40159.
1767    - Provide more complete descriptions of our connections when logging
1768      about them. Closes ticket 40041.
1769    - When describing a relay in the logs, we now include its ed25519
1770      identity. Closes ticket 22668.
1771
1772  o Minor features (onion services):
1773    - Only overwrite an onion service's existing hostname file if its
1774      contents are wrong. This enables read-only onion-service
1775      directories. Resolves ticket 40062. Patch by Neel Chauhan.
1776
1777  o Minor features (pluggable transports):
1778    - Add an OutboundBindAddressPT option to allow users to specify
1779      which IPv4 and IPv6 address pluggable transports should use for
1780      outgoing IP packets. Tor does not have a way to enforce that the
1781      pluggable transport honors this option, so each pluggable transport
1782      needs to implement support on its own. Closes ticket 5304.
1783
1784  o Minor features (relay address tracking):
1785    - We now store relay addresses for OR connections in a more logical
1786      way. Previously we would sometimes overwrite the actual address of
1787      a connection with a "canonical address", and then store the "real
1788      address" elsewhere to remember it. We now track the "canonical
1789      address" elsewhere for the cases where we need it, and leave the
1790      connection's address alone. Closes ticket 33898.
1791
1792  o Minor features (relay):
1793    - If a relay is unable to discover its address, attempt to learn it
1794      from the NETINFO cell. Closes ticket 40022.
1795    - Log immediately when launching a relay self-check. Previously we
1796      would try to log before launching checks, or approximately when we
1797      intended to launch checks, but this tended to be error-prone.
1798      Closes ticket 34137.
1799
1800  o Minor features (relay, address discovery):
1801    - If Address option is not found in torrc, attempt to learn our
1802      address with the configured ORPort address if any. Closes
1803      ticket 33236.
1804
1805  o Minor features (relay, IPv6):
1806    - Add an AssumeReachableIPv6 option to disable self-checking IPv6
1807      reachability. Closes part of ticket 33224.
1808    - Add new "assume-reachable" and "assume-reachable-ipv6" consensus
1809      parameters to be used in an emergency to tell relays that they
1810      should publish even if they cannot complete their ORPort self-
1811      checks. Closes ticket 34064 and part of 33224.
1812    - Allow relays to send IPv6-only extend cells. Closes ticket 33222.
1813    - Declare support for the Relay=3 subprotocol version. Closes
1814      ticket 33226.
1815    - When launching IPv6 ORPort self-test circuits, make sure that the
1816      second-last hop can initiate an IPv6 extend. Closes ticket 33222.
1817
1818  o Minor features (specification update):
1819    - Several fields in microdescriptors, router descriptors, and
1820      consensus documents that were formerly optional are now required.
1821      Implements proposal 315; closes ticket 40132.
1822
1823  o Minor features (state management):
1824    - When loading the state file, remove entries from the statefile
1825      that have been obsolete for a long time. Ordinarily Tor preserves
1826      unrecognized entries in order to keep forward-compatibility, but
1827      these entries have not actually been used in any release since
1828      before 0.3.5.x. Closes ticket 40137.
1829
1830  o Minor features (statistics, ipv6):
1831    - Relays now publish IPv6-specific counts of single-direction versus
1832      bidirectional relay connections. Closes ticket 33264.
1833    - Relays now publish their IPv6 read and write statistics over time,
1834      if statistics are enabled. Closes ticket 33263.
1835
1836  o Minor features (subprotocol versions):
1837    - Tor no longer allows subprotocol versions larger than 63.
1838      Previously version numbers up to UINT32_MAX were allowed, which
1839      significantly complicated our code. Implements proposal 318;
1840      closes ticket 40133.
1841    - Use the new limitations on subprotocol versions due to proposal
1842      318 to simplify our implementation. Part of ticket 40133.
1843
1844  o Minor features (testing configuration):
1845    - The TestingTorNetwork option no longer implicitly sets
1846      AssumeReachable to 1. This change allows us to test relays' self-
1847      testing mechanisms, and to test authorities' relay-testing
1848      functionality. Closes ticket 34446.
1849
1850  o Minor features (testing):
1851    - Added unit tests for channel_matches_target_addr_for_extend().
1852      Closes Ticket 33919. Patch by MrSquanchee.
1853
1854  o Minor features (tests, v2 onion services):
1855    - Fix a rendezvous cache unit test that was triggering an underflow
1856      on the global rend cache allocation. Fixes bug 40125; bugfix
1857      on 0.2.8.1-alpha.
1858    - Fix another rendezvous cache unit test that was triggering an
1859      underflow on the global rend cache allocation. Fixes bug 40126;
1860      bugfix on 0.2.8.1-alpha.
1861
1862  o Minor bugfixes (circuit padding):
1863    - When circpad_send_padding_cell_for_callback is called,
1864      `is_padding_timer_scheduled` flag was not reset. Now it is set to
1865      0 at the top of that function. Fixes bug 32671; bugfix
1866      on 0.4.0.1-alpha.
1867    - Add a per-circuit padding machine instance counter, so we can
1868      differentiate between shutdown requests for old machines on a
1869      circuit. Fixes bug 30992; bugfix on 0.4.1.1-alpha.
1870    - Add the ability to keep circuit padding machines if they match a
1871      set of circuit states or purposes. This allows us to have machines
1872      that start up under some conditions but don't shut down under
1873      others. We now use this mask to avoid starting up introduction
1874      circuit padding again after the machines have already completed.
1875      Fixes bug 32040; bugfix on 0.4.1.1-alpha.
1876
1877  o Minor bugfixes (compatibility):
1878    - Strip '\r' characters when reading text files on Unix platforms.
1879      This should resolve an issue where a relay operator migrates a
1880      relay from Windows to Unix, but does not change the line ending of
1881      Tor's various state files to match the platform, and the CRLF line
1882      endings from Windows end up leaking into other files such as the
1883      extra-info document. Fixes bug 33781; bugfix on 0.0.9pre5.
1884
1885  o Minor bugfixes (compilation):
1886    - Fix compiler warnings that would occur when building with
1887      "--enable-all-bugs-are-fatal" and "--disable-module-relay" at the
1888      same time. Fixes bug 40129; bugfix on 0.4.4.1-alpha.
1889    - Resolve a compilation warning that could occur in
1890      test_connection.c. Fixes bug 40113; bugfix on 0.2.9.3-alpha.
1891
1892  o Minor bugfixes (configuration):
1893    - Fix bug where %including a pattern ending with */ would include
1894      files and folders (instead of folders only) in versions of glibc <
1895      2.19. Fixes bug 40141; bugfix on 0.4.5.0-alpha-dev. Patch by
1896      Daniel Pinto.
1897
1898  o Minor bugfixes (control port):
1899    - Make sure we send the SOCKS request address in relay begin cells
1900      when a stream is attached with the purpose
1901      CIRCUIT_PURPOSE_CONTROLLER. Fixes bug 33124; bugfix on 0.0.5.
1902      Patch by Neel Chauhan.
1903
1904  o Minor bugfixes (logging):
1905    - Remove a debug logging statement that uselessly spammed the logs.
1906      Fixes bug 40135; bugfix on 0.3.5.0-alpha.
1907    - When logging a rate-limited message about how many messages have
1908      been suppressed in the last N seconds, give an accurate value for
1909      N, rounded up to the nearest minute. Previously we would report
1910      the size of the rate-limiting interval, regardless of when the
1911      messages started to occur. Fixes bug 19431; bugfix
1912      on 0.2.2.16-alpha.
1913
1914  o Minor bugfixes (relay configuration, crash):
1915    - Avoid a fatal assert() when failing to create a listener
1916      connection for an address that was in use. Fixes bug 40073; bugfix
1917      on 0.3.5.1-alpha.
1918
1919  o Minor bugfixes (rust, protocol versions):
1920    - Declare support for the onion service introduction point denial of
1921      service extensions when building with Rust. Fixes bug 34248;
1922      bugfix on 0.4.2.1-alpha.
1923    - Make Rust protocol version support checks consistent with the
1924      undocumented error behavior of the corresponding C code. Fixes bug
1925      34251; bugfix on 0.3.3.5-rc.
1926
1927  o Minor bugfixes (self-testing):
1928    - When receiving an incoming circuit, only accept it as evidence
1929      that we are reachable if the declared address of its channel is
1930      the same address we think that we have. Otherwise, it could be
1931      evidence that we're reachable on some other address. Fixes bug
1932      20165; bugfix on 0.1.0.1-rc.
1933
1934  o Minor bugfixes (spec conformance):
1935    - Use the correct key type when generating signing->link
1936      certificates. Fixes bug 40124; bugfix on 0.2.7.2-alpha.
1937
1938  o Minor bugfixes (subprotocol versions):
1939    - Consistently reject extra commas, instead of only rejecting
1940      leading commas. Fixes bug 27194; bugfix on 0.2.9.4-alpha.
1941    - In summarize_protover_flags(), treat empty strings the same as
1942      NULL. This prevents protocols_known from being set. Previously, we
1943      treated empty strings as normal strings, which led to
1944      protocols_known being set. Fixes bug 34232; bugfix on
1945      0.3.3.2-alpha. Patch by Neel Chauhan.
1946
1947  o Minor bugfixes (v2 onion services):
1948    - For HSFETCH commands on v2 onion services addresses, check the
1949      length of bytes decoded, not the base32 length. Fixes bug 34400;
1950      bugfix on 0.4.1.1-alpha. Patch by Neel Chauhan.
1951
1952  o Code simplification and refactoring:
1953    - Add and use a set of functions to perform down-casts on constant
1954      connection and channel pointers. Closes ticket 40046.
1955    - Refactor our code that logs descriptions of connections, channels,
1956      and the peers on them, to use a single call path. This change
1957      enables us to refactor the data types that they use, and eliminates
1958      many confusing usages of those types. Closes ticket 40041.
1959    - Refactor some common node selection code into a single function.
1960      Closes ticket 34200.
1961    - Remove the now-redundant 'outbuf_flushlen' field from our
1962      connection type. It was previously used for an older version of
1963      our rate-limiting logic. Closes ticket 33097.
1964    - Rename "fascist_firewall_*" identifiers to "reachable_addr_*"
1965      instead, for consistency with other code. Closes ticket 18106.
1966    - Rename functions about "advertised" ports which are not in fact
1967      guaranteed to return the ports that have been advertised. Closes
1968      ticket 40055.
1969    - Split implementation of several command line options from
1970      options_init_from_torrc into smaller isolated functions. Patch by
1971      Daniel Pinto. Closes ticket 40102.
1972    - When an extend cell is missing an IPv4 or IPv6 address, fill in
1973      the address from the extend info. This is similar to what was done
1974      in ticket 33633 for ed25519 keys. Closes ticket 33816. Patch by
1975      Neel Chauhan.
1976
1977  o Deprecated features:
1978    - The "non-builtin" argument to the "--dump-config" command is now
1979      deprecated. When it works, it behaves the same as "short", which
1980      you should use instead. Closes ticket 33398.
1981
1982  o Documentation:
1983    - Replace URLs from our old bugtracker so that they refer to the new
1984      bugtracker and wiki. Closes ticket 40101.
1985
1986  o Removed features:
1987    - We no longer ship or build a "tor.service" file for use with
1988      systemd. No distribution included this script unmodified, and we
1989      don't have the expertise ourselves to maintain this in a way that
1990      all the various systemd-based distributions can use. Closes
1991      ticket 30797.
1992    - We no longer ship support for the Android logging API. Modern
1993      versions of Android can use the syslog API instead. Closes
1994      ticket 32181.
1995    - The "optimistic data" feature is now always on; there is no longer
1996      an option to disable it from the torrc file or from the consensus
1997      directory. Closes part of 40139.
1998    - The "usecreatefast" network parameter is now removed; there is no
1999      longer an option for authorities to turn it off. Closes part
2000      of 40139.
2001
2002  o Testing:
2003    - Add unit tests for bandwidth statistics manipulation functions.
2004      Closes ticket 33812. Patch by MrSquanchee.
2005
2006  o Code simplification and refactoring (autoconf):
2007    - Remove autoconf checks for unused funcs and headers. Closes ticket
2008      31699; Patch by @bduszel
2009
2010  o Code simplification and refactoring (maintainer scripts):
2011    - Disable by default the pre-commit hook. Use the environment
2012      variable TOR_EXTRA_PRE_COMMIT_CHECKS in order to run it.
2013      Furthermore, stop running practracker in the pre-commit hook and
2014      make check-local. Closes ticket 40019.
2015
2016  o Code simplification and refactoring (relay address):
2017    - Most of IPv4 representation was using "uint32_t". It has now been
2018      moved to use the internal "tor_addr_t" interface instead. This is
2019      so we can properly integrate IPv6 along IPv4 with common
2020      interfaces. Closes ticket 40043.
2021
2022  o Documentation (manual page):
2023    - Move them from doc/ to doc/man/. Closes ticket 40044.
2024    - Describe the status of the "Sandbox" option more accurately. It is
2025      no longer "experimental", but it _is_ dependent on kernel and libc
2026      versions. Closes ticket 23378.
2027
2028  o Documentation (tracing):
2029    - Document in depth the circuit subsystem trace events in the new
2030      doc/tracing/EventsCircuit.md. Closes ticket 40036.
2031
2032
2033Changes in version 0.4.4.5 - 2020-09-15
2034  Tor 0.4.4.5 is the first stable release in the 0.4.4.x series. This
2035  series improves our guard selection algorithms, adds v3 onion balance
2036  support, improves the amount of code that can be disabled when running
2037  without relay support, and includes numerous small bugfixes and
2038  enhancements. It also lays the ground for some IPv6 features that
2039  we'll be developing more in the next (0.4.5) series.
2040
2041  Per our support policy, we support each stable release series for nine
2042  months after its first stable release, or three months after the first
2043  stable release of the next series: whichever is longer. This means
2044  that 0.4.4.x will be supported until around June 2021--or later, if
2045  0.4.5.x is later than anticipated.
2046
2047  Note also that support for 0.4.2.x has just ended; support for 0.4.3
2048  will continue until Feb 15, 2021. We still plan to continue supporting
2049  0.3.5.x, our long-term stable series, until Feb 2022.
2050
2051  Below are the changes since 0.4.4.4-rc. For a complete list of changes
2052  since 0.4.3.6, see the ReleaseNotes file.
2053
2054  o Major bugfixes (onion services, DoS):
2055    - Correct handling of parameters for the onion service DoS defense.
2056      Previously, the consensus parameters for the onion service DoS
2057      defenses were overwriting the parameters set by the service
2058      operator using HiddenServiceEnableIntroDoSDefense. Fixes bug
2059      40109; bugfix on 0.4.2.1-alpha.
2060
2061  o Major bugfixes (stats, onion services):
2062    - Fix a bug where we were undercounting the Tor network's total
2063      onion service traffic, by ignoring any traffic originating from
2064      clients. Now we count traffic from both clients and services.
2065      Fixes bug 40117; bugfix on 0.2.6.2-alpha.
2066
2067  o Minor features (control port):
2068    - If a ClientName was specified in ONION_CLIENT_AUTH_ADD for an
2069      onion service, display it when we use ONION_CLIENT_AUTH_VIEW.
2070      Closes ticket 40089. Patch by Neel Chauhan.
2071
2072  o Minor features (denial-of-service memory limiter):
2073    - Allow the user to configure even lower values for the
2074      MaxMemInQueues parameter. Relays now enforce a minimum of 64 MB,
2075      when previously the minimum was 256 MB. On clients, there is no
2076      minimum. Relays and clients will both warn if the value is set so
2077      low that Tor is likely to stop working. Closes ticket 24308.
2078
2079  o Minor features (tests):
2080    - Our "make check" target now runs the unit tests in 8 parallel
2081      chunks. Doing this speeds up hardened CI builds by more than a
2082      factor of two. Closes ticket 40098.
2083
2084  o Minor bugfixes (guard selection algorithm):
2085    - Avoid needless guard-related warning when upgrading from 0.4.3 to
2086      0.4.4. Fixes bug 40105; bugfix on 0.4.4.1-alpha.
2087
2088  o Minor bugfixes (tests):
2089    - Fix the behavior of the rend_cache/clean_v2_descs_as_dir when run
2090      on its own. Previously, it would exit with an error. Fixes bug
2091      40099; bugfix on 0.2.8.1-alpha.
2092
2093
2094Changes in version 0.4.4.3-alpha - 2020-07-27
2095  Tor 0.4.4.3-alpha fixes several annoyances in previous versions,
2096  including one affecting NSS users, and several affecting the Linux
2097  seccomp2 sandbox.
2098
2099  o Major features (fallback directory list):
2100    - Replace the 148 fallback directories originally included in Tor
2101      0.4.1.4-rc (of which around 105 are still functional) with a list
2102      of 144 fallbacks generated in July 2020. Closes ticket 40061.
2103
2104  o Major bugfixes (NSS):
2105    - When running with NSS enabled, make sure that NSS knows to expect
2106      nonblocking sockets. Previously, we set our TCP sockets as
2107      nonblocking, but did not tell NSS, which in turn could lead to
2108      unexpected blocking behavior. Fixes bug 40035; bugfix
2109      on 0.3.5.1-alpha.
2110
2111  o Minor bugfixes (linux seccomp2 sandbox):
2112    - Fix a regression on sandboxing rules for the openat() syscall. The
2113      fix for bug 25440 fixed the problem on systems with glibc >= 2.27
2114      but broke with versions of glibc. We now choose a rule based on
2115      the glibc version. Patch from Daniel Pinto. Fixes bug 27315;
2116      bugfix on 0.3.5.11.
2117    - Makes the seccomp sandbox allow the correct syscall for opendir
2118      according to the running glibc version. This fixes crashes when
2119      reloading torrc with sandbox enabled when running on glibc 2.15 to
2120      2.21 and 2.26. Patch from Daniel Pinto. Fixes bug 40020; bugfix
2121      on 0.3.5.11.
2122
2123  o Minor bugfixes (relay, usability):
2124    - Adjust the rules for when to warn about having too many
2125      connections to other relays. Previously we'd tolerate up to 1.5
2126      connections per relay on average. Now we tolerate more connections
2127      for directory authorities, and raise the number of total
2128      connections we need to see before we warn. Fixes bug 33880; bugfix
2129      on 0.3.1.1-alpha.
2130
2131  o Documentation:
2132    - Replace most http:// URLs in our code and documentation with
2133      https:// URLs. (We have left unchanged the code in src/ext/, and
2134      the text in LICENSE.) Closes ticket 31812. Patch from Jeremy Rand.
2135
2136  o Removed features:
2137    - Our "check-local" test target no longer tries to use the
2138      Coccinelle semantic patching tool parse all the C files. While it
2139      is a good idea to try to make sure Coccinelle works on our C
2140      before we run a Coccinelle patch, doing so on every test run has
2141      proven to be disruptive. You can still run this tool manually with
2142      "make check-cocci". Closes ticket 40030.
2143
2144
2145Changes in version 0.3.5.11 - 2020-07-09
2146  Tor 0.3.5.11 backports fixes from later tor releases, including several
2147  usability, portability, and reliability fixes.
2148
2149  This release also fixes TROVE-2020-001, a medium-severity denial of
2150  service vulnerability affecting all versions of Tor when compiled with
2151  the NSS encryption library. (This is not the default configuration.)
2152  Using this vulnerability, an attacker could cause an affected Tor
2153  instance to crash remotely. This issue is also tracked as CVE-2020-
2154  15572. Anybody running a version of Tor built with the NSS library
2155  should upgrade to 0.3.5.11, 0.4.2.8, 0.4.3.6, or 0.4.4.2-alpha
2156  or later.
2157
2158  o Major bugfixes (NSS, security, backport from 0.4.4.2-alpha):
2159    - Fix a crash due to an out-of-bound memory access when Tor is
2160      compiled with NSS support. Fixes bug 33119; bugfix on
2161      0.3.5.1-alpha. This issue is also tracked as TROVE-2020-001
2162      and CVE-2020-15572.
2163
2164  o Major bugfixes (DoS defenses, bridges, pluggable transport, backport from 0.4.3.4-rc):
2165    - Fix a bug that was preventing DoS defenses from running on bridges
2166      with a pluggable transport. Previously, the DoS subsystem was not
2167      given the transport name of the client connection, thus failed to
2168      find the GeoIP cache entry for that client address. Fixes bug
2169      33491; bugfix on 0.3.3.2-alpha.
2170
2171  o Minor features (testing, backport from 0.4.3.4-rc):
2172    - The unit tests now support a "TOR_SKIP_TESTCASES" environment
2173      variable to specify a list of space-separated test cases that
2174      should not be executed. We will use this to disable certain tests
2175      that are failing on Appveyor because of mismatched OpenSSL
2176      libraries. Part of ticket 33643.
2177
2178  o Minor bugfix (CI, Windows, backport from 0.4.4.2-alpha):
2179    - Use the correct 64-bit printf format when compiling with MINGW on
2180      Appveyor. Fixes bug 40026; bugfix on 0.3.5.5-alpha.
2181
2182  o Minor bugfix (relay, configuration, backport from 0.4.3.3-alpha):
2183    - Warn if the ContactInfo field is not set, and tell the relay
2184      operator that not having a ContactInfo field set might cause their
2185      relay to get rejected in the future. Fixes bug 33361; bugfix
2186      on 0.1.1.10-alpha.
2187
2188  o Minor bugfixes (client performance, backport from 0.4.4.1-alpha):
2189    - Resume use of preemptively-built circuits when UseEntryGuards is set
2190      to 0. We accidentally disabled this feature with that config
2191      setting, leading to slower load times. Fixes bug 34303; bugfix
2192      on 0.3.3.2-alpha.
2193
2194  o Minor bugfixes (compiler compatibility, backport from 0.4.3.5):
2195    - Avoid compiler warnings from Clang 10 related to the use of GCC-
2196      style "/* falls through */" comments. Both Clang and GCC allow
2197      __attribute__((fallthrough)) instead, so that's what we're using
2198      now. Fixes bug 34078; bugfix on 0.3.1.3-alpha.
2199
2200  o Minor bugfixes (compiler warnings, backport from 0.4.4.2-alpha):
2201    - Fix a compiler warning on platforms with 32-bit time_t values.
2202      Fixes bug 40028; bugfix on 0.3.2.8-rc.
2203
2204  o Minor bugfixes (embedded Tor, backport from 0.4.3.1-alpha):
2205    - When starting Tor any time after the first time in a process,
2206      register the thread in which it is running as the main thread.
2207      Previously, we only did this on Windows, which could lead to bugs
2208      like 23081 on non-Windows platforms. Fixes bug 32884; bugfix
2209      on 0.3.3.1-alpha.
2210
2211  o Minor bugfixes (key portability, backport from 0.4.3.4-rc):
2212    - When reading PEM-encoded key data, tolerate CRLF line-endings even
2213      if we are not running on Windows. Previously, non-Windows hosts
2214      would reject these line-endings in certain positions, making
2215      certain key files hard to move from one host to another. Fixes bug
2216      33032; bugfix on 0.3.5.1-alpha.
2217
2218  o Minor bugfixes (logging, backport from 0.4.4.2-alpha):
2219    - Downgrade a noisy log message that could occur naturally when
2220      receiving an extrainfo document that we no longer want. Fixes bug
2221      16016; bugfix on 0.2.6.3-alpha.
2222
2223  o Minor bugfixes (onion service v3, client, backport from 0.4.3.3-alpha):
2224    - Remove a BUG() warning that would cause a stack trace if an onion
2225      service descriptor was freed while we were waiting for a
2226      rendezvous circuit to complete. Fixes bug 28992; bugfix
2227      on 0.3.2.1-alpha.
2228
2229  o Testing (CI, backport from 0.4.3.4-rc):
2230    - In our Appveyor Windows CI, copy required DLLs to test and app
2231      directories, before running tor's tests. This ensures that tor.exe
2232      and test*.exe use the correct version of each DLL. This fix is not
2233      required, but we hope it will avoid DLL search issues in future.
2234      Fixes bug 33673; bugfix on 0.3.4.2-alpha.
2235    - On Appveyor, skip the crypto/openssl_version test, which is
2236      failing because of a mismatched library installation. Fix
2237      for 33643.
2238
2239
2240Changes in version 0.4.2.8 - 2020-07-09
2241  Tor 0.4.2.8 backports various fixes from later releases, including
2242  several that affect usability and portability.
2243
2244  This release also fixes TROVE-2020-001, a medium-severity denial of
2245  service vulnerability affecting all versions of Tor when compiled with
2246  the NSS encryption library. (This is not the default configuration.)
2247  Using this vulnerability, an attacker could cause an affected Tor
2248  instance to crash remotely. This issue is also tracked as CVE-2020-
2249  15572. Anybody running a version of Tor built with the NSS library
2250  should upgrade to 0.3.5.11, 0.4.2.8, 0.4.3.6, or 0.4.4.2-alpha
2251  or later.
2252
2253  o Major bugfixes (NSS, security, backport from 0.4.4.2-alpha):
2254    - Fix a crash due to an out-of-bound memory access when Tor is
2255      compiled with NSS support. Fixes bug 33119; bugfix on
2256      0.3.5.1-alpha. This issue is also tracked as TROVE-2020-001
2257      and CVE-2020-15572.
2258
2259  o Major bugfixes (DoS defenses, bridges, pluggable transport, backport from 0.4.3.4-rc):
2260    - Fix a bug that was preventing DoS defenses from running on bridges
2261      with a pluggable transport. Previously, the DoS subsystem was not
2262      given the transport name of the client connection, thus failed to
2263      find the GeoIP cache entry for that client address. Fixes bug
2264      33491; bugfix on 0.3.3.2-alpha.
2265
2266  o Minor feature (sendme, flow control, backport form 0.4.3.4-rc):
2267    - Default to sending SENDME version 1 cells. (Clients are already
2268      sending these, because of a consensus parameter telling them to do
2269      so: this change only affects what clients would do if the
2270      consensus didn't contain a recommendation.) Closes ticket 33623.
2271
2272  o Minor features (diagnostic, backport from 0.4.3.3-alpha):
2273    - Improve assertions and add some memory-poisoning code to try to
2274      track down possible causes of a rare crash (32564) in the EWMA
2275      code. Closes ticket 33290.
2276
2277  o Minor features (testing, backport from 0.4.3.4-rc):
2278    - The unit tests now support a "TOR_SKIP_TESTCASES" environment
2279      variable to specify a list of space-separated test cases that
2280      should not be executed. We will use this to disable certain tests
2281      that are failing on Appveyor because of mismatched OpenSSL
2282      libraries. Part of ticket 33643.
2283
2284  o Minor bugfix (CI, Windows, backport from 0.4.4.2-alpha):
2285    - Use the correct 64-bit printf format when compiling with MINGW on
2286      Appveyor. Fixes bug 40026; bugfix on 0.3.5.5-alpha.
2287
2288  o Minor bugfix (relay, configuration, backport from 0.4.3.3-alpha):
2289    - Warn if the ContactInfo field is not set, and tell the relay
2290      operator that not having a ContactInfo field set might cause their
2291      relay to get rejected in the future. Fixes bug 33361; bugfix
2292      on 0.1.1.10-alpha.
2293
2294  o Minor bugfixes (client performance, backport from 0.4.4.1-alpha):
2295    - Resume use of preemptively-built circuits when UseEntryGuards is set
2296      to 0. We accidentally disabled this feature with that config
2297      setting, leading to slower load times. Fixes bug 34303; bugfix
2298      on 0.3.3.2-alpha.
2299
2300  o Minor bugfixes (compiler compatibility, backport from 0.4.3.5):
2301    - Avoid compiler warnings from Clang 10 related to the use of GCC-
2302      style "/* falls through */" comments. Both Clang and GCC allow
2303      __attribute__((fallthrough)) instead, so that's what we're using
2304      now. Fixes bug 34078; bugfix on 0.3.1.3-alpha.
2305    - Fix compilation warnings with GCC 10.0.1. Fixes bug 34077; bugfix
2306      on 0.4.0.3-alpha.
2307
2308  o Minor bugfixes (compiler warnings, backport from 0.4.4.2-alpha):
2309    - Fix a compiler warning on platforms with 32-bit time_t values.
2310      Fixes bug 40028; bugfix on 0.3.2.8-rc.
2311
2312  o Minor bugfixes (controller protocol, backport from 0.4.3.2-alpha):
2313    - When receiving "ACTIVE" or "DORMANT" signals on the control port,
2314      report them as SIGNAL events. Previously we would log a bug
2315      warning. Fixes bug 33104; bugfix on 0.4.0.1-alpha.
2316
2317  o Minor bugfixes (embedded Tor, backport from 0.4.3.1-alpha):
2318    - When starting Tor any time after the first time in a process,
2319      register the thread in which it is running as the main thread.
2320      Previously, we only did this on Windows, which could lead to bugs
2321      like 23081 on non-Windows platforms. Fixes bug 32884; bugfix
2322      on 0.3.3.1-alpha.
2323
2324  o Minor bugfixes (key portability, backport from 0.4.3.4-rc):
2325    - When reading PEM-encoded key data, tolerate CRLF line-endings even
2326      if we are not running on Windows. Previously, non-Windows hosts
2327      would reject these line-endings in certain positions, making
2328      certain key files hard to move from one host to another. Fixes bug
2329      33032; bugfix on 0.3.5.1-alpha.
2330
2331  o Minor bugfixes (logging, backport from 0.4.3.2-rc):
2332    - When logging a bug, do not say "Future instances of this warning
2333      will be silenced" unless we are actually going to silence them.
2334      Previously we would say this whenever a BUG() check failed in the
2335      code. Fixes bug 33095; bugfix on 0.4.1.1-alpha.
2336
2337  o Minor bugfixes (logging, backport from 0.4.3.4-rc):
2338    - Flush stderr, stdout, and file logs during shutdown, if supported
2339      by the OS. This change helps make sure that any final logs are
2340      recorded. Fixes bug 33087; bugfix on 0.4.1.6.
2341
2342  o Minor bugfixes (logging, backport from 0.4.4.2-alpha):
2343    - Downgrade a noisy log message that could occur naturally when
2344      receiving an extrainfo document that we no longer want. Fixes bug
2345      16016; bugfix on 0.2.6.3-alpha.
2346
2347  o Minor bugfixes (onion service v3, client, backport from 0.4.3.3-alpha):
2348    - Remove a BUG() warning that would cause a stack trace if an onion
2349      service descriptor was freed while we were waiting for a
2350      rendezvous circuit to complete. Fixes bug 28992; bugfix
2351      on 0.3.2.1-alpha.
2352
2353  o Testing (CI, backport from 0.4.3.4-rc):
2354    - In our Appveyor Windows CI, copy required DLLs to test and app
2355      directories, before running tor's tests. This ensures that tor.exe
2356      and test*.exe use the correct version of each DLL. This fix is not
2357      required, but we hope it will avoid DLL search issues in future.
2358      Fixes bug 33673; bugfix on 0.3.4.2-alpha.
2359    - On Appveyor, skip the crypto/openssl_version test, which is
2360      failing because of a mismatched library installation. Fix
2361      for 33643.
2362
2363
2364Changes in version 0.4.3.6 - 2020-07-09
2365  Tor 0.4.3.6 backports several bugfixes from later releases, including
2366  some affecting usability.
2367
2368  This release also fixes TROVE-2020-001, a medium-severity denial of
2369  service vulnerability affecting all versions of Tor when compiled with
2370  the NSS encryption library. (This is not the default configuration.)
2371  Using this vulnerability, an attacker could cause an affected Tor
2372  instance to crash remotely. This issue is also tracked as CVE-2020-
2373  15572. Anybody running a version of Tor built with the NSS library
2374  should upgrade to 0.3.5.11, 0.4.2.8, 0.4.3.6, or 0.4.4.2-alpha
2375  or later.
2376
2377  o Major bugfixes (NSS, security, backport from 0.4.4.2-alpha):
2378    - Fix a crash due to an out-of-bound memory access when Tor is
2379      compiled with NSS support. Fixes bug 33119; bugfix on
2380      0.3.5.1-alpha. This issue is also tracked as TROVE-2020-001
2381      and CVE-2020-15572.
2382
2383  o Minor bugfix (CI, Windows, backport from 0.4.4.2-alpha):
2384    - Use the correct 64-bit printf format when compiling with MINGW on
2385      Appveyor. Fixes bug 40026; bugfix on 0.3.5.5-alpha.
2386
2387  o Minor bugfixes (client performance, backport from 0.4.4.1-alpha):
2388    - Resume use of preemptively-built circuits when UseEntryGuards is set
2389      to 0. We accidentally disabled this feature with that config
2390      setting, leading to slower load times. Fixes bug 34303; bugfix
2391      on 0.3.3.2-alpha.
2392
2393  o Minor bugfixes (compiler warnings, backport from 0.4.4.2-alpha):
2394    - Fix a compiler warning on platforms with 32-bit time_t values.
2395      Fixes bug 40028; bugfix on 0.3.2.8-rc.
2396
2397  o Minor bugfixes (linux seccomp sandbox, nss, backport from 0.4.4.1-alpha):
2398    - Fix a startup crash when tor is compiled with --enable-nss and
2399      sandbox support is enabled. Fixes bug 34130; bugfix on
2400      0.3.5.1-alpha. Patch by Daniel Pinto.
2401
2402  o Minor bugfixes (logging, backport from 0.4.4.2-alpha):
2403    - Downgrade a noisy log message that could occur naturally when
2404      receiving an extrainfo document that we no longer want. Fixes bug
2405      16016; bugfix on 0.2.6.3-alpha.
2406
2407  o Minor bugfixes (manual page, backport from 0.4.4.1-alpha):
2408    - Update the man page to reflect that MinUptimeHidServDirectoryV2
2409      defaults to 96 hours. Fixes bug 34299; bugfix on 0.2.6.3-alpha.
2410
2411  o Minor bugfixes (onion service v3, backport from 0.4.4.1-alpha):
2412    - Prevent an assert() that would occur when cleaning the client
2413      descriptor cache, and attempting to close circuits for a non-
2414      decrypted descriptor (lacking client authorization). Fixes bug
2415      33458; bugfix on 0.4.2.1-alpha.
2416
2417  o Minor bugfixes (portability, backport from 0.4.4.1-alpha):
2418    - Fix a portability error in the configure script, where we were
2419      using "==" instead of "=". Fixes bug 34233; bugfix on 0.4.3.5.
2420
2421  o Minor bugfixes (relays, backport from 0.4.4.1-alpha):
2422    - Stop advertising incorrect IPv6 ORPorts in relay and bridge
2423      descriptors, when the IPv6 port was configured as "auto". Fixes
2424      bug 32588; bugfix on 0.2.3.9-alpha.
2425
2426  o Documentation (backport from 0.4.4.1-alpha):
2427    - Fix several doxygen warnings related to imbalanced groups. Closes
2428      ticket 34255.
2429
2430
2431Changes in version 0.4.4.2-alpha - 2020-07-09
2432  This is the second alpha release in the 0.4.4.x series. It fixes a few
2433  bugs in the previous release, and solves a few usability,
2434  compatibility, and portability issues.
2435
2436  This release also fixes TROVE-2020-001, a medium-severity denial of
2437  service vulnerability affecting all versions of Tor when compiled with
2438  the NSS encryption library. (This is not the default configuration.)
2439  Using this vulnerability, an attacker could cause an affected Tor
2440  instance to crash remotely. This issue is also tracked as CVE-2020-
2441  15572. Anybody running a version of Tor built with the NSS library
2442  should upgrade to 0.3.5.11, 0.4.2.8, 0.4.3.6, or 0.4.4.2-alpha
2443  or later.
2444
2445  o Major bugfixes (NSS, security):
2446    - Fix a crash due to an out-of-bound memory access when Tor is
2447      compiled with NSS support. Fixes bug 33119; bugfix on
2448      0.3.5.1-alpha. This issue is also tracked as TROVE-2020-001
2449      and CVE-2020-15572.
2450
2451  o Minor features (bootstrap reporting):
2452    - Report more detailed reasons for bootstrap failure when the
2453      failure happens due to a TLS error. Previously we would just call
2454      these errors "MISC" when they happened during read, and "DONE"
2455      when they happened during any other TLS operation. Closes
2456      ticket 32622.
2457
2458  o Minor features (directory authority):
2459    - Authorities now recommend the protocol versions that are supported
2460      by Tor 0.3.5 and later. (Earlier versions of Tor have been
2461      deprecated since January of this year.) This recommendation will
2462      cause older clients and relays to give a warning on startup, or
2463      when they download a consensus directory. Closes ticket 32696.
2464
2465  o Minor features (entry guards):
2466    - Reinstate support for GUARD NEW/UP/DOWN control port events.
2467      Closes ticket 40001.
2468
2469  o Minor features (linux seccomp2 sandbox, portability):
2470    - Allow Tor to build on platforms where it doesn't know how to
2471      report which syscall caused the linux seccomp2 sandbox to fail.
2472      This change should make the sandbox code more portable to less
2473      common Linux architectures. Closes ticket 34382.
2474    - Permit the unlinkat() syscall, which some Libc implementations use
2475      to implement unlink(). Closes ticket 33346.
2476
2477  o Minor bugfix (CI, Windows):
2478    - Use the correct 64-bit printf format when compiling with MINGW on
2479      Appveyor. Fixes bug 40026; bugfix on 0.3.5.5-alpha.
2480
2481  o Minor bugfix (onion service v3 client):
2482    - Remove a BUG() warning that could occur naturally. Fixes bug
2483      34087; bugfix on 0.3.2.1-alpha.
2484
2485  o Minor bugfix (SOCKS, onion service client):
2486    - Detect v3 onion service addresses of the wrong length when
2487      returning the F6 ExtendedErrors code. Fixes bug 33873; bugfix
2488      on 0.4.3.1-alpha.
2489
2490  o Minor bugfixes (compiler warnings):
2491    - Fix a compiler warning on platforms with 32-bit time_t values.
2492      Fixes bug 40028; bugfix on 0.3.2.8-rc.
2493
2494  o Minor bugfixes (control port, onion service):
2495    - Consistently use 'address' in "Invalid v3 address" response to
2496      ONION_CLIENT_AUTH commands. Previously, we would sometimes say
2497      'addr'. Fixes bug 40005; bugfix on 0.4.3.1-alpha.
2498
2499  o Minor bugfixes (logging):
2500    - Downgrade a noisy log message that could occur naturally when
2501      receiving an extrainfo document that we no longer want. Fixes bug
2502      16016; bugfix on 0.2.6.3-alpha.
2503
2504  o Minor bugfixes (onion services v3):
2505    - Avoid a non-fatal assertion failure in certain edge-cases when
2506      opening an intro circuit as a client. Fixes bug 34084; bugfix
2507      on 0.3.2.1-alpha.
2508
2509  o Deprecated features (onion service v2):
2510    - Add a deprecation warning for version 2 onion services. Closes
2511      ticket 40003.
2512
2513  o Removed features (IPv6, revert):
2514    - Revert the change in the default value of ClientPreferIPv6OrPort:
2515      it breaks the torsocks use case. The SOCKS resolve command has no
2516      mechanism to ask for a specific address family (v4 or v6), and so
2517      prioritizing IPv6 when an IPv4 address is requested on the SOCKS
2518      interface resulted in a failure. Tor Browser explicitly sets
2519      PreferIPv6, so this should not affect the majority of our users.
2520      Closes ticket 33796; bugfix on 0.4.4.1-alpha.
2521
2522
2523Changes in version 0.4.4.1-alpha - 2020-06-16
2524  This is the first alpha release in the 0.4.4.x series.  It improves
2525  our guard selection algorithms, improves the amount of code that
2526  can be disabled when running without relay support, and includes numerous
2527  small bugfixes and enhancements.  It also lays the ground for some IPv6
2528  features that we'll be developing more in the next (0.4.5) series.
2529
2530  Here are the changes since 0.4.3.5.
2531
2532  o Major features (Proposal 310, performance + security):
2533    - Implements Proposal 310, "Bandaid on guard selection". Proposal
2534      310 solves load-balancing issues with older versions of the guard
2535      selection algorithm, and improves its security. Under this new
2536      algorithm, a newly selected guard never becomes Primary unless all
2537      previously sampled guards are unreachable. Implements
2538      recommendation from 32088. (Proposal 310 is linked to the CLAPS
2539      project researching optimal client location-aware path selections.
2540      This project is a collaboration between the UCLouvain Crypto Group,
2541      the U.S. Naval Research Laboratory, and Princeton University.)
2542
2543  o Major features (IPv6, relay):
2544    - Consider IPv6-only EXTEND2 cells valid on relays. Log a protocol
2545      warning if the IPv4 or IPv6 address is an internal address, and
2546      internal addresses are not allowed. But continue to use the other
2547      address, if it is valid. Closes ticket 33817.
2548    - If a relay can extend over IPv4 and IPv6, and both addresses are
2549      provided, it chooses between them uniformly at random. Closes
2550      ticket 33817.
2551    - Re-use existing IPv6 connections for circuit extends. Closes
2552      ticket 33817.
2553    - Relays may extend circuits over IPv6, if the relay has an IPv6
2554      ORPort, and the client supplies the other relay's IPv6 ORPort in
2555      the EXTEND2 cell. IPv6 extends will be used by the relay IPv6
2556      ORPort self-tests in 33222. Closes ticket 33817.
2557
2558  o Major features (v3 onion services):
2559    - Allow v3 onion services to act as OnionBalance backend instances,
2560      by using the HiddenServiceOnionBalanceInstance torrc option.
2561      Closes ticket 32709.
2562
2563  o Minor feature (developer tools):
2564    - Add a script to help check the alphabetical ordering of option
2565      names in the manual page. Closes ticket 33339.
2566
2567  o Minor feature (onion service client, SOCKS5):
2568    - Add 3 new SocksPort ExtendedErrors (F2, F3, F7) that reports back
2569      new type of onion service connection failures. The semantics of
2570      these error codes are documented in proposal 309. Closes
2571      ticket 32542.
2572
2573  o Minor feature (onion service v3):
2574    - If a service cannot upload its descriptor(s), log why at INFO
2575      level. Closes ticket 33400; bugfix on 0.3.2.1-alpha.
2576
2577  o Minor feature (python scripts):
2578    - Stop assuming that /usr/bin/python exists. Instead of using a
2579      hardcoded path in scripts that still use Python 2, use
2580      /usr/bin/env, similarly to the scripts that use Python 3. Fixes
2581      bug 33192; bugfix on 0.4.2.
2582
2583  o Minor features (client-only compilation):
2584    - Disable more code related to the ext_orport protocol when
2585      compiling without support for relay mode. Closes ticket 33368.
2586    - Disable more of our self-testing code when support for relay mode
2587      is disabled. Closes ticket 33370.
2588
2589  o Minor features (code safety):
2590    - Check for failures of tor_inet_ntop() and tor_inet_ntoa()
2591      functions in DNS and IP address processing code, and adjust
2592      codepaths to make them less likely to crash entire Tor instances.
2593      Resolves issue 33788.
2594
2595  o Minor features (compilation size):
2596    - Most server-side DNS code is now disabled when building without
2597      support for relay mode. Closes ticket 33366.
2598
2599  o Minor features (continuous integration):
2600    - Run unit-test and integration test (Stem, Chutney) jobs with
2601      ALL_BUGS_ARE_FATAL macro being enabled on Travis and Appveyor.
2602      Resolves ticket 32143.
2603
2604  o Minor features (control port):
2605    - Return a descriptive error message from the 'GETINFO status/fresh-
2606      relay-descs' command on the control port. Previously, we returned
2607      a generic error of "Error generating descriptor". Closes ticket
2608      32873. Patch by Neel Chauhan.
2609
2610  o Minor features (developer tooling):
2611    - Refrain from listing all .a files that are generated by the Tor
2612      build in .gitignore. Add a single wildcard *.a entry that covers
2613      all of them for present and future. Closes ticket 33642.
2614    - Add a script ("git-install-tools.sh") to install git hooks and
2615      helper scripts. Closes ticket 33451.
2616
2617  o Minor features (directory authority, shared random):
2618    - Refactor more authority-only parts of the shared-random scheduling
2619      code to reside in the dirauth module, and to be disabled when
2620      compiling with --disable-module-dirauth. Closes ticket 33436.
2621
2622  o Minor features (directory):
2623    - Remember the number of bytes we have downloaded for each directory
2624      purpose while bootstrapping, and while fully bootstrapped. Log
2625      this information as part of the heartbeat message. Closes
2626      ticket 32720.
2627
2628  o Minor features (IPv6 support):
2629    - Adds IPv6 support to tor_addr_is_valid(). Adds tests for the above
2630      changes and tor_addr_is_null(). Closes ticket 33679. Patch
2631      by MrSquanchee.
2632    - Allow clients and relays to send dual-stack and IPv6-only EXTEND2
2633      cells. Parse dual-stack and IPv6-only EXTEND2 cells on relays.
2634      Closes ticket 33901.
2635
2636  o Minor features (logging):
2637    - When trying to find our own address, add debug-level logging to
2638      report the sources of candidate addresses. Closes ticket 32888.
2639
2640  o Minor features (testing, architecture):
2641    - Our test scripts now double-check that subsystem initialization
2642      order is consistent with the inter-module dependencies established
2643      by our .may_include files. Implements ticket 31634.
2644    - Initialize all subsystems at the beginning of our unit test
2645      harness, to avoid crashes due to uninitialized subsystems. Follow-
2646      up from ticket 33316.
2647
2648  o Minor features (v3 onion services):
2649    - Add v3 onion service status to the dumpstats() call which is
2650      triggered by a SIGUSR1 signal. Previously, we only did v2 onion
2651      services. Closes ticket 24844. Patch by Neel Chauhan.
2652
2653  o Minor features (windows):
2654    - Add support for console control signals like Ctrl+C in Windows.
2655      Closes ticket 34211. Patch from Damon Harris (TheDcoder).
2656
2657  o Minor bugfix (onion service v3):
2658    - Prevent an assert() that would occur when cleaning the client
2659      descriptor cache, and attempting to close circuits for a non-
2660      decrypted descriptor (lacking client authorization). Fixes bug
2661      33458; bugfix on 0.4.2.1-alpha.
2662
2663  o Minor bugfix (refactoring):
2664    - Lift circuit_build_times_disabled() out of the
2665      circuit_expire_building() loop, to save CPU time when there are
2666      many circuits open. Fixes bug 33977; bugfix on 0.3.5.9.
2667
2668  o Minor bugfixes (client performance):
2669    - Resume use of preemptively-built circuits when UseEntryGuards is set
2670      to 0. We accidentally disabled this feature with that config
2671      setting, leading to slower load times. Fixes bug 34303; bugfix
2672      on 0.3.3.2-alpha.
2673
2674  o Minor bugfixes (directory authorities):
2675    - Directory authorities now reject votes that arrive too late. In
2676      particular, once an authority has started fetching missing votes,
2677      it no longer accepts new votes posted by other authorities. This
2678      change helps prevent a consensus split, where only some authorities
2679      have the late vote. Fixes bug 4631; bugfix on 0.2.0.5-alpha.
2680
2681  o Minor bugfixes (git scripts):
2682    - Stop executing the checked-out pre-commit hook from the pre-push
2683      hook. Instead, execute the copy in the user's git directory. Fixes
2684      bug 33284; bugfix on 0.4.1.1-alpha.
2685
2686  o Minor bugfixes (initialization):
2687    - Initialize the subsystems in our code in an order more closely
2688      corresponding to their dependencies, so that every system is
2689      initialized before the ones that (theoretically) depend on it.
2690      Fixes bug 33316; bugfix on 0.4.0.1-alpha.
2691
2692  o Minor bugfixes (IPv4, relay):
2693    - Check for invalid zero IPv4 addresses and ports when sending and
2694      receiving extend cells. Fixes bug 33900; bugfix on 0.2.4.8-alpha.
2695
2696  o Minor bugfixes (IPv6, relay):
2697    - Consider IPv6 addresses when checking if a connection is
2698      canonical. In 17604, relays assumed that a remote relay could
2699      consider an IPv6 connection canonical, but did not set the
2700      canonical flag on their side of the connection. Fixes bug 33899;
2701      bugfix on 0.3.1.1-alpha.
2702    - Log IPv6 addresses on connections where this relay is the
2703      responder. Previously, responding relays would replace the remote
2704      IPv6 address with the IPv4 address from the consensus. Fixes bug
2705      33899; bugfix on 0.3.1.1-alpha.
2706
2707  o Minor bugfixes (linux seccomp sandbox nss):
2708    - Fix a startup crash when tor is compiled with --enable-nss and
2709      sandbox support is enabled. Fixes bug 34130; bugfix on
2710      0.3.5.1-alpha. Patch by Daniel Pinto.
2711
2712  o Minor bugfixes (logging, testing):
2713    - Make all of tor's assertion macros support the ALL_BUGS_ARE_FATAL
2714      and DISABLE_ASSERTS_IN_UNIT_TESTS debugging modes. (IF_BUG_ONCE()
2715      used to log a non-fatal warning, regardless of the debugging
2716      mode.) Fixes bug 33917; bugfix on 0.2.9.1-alpha.
2717
2718  o Minor bugfixes (logs):
2719    - Remove surprising empty line in the INFO-level log about circuit
2720      build timeout. Fixes bug 33531; bugfix on 0.3.3.1-alpha.
2721
2722  o Minor bugfixes (mainloop):
2723    - Better guard against growing a buffer past its maximum 2GB in
2724      size. Fixes bug 33131; bugfix on 0.3.0.4-rc.
2725
2726  o Minor bugfixes (manual page):
2727    - Update the man page to reflect that MinUptimeHidServDirectoryV2
2728      defaults to 96 hours. Fixes bug 34299; bugfix on 0.2.6.3-alpha.
2729
2730  o Minor bugfixes (onion service v3, client):
2731    - Remove a BUG() that was causing a stacktrace when a descriptor
2732      changed at an unexpected time. Fixes bug 28992; bugfix
2733      on 0.3.2.1-alpha.
2734
2735  o Minor bugfixes (onion service, logging):
2736    - Fix a typo in a log message PublishHidServDescriptors is set to 0.
2737      Fixes bug 33779; bugfix on 0.3.2.1-alpha.
2738
2739  o Minor bugfixes (portability):
2740    - Fix a portability error in the configure script, where we were
2741      using "==" instead of "=". Fixes bug 34233; bugfix on 0.4.3.5.
2742
2743  o Minor bugfixes (protocol versions):
2744    - Sort tor's supported protocol version lists, as recommended by the
2745      tor directory specification. Fixes bug 33285; bugfix
2746      on 0.4.0.1-alpha.
2747
2748  o Minor bugfixes (relays):
2749    - Stop advertising incorrect IPv6 ORPorts in relay and bridge
2750      descriptors, when the IPv6 port was configured as "auto". Fixes
2751      bug 32588; bugfix on 0.2.3.9-alpha.
2752
2753  o Code simplification and refactoring:
2754    - Define and use a new constant TOR_ADDRPORT_BUF_LEN which is like
2755      TOR_ADDR_BUF_LEN but includes enough space for an IP address,
2756      brackets, separating colon, and port number. Closes ticket 33956.
2757      Patch by Neel Chauhan.
2758    - Merge the orconn and ocirc events into the "core" subsystem, which
2759      manages or connections and origin circuits. Previously they were
2760      isolated in subsystems of their own.
2761    - Move LOG_PROTOCOL_WARN to app/config. Resolves a dependency
2762      inversion. Closes ticket 33633.
2763    - Move the circuit extend code to the relay module. Split the
2764      circuit extend function into smaller functions. Closes
2765      ticket 33633.
2766    - Rewrite port_parse_config() to use the default port flags from
2767      port_cfg_new(). Closes ticket 32994. Patch by MrSquanchee.
2768    - Updated comments in 'scheduler.c' to reflect old code changes, and
2769      simplified the scheduler channel state change code. Closes
2770      ticket 33349.
2771
2772  o Documentation:
2773    - Document the limitations of using %include on config files with
2774      seccomp sandbox enabled. Fixes documentation bug 34133; bugfix on
2775      0.3.1.1-alpha. Patch by Daniel Pinto.
2776    - Fix several doxygen warnings related to imbalanced groups. Closes
2777      ticket 34255.
2778
2779  o Removed features:
2780    - Remove the ClientAutoIPv6ORPort option. This option attempted to
2781      randomly choose between IPv4 and IPv6 for client connections, and
2782      wasn't a true implementation of Happy Eyeballs. Often, this option
2783      failed on IPv4-only or IPv6-only connections. Closes ticket 32905.
2784      Patch by Neel Chauhan.
2785    - Stop shipping contrib/dist/rc.subr file, as it is not being used
2786      on FreeBSD anymore. Closes issue 31576.
2787
2788  o Testing:
2789    - Add a basic IPv6 test to "make test-network". This test only runs
2790      when the local machine has an IPv6 stack. Closes ticket 33300.
2791    - Add test-network-ipv4 and test-network-ipv6 jobs to the Makefile.
2792      These jobs run the IPv4-only and dual-stack chutney flavours from
2793      test-network-all. Closes ticket 33280.
2794    - Remove a redundant distcheck job. Closes ticket 33194.
2795    - Run the test-network-ipv6 Makefile target in the Travis CI IPv6
2796      chutney job. This job runs on macOS, so it's a bit slow. Closes
2797      ticket 33303.
2798    - Sort the Travis jobs in order of speed. Putting the slowest jobs
2799      first takes full advantage of Travis job concurrency. Closes
2800      ticket 33194.
2801    - Stop allowing the Chutney IPv6 Travis job to fail. This job was
2802      previously configured to fast_finish (which requires
2803      allow_failure), to speed up the build. Closes ticket 33195.
2804    - Test v3 onion services to tor's mixed IPv4 chutney network. And
2805      add a mixed IPv6 chutney network. These networks are used in the
2806      test-network-all, test-network-ipv4, and test-network-ipv6 make
2807      targets. Closes ticket 33334.
2808    - Use the "bridges+hs-v23" chutney network flavour in "make test-
2809      network". This test requires a recent version of chutney (mid-
2810      February 2020). Closes ticket 28208.
2811    - When a Travis chutney job fails, use chutney's new "diagnostics.sh"
2812      tool to produce detailed diagnostic output. Closes ticket 32792.
2813
2814  o Code simplification and refactoring (onion service):
2815    - Refactor configuration parsing to use the new config subsystem
2816      code. Closes ticket 33014.
2817
2818  o Code simplification and refactoring (relay address):
2819    - Move a series of functions related to address resolving into their
2820      own files. Closes ticket 33789.
2821
2822  o Documentation (manual page):
2823    - Add cross reference links and a table of contents to the HTML tor
2824      manual page. Closes ticket 33369. Work by Swati Thacker as part of
2825      Google Season of Docs.
2826    - Alphabetize the Denial of Service Mitigation Options, Directory
2827      Authority Server Options, Hidden Service Options, and Testing
2828      Network Options sections of the tor(1) manual page. Closes ticket
2829      33275. Work by Swati Thacker as part of Google Season of Docs.
2830    - Refrain from mentioning nicknames in manpage section for MyFamily
2831      torrc option. Resolves issue 33417.
2832    - Updated the options set by TestingTorNetwork in the manual page.
2833      Closes ticket 33778.
2834
2835
2836Changes in version 0.4.3.5 - 2020-05-15
2837  Tor 0.4.3.5 is the first stable release in the 0.4.3.x series. This
2838  series adds support for building without relay code enabled, and
2839  implements functionality needed for OnionBalance with v3 onion
2840  services. It includes significant refactoring of our configuration and
2841  controller functionality, and fixes numerous smaller bugs and
2842  performance issues.
2843
2844  Per our support policy, we support each stable release series for nine
2845  months after its first stable release, or three months after the first
2846  stable release of the next series: whichever is longer. This means
2847  that 0.4.3.x will be supported until around February 2021--later, if
2848  0.4.4.x is later than anticipated.
2849
2850  Note also that support for 0.4.1.x is about to end on May 20 of this
2851  year; 0.4.2.x will be supported until September 15. We still plan to
2852  continue supporting 0.3.5.x, our long-term stable series, until
2853  Feb 2022.
2854
2855  Below are the changes since 0.4.3.4-rc. For a complete list of changes
2856  since 0.4.2.6, see the ReleaseNotes file.
2857
2858  o Minor bugfixes (compiler compatibility):
2859    - Avoid compiler warnings from Clang 10 related to the use of GCC-
2860      style "/* falls through */" comments. Both Clang and GCC allow
2861      __attribute__((fallthrough)) instead, so that's what we're using
2862      now. Fixes bug 34078; bugfix on 0.3.1.3-alpha.
2863    - Fix compilation warnings with GCC 10.0.1. Fixes bug 34077; bugfix
2864      on 0.4.0.3-alpha.
2865
2866  o Minor bugfixes (logging):
2867    - Stop truncating IPv6 addresses and ports in channel and connection
2868      logs. Fixes bug 33918; bugfix on 0.2.4.4-alpha.
2869    - Fix a logic error in a log message about whether an address was
2870      invalid. Previously, the code would never report that onion
2871      addresses were onion addresses. Fixes bug 34131; bugfix
2872      on 0.4.3.1-alpha.
2873
2874
2875Changes in version 0.4.3.4-rc - 2020-04-13
2876  Tor 0.4.3.4-rc is the first release candidate in its series. It fixes
2877  several bugs from earlier versions, including one affecting DoS
2878  defenses on bridges using pluggable transports.
2879
2880  o Major bugfixes (DoS defenses, bridges, pluggable transport):
2881    - Fix a bug that was preventing DoS defenses from running on bridges
2882      with a pluggable transport. Previously, the DoS subsystem was not
2883      given the transport name of the client connection, thus failed to
2884      find the GeoIP cache entry for that client address. Fixes bug
2885      33491; bugfix on 0.3.3.2-alpha.
2886
2887  o Minor feature (sendme, flow control):
2888    - Default to sending SENDME version 1 cells. (Clients are already
2889      sending these, because of a consensus parameter telling them to do
2890      so: this change only affects what clients would do if the
2891      consensus didn't contain a recommendation.) Closes ticket 33623.
2892
2893  o Minor features (testing):
2894    - The unit tests now support a "TOR_SKIP_TESTCASES" environment
2895      variable to specify a list of space-separated test cases that
2896      should not be executed. We will use this to disable certain tests
2897      that are failing on Appveyor because of mismatched OpenSSL
2898      libraries. Part of ticket 33643.
2899
2900  o Minor bugfixes (--disable-module-relay):
2901    - Fix an assertion failure when Tor is built without the relay
2902      module, and then invoked with the "User" option. Fixes bug 33668;
2903      bugfix on 0.4.3.1-alpha.
2904
2905  o Minor bugfixes (--disable-module-relay,--disable-module-dirauth):
2906    - Set some output arguments in the relay and dirauth module stubs,
2907      to guard against future stub argument handling bugs like 33668.
2908      Fixes bug 33674; bugfix on 0.4.3.1-alpha.
2909
2910  o Minor bugfixes (build system):
2911    - Correctly output the enabled module in the configure summary.
2912      Before that, the list shown was just plain wrong. Fixes bug 33646;
2913      bugfix on 0.4.3.2-alpha.
2914
2915  o Minor bugfixes (client, IPv6):
2916    - Stop forcing all non-SocksPorts to prefer IPv6 exit connections.
2917      Instead, prefer IPv6 connections by default, but allow users to
2918      change their configs using the "NoPreferIPv6" port flag. Fixes bug
2919      33608; bugfix on 0.4.3.1-alpha.
2920    - Revert PreferIPv6 set by default on the SocksPort because it broke
2921      the torsocks use case. Tor doesn't have a way for an application
2922      to request the hostname to be resolved for a specific IP version,
2923      but torsocks requires that. Up until now, IPv4 was used by default
2924      so torsocks is expecting that, and can't handle a possible IPv6
2925      being returned. Fixes bug 33804; bugfix on 0.4.3.1-alpha.
2926
2927  o Minor bugfixes (key portability):
2928    - When reading PEM-encoded key data, tolerate CRLF line-endings even
2929      if we are not running on Windows. Previously, non-Windows hosts
2930      would reject these line-endings in certain positions, making
2931      certain key files hard to move from one host to another. Fixes bug
2932      33032; bugfix on 0.3.5.1-alpha.
2933
2934  o Minor bugfixes (logging):
2935    - Flush stderr, stdout, and file logs during shutdown, if supported
2936      by the OS. This change helps make sure that any final logs are
2937      recorded. Fixes bug 33087; bugfix on 0.4.1.6.
2938    - Stop closing stderr and stdout during shutdown. Closing these file
2939      descriptors can hide sanitiser logs. Fixes bug 33087; bugfix
2940      on 0.4.1.6.
2941
2942  o Minor bugfixes (onion services v3):
2943    - Relax severity of a log message that can appear naturally when
2944      decoding onion service descriptors as a relay. Also add some
2945      diagnostics to debug any future bugs in that area. Fixes bug
2946      31669; bugfix on 0.3.0.1-alpha.
2947    - Block a client-side assertion by disallowing the registration of
2948      an x25519 client auth key that's all zeroes. Fixes bug 33545;
2949      bugfix on 0.4.3.1-alpha. Based on patch from "cypherpunks".
2950
2951  o Code simplification and refactoring:
2952    - Disable our coding standards best practices tracker in our git
2953      hooks. (0.4.3 branches only.) Closes ticket 33678.
2954
2955  o Testing:
2956    - Avoid conflicts between the fake sockets in tor's unit tests, and
2957      real file descriptors. Resolves issues running unit tests with
2958      GitHub Actions, where the process that embeds or launches the
2959      tests has already opened a large number of file descriptors. Fixes
2960      bug 33782; bugfix on 0.2.8.1-alpha. Found and fixed by
2961      Putta Khunchalee.
2962
2963  o Testing (CI):
2964    - In our Appveyor Windows CI, copy required DLLs to test and app
2965      directories, before running tor's tests. This ensures that tor.exe
2966      and test*.exe use the correct version of each DLL. This fix is not
2967      required, but we hope it will avoid DLL search issues in future.
2968      Fixes bug 33673; bugfix on 0.3.4.2-alpha.
2969    - On Appveyor, skip the crypto/openssl_version test, which is
2970      failing because of a mismatched library installation. Fix
2971      for 33643.
2972
2973
2974Changes in version 0.4.3.3-alpha - 2020-03-18
2975  Tor 0.4.3.3-alpha fixes several bugs in previous releases, including
2976  TROVE-2020-002, a major denial-of-service vulnerability that affected
2977  all released Tor instances since 0.2.1.5-alpha. Using this
2978  vulnerability, an attacker could cause Tor instances to consume a huge
2979  amount of CPU, disrupting their operations for several seconds or
2980  minutes. This attack could be launched by anybody against a relay, or
2981  by a directory cache against any client that had connected to it. The
2982  attacker could launch this attack as much as they wanted, thereby
2983  disrupting service or creating patterns that could aid in traffic
2984  analysis. This issue was found by OSS-Fuzz, and is also tracked
2985  as CVE-2020-10592.
2986
2987  We do not have reason to believe that this attack is currently being
2988  exploited in the wild, but nonetheless we advise everyone to upgrade
2989  as soon as packages are available.
2990
2991  o Major bugfixes (security, denial-of-service):
2992    - Fix a denial-of-service bug that could be used by anyone to
2993      consume a bunch of CPU on any Tor relay or authority, or by
2994      directories to consume a bunch of CPU on clients or hidden
2995      services. Because of the potential for CPU consumption to
2996      introduce observable timing patterns, we are treating this as a
2997      high-severity security issue. Fixes bug 33119; bugfix on
2998      0.2.1.5-alpha. Found by OSS-Fuzz. We are also tracking this issue
2999      as TROVE-2020-002 and CVE-2020-10592.
3000
3001  o Major bugfixes (circuit padding, memory leak):
3002    - Avoid a remotely triggered memory leak in the case that a circuit
3003      padding machine is somehow negotiated twice on the same circuit.
3004      Fixes bug 33619; bugfix on 0.4.0.1-alpha. Found by Tobias Pulls.
3005      This is also tracked as TROVE-2020-004 and CVE-2020-10593.
3006
3007  o Major bugfixes (directory authority):
3008    - Directory authorities will now send a 503 (not enough bandwidth)
3009      code to clients when under bandwidth pressure. Known relays and
3010      other authorities will always be answered regardless of the
3011      bandwidth situation. Fixes bug 33029; bugfix on 0.1.2.5-alpha.
3012
3013  o Minor features (diagnostic):
3014    - Improve assertions and add some memory-poisoning code to try to
3015      track down possible causes of a rare crash (32564) in the EWMA
3016      code. Closes ticket 33290.
3017
3018  o Minor features (directory authorities):
3019    - Directory authorities now reject descriptors from relays running
3020      Tor versions from the 0.2.9 and 0.4.0 series. The 0.3.5 series is
3021      still allowed. Resolves ticket 32672. Patch by Neel Chauhan.
3022
3023  o Minor features (usability):
3024    - Include more information when failing to parse a configuration
3025      value. This should make it easier to tell what's going wrong when
3026      a configuration file doesn't parse. Closes ticket 33460.
3027
3028  o Minor bugfix (relay, configuration):
3029    - Warn if the ContactInfo field is not set, and tell the relay
3030      operator that not having a ContactInfo field set might cause their
3031      relay to get rejected in the future. Fixes bug 33361; bugfix
3032      on 0.1.1.10-alpha.
3033
3034  o Minor bugfixes (coding best practices checks):
3035    - Allow the "practracker" script to read unicode files when using
3036      Python 2. We made the script use unicode literals in 0.4.3.1-alpha,
3037      but didn't change the codec for opening files. Fixes bug 33374;
3038      bugfix on 0.4.3.1-alpha.
3039
3040  o Minor bugfixes (continuous integration):
3041    - Remove the buggy and unused mirroring job. Fixes bug 33213; bugfix
3042      on 0.3.2.2-alpha.
3043
3044  o Minor bugfixes (onion service v3, client):
3045    - Remove a BUG() warning that would cause a stack trace if an onion
3046      service descriptor was freed while we were waiting for a
3047      rendezvous circuit to complete. Fixes bug 28992; bugfix
3048      on 0.3.2.1-alpha.
3049
3050  o Minor bugfixes (onion services v3):
3051    - Fix an assertion failure that could result from a corrupted
3052      ADD_ONION control port command. Found by Saibato. Fixes bug 33137;
3053      bugfix on 0.3.3.1-alpha. This issue is also tracked
3054      as TROVE-2020-003.
3055
3056  o Documentation (manpage):
3057    - Alphabetize the Server and Directory server sections of the tor
3058      manpage. Also split Statistics options into their own section of
3059      the manpage. Closes ticket 33188. Work by Swati Thacker as part of
3060      Google Season of Docs.
3061    - Document the __OwningControllerProcess torrc option and specify
3062      its polling interval. Resolves issue 32971.
3063
3064  o Testing (Travis CI):
3065    - Remove a redundant distcheck job. Closes ticket 33194.
3066    - Sort the Travis jobs in order of speed: putting the slowest jobs
3067      first takes full advantage of Travis job concurrency. Closes
3068      ticket 33194.
3069    - Stop allowing the Chutney IPv6 Travis job to fail. This job was
3070      previously configured to fast_finish (which requires
3071      allow_failure), to speed up the build. Closes ticket 33195.
3072    - When a Travis chutney job fails, use chutney's new "diagnostics.sh"
3073      tool to produce detailed diagnostic output. Closes ticket 32792.
3074
3075
3076Changes in version 0.4.2.7 - 2020-03-18
3077  This is the third stable release in the 0.4.2.x series. It backports
3078  numerous fixes from later releases, including a fix for TROVE-2020-
3079  002, a major denial-of-service vulnerability that affected all
3080  released Tor instances since 0.2.1.5-alpha. Using this vulnerability,
3081  an attacker could cause Tor instances to consume a huge amount of CPU,
3082  disrupting their operations for several seconds or minutes. This
3083  attack could be launched by anybody against a relay, or by a directory
3084  cache against any client that had connected to it. The attacker could
3085  launch this attack as much as they wanted, thereby disrupting service
3086  or creating patterns that could aid in traffic analysis. This issue
3087  was found by OSS-Fuzz, and is also tracked as CVE-2020-10592.
3088
3089  We do not have reason to believe that this attack is currently being
3090  exploited in the wild, but nonetheless we advise everyone to upgrade
3091  as soon as packages are available.
3092
3093  o Major bugfixes (security, denial-of-service, backport from 0.4.3.3-alpha):
3094    - Fix a denial-of-service bug that could be used by anyone to
3095      consume a bunch of CPU on any Tor relay or authority, or by
3096      directories to consume a bunch of CPU on clients or hidden
3097      services. Because of the potential for CPU consumption to
3098      introduce observable timing patterns, we are treating this as a
3099      high-severity security issue. Fixes bug 33119; bugfix on
3100      0.2.1.5-alpha. Found by OSS-Fuzz. We are also tracking this issue
3101      as TROVE-2020-002 and CVE-2020-10592.
3102
3103  o Major bugfixes (circuit padding, memory leak, backport from 0.4.3.3-alpha):
3104    - Avoid a remotely triggered memory leak in the case that a circuit
3105      padding machine is somehow negotiated twice on the same circuit.
3106      Fixes bug 33619; bugfix on 0.4.0.1-alpha. Found by Tobias Pulls.
3107      This is also tracked as TROVE-2020-004 and CVE-2020-10593.
3108
3109  o Major bugfixes (directory authority, backport from 0.4.3.3-alpha):
3110    - Directory authorities will now send a 503 (not enough bandwidth)
3111      code to clients when under bandwidth pressure. Known relays and
3112      other authorities will always be answered regardless of the
3113      bandwidth situation. Fixes bug 33029; bugfix on 0.1.2.5-alpha.
3114
3115  o Minor features (continuous integration, backport from 0.4.3.2-alpha):
3116    - Stop allowing failures on the Travis CI stem tests job. It looks
3117      like all the stem hangs we were seeing before are now fixed.
3118      Closes ticket 33075.
3119
3120  o Minor bugfixes (bridges, backport from 0.4.3.1-alpha):
3121    - Lowercase the configured value of BridgeDistribution before adding
3122      it to the descriptor. Fixes bug 32753; bugfix on 0.3.2.3-alpha.
3123
3124  o Minor bugfixes (logging, backport from 0.4.3.2-alpha):
3125    - If we encounter a bug when flushing a buffer to a TLS connection,
3126      only log the bug once per invocation of the Tor process.
3127      Previously we would log with every occurrence, which could cause
3128      us to run out of disk space. Fixes bug 33093; bugfix
3129      on 0.3.2.2-alpha.
3130
3131  o Minor bugfixes (onion services v3, backport from 0.4.3.3-alpha):
3132    - Fix an assertion failure that could result from a corrupted
3133      ADD_ONION control port command. Found by Saibato. Fixes bug 33137;
3134      bugfix on 0.3.3.1-alpha. This issue is also tracked
3135      as TROVE-2020-003.
3136
3137  o Minor bugfixes (rust, build, backport from 0.4.3.2-alpha):
3138    - Fix a syntax warning given by newer versions of Rust that was
3139      creating problems for our continuous integration. Fixes bug 33212;
3140      bugfix on 0.3.5.1-alpha.
3141
3142  o Testing (Travis CI, backport from 0.4.3.3-alpha):
3143    - Remove a redundant distcheck job. Closes ticket 33194.
3144    - Sort the Travis jobs in order of speed: putting the slowest jobs
3145      first takes full advantage of Travis job concurrency. Closes
3146      ticket 33194.
3147    - Stop allowing the Chutney IPv6 Travis job to fail. This job was
3148      previously configured to fast_finish (which requires
3149      allow_failure), to speed up the build. Closes ticket 33195.
3150    - When a Travis chutney job fails, use chutney's new "diagnostics.sh"
3151      tool to produce detailed diagnostic output. Closes ticket 32792.
3152
3153
3154Changes in version 0.4.1.9 - 2020-03-18
3155  Tor 0.4.1.9 backports important fixes from later Tor releases,
3156  including a fix for TROVE-2020-002, a major denial-of-service
3157  vulnerability that affected all released Tor instances since
3158  0.2.1.5-alpha. Using this vulnerability, an attacker could cause Tor
3159  instances to consume a huge amount of CPU, disrupting their operations
3160  for several seconds or minutes. This attack could be launched by
3161  anybody against a relay, or by a directory cache against any client
3162  that had connected to it. The attacker could launch this attack as
3163  much as they wanted, thereby disrupting service or creating patterns
3164  that could aid in traffic analysis. This issue was found by OSS-Fuzz,
3165  and is also tracked as CVE-2020-10592.
3166
3167  We do not have reason to believe that this attack is currently being
3168  exploited in the wild, but nonetheless we advise everyone to upgrade
3169  as soon as packages are available.
3170
3171  o Major bugfixes (security, denial-of-service, backport from 0.4.3.3-alpha):
3172    - Fix a denial-of-service bug that could be used by anyone to
3173      consume a bunch of CPU on any Tor relay or authority, or by
3174      directories to consume a bunch of CPU on clients or hidden
3175      services. Because of the potential for CPU consumption to
3176      introduce observable timing patterns, we are treating this as a
3177      high-severity security issue. Fixes bug 33119; bugfix on
3178      0.2.1.5-alpha. Found by OSS-Fuzz. We are also tracking this issue
3179      as TROVE-2020-002 and CVE-2020-10592.
3180
3181  o Major bugfixes (circuit padding, memory leak, backport from 0.4.3.3-alpha):
3182    - Avoid a remotely triggered memory leak in the case that a circuit
3183      padding machine is somehow negotiated twice on the same circuit.
3184      Fixes bug 33619; bugfix on 0.4.0.1-alpha. Found by Tobias Pulls.
3185      This is also tracked as TROVE-2020-004 and CVE-2020-10593.
3186
3187  o Minor bugfixes (bridges, backport from 0.4.3.1-alpha):
3188    - Lowercase the configured value of BridgeDistribution before adding
3189      it to the descriptor. Fixes bug 32753; bugfix on 0.3.2.3-alpha.
3190
3191  o Minor bugfixes (logging, backport from 0.4.3.2-alpha):
3192    - If we encounter a bug when flushing a buffer to a TLS connection,
3193      only log the bug once per invocation of the Tor process.
3194      Previously we would log with every occurrence, which could cause
3195      us to run out of disk space. Fixes bug 33093; bugfix
3196      on 0.3.2.2-alpha.
3197
3198  o Minor bugfixes (onion services v3, backport from 0.4.3.3-alpha):
3199    - Fix an assertion failure that could result from a corrupted
3200      ADD_ONION control port command. Found by Saibato. Fixes bug 33137;
3201      bugfix on 0.3.3.1-alpha. This issue is also tracked
3202      as TROVE-2020-003.
3203
3204  o Minor bugfixes (rust, build, backport from 0.4.3.2-alpha):
3205    - Fix a syntax warning given by newer versions of Rust that was
3206      creating problems for our continuous integration. Fixes bug 33212;
3207      bugfix on 0.3.5.1-alpha.
3208
3209  o Testing (Travis CI, backport from 0.4.3.3-alpha):
3210    - Remove a redundant distcheck job. Closes ticket 33194.
3211    - Sort the Travis jobs in order of speed: putting the slowest jobs
3212      first takes full advantage of Travis job concurrency. Closes
3213      ticket 33194.
3214    - Stop allowing the Chutney IPv6 Travis job to fail. This job was
3215      previously configured to fast_finish (which requires
3216      allow_failure), to speed up the build. Closes ticket 33195.
3217    - When a Travis chutney job fails, use chutney's new "diagnostics.sh"
3218      tool to produce detailed diagnostic output. Closes ticket 32792.
3219
3220
3221Changes in version 0.3.5.10 - 2020-03-18
3222  Tor 0.3.5.10 backports many fixes from later Tor releases, including a
3223  fix for TROVE-2020-002, a major denial-of-service vulnerability that
3224  affected all released Tor instances since 0.2.1.5-alpha. Using this
3225  vulnerability, an attacker could cause Tor instances to consume a huge
3226  amount of CPU, disrupting their operations for several seconds or
3227  minutes. This attack could be launched by anybody against a relay, or
3228  by a directory cache against any client that had connected to it. The
3229  attacker could launch this attack as much as they wanted, thereby
3230  disrupting service or creating patterns that could aid in traffic
3231  analysis. This issue was found by OSS-Fuzz, and is also tracked
3232  as CVE-2020-10592.
3233
3234  We do not have reason to believe that this attack is currently being
3235  exploited in the wild, but nonetheless we advise everyone to upgrade
3236  as soon as packages are available.
3237
3238  o Major bugfixes (security, denial-of-service, backport from 0.4.3.3-alpha):
3239    - Fix a denial-of-service bug that could be used by anyone to
3240      consume a bunch of CPU on any Tor relay or authority, or by
3241      directories to consume a bunch of CPU on clients or hidden
3242      services. Because of the potential for CPU consumption to
3243      introduce observable timing patterns, we are treating this as a
3244      high-severity security issue. Fixes bug 33119; bugfix on
3245      0.2.1.5-alpha. Found by OSS-Fuzz. We are also tracking this issue
3246      as TROVE-2020-002 and CVE-2020-10592.
3247
3248  o Major bugfixes (linux seccomp sandbox, backport from 0.4.3.1-alpha):
3249    - Correct how we use libseccomp. Particularly, stop assuming that
3250      rules are applied in a particular order or that more rules are
3251      processed after the first match. Neither is the case! In
3252      libseccomp <2.4.0 this lead to some rules having no effect.
3253      libseccomp 2.4.0 changed how rules are generated, leading to a
3254      different ordering, which in turn led to a fatal crash during
3255      startup. Fixes bug 29819; bugfix on 0.2.5.1-alpha. Patch by
3256      Peter Gerber.
3257
3258  o Minor features (continuous integration, backport from 0.4.3.2-alpha):
3259    - Stop allowing failures on the Travis CI stem tests job. It looks
3260      like all the stem hangs we were seeing before are now fixed.
3261      Closes ticket 33075.
3262
3263  o Minor bugfixes (bridges, backport from 0.4.3.1-alpha):
3264    - Lowercase the configured value of BridgeDistribution before adding
3265      it to the descriptor. Fixes bug 32753; bugfix on 0.3.2.3-alpha.
3266
3267  o Minor bugfixes (crash, backport from 0.4.2.4-rc):
3268    - When running Tor with an option like --verify-config or
3269      --dump-config that does not start the event loop, avoid crashing
3270      if we try to exit early because of an error. Fixes bug 32407;
3271      bugfix on 0.3.3.1-alpha.
3272
3273  o Minor bugfixes (logging, backport from 0.4.3.2-alpha):
3274    - If we encounter a bug when flushing a buffer to a TLS connection,
3275      only log the bug once per invocation of the Tor process.
3276      Previously we would log with every occurrence, which could cause
3277      us to run out of disk space. Fixes bug 33093; bugfix
3278      on 0.3.2.2-alpha.
3279
3280  o Minor bugfixes (onion services v3, backport from 0.4.3.3-alpha):
3281    - Fix an assertion failure that could result from a corrupted
3282      ADD_ONION control port command. Found by Saibato. Fixes bug 33137;
3283      bugfix on 0.3.3.1-alpha. This issue is also tracked
3284      as TROVE-2020-003.
3285
3286  o Minor bugfixes (rust, build, backport from 0.4.3.2-alpha):
3287    - Fix a syntax warning given by newer versions of Rust that was
3288      creating problems for our continuous integration. Fixes bug 33212;
3289      bugfix on 0.3.5.1-alpha.
3290
3291  o Testing (backport from 0.4.3.1-alpha):
3292    - Re-enable the Travis CI macOS Chutney build, but don't let it
3293      prevent the Travis job from finishing. (The Travis macOS jobs are
3294      slow, so we don't want to have it delay the whole CI process.)
3295      Closes ticket 32629.
3296    - Turn off Tor's Sandbox in Chutney jobs, and run those jobs on
3297      Ubuntu Bionic. Turning off the Sandbox is a work-around, until we
3298      fix the sandbox errors in 32722. Closes ticket 32240.
3299
3300  o Testing (continuous integration, backport from 0.4.3.1-alpha):
3301    - Use zstd in our Travis Linux builds. Closes ticket 32242.
3302
3303  o Testing (Travis CI, backport from 0.4.3.3-alpha):
3304    - Remove a redundant distcheck job. Closes ticket 33194.
3305    - Sort the Travis jobs in order of speed: putting the slowest jobs
3306      first takes full advantage of Travis job concurrency. Closes
3307      ticket 33194.
3308    - Stop allowing the Chutney IPv6 Travis job to fail. This job was
3309      previously configured to fast_finish (which requires
3310    - When a Travis chutney job fails, use chutney's new "diagnostics.sh"
3311      tool to produce detailed diagnostic output. Closes ticket 32792.
3312
3313
3314Changes in version 0.4.3.2-alpha - 2020-02-10
3315  This is the second stable alpha release in the Tor 0.4.3.x series. It
3316  fixes several bugs present in the previous alpha release. Anybody
3317  running the previous alpha should upgrade, and look for bugs in this
3318  one instead.
3319
3320  o Major bugfixes (onion service client, authorization):
3321    - On a NEWNYM signal, purge entries from the ephemeral client
3322      authorization cache. The permanent ones are kept. Fixes bug 33139;
3323      bugfix on 0.4.3.1-alpha.
3324
3325  o Minor features (best practices tracker):
3326    - Practracker now supports a --regen-overbroad option to regenerate
3327      the exceptions file, but only to revise exceptions to be _less_
3328      tolerant of best-practices violations. Closes ticket 32372.
3329
3330  o Minor features (continuous integration):
3331    - Run Doxygen Makefile target on Travis, so we can learn about
3332      regressions in our internal documentation. Closes ticket 32455.
3333    - Stop allowing failures on the Travis CI stem tests job. It looks
3334      like all the stem hangs we were seeing before are now fixed.
3335      Closes ticket 33075.
3336
3337  o Minor bugfixes (build system):
3338    - Revise configure options that were either missing or incorrect in
3339      the configure summary. Fixes bug 32230; bugfix on 0.4.3.1-alpha.
3340
3341  o Minor bugfixes (controller protocol):
3342    - Fix a memory leak introduced by refactoring of control reply
3343      formatting code. Fixes bug 33039; bugfix on 0.4.3.1-alpha.
3344    - Fix a memory leak in GETINFO responses. Fixes bug 33103; bugfix
3345      on 0.4.3.1-alpha.
3346    - When receiving "ACTIVE" or "DORMANT" signals on the control port,
3347      report them as SIGNAL events. Previously we would log a bug
3348      warning. Fixes bug 33104; bugfix on 0.4.0.1-alpha.
3349
3350  o Minor bugfixes (logging):
3351    - If we encounter a bug when flushing a buffer to a TLS connection,
3352      only log the bug once per invocation of the Tor process.
3353      Previously we would log with every occurrence, which could cause
3354      us to run out of disk space. Fixes bug 33093; bugfix
3355      on 0.3.2.2-alpha.
3356    - When logging a bug, do not say "Future instances of this warning
3357      will be silenced" unless we are actually going to silence them.
3358      Previously we would say this whenever a BUG() check failed in the
3359      code. Fixes bug 33095; bugfix on 0.4.1.1-alpha.
3360
3361  o Minor bugfixes (onion service v2):
3362    - Move a series of v2 onion service warnings to protocol-warning
3363      level because they can all be triggered remotely by a malformed
3364      request. Fixes bug 32706; bugfix on 0.1.1.14-alpha.
3365
3366  o Minor bugfixes (onion service v3, client authorization):
3367    - When removing client authorization credentials using the control
3368      port, also remove the associated descriptor, so the onion service
3369      can no longer be contacted. Fixes bug 33148; bugfix
3370      on 0.4.3.1-alpha.
3371
3372  o Minor bugfixes (pluggable transports):
3373    - When receiving a message on standard error from a pluggable
3374      transport, log it at info level, rather than as a warning. Fixes
3375      bug 33005; bugfix on 0.4.0.1-alpha.
3376
3377  o Minor bugfixes (rust, build):
3378    - Fix a syntax warning given by newer versions of Rust that was
3379      creating problems for our continuous integration. Fixes bug 33212;
3380      bugfix on 0.3.5.1-alpha.
3381
3382  o Minor bugfixes (TLS bug handling):
3383    - When encountering a bug in buf_read_from_tls(), return a "MISC"
3384      error code rather than "WANTWRITE". This change might help avoid
3385      some CPU-wasting loops if the bug is ever triggered. Bug reported
3386      by opara. Fixes bug 32673; bugfix on 0.3.0.4-alpha.
3387
3388  o Code simplification and refactoring (mainloop):
3389    - Simplify the ip_address_changed() function by removing redundant
3390      checks. Closes ticket 33091.
3391
3392  o Documentation (manpage):
3393    - Split "Circuit Timeout" options and "Node Selection" options into
3394      their own sections of the tor manpage. Closes tickets 32928 and
3395      32929. Work by Swati Thacker as part of Google Season of Docs.
3396
3397
3398Changes in version 0.4.2.6 - 2020-01-30
3399  This is the second stable release in the 0.4.2.x series. It backports
3400  several bugfixes from 0.4.3.1-alpha, including some that had affected
3401  the Linux seccomp2 sandbox or Windows services. If you're running with
3402  one of those configurations, you'll probably want to upgrade;
3403  otherwise, you should be fine with 0.4.2.5.
3404
3405  o Major bugfixes (linux seccomp sandbox, backport from 0.4.3.1-alpha):
3406    - Correct how we use libseccomp. Particularly, stop assuming that
3407      rules are applied in a particular order or that more rules are
3408      processed after the first match. Neither is the case! In
3409      libseccomp <2.4.0 this led to some rules having no effect.
3410      libseccomp 2.4.0 changed how rules are generated, leading to a
3411      different ordering, which in turn led to a fatal crash during
3412      startup. Fixes bug 29819; bugfix on 0.2.5.1-alpha. Patch by
3413      Peter Gerber.
3414    - Fix crash when reloading logging configuration while the
3415      experimental sandbox is enabled. Fixes bug 32841; bugfix on
3416      0.4.1.7. Patch by Peter Gerber.
3417
3418  o Minor bugfixes (correctness checks, backport from 0.4.3.1-alpha):
3419    - Use GCC/Clang's printf-checking feature to make sure that
3420      tor_assertf() arguments are correctly typed. Fixes bug 32765;
3421      bugfix on 0.4.1.1-alpha.
3422
3423  o Minor bugfixes (logging, crash, backport from 0.4.3.1-alpha):
3424    - Avoid a possible crash when trying to log a (fatal) assertion
3425      failure about mismatched magic numbers in configuration objects.
3426      Fixes bug 32771; bugfix on 0.4.2.1-alpha.
3427
3428  o Minor bugfixes (testing, backport from 0.4.3.1-alpha):
3429    - When TOR_DISABLE_PRACTRACKER is set, do not apply it to the
3430      test_practracker.sh script. Doing so caused a test failure. Fixes
3431      bug 32705; bugfix on 0.4.2.1-alpha.
3432    - When TOR_DISABLE_PRACTRACKER is set, log a notice to stderr when
3433      skipping practracker checks. Fixes bug 32705; bugfix
3434      on 0.4.2.1-alpha.
3435
3436  o Minor bugfixes (windows service, backport from 0.4.3.1-alpha):
3437    - Initialize the publish/subscribe system when running as a windows
3438      service. Fixes bug 32778; bugfix on 0.4.1.1-alpha.
3439
3440  o Testing (backport from 0.4.3.1-alpha):
3441    - Turn off Tor's Sandbox in Chutney jobs, and run those jobs on
3442      Ubuntu Bionic. Turning off the Sandbox is a work-around, until we
3443      fix the sandbox errors in 32722. Closes ticket 32240.
3444    - Re-enable the Travis CI macOS Chutney build, but don't let it
3445      prevent the Travis job from finishing. (The Travis macOS jobs are
3446      slow, so we don't want to have it delay the whole CI process.)
3447      Closes ticket 32629.
3448
3449  o Testing (continuous integration, backport from 0.4.3.1-alpha):
3450    - Use zstd in our Travis Linux builds. Closes ticket 32242.
3451
3452
3453Changes in version 0.4.1.8 - 2020-01-30
3454  This release backports several bugfixes from later release series,
3455  including some that had affected the Linux seccomp2 sandbox or Windows
3456  services. If you're running with one of those configurations, you'll
3457  probably want to upgrade; otherwise, you should be fine with your
3458  current version of 0.4.1.x.
3459
3460  o Major bugfixes (linux seccomp sandbox, backport from 0.4.3.1-alpha):
3461    - Correct how we use libseccomp. Particularly, stop assuming that
3462      rules are applied in a particular order or that more rules are
3463      processed after the first match. Neither is the case! In
3464      libseccomp <2.4.0 this led to some rules having no effect.
3465      libseccomp 2.4.0 changed how rules are generated, leading to a
3466      different ordering, which in turn led to a fatal crash during
3467      startup. Fixes bug 29819; bugfix on 0.2.5.1-alpha. Patch by
3468      Peter Gerber.
3469    - Fix crash when reloading logging configuration while the
3470      experimental sandbox is enabled. Fixes bug 32841; bugfix on
3471      0.4.1.7. Patch by Peter Gerber.
3472
3473  o Minor bugfixes (crash, backport form 0.4.2.4-rc):
3474    - When running Tor with an option like --verify-config or
3475      --dump-config that does not start the event loop, avoid crashing
3476      if we try to exit early because of an error. Fixes bug 32407;
3477      bugfix on 0.3.3.1-alpha.
3478
3479  o Minor bugfixes (windows service, backport from 0.4.3.1-alpha):
3480    - Initialize the publish/subscribe system when running as a windows
3481      service. Fixes bug 32778; bugfix on 0.4.1.1-alpha.
3482
3483  o Testing (backport from 0.4.3.1-alpha):
3484    - Turn off Tor's Sandbox in Chutney jobs, and run those jobs on
3485      Ubuntu Bionic. Turning off the Sandbox is a work-around, until we
3486      fix the sandbox errors in 32722. Closes ticket 32240.
3487    - Re-enable the Travis CI macOS Chutney build, but don't let it
3488      prevent the Travis job from finishing. (The Travis macOS jobs are
3489      slow, so we don't want to have it delay the whole CI process.)
3490      Closes ticket 32629.
3491
3492  o Testing (continuous integration, backport from 0.4.3.1-alpha):
3493    - Use zstd in our Travis Linux builds. Closes ticket 32242.
3494
3495
3496Changes in version 0.4.3.1-alpha - 2020-01-22
3497  This is the first alpha release in the 0.4.3.x series. It includes
3498  improved support for application integration of onion services, support
3499  for building in a client-only mode, and newly improved internal
3500  documentation (online at https://src-ref.docs.torproject.org/tor/). It
3501  also has numerous other small bugfixes and features, as well as
3502  improvements to our code's internal organization that should help us
3503  write better code in the future.
3504
3505  o New system requirements:
3506    - When building Tor, you now need to have Python 3 in order to run
3507      the integration tests. (Python 2 is officially unsupported
3508      upstream, as of 1 Jan 2020.) Closes ticket 32608.
3509
3510  o Major features (build system):
3511    - The relay code can now be disabled using the --disable-module-relay
3512      configure option. When this option is set, we also disable the
3513      dirauth module. Closes ticket 32123.
3514    - When Tor is compiled --disable-module-relay, we also omit the code
3515      used to act as a directory cache. Closes ticket 32487.
3516
3517  o Major features (directory authority, ed25519):
3518    - Add support for banning a relay's ed25519 keys in the approved-
3519      routers file. This will help us migrate away from RSA keys in the
3520      future. Previously, only RSA keys could be banned in approved-
3521      routers. Resolves ticket 22029. Patch by Neel Chauhan.
3522
3523  o Major features (onion service, controller):
3524    - New control port commands to manage client-side onion service
3525      authorization credentials. The ONION_CLIENT_AUTH_ADD command adds
3526      a credential, ONION_CLIENT_AUTH_REMOVE deletes a credential, and
3527      ONION_CLIENT_AUTH_VIEW lists the credentials. Closes ticket 30381.
3528
3529  o Major features (onion service, SOCKS5):
3530    - Introduce a new SocksPort flag, ExtendedErrors, to support more
3531      detailed error codes in information for applications that support
3532      them. Closes ticket 30382; implements proposal 304.
3533
3534  o Major features (proxy):
3535    - In addition to its current supported proxy types (HTTP CONNECT,
3536      SOCKS4, and SOCKS5), Tor can now make its OR connections through a
3537      HAProxy server. A new torrc option was added to specify the
3538      address/port of the server: TCPProxy <protocol> <host>:<port>.
3539      Currently the only supported protocol for the option is haproxy.
3540      Closes ticket 31518. Patch done by Suphanat Chunhapanya (haxxpop).
3541
3542  o Major bugfixes (linux seccomp sandbox):
3543    - Correct how we use libseccomp. Particularly, stop assuming that
3544      rules are applied in a particular order or that more rules are
3545      processed after the first match. Neither is the case! In
3546      libseccomp <2.4.0 this led to some rules having no effect.
3547      libseccomp 2.4.0 changed how rules are generated, leading to a
3548      different ordering, which in turn led to a fatal crash during
3549      startup. Fixes bug 29819; bugfix on 0.2.5.1-alpha. Patch by
3550      Peter Gerber.
3551    - Fix crash when reloading logging configuration while the
3552      experimental sandbox is enabled. Fixes bug 32841; bugfix on
3553      0.4.1.7. Patch by Peter Gerber.
3554
3555  o Major bugfixes (networking):
3556    - Correctly handle IPv6 addresses in SOCKS5 RESOLVE_PTR requests,
3557      and accept strings as well as binary addresses. Fixes bug 32315;
3558      bugfix on 0.3.5.1-alpha.
3559
3560  o Major bugfixes (onion service):
3561    - Report HS circuit failure back into the HS subsystem so we take
3562      appropriate action with regards to the client introduction point
3563      failure cache. This improves reachability of onion services, since
3564      now clients notice failing introduction circuits properly. Fixes
3565      bug 32020; bugfix on 0.3.2.1-alpha.
3566
3567  o Minor feature (configure, build system):
3568    - Output a list of enabled/disabled features at the end of the
3569      configure process in a pleasing way. Closes ticket 31373.
3570
3571  o Minor feature (heartbeat, onion service):
3572    - Add the DoS INTRODUCE2 defenses counter to the heartbeat DoS
3573      message. Closes ticket 31371.
3574
3575  o Minor features (configuration validation):
3576    - Configuration validation can now be done by per-module callbacks,
3577      rather than a global validation function. This will let us reduce
3578      the size of config.c and some of its more cumbersome functions.
3579      Closes ticket 31241.
3580
3581  o Minor features (configuration):
3582    - If a configured hardware crypto accelerator in AccelName is
3583      prefixed with "!", Tor now exits when it cannot be found. Closes
3584      ticket 32406.
3585    - We now use flag-driven logic to warn about obsolete configuration
3586      fields, so that we can include their names. In 0.4.2, we used a
3587      special type, which prevented us from generating good warnings.
3588      Implements ticket 32404.
3589
3590  o Minor features (controller):
3591    - Add stream isolation data to STREAM event. Closes ticket 19859.
3592    - Implement a new GETINFO command to fetch microdescriptor
3593      consensus. Closes ticket 31684.
3594
3595  o Minor features (debugging, directory system):
3596    - Don't crash when we find a non-guard with a guard-fraction value
3597      set. Instead, log a bug warning, in an attempt to figure out how
3598      this happened. Diagnostic for ticket 32868.
3599
3600  o Minor features (defense in depth):
3601    - Add additional checks around tor_vasprintf() usage, in case the
3602      function returns an error. Patch by Tobias Stoeckmann. Fixes
3603      ticket 31147.
3604
3605  o Minor features (developer tooling):
3606    - Remove the 0.2.9.x series branches from git scripts (git-merge-
3607      forward.sh, git-pull-all.sh, git-push-all.sh, git-setup-dirs.sh).
3608      Closes ticket 32772.
3609
3610  o Minor features (developer tools):
3611    - Add a check_cocci_parse.sh script that checks that new code is
3612      parseable by Coccinelle. Add an exceptions file for unparseable
3613      files, and run the script from travis CI. Closes ticket 31919.
3614    - Call the check_cocci_parse.sh script from a 'check-cocci' Makefile
3615      target. Closes ticket 31919.
3616    - Add a rename_c_identifiers.py tool to rename a bunch of C
3617      identifiers at once, and generate a well-formed commit message
3618      describing the change. This should help with refactoring. Closes
3619      ticket 32237.
3620    - Add some scripts in "scripts/coccinelle" to invoke the Coccinelle
3621      semantic patching tool with the correct flags. These flags are
3622      fairly easy to forget, and these scripts should help us use
3623      Coccinelle more effectively in the future. Closes ticket 31705.
3624
3625  o Minor features (Doxygen):
3626    - Update Doxygen configuration file to a more recent template (from
3627      1.8.15). Closes ticket 32110.
3628    - "make doxygen" now works with out-of-tree builds. Closes
3629      ticket 32113.
3630    - Make sure that doxygen outputs documentation for all of our C
3631      files. Previously, some were missing @file declarations, causing
3632      them to be ignored. Closes ticket 32307.
3633    - Our "make doxygen" target now respects --enable-fatal-warnings by
3634      default, and does not warn about items that are missing
3635      documentation. To warn about missing documentation, run configure
3636      with the "--enable-missing-doc-warnings" flag: doing so suspends
3637      fatal warnings for doxygen. Closes ticket 32385.
3638
3639  o Minor features (git scripts):
3640    - Add TOR_EXTRA_CLONE_ARGS to git-setup-dirs.sh for git clone
3641      customisation. Closes ticket 32347.
3642    - Add git-setup-dirs.sh, which sets up an upstream git repository
3643      and worktrees for tor maintainers. Closes ticket 29603.
3644    - Add TOR_EXTRA_REMOTE_* to git-setup-dirs.sh for a custom extra
3645      remote. Closes ticket 32347.
3646    - Call the check_cocci_parse.sh script from the git commit and push
3647      hooks. Closes ticket 31919.
3648    - Make git-push-all.sh skip unchanged branches when pushing to
3649      upstream. The script already skipped unchanged test branches.
3650      Closes ticket 32216.
3651    - Make git-setup-dirs.sh create a master symlink in the worktree
3652      directory. Closes ticket 32347.
3653    - Skip unmodified source files when doing some existing git hook
3654      checks. Related to ticket 31919.
3655
3656  o Minor features (IPv6, client):
3657    - Make Tor clients tell dual-stack exits that they prefer IPv6
3658      connections. This change is equivalent to setting the PreferIPv6
3659      flag on SOCKSPorts (and most other listener ports). Tor Browser
3660      has been setting this flag for some time, and we want to remove a
3661      client distinguisher at exits. Closes ticket 32637.
3662
3663  o Minor features (portability, android):
3664    - When building for Android, disable some tests that depend on $HOME
3665      and/or pwdb, which Android doesn't have. Closes ticket 32825.
3666      Patch from Hans-Christoph Steiner.
3667
3668  o Minor features (relay modularity):
3669    - Split the relay and server pluggable transport config code into
3670      separate files in the relay module. Disable this code when the
3671      relay module is disabled. Closes part of ticket 32213.
3672    - When the relay module is disabled, reject attempts to set the
3673      ORPort, DirPort, DirCache, BridgeRelay, ExtORPort, or
3674      ServerTransport* options, rather than ignoring the values of these
3675      options. Closes part of ticket 32213.
3676
3677  o Minor features (relay):
3678    - When the relay module is disabled, change the default config so
3679      that DirCache is 0, and ClientOnly is 1. Closes ticket 32410.
3680
3681  o Minor features (release tools):
3682    - Port our ChangeLog formatting and sorting tools to Python 3.
3683      Closes ticket 32704.
3684
3685  o Minor features (testing):
3686    - Detect some common failure cases for test_parseconf.sh in
3687      src/test/conf_failures. Closes ticket 32451.
3688    - Allow test_parseconf.sh to test expected log outputs for successful
3689      configs, as well as failed configs. Closes ticket 32451.
3690    - The test_parseconf.sh script now supports result variants for any
3691      combination of the optional libraries lzma, nss, and zstd. Closes
3692      ticket 32397.
3693
3694  o Minor features (tests, Android):
3695    - When running the unit tests on Android, create temporary files in
3696      a subdirectory of /data/local/tmp. Closes ticket 32172. Based on a
3697      patch from Hans-Christoph Steiner.
3698
3699  o Minor bugfixes (bridges):
3700    - Lowercase the configured value of BridgeDistribution before adding
3701      it to the descriptor. Fixes bug 32753; bugfix on 0.3.2.3-alpha.
3702
3703  o Minor bugfixes (build system):
3704    - Fix "make autostyle" for out-of-tree builds. Fixes bug 32370;
3705      bugfix on 0.4.1.2-alpha.
3706
3707  o Minor bugfixes (configuration handling):
3708    - Make control_event_conf_changed() take in a config_line_t instead
3709      of a smartlist of alternating key/value entries. Fixes bug 31531;
3710      bugfix on 0.2.3.3-alpha. Patch by Neel Chauhan.
3711
3712  o Minor bugfixes (configuration):
3713    - Check for multiplication overflow when parsing memory units inside
3714      configuration. Fixes bug 30920; bugfix on 0.0.9rc1.
3715    - When dumping the configuration, stop adding a trailing space after
3716      the option name when there is no option value. This issue only
3717      affects options that accept an empty value or list. (Most options
3718      reject empty values, or delete the entire line from the dumped
3719      options.) Fixes bug 32352; bugfix on 0.0.9pre6.
3720    - Avoid changing the user's value of HardwareAccel as stored by
3721      SAVECONF, when AccelName is set but HardwareAccel is not. Fixes
3722      bug 32382; bugfix on 0.2.2.1-alpha.
3723    - When creating a KeyDirectory with the same location as the
3724      DataDirectory (not recommended), respect the DataDirectory's
3725      group-readable setting if one has not been set for the
3726      KeyDirectory. Fixes bug 27992; bugfix on 0.3.3.1-alpha.
3727
3728  o Minor bugfixes (controller):
3729    - In routerstatus_has_changed(), check all the fields that are
3730      output over the control port. Fixes bug 20218; bugfix
3731      on 0.1.1.11-alpha
3732
3733  o Minor bugfixes (correctness checks):
3734    - Use GCC/Clang's printf-checking feature to make sure that
3735      tor_assertf() arguments are correctly typed. Fixes bug 32765;
3736      bugfix on 0.4.1.1-alpha.
3737
3738  o Minor bugfixes (developer tools):
3739    - Allow paths starting with ./ in scripts/add_c_file.py. Fixes bug
3740      31336; bugfix on 0.4.1.2-alpha.
3741
3742  o Minor bugfixes (dirauth module):
3743    - Split the dirauth config code into a separate file in the dirauth
3744      module. Disable this code when the dirauth module is disabled.
3745      Closes ticket 32213.
3746    - When the dirauth module is disabled, reject attempts to set the
3747      AuthoritativeDir option, rather than ignoring the value of the
3748      option. Fixes bug 32213; bugfix on 0.3.4.1-alpha.
3749
3750  o Minor bugfixes (embedded Tor):
3751    - When starting Tor any time after the first time in a process,
3752      register the thread in which it is running as the main thread.
3753      Previously, we only did this on Windows, which could lead to bugs
3754      like 23081 on non-Windows platforms. Fixes bug 32884; bugfix
3755      on 0.3.3.1-alpha.
3756
3757  o Minor bugfixes (git scripts):
3758    - Avoid sleeping before the last push in git-push-all.sh. Closes
3759      ticket 32216.
3760    - Forward all unrecognised arguments in git-push-all.sh to git push.
3761      Closes ticket 32216.
3762
3763  o Minor bugfixes (hidden service v3):
3764    - Do not rely on a "circuit established" flag for intro circuits but
3765      instead always query the HS circuit map. This is to avoid sync
3766      issue with that flag and the map. Fixes bug 32094; bugfix
3767      on 0.3.2.1-alpha.
3768
3769  o Minor bugfixes (logging, crash):
3770    - Avoid a possible crash when trying to log a (fatal) assertion
3771      failure about mismatched magic numbers in configuration objects.
3772      Fixes bug 32771; bugfix on 0.4.2.1-alpha.
3773
3774  o Minor bugfixes (onion service v2):
3775    - When sending the INTRO cell for a v2 Onion Service, look at the
3776      failure cache alongside timeout values to check if the intro point
3777      is marked as failed. Previously, we only looked at the relay
3778      timeout values. Fixes bug 25568; bugfix on 0.2.7.3-rc. Patch by
3779      Neel Chauhan.
3780
3781  o Minor bugfixes (onion services v3, client):
3782    - Properly handle the client rendezvous circuit timeout. Previously
3783      Tor would sometimes timeout a rendezvous circuit awaiting the
3784      introduction ACK, and find itself unable to re-establish all
3785      circuits because the rendezvous circuit timed out too early. Fixes
3786      bug 32021; bugfix on 0.3.2.1-alpha.
3787
3788  o Minor bugfixes (onion services):
3789    - In cancel_descriptor_fetches(), use
3790      connection_list_by_type_purpose() instead of
3791      connection_list_by_type_state(). Fixes bug 32639; bugfix on
3792      0.3.2.1-alpha. Patch by Neel Chauhan.
3793
3794  o Minor bugfixes (scripts):
3795    - Fix update_versions.py for out-of-tree builds. Fixes bug 32371;
3796      bugfix on 0.4.0.1-alpha.
3797
3798  o Minor bugfixes (test):
3799    - Use the same code to find the tor binary in all of our test
3800      scripts. This change makes sure we are always using the coverage
3801      binary when coverage is enabled. Fixes bug 32368; bugfix
3802      on 0.2.7.3-rc.
3803
3804  o Minor bugfixes (testing):
3805    - Stop ignoring "tor --dump-config" errors in test_parseconf.sh.
3806      Fixes bug 32468; bugfix on 0.4.2.1-alpha.
3807    - When TOR_DISABLE_PRACTRACKER is set, do not apply it to the
3808      test_practracker.sh script. Doing so caused a test failure. Fixes
3809      bug 32705; bugfix on 0.4.2.1-alpha.
3810    - When TOR_DISABLE_PRACTRACKER is set, log a notice to stderr when
3811      skipping practracker checks. Fixes bug 32705; bugfix
3812      on 0.4.2.1-alpha.
3813
3814  o Minor bugfixes (tests):
3815    - Our option-validation tests no longer depend on specially
3816      configured non-default, non-passing sets of options. Previously,
3817      the tests had been written to assume that options would _not_ be
3818      set to their defaults, which led to needless complexity and
3819      verbosity. Fixes bug 32175; bugfix on 0.2.8.1-alpha.
3820
3821  o Minor bugfixes (windows service):
3822    - Initialize the publish/subscribe system when running as a windows
3823      service. Fixes bug 32778; bugfix on 0.4.1.1-alpha.
3824
3825  o Deprecated features:
3826    - Deprecate the ClientAutoIPv6ORPort option. This option was not
3827      true "Happy Eyeballs", and often failed on connections that
3828      weren't reliably dual-stack. Closes ticket 32942. Patch by
3829      Neel Chauhan.
3830
3831  o Documentation:
3832    - Provide a quickstart guide for a Circuit Padding Framework, and
3833      documentation for researchers to implement and study circuit
3834      padding machines. Closes ticket 28804.
3835    - Add documentation in 'HelpfulTools.md' to describe how to build a
3836      tag file. Closes ticket 32779.
3837    - Create a high-level description of the long-term software
3838      architecture goals. Closes ticket 32206.
3839    - Describe the --dump-config command in the manual page. Closes
3840      ticket 32467.
3841    - Unite coding advice from this_not_that.md in torguts repo into our
3842      coding standards document. Resolves ticket 31853.
3843
3844  o Removed features:
3845    - Our Doxygen configuration no longer generates LaTeX output. The
3846      reference manual produced by doing this was over 4000 pages long,
3847      and generally unusable. Closes ticket 32099.
3848    - The option "TestingEstimatedDescriptorPropagationTime" is now
3849      marked as obsolete. It has had no effect since 0.3.0.7, when
3850      clients stopped rejecting consensuses "from the future". Closes
3851      ticket 32807.
3852    - We no longer support consensus methods before method 28; these
3853      methods were only used by authorities running versions of Tor that
3854      are now at end-of-life. In effect, this means that clients,
3855      relays, and authorities now assume that authorities will be
3856      running version 0.3.5.x or later. Closes ticket 32695.
3857
3858  o Testing:
3859    - Add more test cases for tor's UTF-8 validation function. Also,
3860      check the arguments passed to the function for consistency. Closes
3861      ticket 32845.
3862    - Improve test coverage for relay and dirauth config code, focusing
3863      on option validation and normalization. Closes ticket 32213.
3864    - Improve the consistency of test_parseconf.sh output, and run all
3865      the tests, even if one fails. Closes ticket 32213.
3866    - Re-enable the Travis CI macOS Chutney build, but don't let it
3867      prevent the Travis job from finishing. (The Travis macOS jobs are
3868      slow, so we don't want to have it delay the whole CI process.)
3869      Closes ticket 32629.
3870    - Run the practracker unit tests in the pre-commit git hook. Closes
3871      ticket 32609.
3872    - Turn off Tor's Sandbox in Chutney jobs, and run those jobs on
3873      Ubuntu Bionic. Turning off the Sandbox is a work-around, until we
3874      fix the sandbox errors in 32722. Closes ticket 32240.
3875
3876  o Code simplification and refactoring (channel):
3877    - Channel layer had a variable length cell handler that was not used
3878      and thus removed. Closes ticket 32892.
3879
3880  o Code simplification and refactoring (configuration):
3881    - Immutability is now implemented as a flag on individual
3882      configuration options rather than as part of the option-transition
3883      checking code. Closes ticket 32344.
3884    - Instead of keeping a list of configuration options to check for
3885      relative paths, check all the options whose type is "FILENAME".
3886      Solves part of ticket 32339.
3887    - Our default log (which ordinarily sends NOTICE-level messages to
3888      standard output) is now handled in a more logical manner.
3889      Previously, we replaced the configured log options if they were
3890      empty. Now, we interpret an empty set of log options as meaning
3891      "use the default log". Closes ticket 31999.
3892    - Remove some unused arguments from the options_validate() function,
3893      to simplify our code and tests. Closes ticket 32187.
3894    - Simplify the options_validate() code so that it looks at the
3895      default options directly, rather than taking default options as an
3896      argument. This change lets us simplify its interface. Closes
3897      ticket 32185.
3898    - Use our new configuration architecture to move most authority-
3899      related options to the directory authority module. Closes
3900      ticket 32806.
3901    - When parsing the command line, handle options that determine our
3902      "quiet level" and our mode of operation (e.g., --dump-config and
3903      so on) all in one table. Closes ticket 32003.
3904
3905  o Code simplification and refactoring (controller):
3906    - Create a new abstraction for formatting control protocol reply
3907      lines based on key-value pairs. Refactor some existing control
3908      protocol code to take advantage of this. Closes ticket 30984.
3909    - Create a helper function that can fetch network status or
3910      microdesc consensuses. Closes ticket 31684.
3911
3912  o Code simplification and refactoring (dirauth modularization):
3913    - Remove the last remaining HAVE_MODULE_DIRAUTH inside a function.
3914      Closes ticket 32163.
3915    - Replace some confusing identifiers in process_descs.c. Closes
3916      ticket 29826.
3917    - Simplify some relay and dirauth config code. Closes ticket 32213.
3918
3919  o Code simplification and refactoring (misc):
3920    - Make all the structs we declare follow the same naming convention
3921      of ending with "_t". Closes ticket 32415.
3922    - Move and rename some configuration-related code for clarity.
3923      Closes ticket 32304.
3924    - Our include.am files are now broken up by subdirectory.
3925      Previously, src/core/include.am covered all of the subdirectories
3926      in "core", "feature", and "app". Closes ticket 32137.
3927    - Remove underused NS*() macros from test code: they make our tests
3928      more confusing, especially for code-formatting tools. Closes
3929      ticket 32887.
3930
3931  o Code simplification and refactoring (relay modularization):
3932    - Disable relay_periodic when the relay module is disabled. Closes
3933      ticket 32244.
3934    - Disable relay_sys when the relay module is disabled. Closes
3935      ticket 32245.
3936
3937  o Code simplification and refactoring (tool support):
3938    - Add numerous missing dependencies to our include files, so that
3939      they can be included in different reasonable orders and still
3940      compile. Addresses part of ticket 32764.
3941    - Fix some parts of our code that were difficult for Coccinelle to
3942      parse. Related to ticket 31705.
3943    - Fix some small issues in our code that prevented automatic
3944      formatting tools from working. Addresses part of ticket 32764.
3945
3946  o Documentation (manpage):
3947    - Alphabetize the Client Options section of the tor manpage. Closes
3948      ticket 32846.
3949    - Alphabetize the General Options section of the tor manpage. Closes
3950      ticket 32708.
3951    - In the tor(1) manpage, reword and improve formatting of the
3952      COMMAND-LINE OPTIONS and DESCRIPTION sections. Closes ticket
3953      32277. Based on work by Swati Thacker as part of Google Season
3954      of Docs.
3955    - In the tor(1) manpage, reword and improve formatting of the FILES,
3956      SEE ALSO, and BUGS sections. Closes ticket 32176. Based on work by
3957      Swati Thacker as part of Google Season of Docs.
3958
3959  o Testing (circuit, EWMA):
3960    - Add unit tests for circuitmux and EWMA subsystems. Closes
3961      ticket 32196.
3962
3963  o Testing (continuous integration):
3964    - Use zstd in our Travis Linux builds. Closes ticket 32242.
3965
3966
3967Changes in version 0.4.2.5 - 2019-12-09
3968  This is the first stable release in the 0.4.2.x series. This series
3969  improves reliability and stability, and includes several stability and
3970  correctness improvements for onion services. It also fixes many smaller
3971  bugs present in previous series.
3972
3973  Per our support policy, we will support the 0.4.2.x series for nine
3974  months, or until three months after the release of a stable 0.4.3.x:
3975  whichever is longer. If you need longer-term support, please stick
3976  with 0.3.5.x, which will we plan to support until Feb 2022.
3977
3978  Per our support policy, we will support the 0.4.2.x series for nine
3979  months, or until three months after the release of a stable 0.4.3.x:
3980  whichever is longer. If you need longer-term support, please stick
3981  with 0.3.5.x, which will we plan to support until Feb 2022.
3982
3983  Below are the changes since 0.4.1.4-rc. For a complete list of changes
3984  since 0.4.1.5, see the ReleaseNotes file.
3985
3986  o Minor features (geoip):
3987    - Update geoip and geoip6 to the December 3 2019 Maxmind GeoLite2
3988      Country database. Closes ticket 32685.
3989
3990  o Testing:
3991    - Require C99 standards-conforming code in Travis CI, but allow GNU
3992      gcc extensions. Also activates clang's -Wtypedef-redefinition
3993      warnings. Build some jobs with -std=gnu99, and some jobs without.
3994      Closes ticket 32500.
3995
3996
3997Changes in version 0.4.1.7 - 2019-12-09
3998  This release backports several bugfixes to improve stability and
3999  correctness.  Anyone experiencing build problems or crashes with 0.4.1.6,
4000  including all relays relying on AccountingMax, should upgrade.
4001
4002  o Major features (directory authorities, backport from 0.4.2.2-alpha):
4003    - Directory authorities now reject relays running all currently
4004      deprecated release series. The currently supported release series
4005      are: 0.2.9, 0.3.5, 0.4.0, 0.4.1, and 0.4.2. Closes ticket 31549.
4006
4007  o Major bugfixes (embedded Tor, backport from 0.4.2.2-alpha):
4008    - Avoid a possible crash when restarting Tor in embedded mode and
4009      enabling a different set of publish/subscribe messages. Fixes bug
4010      31898; bugfix on 0.4.1.1-alpha.
4011
4012  o Major bugfixes (relay, backport from 0.4.2.3-alpha):
4013    - Relays now respect their AccountingMax bandwidth again. When
4014      relays entered "soft" hibernation (which typically starts when
4015      we've hit 90% of our AccountingMax), we had stopped checking
4016      whether we should enter hard hibernation. Soft hibernation refuses
4017      new connections and new circuits, but the existing circuits can
4018      continue, meaning that relays could have exceeded their configured
4019      AccountingMax. Fixes bug 32108; bugfix on 0.4.0.1-alpha.
4020
4021  o Major bugfixes (torrc parsing, backport from 0.4.2.2-alpha):
4022    - Stop ignoring torrc options after an %include directive, when the
4023      included directory ends with a file that does not contain any
4024      config options (but does contain comments or whitespace). Fixes
4025      bug 31408; bugfix on 0.3.1.1-alpha.
4026
4027  o Major bugfixes (v3 onion services, backport from 0.4.2.3-alpha):
4028    - Onion services now always use the exact number of intro points
4029      configured with the HiddenServiceNumIntroductionPoints option (or
4030      fewer if nodes are excluded). Before, a service could sometimes
4031      pick more intro points than configured. Fixes bug 31548; bugfix
4032      on 0.3.2.1-alpha.
4033
4034  o Minor features (continuous integration, backport from 0.4.2.2-alpha):
4035    - When building on Appveyor and Travis, pass the "-k" flag to make,
4036      so that we are informed of all compilation failures, not just the
4037      first one or two. Closes ticket 31372.
4038
4039  o Minor features (geoip, backport from 0.4.2.5):
4040    - Update geoip and geoip6 to the December 3 2019 Maxmind GeoLite2
4041      Country database. Closes ticket 32685.
4042
4043  o Minor bugfixes (Appveyor CI, backport from 0.4.2.2-alpha):
4044    - Avoid spurious errors when Appveyor CI fails before the install step.
4045      Fixes bug 31884; bugfix on 0.3.4.2-alpha.
4046
4047  o Minor bugfixes (client, onion service v3, backport from 0.4.2.4-rc):
4048    - Fix a BUG() assertion that occurs within a very small race window
4049      between when a client intro circuit opens and when its descriptor
4050      gets cleaned up from the cache. The circuit is now closed early,
4051      which will trigger a re-fetch of the descriptor and continue the
4052      connection. Fixes bug 28970; bugfix on 0.3.2.1-alpha.
4053
4054  o Minor bugfixes (connections, backport from 0.4.2.3-rc):
4055    - Avoid trying to read data from closed connections, which can cause
4056      needless loops in Libevent and infinite loops in Shadow. Fixes bug
4057      30344; bugfix on 0.1.1.1-alpha.
4058
4059  o Minor bugfixes (error handling, backport from 0.4.2.1-alpha):
4060    - On abort, try harder to flush the output buffers of log messages.
4061      On some platforms (macOS), log messages could be discarded when
4062      the process terminates. Fixes bug 31571; bugfix on 0.3.5.1-alpha.
4063    - Report the tor version whenever an assertion fails. Previously, we
4064      only reported the Tor version on some crashes, and some non-fatal
4065      assertions. Fixes bug 31571; bugfix on 0.3.5.1-alpha.
4066    - When tor aborts due to an error, close log file descriptors before
4067      aborting. Closing the logs makes some OSes flush log file buffers,
4068      rather than deleting buffered log lines. Fixes bug 31594; bugfix
4069      on 0.2.5.2-alpha.
4070
4071  o Minor bugfixes (logging, backport from 0.4.2.2-alpha):
4072    - Add a missing check for HAVE_PTHREAD_H, because the backtrace code
4073      uses mutexes. Fixes bug 31614; bugfix on 0.2.5.2-alpha.
4074    - Disable backtrace signal handlers when shutting down tor. Fixes
4075      bug 31614; bugfix on 0.2.5.2-alpha.
4076    - Rate-limit our the logging message about the obsolete .exit
4077      notation. Previously, there was no limit on this warning, which
4078      could potentially be triggered many times by a hostile website.
4079      Fixes bug 31466; bugfix on 0.2.2.1-alpha.
4080
4081  o Minor bugfixes (logging, protocol violations, backport from 0.4.2.2-alpha):
4082    - Do not log a nonfatal assertion failure when receiving a VERSIONS
4083      cell on a connection using the obsolete v1 link protocol. Log a
4084      protocol_warn instead. Fixes bug 31107; bugfix on 0.2.4.4-alpha.
4085
4086  o Minor bugfixes (mainloop, periodic events, in-process API, backport from 0.4.2.3-alpha):
4087    - Reset the periodic events' "enabled" flag when Tor is shut down
4088      cleanly. Previously, this flag was left on, which caused periodic
4089      events not to be re-enabled when Tor was relaunched in-process
4090      with tor_api.h after a shutdown. Fixes bug 32058; bugfix
4091      on 0.3.3.1-alpha.
4092
4093  o Minor bugfixes (multithreading, backport from 0.4.2.2-alpha):
4094    - Avoid some undefined behaviour when freeing mutexes. Fixes bug
4095      31736; bugfix on 0.0.7.
4096
4097  o Minor bugfixes (process management, backport from 0.4.2.3-alpha):
4098    - Remove overly strict assertions that triggered when a pluggable
4099      transport failed to launch. Fixes bug 31091; bugfix
4100      on 0.4.0.1-alpha.
4101    - Remove an assertion in the Unix process backend. This assertion
4102      would trigger when we failed to find the executable for a child
4103      process. Fixes bug 31810; bugfix on 0.4.0.1-alpha.
4104
4105  o Minor bugfixes (relay, backport from 0.4.2.2-alpha):
4106    - Avoid crashing when starting with a corrupt keys directory where
4107      the old ntor key and the new ntor key are identical. Fixes bug
4108      30916; bugfix on 0.2.4.8-alpha.
4109
4110  o Minor bugfixes (testing, backport from 0.4.2.3-alpha):
4111    - When testing port rebinding, don't busy-wait for tor to log.
4112      Instead, actually sleep for a short time before polling again.
4113      Also improve the formatting of control commands and log messages.
4114      Fixes bug 31837; bugfix on 0.3.5.1-alpha.
4115
4116  o Minor bugfixes (tests, SunOS, backport from 0.4.2.2-alpha):
4117    - Avoid a map_anon_nofork test failure due to a signed/unsigned
4118      integer comparison. Fixes bug 31897; bugfix on 0.4.1.1-alpha.
4119
4120  o Minor bugfixes (tls, logging, backport from 0.4.2.3-alpha):
4121    - Log bugs about the TLS read buffer's length only once, rather than
4122      filling the logs with similar warnings. Fixes bug 31939; bugfix
4123      on 0.3.0.4-rc.
4124
4125  o Documentation (backport from 0.4.2.2-alpha):
4126    - Explain why we can't destroy the backtrace buffer mutex. Explain
4127      why we don't need to destroy the log mutex. Closes ticket 31736.
4128
4129  o Testing (continuous integration, backport from 0.4.2.3-alpha):
4130    - Disable all but one Travis CI macOS build, to mitigate slow
4131      scheduling of Travis macOS jobs. Closes ticket 32177.
4132    - Run the chutney IPv6 networks as part of Travis CI. Closes
4133      ticket 30860.
4134    - Simplify the Travis CI build matrix, and optimise for build time.
4135      Closes ticket 31859.
4136    - Use Windows Server 2019 instead of Windows Server 2016 in our
4137      Appveyor builds. Closes ticket 32086.
4138
4139  o Testing (continuous integration, backport from 0.4.2.4-rc):
4140    - In Travis, use Xcode 11.2 on macOS 10.14. Closes ticket 32241.
4141    - Use Ubuntu Bionic images for our Travis CI builds, so we can get a
4142      recent version of coccinelle. But leave chutney on Ubuntu Trusty,
4143      until we can fix some Bionic permissions issues (see ticket
4144      32240). Related to ticket 31919.
4145    - Install the mingw OpenSSL package in Appveyor. This makes sure
4146      that the OpenSSL headers and libraries match in Tor's Appveyor
4147      builds. (This bug was triggered by an Appveyor image update.)
4148      Fixes bug 32449; bugfix on 0.3.5.6-rc.
4149
4150  o Testing (continuous integration, backport from 0.4.2.5):
4151    - Require C99 standards-conforming code in Travis CI, but allow GNU gcc
4152      extensions. Also activates clang's -Wtypedef-redefinition warnings.
4153      Build some jobs with -std=gnu99, and some jobs without.
4154      Closes ticket 32500.
4155
4156
4157Changes in version 0.4.0.6 - 2019-12-09
4158  This is the second stable release in the 0.4.0.x series. This release
4159  backports several bugfixes to improve stability and correctness.  Anyone
4160  experiencing build problems or crashes with 0.4.0.5, including all relays
4161  relying on AccountingMax, should upgrade.
4162
4163  Note that, per our support policy, support for the 0.4.0.x series will end
4164  on 2 Feb 2020.  Anyone still running 0.4.0.x should plan to upgrade to the
4165  latest stable release, or downgrade to 0.3.5.x, which will get long-term
4166  support until 1 Feb 2022.
4167
4168  o Directory authority changes (backport from 0.4.1.5):
4169    - The directory authority "dizum" has a new IP address. Closes
4170      ticket 31406.
4171
4172  o Major bugfixes (bridges, backport from 0.4.1.2-alpha):
4173    - Consider our directory information to have changed when our list
4174      of bridges changes. Previously, Tor would not re-compute the
4175      status of its directory information when bridges changed, and
4176      therefore would not realize that it was no longer able to build
4177      circuits. Fixes part of bug 29875.
4178    - Do not count previously configured working bridges towards our
4179      total of working bridges. Previously, when Tor's list of bridges
4180      changed, it would think that the old bridges were still usable,
4181      and delay fetching router descriptors for the new ones. Fixes part
4182      of bug 29875; bugfix on 0.3.0.1-alpha.
4183
4184  o Major bugfixes (circuit build, guard, backport from 0.4.1.4-rc):
4185    - When considering upgrading circuits from "waiting for guard" to
4186      "open", always ignore circuits that are marked for close. Otherwise,
4187      we can end up in the situation where a subsystem is notified that
4188      a closing circuit has just opened, leading to undesirable
4189      behavior. Fixes bug 30871; bugfix on 0.3.0.1-alpha.
4190
4191  o Major bugfixes (Onion service reachability, backport from 0.4.1.3-alpha):
4192    - Properly clean up the introduction point map when circuits change
4193      purpose from onion service circuits to pathbias, measurement, or
4194      other circuit types. This should fix some service-side instances
4195      of introduction point failure. Fixes bug 29034; bugfix
4196      on 0.3.2.1-alpha.
4197
4198  o Major bugfixes (onion service v3, backport from 0.4.1.1-alpha):
4199    - Fix an unreachable bug in which an introduction point could try to
4200      send an INTRODUCE_ACK with a status code that Trunnel would refuse
4201      to encode, leading the relay to assert(). We've consolidated the
4202      ABI values into Trunnel now. Fixes bug 30454; bugfix
4203      on 0.3.0.1-alpha.
4204    - Clients can now handle unknown status codes from INTRODUCE_ACK
4205      cells. (The NACK behavior will stay the same.) This will allow us
4206      to extend status codes in the future without breaking the normal
4207      client behavior. Fixes another part of bug 30454; bugfix
4208      on 0.3.0.1-alpha.
4209
4210  o Major bugfixes (relay, backport from 0.4.2.3-alpha):
4211    - Relays now respect their AccountingMax bandwidth again. When
4212      relays entered "soft" hibernation (which typically starts when
4213      we've hit 90% of our AccountingMax), we had stopped checking
4214      whether we should enter hard hibernation. Soft hibernation refuses
4215      new connections and new circuits, but the existing circuits can
4216      continue, meaning that relays could have exceeded their configured
4217      AccountingMax. Fixes bug 32108; bugfix on 0.4.0.1-alpha.
4218
4219  o Major bugfixes (torrc parsing, backport from 0.4.2.2-alpha):
4220    - Stop ignoring torrc options after an %include directive, when the
4221      included directory ends with a file that does not contain any
4222      config options (but does contain comments or whitespace). Fixes
4223      bug 31408; bugfix on 0.3.1.1-alpha.
4224
4225  o Major bugfixes (v3 onion services, backport from 0.4.2.3-alpha):
4226    - Onion services now always use the exact number of intro points
4227      configured with the HiddenServiceNumIntroductionPoints option (or
4228      fewer if nodes are excluded). Before, a service could sometimes
4229      pick more intro points than configured. Fixes bug 31548; bugfix
4230      on 0.3.2.1-alpha.
4231
4232  o Minor features (compile-time modules, backport from version 0.4.1.1-alpha):
4233    - Add a "--list-modules" command to print a list of which compile-
4234      time modules are enabled. Closes ticket 30452.
4235
4236  o Minor features (continuous integration, backport from 0.4.1.1-alpha):
4237    - Remove sudo configuration lines from .travis.yml as they are no
4238      longer needed with current Travis build environment. Resolves
4239      issue 30213.
4240
4241  o Minor features (continuous integration, backport from 0.4.1.4-rc):
4242    - Our Travis configuration now uses Chutney to run some network
4243      integration tests automatically. Closes ticket 29280.
4244
4245  o Minor features (continuous integration, backport from 0.4.2.2-alpha):
4246    - When building on Appveyor and Travis, pass the "-k" flag to make,
4247      so that we are informed of all compilation failures, not just the
4248      first one or two. Closes ticket 31372.
4249
4250  o Minor features (fallback directory list, backport from 0.4.1.4-rc):
4251    - Replace the 157 fallbacks originally introduced in Tor 0.3.5.6-rc
4252      in December 2018 (of which ~122 were still functional), with a
4253      list of 148 fallbacks (70 new, 78 existing, 79 removed) generated
4254      in June 2019. Closes ticket 28795.
4255
4256  o Minor features (geoip, backport from 0.4.2.5):
4257    - Update geoip and geoip6 to the December 3 2019 Maxmind GeoLite2
4258      Country database. Closes ticket 32685.
4259
4260  o Minor features (stem tests, backport from 0.4.2.1-alpha):
4261    - Change "make test-stem" so it only runs the stem tests that use
4262      tor. This change makes test-stem faster and more reliable. Closes
4263      ticket 31554.
4264
4265  o Minor bugfixes (Appveyor CI, backport from 0.4.2.2-alpha):
4266    - Avoid spurious errors when Appveyor CI fails before the install step.
4267      Fixes bug 31884; bugfix on 0.3.4.2-alpha.
4268
4269  o Minor bugfixes (build system, backport form 0.4.2.1-alpha):
4270    - Do not include the deprecated <sys/sysctl.h> on Linux or Windows
4271      systems. Fixes bug 31673; bugfix on 0.2.5.4-alpha.
4272
4273  o Minor bugfixes (circuit isolation, backport from 0.4.1.3-alpha):
4274    - Fix a logic error that prevented the SessionGroup sub-option from
4275      being accepted. Fixes bug 22619; bugfix on 0.2.7.2-alpha.
4276
4277  o Minor bugfixes (circuit padding, backport from 0.4.1.4-rc):
4278    - On relays, properly check that a padding machine is absent before
4279      logging a warning about it being absent. Fixes bug 30649; bugfix
4280      on 0.4.0.1-alpha.
4281
4282  o Minor bugfixes (client, onion service v3, backport from 0.4.2.4-rc):
4283    - Fix a BUG() assertion that occurs within a very small race window
4284      between when a client intro circuit opens and when its descriptor
4285      gets cleaned up from the cache. The circuit is now closed early,
4286      which will trigger a re-fetch of the descriptor and continue the
4287      connection. Fixes bug 28970; bugfix on 0.3.2.1-alpha.
4288
4289  o Minor bugfixes (clock skew detection, backport from 0.4.1.5):
4290    - Don't believe clock skew results from NETINFO cells that appear to
4291      arrive before we sent the VERSIONS cells they are responding to.
4292      Previously, we would accept them up to 3 minutes "in the past".
4293      Fixes bug 31343; bugfix on 0.2.4.4-alpha.
4294
4295  o Minor bugfixes (compilation warning, backport from 0.4.1.5):
4296    - Fix a compilation warning on Windows about casting a function
4297      pointer for GetTickCount64(). Fixes bug 31374; bugfix
4298      on 0.2.9.1-alpha.
4299
4300  o Minor bugfixes (compilation, backport from 0.4.1.5):
4301    - Avoid using labs() on time_t, which can cause compilation warnings
4302      on 64-bit Windows builds. Fixes bug 31343; bugfix on 0.2.4.4-alpha.
4303
4304  o Minor bugfixes (compilation, backport from 0.4.2.1-alpha):
4305    - Suppress spurious float-conversion warnings from GCC when calling
4306      floating-point classifier functions on FreeBSD. Fixes part of bug
4307      31687; bugfix on 0.3.1.5-alpha.
4308
4309  o Minor bugfixes (compilation, unusual configurations, backport from 0.4.1.1-alpha):
4310    - Avoid failures when building with the ALL_BUGS_ARE_FATAL option
4311      due to missing declarations of abort(), and prevent other such
4312      failures in the future. Fixes bug 30189; bugfix on 0.3.4.1-alpha.
4313
4314  o Minor bugfixes (configuration, proxies, backport from 0.4.1.2-alpha):
4315    - Fix a bug that prevented us from supporting SOCKS5 proxies that
4316      want authentication along with configured (but unused!)
4317      ClientTransportPlugins. Fixes bug 29670; bugfix on 0.2.6.1-alpha.
4318
4319  o Minor bugfixes (connections, backport from 0.4.2.3-rc):
4320    - Avoid trying to read data from closed connections, which can cause
4321      needless loops in Libevent and infinite loops in Shadow. Fixes bug
4322      30344; bugfix on 0.1.1.1-alpha.
4323
4324  o Minor bugfixes (continuous integration, backport from 0.4.1.3-alpha):
4325    - Allow the test-stem job to fail in Travis, because it sometimes
4326      hangs. Fixes bug 30744; bugfix on 0.3.5.4-alpha.
4327    - Skip test_rebind on macOS in Travis, because it is unreliable on
4328      macOS on Travis. Fixes bug 30713; bugfix on 0.3.5.1-alpha.
4329    - Skip test_rebind when the TOR_SKIP_TEST_REBIND environment
4330      variable is set. Fixes bug 30713; bugfix on 0.3.5.1-alpha.
4331
4332  o Minor bugfixes (crash on exit, backport from 0.4.1.4-rc):
4333    - Avoid a set of possible code paths that could try to use freed
4334      memory in routerlist_free() while Tor was exiting. Fixes bug
4335      31003; bugfix on 0.1.2.2-alpha.
4336
4337  o Minor bugfixes (directory authorities, backport from 0.4.1.3-alpha):
4338    - Stop crashing after parsing an unknown descriptor purpose
4339      annotation. We think this bug can only be triggered by modifying a
4340      local file. Fixes bug 30781; bugfix on 0.2.0.8-alpha.
4341
4342  o Minor bugfixes (directory authority, backport from 0.4.1.2-alpha):
4343    - Move the "bandwidth-file-headers" line in directory authority
4344      votes so that it conforms to dir-spec.txt. Fixes bug 30316; bugfix
4345      on 0.3.5.1-alpha.
4346
4347  o Minor bugfixes (error handling, backport from 0.4.2.1-alpha):
4348    - On abort, try harder to flush the output buffers of log messages.
4349      On some platforms (macOS), log messages could be discarded when
4350      the process terminates. Fixes bug 31571; bugfix on 0.3.5.1-alpha.
4351    - Report the tor version whenever an assertion fails. Previously, we
4352      only reported the Tor version on some crashes, and some non-fatal
4353      assertions. Fixes bug 31571; bugfix on 0.3.5.1-alpha.
4354
4355  o Minor bugfixes (FreeBSD, PF-based proxy, IPv6, backport from 0.4.2.1-alpha):
4356    - When extracting an IPv6 address from a PF-based proxy, verify that
4357      we are actually configured to receive an IPv6 address, and log an
4358      internal error if not. Fixes part of bug 31687; bugfix
4359      on 0.2.3.4-alpha.
4360
4361  o Minor bugfixes (guards, backport from 0.4.2.1-alpha):
4362    - When tor is missing descriptors for some primary entry guards,
4363      make the log message less alarming. It's normal for descriptors to
4364      expire, as long as tor fetches new ones soon after. Fixes bug
4365      31657; bugfix on 0.3.3.1-alpha.
4366
4367  o Minor bugfixes (logging, backport from 0.4.1.1-alpha):
4368    - Do not log a warning when running with an OpenSSL version other
4369      than the one Tor was compiled with, if the two versions should be
4370      compatible. Previously, we would warn whenever the version was
4371      different. Fixes bug 30190; bugfix on 0.2.4.2-alpha.
4372
4373  o Minor bugfixes (logging, backport from 0.4.2.1-alpha):
4374    - Change log level of message "Hash of session info was not as
4375      expected" to LOG_PROTOCOL_WARN. Fixes bug 12399; bugfix
4376      on 0.1.1.10-alpha.
4377
4378  o Minor bugfixes (logging, backport from 0.4.2.2-alpha):
4379    - Rate-limit our the logging message about the obsolete .exit
4380      notation. Previously, there was no limit on this warning, which
4381      could potentially be triggered many times by a hostile website.
4382      Fixes bug 31466; bugfix on 0.2.2.1-alpha.
4383
4384  o Minor bugfixes (logging, protocol violations, backport from 0.4.2.2-alpha):
4385    - Do not log a nonfatal assertion failure when receiving a VERSIONS
4386      cell on a connection using the obsolete v1 link protocol. Log a
4387      protocol_warn instead. Fixes bug 31107; bugfix on 0.2.4.4-alpha.
4388
4389  o Minor bugfixes (mainloop, periodic events, in-process API, backport from 0.4.2.3-alpha):
4390    - Reset the periodic events' "enabled" flag when Tor is shut down
4391      cleanly. Previously, this flag was left on, which caused periodic
4392      events not to be re-enabled when Tor was relaunched in-process
4393      with tor_api.h after a shutdown. Fixes bug 32058; bugfix
4394      on 0.3.3.1-alpha.
4395
4396  o Minor bugfixes (memory leak, backport from 0.4.1.1-alpha):
4397    - Avoid a minor memory leak that could occur on relays when failing
4398      to create a "keys" directory. Fixes bug 30148; bugfix
4399      on 0.3.3.1-alpha.
4400
4401  o Minor bugfixes (memory leak, backport from 0.4.1.4-rc):
4402    - Fix a trivial memory leak when parsing an invalid value
4403      from a download schedule in the configuration. Fixes bug
4404      30894; bugfix on 0.3.4.1-alpha.
4405
4406  o Minor bugfixes (NetBSD, backport from 0.4.1.2-alpha):
4407    - Fix usage of minherit() on NetBSD and other platforms that define
4408      MAP_INHERIT_{ZERO,NONE} instead of INHERIT_{ZERO,NONE}. Fixes bug
4409      30614; bugfix on 0.4.0.2-alpha. Patch from Taylor Campbell.
4410
4411  o Minor bugfixes (onion services, backport from 0.4.1.1-alpha):
4412    - Avoid a GCC 9.1.1 warning (and possible crash depending on libc
4413      implemenation) when failing to load an onion service client
4414      authorization file. Fixes bug 30475; bugfix on 0.3.5.1-alpha.
4415
4416  o Minor bugfixes (out-of-memory handler, backport from 0.4.1.2-alpha):
4417    - When purging the DNS cache because of an out-of-memory condition,
4418      try purging just the older entries at first. Previously, we would
4419      always purge the whole thing. Fixes bug 29617; bugfix
4420      on 0.3.5.1-alpha.
4421
4422  o Minor bugfixes (portability, backport from 0.4.1.2-alpha):
4423    - Avoid crashing in our tor_vasprintf() implementation on systems
4424      that define neither vasprintf() nor _vscprintf(). (This bug has
4425      been here long enough that we question whether people are running
4426      Tor on such systems, but we're applying the fix out of caution.)
4427      Fixes bug 30561; bugfix on 0.2.8.2-alpha. Found and fixed by
4428      Tobias Stoeckmann.
4429
4430  o Minor bugfixes (process management, backport from 0.4.2.3-alpha):
4431    - Remove overly strict assertions that triggered when a pluggable
4432      transport failed to launch. Fixes bug 31091; bugfix
4433      on 0.4.0.1-alpha.
4434    - Remove an assertion in the Unix process backend. This assertion
4435      would trigger when we failed to find the executable for a child
4436      process. Fixes bug 31810; bugfix on 0.4.0.1-alpha.
4437
4438  o Minor bugfixes (relay, backport from 0.4.2.2-alpha):
4439    - Avoid crashing when starting with a corrupt keys directory where
4440      the old ntor key and the new ntor key are identical. Fixes bug
4441      30916; bugfix on 0.2.4.8-alpha.
4442
4443  o Minor bugfixes (rust, backport from 0.4.2.1-alpha):
4444    - Correctly exclude a redundant rust build job in Travis. Fixes bug
4445      31463; bugfix on 0.3.5.4-alpha.
4446
4447  o Minor bugfixes (testing, backport from 0.4.2.3-alpha):
4448    - When testing port rebinding, don't busy-wait for tor to log.
4449      Instead, actually sleep for a short time before polling again.
4450      Also improve the formatting of control commands and log messages.
4451      Fixes bug 31837; bugfix on 0.3.5.1-alpha.
4452
4453  o Minor bugfixes (tls, logging, backport from 0.4.2.3-alpha):
4454    - Log bugs about the TLS read buffer's length only once, rather than
4455      filling the logs with similar warnings. Fixes bug 31939; bugfix
4456      on 0.3.0.4-rc.
4457
4458  o Minor bugfixes (v2 single onion services, backport from 0.4.2.1-alpha):
4459    - Always retry v2 single onion service intro and rend circuits with
4460      a 3-hop path. Previously, v2 single onion services used a 3-hop
4461      path when rendezvous circuits were retried after a remote or
4462      delayed failure, but a 1-hop path for immediate retries. Fixes bug
4463      23818; bugfix on 0.2.9.3-alpha.
4464    - Make v3 single onion services fall back to a 3-hop intro, when all
4465      intro points are unreachable via a 1-hop path. Previously, v3
4466      single onion services failed when all intro nodes were unreachable
4467      via a 1-hop path. Fixes bug 23507; bugfix on 0.3.2.1-alpha.
4468
4469  o Documentation (backport from 0.4.2.1-alpha):
4470    - Use RFC 2397 data URL scheme to embed an image into tor-exit-
4471      notice.html so that operators no longer have to host it
4472      themselves. Closes ticket 31089.
4473
4474  o Testing (backport from 0.4.1.2-alpha):
4475    - Specify torrc paths (with empty files) when launching tor in
4476      integration tests; refrain from reading user and system torrcs.
4477      Resolves issue 29702.
4478
4479  o Testing (continuous integration, backport from 0.4.1.1-alpha):
4480    - In Travis, show stem's tor log after failure. Closes ticket 30234.
4481
4482  o Testing (continuous integration, backport from 0.4.1.5):
4483    - In Travis, make stem log a controller trace to the console, and
4484      tail stem's tor log after failure. Closes ticket 30591.
4485    - In Travis, only run the stem tests that use a tor binary. Closes
4486      ticket 30694.
4487
4488  o Testing (continuous integration, backport from 0.4.2.3-alpha):
4489    - Disable all but one Travis CI macOS build, to mitigate slow
4490      scheduling of Travis macOS jobs. Closes ticket 32177.
4491    - Run the chutney IPv6 networks as part of Travis CI. Closes
4492      ticket 30860.
4493    - Simplify the Travis CI build matrix, and optimise for build time.
4494      Closes ticket 31859.
4495    - Use Windows Server 2019 instead of Windows Server 2016 in our
4496      Appveyor builds. Closes ticket 32086.
4497
4498  o Testing (continuous integration, backport from 0.4.2.4-rc):
4499    - Use Ubuntu Bionic images for our Travis CI builds, so we can get a
4500      recent version of coccinelle. But leave chutney on Ubuntu Trusty,
4501      until we can fix some Bionic permissions issues (see ticket
4502      32240). Related to ticket 31919.
4503    - Install the mingw OpenSSL package in Appveyor. This makes sure
4504      that the OpenSSL headers and libraries match in Tor's Appveyor
4505      builds. (This bug was triggered by an Appveyor image update.)
4506      Fixes bug 32449; bugfix on 0.3.5.6-rc.
4507    - In Travis, use Xcode 11.2 on macOS 10.14. Closes ticket 32241.
4508
4509  o Testing (continuous integration, backport from 0.4.2.5):
4510    - Require C99 standards-conforming code in Travis CI, but allow GNU gcc
4511      extensions. Also activates clang's -Wtypedef-redefinition warnings.
4512      Build some jobs with -std=gnu99, and some jobs without.
4513      Closes ticket 32500.
4514
4515Changes in version 0.3.5.9 - 2019-12-09
4516  Tor 0.3.5.9 backports serveral fixes from later releases, including
4517  several that affect bridge users, relay stability, onion services,
4518  and much more.
4519
4520  o Directory authority changes (backport from 0.4.1.5):
4521    - The directory authority "dizum" has a new IP address. Closes
4522      ticket 31406.
4523
4524  o Major bugfixes (bridges, backport from 0.4.1.2-alpha):
4525    - Consider our directory information to have changed when our list
4526      of bridges changes. Previously, Tor would not re-compute the
4527      status of its directory information when bridges changed, and
4528      therefore would not realize that it was no longer able to build
4529      circuits. Fixes part of bug 29875.
4530    - Do not count previously configured working bridges towards our
4531      total of working bridges. Previously, when Tor's list of bridges
4532      changed, it would think that the old bridges were still usable,
4533      and delay fetching router descriptors for the new ones. Fixes part
4534      of bug 29875; bugfix on 0.3.0.1-alpha.
4535
4536  o Major bugfixes (circuit build, guard, backport from 0.4.1.4-rc):
4537    - When considering upgrading circuits from "waiting for guard" to
4538      "open", always ignore circuits that are marked for close. Otherwise,
4539      we can end up in the situation where a subsystem is notified that
4540      a closing circuit has just opened, leading to undesirable
4541      behavior. Fixes bug 30871; bugfix on 0.3.0.1-alpha.
4542
4543  o Major bugfixes (NSS, relay, backport from 0.4.0.4-rc):
4544    - When running with NSS, disable TLS 1.2 ciphersuites that use
4545      SHA384 for their PRF. Due to an NSS bug, the TLS key exporters for
4546      these ciphersuites don't work -- which caused relays to fail to
4547      handshake with one another when these ciphersuites were enabled.
4548      Fixes bug 29241; bugfix on 0.3.5.1-alpha.
4549
4550  o Major bugfixes (Onion service reachability, backport from 0.4.1.3-alpha):
4551    - Properly clean up the introduction point map when circuits change
4552      purpose from onion service circuits to pathbias, measurement, or
4553      other circuit types. This should fix some service-side instances
4554      of introduction point failure. Fixes bug 29034; bugfix
4555      on 0.3.2.1-alpha.
4556
4557  o Major bugfixes (onion service v3, backport from 0.4.1.1-alpha):
4558    - Fix an unreachable bug in which an introduction point could try to
4559      send an INTRODUCE_ACK with a status code that Trunnel would refuse
4560      to encode, leading the relay to assert(). We've consolidated the
4561      ABI values into Trunnel now. Fixes bug 30454; bugfix
4562      on 0.3.0.1-alpha.
4563    - Clients can now handle unknown status codes from INTRODUCE_ACK
4564      cells. (The NACK behavior will stay the same.) This will allow us
4565      to extend status codes in the future without breaking the normal
4566      client behavior. Fixes another part of bug 30454; bugfix
4567      on 0.3.0.1-alpha.
4568
4569  o Major bugfixes (torrc parsing, backport from 0.4.2.2-alpha):
4570    - Stop ignoring torrc options after an %include directive, when the
4571      included directory ends with a file that does not contain any
4572      config options (but does contain comments or whitespace). Fixes
4573      bug 31408; bugfix on 0.3.1.1-alpha.
4574
4575  o Major bugfixes (v3 onion services, backport from 0.4.2.3-alpha):
4576    - Onion services now always use the exact number of intro points
4577      configured with the HiddenServiceNumIntroductionPoints option (or
4578      fewer if nodes are excluded). Before, a service could sometimes
4579      pick more intro points than configured. Fixes bug 31548; bugfix
4580      on 0.3.2.1-alpha.
4581
4582  o Minor features (address selection, backport from 0.4.0.3-alpha):
4583    - Treat the subnet 100.64.0.0/10 as public for some purposes;
4584      private for others. This subnet is the RFC 6598 (Carrier Grade
4585      NAT) IP range, and is deployed by many ISPs as an alternative to
4586      RFC 1918 that does not break existing internal networks. Tor now
4587      blocks SOCKS and control ports on these addresses and warns users
4588      if client ports or ExtORPorts are listening on a RFC 6598 address.
4589      Closes ticket 28525. Patch by Neel Chauhan.
4590
4591  o Minor features (bandwidth authority, backport from 0.4.0.4-rc):
4592    - Make bandwidth authorities ignore relays that are reported in the
4593      bandwidth file with the flag "vote=0". This change allows us to
4594      report unmeasured relays for diagnostic reasons without including
4595      their bandwidth in the bandwidth authorities' vote. Closes
4596      ticket 29806.
4597
4598  o Minor features (compile-time modules, backport from version 0.4.1.1-alpha):
4599    - Add a "--list-modules" command to print a list of which compile-
4600      time modules are enabled. Closes ticket 30452.
4601
4602  o Minor features (continuous integration, backport from 0.4.0.4-rc):
4603    - On Travis Rust builds, cleanup Rust registry and refrain from
4604      caching the "target/" directory to speed up builds. Resolves
4605      issue 29962.
4606
4607  o Minor features (continuous integration, backport from 0.4.0.5):
4608    - In Travis, tell timelimit to use stem's backtrace signals, and
4609      launch python directly from timelimit, so python receives the
4610      signals from timelimit, rather than make. Closes ticket 30117.
4611
4612  o Minor features (continuous integration, backport from 0.4.1.1-alpha):
4613    - Remove sudo configuration lines from .travis.yml as they are no
4614      longer needed with current Travis build environment. Resolves
4615      issue 30213.
4616
4617  o Minor features (continuous integration, backport from 0.4.1.4-rc):
4618    - Our Travis configuration now uses Chutney to run some network
4619      integration tests automatically. Closes ticket 29280.
4620
4621  o Minor features (continuous integration, backport from 0.4.2.2-alpha):
4622    - When building on Appveyor and Travis, pass the "-k" flag to make,
4623      so that we are informed of all compilation failures, not just the
4624      first one or two. Closes ticket 31372.
4625
4626  o Minor features (fallback directory list, backport from 0.4.1.4-rc):
4627    - Replace the 157 fallbacks originally introduced in Tor 0.3.5.6-rc
4628      in December 2018 (of which ~122 were still functional), with a
4629      list of 148 fallbacks (70 new, 78 existing, 79 removed) generated
4630      in June 2019. Closes ticket 28795.
4631
4632  o Minor features (geoip, backport from 0.4.2.5):
4633    - Update geoip and geoip6 to the December 3 2019 Maxmind GeoLite2
4634      Country database. Closes ticket 32685.
4635
4636  o Minor features (NSS, diagnostic, backport from 0.4.0.4-rc):
4637    - Try to log an error from NSS (if there is any) and a more useful
4638      description of our situation if we are using NSS and a call to
4639      SSL_ExportKeyingMaterial() fails. Diagnostic for ticket 29241.
4640
4641  o Minor features (stem tests, backport from 0.4.2.1-alpha):
4642    - Change "make test-stem" so it only runs the stem tests that use
4643      tor. This change makes test-stem faster and more reliable. Closes
4644      ticket 31554.
4645
4646  o Minor bugfixes (security, backport from 0.4.0.4-rc):
4647    - Verify in more places that we are not about to create a buffer
4648      with more than INT_MAX bytes, to avoid possible OOB access in the
4649      event of bugs. Fixes bug 30041; bugfix on 0.2.0.16. Found and
4650      fixed by Tobias Stoeckmann.
4651    - Fix a potential double free bug when reading huge bandwidth files.
4652      The issue is not exploitable in the current Tor network because
4653      the vulnerable code is only reached when directory authorities
4654      read bandwidth files, but bandwidth files come from a trusted
4655      source (usually the authorities themselves). Furthermore, the
4656      issue is only exploitable in rare (non-POSIX) 32-bit architectures,
4657      which are not used by any of the current authorities. Fixes bug
4658      30040; bugfix on 0.3.5.1-alpha. Bug found and fixed by
4659      Tobias Stoeckmann.
4660
4661  o Minor bugfix (continuous integration, backport from 0.4.0.4-rc):
4662    - Reset coverage state on disk after Travis CI has finished. This
4663      should prevent future coverage merge errors from causing the test
4664      suite for the "process" subsystem to fail. The process subsystem
4665      was introduced in 0.4.0.1-alpha. Fixes bug 29036; bugfix
4666      on 0.2.9.15.
4667    - Terminate test-stem if it takes more than 9.5 minutes to run.
4668      (Travis terminates the job after 10 minutes of no output.)
4669      Diagnostic for 29437. Fixes bug 30011; bugfix on 0.3.5.4-alpha.
4670
4671  o Minor bugfixes (Appveyor CI, backport from 0.4.2.2-alpha):
4672    - Avoid spurious errors when Appveyor CI fails before the install step.
4673      Fixes bug 31884; bugfix on 0.3.4.2-alpha.
4674
4675  o Minor bugfixes (build system, backport form 0.4.2.1-alpha):
4676    - Do not include the deprecated <sys/sysctl.h> on Linux or Windows
4677      systems. Fixes bug 31673; bugfix on 0.2.5.4-alpha.
4678
4679  o Minor bugfixes (C correctness, backport from 0.4.0.4-rc):
4680    - Fix an unlikely memory leak in consensus_diff_apply(). Fixes bug
4681      29824; bugfix on 0.3.1.1-alpha. This is Coverity warning
4682      CID 1444119.
4683
4684  o Minor bugfixes (circuit isolation, backport from 0.4.1.3-alpha):
4685    - Fix a logic error that prevented the SessionGroup sub-option from
4686      being accepted. Fixes bug 22619; bugfix on 0.2.7.2-alpha.
4687
4688  o Minor bugfixes (client, onion service v3, backport from 0.4.2.4-rc):
4689    - Fix a BUG() assertion that occurs within a very small race window
4690      between when a client intro circuit opens and when its descriptor
4691      gets cleaned up from the cache. The circuit is now closed early,
4692      which will trigger a re-fetch of the descriptor and continue the
4693      connection. Fixes bug 28970; bugfix on 0.3.2.1-alpha.
4694
4695  o Minor bugfixes (clock skew detection, backport from 0.4.1.5):
4696    - Don't believe clock skew results from NETINFO cells that appear to
4697      arrive before we sent the VERSIONS cells they are responding to.
4698      Previously, we would accept them up to 3 minutes "in the past".
4699      Fixes bug 31343; bugfix on 0.2.4.4-alpha.
4700
4701  o Minor bugfixes (compilation warning, backport from 0.4.1.5):
4702    - Fix a compilation warning on Windows about casting a function
4703      pointer for GetTickCount64(). Fixes bug 31374; bugfix
4704      on 0.2.9.1-alpha.
4705
4706  o Minor bugfixes (compilation, backport from 0.4.0.2-alpha):
4707    - Silence a compiler warning in test-memwipe.c on OpenBSD. Fixes bug
4708      29145; bugfix on 0.2.9.3-alpha. Patch from Kris Katterjohn.
4709
4710  o Minor bugfixes (compilation, backport from 0.4.1.5):
4711    - Avoid using labs() on time_t, which can cause compilation warnings
4712      on 64-bit Windows builds. Fixes bug 31343; bugfix on 0.2.4.4-alpha.
4713
4714  o Minor bugfixes (compilation, backport from 0.4.2.1-alpha):
4715    - Suppress spurious float-conversion warnings from GCC when calling
4716      floating-point classifier functions on FreeBSD. Fixes part of bug
4717      31687; bugfix on 0.3.1.5-alpha.
4718
4719  o Minor bugfixes (compilation, unusual configurations, backport from 0.4.1.1-alpha):
4720    - Avoid failures when building with the ALL_BUGS_ARE_FATAL option
4721      due to missing declarations of abort(), and prevent other such
4722      failures in the future. Fixes bug 30189; bugfix on 0.3.4.1-alpha.
4723
4724  o Minor bugfixes (configuration, proxies, backport from 0.4.1.2-alpha):
4725    - Fix a bug that prevented us from supporting SOCKS5 proxies that
4726      want authentication along with configured (but unused!)
4727      ClientTransportPlugins. Fixes bug 29670; bugfix on 0.2.6.1-alpha.
4728
4729  o Minor bugfixes (connections, backport from 0.4.2.3-rc):
4730    - Avoid trying to read data from closed connections, which can cause
4731      needless loops in Libevent and infinite loops in Shadow. Fixes bug
4732      30344; bugfix on 0.1.1.1-alpha.
4733
4734  o Minor bugfixes (continuous integration, backport from 0.4.1.3-alpha):
4735    - Allow the test-stem job to fail in Travis, because it sometimes
4736      hangs. Fixes bug 30744; bugfix on 0.3.5.4-alpha.
4737    - Skip test_rebind on macOS in Travis, because it is unreliable on
4738      macOS on Travis. Fixes bug 30713; bugfix on 0.3.5.1-alpha.
4739    - Skip test_rebind when the TOR_SKIP_TEST_REBIND environment
4740      variable is set. Fixes bug 30713; bugfix on 0.3.5.1-alpha.
4741
4742  o Minor bugfixes (crash on exit, backport from 0.4.1.4-rc):
4743    - Avoid a set of possible code paths that could try to use freed
4744      memory in routerlist_free() while Tor was exiting. Fixes bug
4745      31003; bugfix on 0.1.2.2-alpha.
4746
4747  o Minor bugfixes (directory authorities, backport from 0.4.1.3-alpha):
4748    - Stop crashing after parsing an unknown descriptor purpose
4749      annotation. We think this bug can only be triggered by modifying a
4750      local file. Fixes bug 30781; bugfix on 0.2.0.8-alpha.
4751
4752  o Minor bugfixes (directory authority, backport from 0.4.1.2-alpha):
4753    - Move the "bandwidth-file-headers" line in directory authority
4754      votes so that it conforms to dir-spec.txt. Fixes bug 30316; bugfix
4755      on 0.3.5.1-alpha.
4756
4757  o Minor bugfixes (error handling, backport from 0.4.2.1-alpha):
4758    - On abort, try harder to flush the output buffers of log messages.
4759      On some platforms (macOS), log messages could be discarded when
4760      the process terminates. Fixes bug 31571; bugfix on 0.3.5.1-alpha.
4761    - Report the tor version whenever an assertion fails. Previously, we
4762      only reported the Tor version on some crashes, and some non-fatal
4763      assertions. Fixes bug 31571; bugfix on 0.3.5.1-alpha.
4764
4765  o Minor bugfixes (FreeBSD, PF-based proxy, IPv6, backport from 0.4.2.1-alpha):
4766    - When extracting an IPv6 address from a PF-based proxy, verify that
4767      we are actually configured to receive an IPv6 address, and log an
4768      internal error if not. Fixes part of bug 31687; bugfix
4769      on 0.2.3.4-alpha.
4770
4771  o Minor bugfixes (guards, backport from 0.4.2.1-alpha):
4772    - When tor is missing descriptors for some primary entry guards,
4773      make the log message less alarming. It's normal for descriptors to
4774      expire, as long as tor fetches new ones soon after. Fixes bug
4775      31657; bugfix on 0.3.3.1-alpha.
4776
4777  o Minor bugfixes (logging, backport from 0.4.0.2-alpha):
4778    - Avoid logging that we are relaxing a circuit timeout when that
4779      timeout is fixed. Fixes bug 28698; bugfix on 0.2.4.7-alpha.
4780
4781  o Minor bugfixes (logging, backport from 0.4.0.3-alpha):
4782    - Correct a misleading error message when IPv4Only or IPv6Only is
4783      used but the resolved address can not be interpreted as an address
4784      of the specified IP version. Fixes bug 13221; bugfix on
4785      0.2.3.9-alpha. Patch from Kris Katterjohn.
4786    - Log the correct port number for listening sockets when "auto" is
4787      used to let Tor pick the port number. Previously, port 0 was
4788      logged instead of the actual port number. Fixes bug 29144; bugfix
4789      on 0.3.5.1-alpha. Patch from Kris Katterjohn.
4790    - Stop logging a BUG() warning when Tor is waiting for exit
4791      descriptors. Fixes bug 28656; bugfix on 0.3.5.1-alpha.
4792
4793  o Minor bugfixes (logging, backport from 0.4.1.1-alpha):
4794    - Do not log a warning when running with an OpenSSL version other
4795      than the one Tor was compiled with, if the two versions should be
4796      compatible. Previously, we would warn whenever the version was
4797      different. Fixes bug 30190; bugfix on 0.2.4.2-alpha.
4798
4799  o Minor bugfixes (logging, backport from 0.4.2.1-alpha):
4800    - Change log level of message "Hash of session info was not as
4801      expected" to LOG_PROTOCOL_WARN. Fixes bug 12399; bugfix
4802      on 0.1.1.10-alpha.
4803
4804  o Minor bugfixes (logging, backport from 0.4.2.2-alpha):
4805    - Rate-limit our the logging message about the obsolete .exit
4806      notation. Previously, there was no limit on this warning, which
4807      could potentially be triggered many times by a hostile website.
4808      Fixes bug 31466; bugfix on 0.2.2.1-alpha.
4809
4810  o Minor bugfixes (logging, protocol violations, backport from 0.4.2.2-alpha):
4811    - Do not log a nonfatal assertion failure when receiving a VERSIONS
4812      cell on a connection using the obsolete v1 link protocol. Log a
4813      protocol_warn instead. Fixes bug 31107; bugfix on 0.2.4.4-alpha.
4814
4815  o Minor bugfixes (mainloop, periodic events, in-process API, backport from 0.4.2.3-alpha):
4816    - Reset the periodic events' "enabled" flag when Tor is shut down
4817      cleanly. Previously, this flag was left on, which caused periodic
4818      events not to be re-enabled when Tor was relaunched in-process
4819      with tor_api.h after a shutdown. Fixes bug 32058; bugfix
4820      on 0.3.3.1-alpha.
4821
4822  o Minor bugfixes (memory leak, backport from 0.4.1.1-alpha):
4823    - Avoid a minor memory leak that could occur on relays when failing
4824      to create a "keys" directory. Fixes bug 30148; bugfix
4825      on 0.3.3.1-alpha.
4826
4827  o Minor bugfixes (memory leak, backport from 0.4.1.4-rc):
4828    - Fix a trivial memory leak when parsing an invalid value
4829      from a download schedule in the configuration. Fixes bug
4830      30894; bugfix on 0.3.4.1-alpha.
4831
4832  o Minor bugfixes (memory management, backport from 0.4.0.3-alpha):
4833    - Refactor the shared random state's memory management so that it
4834      actually takes ownership of the shared random value pointers.
4835      Fixes bug 29706; bugfix on 0.2.9.1-alpha.
4836
4837  o Minor bugfixes (memory management, testing, backport from 0.4.0.3-alpha):
4838    - Stop leaking parts of the shared random state in the shared-random
4839      unit tests. Fixes bug 29599; bugfix on 0.2.9.1-alpha.
4840
4841  o Minor bugfixes (onion services, backport from 0.4.1.1-alpha):
4842    - Avoid a GCC 9.1.1 warning (and possible crash depending on libc
4843      implemenation) when failing to load an onion service client
4844      authorization file. Fixes bug 30475; bugfix on 0.3.5.1-alpha.
4845
4846  o Minor bugfixes (out-of-memory handler, backport from 0.4.1.2-alpha):
4847    - When purging the DNS cache because of an out-of-memory condition,
4848      try purging just the older entries at first. Previously, we would
4849      always purge the whole thing. Fixes bug 29617; bugfix
4850      on 0.3.5.1-alpha.
4851
4852  o Minor bugfixes (portability, backport from 0.4.1.2-alpha):
4853    - Avoid crashing in our tor_vasprintf() implementation on systems
4854      that define neither vasprintf() nor _vscprintf(). (This bug has
4855      been here long enough that we question whether people are running
4856      Tor on such systems, but we're applying the fix out of caution.)
4857      Fixes bug 30561; bugfix on 0.2.8.2-alpha. Found and fixed by
4858      Tobias Stoeckmann.
4859
4860  o Minor bugfixes (relay, backport from 0.4.2.2-alpha):
4861    - Avoid crashing when starting with a corrupt keys directory where
4862      the old ntor key and the new ntor key are identical. Fixes bug
4863      30916; bugfix on 0.2.4.8-alpha.
4864
4865  o Minor bugfixes (rust, backport from 0.4.0.5):
4866    - Abort on panic in all build profiles, instead of potentially
4867      unwinding into C code. Fixes bug 27199; bugfix on 0.3.3.1-alpha.
4868
4869  o Minor bugfixes (rust, backport from 0.4.2.1-alpha):
4870    - Correctly exclude a redundant rust build job in Travis. Fixes bug
4871      31463; bugfix on 0.3.5.4-alpha.
4872
4873  o Minor bugfixes (single onion services, backport from 0.4.0.3-alpha):
4874    - Allow connections to single onion services to remain idle without
4875      being disconnected. Previously, relays acting as rendezvous points
4876      for single onion services were mistakenly closing idle rendezvous
4877      circuits after 60 seconds, thinking that they were unused
4878      directory-fetching circuits that had served their purpose. Fixes
4879      bug 29665; bugfix on 0.2.1.26.
4880
4881  o Minor bugfixes (stats, backport from 0.4.0.3-alpha):
4882    - When ExtraInfoStatistics is 0, stop including PaddingStatistics in
4883      relay and bridge extra-info documents. Fixes bug 29017; bugfix
4884      on 0.3.1.1-alpha.
4885
4886  o Minor bugfixes (testing, backport from 0.4.0.3-alpha):
4887    - Downgrade some LOG_ERR messages in the address/* tests to
4888      warnings. The LOG_ERR messages were occurring when we had no
4889      configured network. We were failing the unit tests, because we
4890      backported 28668 to 0.3.5.8, but did not backport 29530. Fixes bug
4891      29530; bugfix on 0.3.5.8.
4892    - Fix our gcov wrapper script to look for object files at the
4893      correct locations. Fixes bug 29435; bugfix on 0.3.5.1-alpha.
4894
4895  o Minor bugfixes (testing, backport from 0.4.0.4-rc):
4896    - Backport the 0.3.4 src/test/test-network.sh to 0.2.9. We need a
4897      recent test-network.sh to use new chutney features in CI. Fixes
4898      bug 29703; bugfix on 0.2.9.1-alpha.
4899    - Fix a test failure on Windows caused by an unexpected "BUG"
4900      warning in our tests for tor_gmtime_r(-1). Fixes bug 29922; bugfix
4901      on 0.2.9.3-alpha.
4902
4903  o Minor bugfixes (testing, backport from 0.4.2.3-alpha):
4904    - When testing port rebinding, don't busy-wait for tor to log.
4905      Instead, actually sleep for a short time before polling again.
4906      Also improve the formatting of control commands and log messages.
4907      Fixes bug 31837; bugfix on 0.3.5.1-alpha.
4908
4909  o Minor bugfixes (TLS protocol, backport form 0.4.0.4-rc):
4910    - When classifying a client's selection of TLS ciphers, if the
4911      client ciphers are not yet available, do not cache the result.
4912      Previously, we had cached the unavailability of the cipher list
4913      and never looked again, which in turn led us to assume that the
4914      client only supported the ancient V1 link protocol. This, in turn,
4915      was causing Stem integration tests to stall in some cases. Fixes
4916      bug 30021; bugfix on 0.2.4.8-alpha.
4917
4918  o Minor bugfixes (tls, logging, backport from 0.4.2.3-alpha):
4919    - Log bugs about the TLS read buffer's length only once, rather than
4920      filling the logs with similar warnings. Fixes bug 31939; bugfix
4921      on 0.3.0.4-rc.
4922
4923  o Minor bugfixes (v2 single onion services, backport from 0.4.2.1-alpha):
4924    - Always retry v2 single onion service intro and rend circuits with
4925      a 3-hop path. Previously, v2 single onion services used a 3-hop
4926      path when rendezvous circuits were retried after a remote or
4927      delayed failure, but a 1-hop path for immediate retries. Fixes bug
4928      23818; bugfix on 0.2.9.3-alpha.
4929    - Make v3 single onion services fall back to a 3-hop intro, when all
4930      intro points are unreachable via a 1-hop path. Previously, v3
4931      single onion services failed when all intro nodes were unreachable
4932      via a 1-hop path. Fixes bug 23507; bugfix on 0.3.2.1-alpha.
4933
4934  o Minor bugfixes (Windows, CI, backport from 0.4.0.3-alpha):
4935    - Skip the Appveyor 32-bit Windows Server 2016 job, and 64-bit
4936      Windows Server 2012 R2 job. The remaining 2 jobs still provide
4937      coverage of 64/32-bit, and Windows Server 2016/2012 R2. Also set
4938      fast_finish, so failed jobs terminate the build immediately. Fixes
4939      bug 29601; bugfix on 0.3.5.4-alpha.
4940
4941  o Documentation (backport from 0.4.2.1-alpha):
4942    - Use RFC 2397 data URL scheme to embed an image into tor-exit-
4943      notice.html so that operators no longer have to host it
4944      themselves. Closes ticket 31089.
4945
4946  o Testing (backport from 0.4.1.2-alpha):
4947    - Specify torrc paths (with empty files) when launching tor in
4948      integration tests; refrain from reading user and system torrcs.
4949      Resolves issue 29702.
4950
4951  o Testing (continuous integration, backport from 0.4.1.1-alpha):
4952    - In Travis, show stem's tor log after failure. Closes ticket 30234.
4953
4954  o Testing (continuous integration, backport from 0.4.1.5):
4955    - In Travis, make stem log a controller trace to the console, and
4956      tail stem's tor log after failure. Closes ticket 30591.
4957    - In Travis, only run the stem tests that use a tor binary. Closes
4958      ticket 30694.
4959
4960  o Testing (continuous integration, backport from 0.4.2.3-alpha):
4961    - Disable all but one Travis CI macOS build, to mitigate slow
4962      scheduling of Travis macOS jobs. Closes ticket 32177.
4963    - Run the chutney IPv6 networks as part of Travis CI. Closes
4964      ticket 30860.
4965    - Simplify the Travis CI build matrix, and optimise for build time.
4966      Closes ticket 31859.
4967    - Use Windows Server 2019 instead of Windows Server 2016 in our
4968      Appveyor builds. Closes ticket 32086.
4969
4970  o Testing (continuous integration, backport from 0.4.2.4-rc):
4971    - Use Ubuntu Bionic images for our Travis CI builds, so we can get a
4972      recent version of coccinelle. But leave chutney on Ubuntu Trusty,
4973      until we can fix some Bionic permissions issues (see ticket
4974      32240). Related to ticket 31919.
4975    - Install the mingw OpenSSL package in Appveyor. This makes sure
4976      that the OpenSSL headers and libraries match in Tor's Appveyor
4977      builds. (This bug was triggered by an Appveyor image update.)
4978      Fixes bug 32449; bugfix on 0.3.5.6-rc.
4979    - In Travis, use Xcode 11.2 on macOS 10.14. Closes ticket 32241.
4980
4981  o Testing (continuous integration, backport from 0.4.2.5):
4982    - Require C99 standards-conforming code in Travis CI, but allow GNU gcc
4983      extensions. Also activates clang's -Wtypedef-redefinition warnings.
4984      Build some jobs with -std=gnu99, and some jobs without.
4985      Closes ticket 32500.
4986
4987Changes in version 0.4.2.4-rc - 2019-11-15
4988  Tor 0.4.2.4-rc is the first release candidate in its series. It fixes
4989  several bugs from earlier versions, including a few that would result in
4990  stack traces or incorrect behavior.
4991
4992  o Minor features (build system):
4993    - Make pkg-config use --prefix when cross-compiling, if
4994      PKG_CONFIG_PATH is not set. Closes ticket 32191.
4995
4996  o Minor features (geoip):
4997    - Update geoip and geoip6 to the November 6 2019 Maxmind GeoLite2
4998      Country database. Closes ticket 32440.
4999
5000  o Minor bugfixes (client, onion service v3):
5001    - Fix a BUG() assertion that occurs within a very small race window
5002      between when a client intro circuit opens and when its descriptor
5003      gets cleaned up from the cache. The circuit is now closed early,
5004      which will trigger a re-fetch of the descriptor and continue the
5005      connection. Fixes bug 28970; bugfix on 0.3.2.1-alpha.
5006
5007  o Minor bugfixes (code quality):
5008    - Fix "make check-includes" so it runs correctly on out-of-tree
5009      builds. Fixes bug 31335; bugfix on 0.3.5.1-alpha.
5010
5011  o Minor bugfixes (configuration):
5012    - Log the option name when skipping an obsolete option. Fixes bug
5013      32295; bugfix on 0.4.2.1-alpha.
5014
5015  o Minor bugfixes (crash):
5016    - When running Tor with an option like --verify-config or
5017      --dump-config that does not start the event loop, avoid crashing
5018      if we try to exit early because of an error. Fixes bug 32407;
5019      bugfix on 0.3.3.1-alpha.
5020
5021  o Minor bugfixes (directory):
5022    - When checking if a directory connection is anonymous, test if the
5023      circuit was marked for close before looking at its channel. This
5024      avoids a BUG() stacktrace if the circuit was previously closed.
5025      Fixes bug 31958; bugfix on 0.4.2.1-alpha.
5026
5027  o Minor bugfixes (shellcheck):
5028    - Fix minor shellcheck errors in the git-*.sh scripts. Fixes bug
5029      32402; bugfix on 0.4.2.1-alpha.
5030    - Start checking most scripts for shellcheck errors again. Fixes bug
5031      32402; bugfix on 0.4.2.1-alpha.
5032
5033  o Testing (continuous integration):
5034    - Use Ubuntu Bionic images for our Travis CI builds, so we can get a
5035      recent version of coccinelle. But leave chutney on Ubuntu Trusty,
5036      until we can fix some Bionic permissions issues (see ticket
5037      32240). Related to ticket 31919.
5038    - Install the mingw OpenSSL package in Appveyor. This makes sure
5039      that the OpenSSL headers and libraries match in Tor's Appveyor
5040      builds. (This bug was triggered by an Appveyor image update.)
5041      Fixes bug 32449; bugfix on 0.3.5.6-rc.
5042    - In Travis, use Xcode 11.2 on macOS 10.14. Closes ticket 32241.
5043
5044
5045Changes in version 0.4.2.3-alpha - 2019-10-24
5046  This release fixes several bugs from the previous alpha release, and
5047  from earlier versions of Tor.
5048
5049  o Major bugfixes (relay):
5050    - Relays now respect their AccountingMax bandwidth again. When
5051      relays entered "soft" hibernation (which typically starts when
5052      we've hit 90% of our AccountingMax), we had stopped checking
5053      whether we should enter hard hibernation. Soft hibernation refuses
5054      new connections and new circuits, but the existing circuits can
5055      continue, meaning that relays could have exceeded their configured
5056      AccountingMax. Fixes bug 32108; bugfix on 0.4.0.1-alpha.
5057
5058  o Major bugfixes (v3 onion services):
5059    - Onion services now always use the exact number of intro points
5060      configured with the HiddenServiceNumIntroductionPoints option (or
5061      fewer if nodes are excluded). Before, a service could sometimes
5062      pick more intro points than configured. Fixes bug 31548; bugfix
5063      on 0.3.2.1-alpha.
5064
5065  o Minor feature (onion services, control port):
5066    - The ADD_ONION command's keyword "BEST" now defaults to ED25519-V3
5067      (v3) onion services. Previously it defaulted to RSA1024 (v2).
5068      Closes ticket 29669.
5069
5070  o Minor features (testing):
5071    - When running tests that attempt to look up hostnames, replace the
5072      libc name lookup functions with ones that do not actually touch
5073      the network. This way, the tests complete more quickly in the
5074      presence of a slow or missing DNS resolver. Closes ticket 31841.
5075
5076  o Minor features (testing, continuous integration):
5077    - Disable all but one Travis CI macOS build, to mitigate slow
5078      scheduling of Travis macOS jobs. Closes ticket 32177.
5079    - Run the chutney IPv6 networks as part of Travis CI. Closes
5080      ticket 30860.
5081    - Simplify the Travis CI build matrix, and optimise for build time.
5082      Closes ticket 31859.
5083    - Use Windows Server 2019 instead of Windows Server 2016 in our
5084      Appveyor builds. Closes ticket 32086.
5085
5086  o Minor bugfixes (build system):
5087    - Interpret "--disable-module-dirauth=no" correctly. Fixes bug
5088      32124; bugfix on 0.3.4.1-alpha.
5089    - Interpret "--with-tcmalloc=no" correctly. Fixes bug 32124; bugfix
5090      on 0.2.0.20-rc.
5091    - Stop failing when jemalloc is requested, but tcmalloc is not
5092      found. Fixes bug 32124; bugfix on 0.3.5.1-alpha.
5093    - When pkg-config is not installed, or a library that depends on
5094      pkg-config is not found, tell the user what to do to fix the
5095      problem. Fixes bug 31922; bugfix on 0.3.1.1-alpha.
5096
5097  o Minor bugfixes (connections):
5098    - Avoid trying to read data from closed connections, which can cause
5099      needless loops in Libevent and infinite loops in Shadow. Fixes bug
5100      30344; bugfix on 0.1.1.1-alpha.
5101
5102  o Minor bugfixes (error handling):
5103    - Always lock the backtrace buffer before it is used. Fixes bug
5104      31734; bugfix on 0.2.5.3-alpha.
5105
5106  o Minor bugfixes (mainloop, periodic events, in-process API):
5107    - Reset the periodic events' "enabled" flag when Tor is shut down
5108      cleanly. Previously, this flag was left on, which caused periodic
5109      events not to be re-enabled when Tor was relaunched in-process
5110      with tor_api.h after a shutdown. Fixes bug 32058; bugfix
5111      on 0.3.3.1-alpha.
5112
5113  o Minor bugfixes (process management):
5114    - Remove overly strict assertions that triggered when a pluggable
5115      transport failed to launch. Fixes bug 31091; bugfix
5116      on 0.4.0.1-alpha.
5117    - Remove an assertion in the Unix process backend. This assertion
5118      would trigger when we failed to find the executable for a child
5119      process. Fixes bug 31810; bugfix on 0.4.0.1-alpha.
5120
5121  o Minor bugfixes (testing):
5122    - Avoid intermittent test failures due to a test that had relied on
5123      inconsistent timing sources. Fixes bug 31995; bugfix
5124      on 0.3.1.3-alpha.
5125    - When testing port rebinding, don't busy-wait for tor to log.
5126      Instead, actually sleep for a short time before polling again.
5127      Also improve the formatting of control commands and log messages.
5128      Fixes bug 31837; bugfix on 0.3.5.1-alpha.
5129
5130  o Minor bugfixes (tls, logging):
5131    - Log bugs about the TLS read buffer's length only once, rather than
5132      filling the logs with similar warnings. Fixes bug 31939; bugfix
5133      on 0.3.0.4-rc.
5134
5135  o Minor bugfixes (v3 onion services):
5136    - Fix an implicit conversion from ssize_t to size_t discovered by
5137      Coverity. Fixes bug 31682; bugfix on 0.4.2.1-alpha.
5138    - Fix a memory leak in an unlikely error code path when encoding HS
5139      DoS establish intro extension cell. Fixes bug 32063; bugfix
5140      on 0.4.2.1-alpha.
5141    - When cleaning up intro circuits for a v3 onion service, don't
5142      remove circuits that have an established or pending circuit, even
5143      if they ran out of retries. This way, we don't remove a circuit on
5144      its last retry. Fixes bug 31652; bugfix on 0.3.2.1-alpha.
5145
5146  o Documentation:
5147    - Correct the description of "GuardLifetime". Fixes bug 31189;
5148      bugfix on 0.3.0.1-alpha.
5149    - Make clear in the man page, in both the bandwidth section and the
5150      AccountingMax section, that Tor counts in powers of two, not
5151      powers of ten: 1 GByte is 1024*1024*1024 bytes, not one billion
5152      bytes. Resolves ticket 32106.
5153
5154
5155Changes in version 0.4.2.2-alpha - 2019-10-07
5156  This release fixes several bugs from the previous alpha release, and
5157  from earlier versions. It also includes a change in authorities, so
5158  that they begin to reject the currently unsupported release series.
5159
5160  o Major features (directory authorities):
5161    - Directory authorities now reject relays running all currently
5162      deprecated release series. The currently supported release series
5163      are: 0.2.9, 0.3.5, 0.4.0, 0.4.1, and 0.4.2. Closes ticket 31549.
5164
5165  o Major bugfixes (embedded Tor):
5166    - Avoid a possible crash when restarting Tor in embedded mode and
5167      enabling a different set of publish/subscribe messages. Fixes bug
5168      31898; bugfix on 0.4.1.1-alpha.
5169
5170  o Major bugfixes (torrc parsing):
5171    - Stop ignoring torrc options after an %include directive, when the
5172      included directory ends with a file that does not contain any
5173      config options (but does contain comments or whitespace). Fixes
5174      bug 31408; bugfix on 0.3.1.1-alpha.
5175
5176  o Minor features (auto-formatting scripts):
5177    - When annotating C macros, never generate a line that our check-
5178      spaces script would reject. Closes ticket 31759.
5179    - When annotating C macros, try to remove cases of double-negation.
5180      Closes ticket 31779.
5181
5182  o Minor features (continuous integration):
5183    - When building on Appveyor and Travis, pass the "-k" flag to make,
5184      so that we are informed of all compilation failures, not just the
5185      first one or two. Closes ticket 31372.
5186
5187  o Minor features (geoip):
5188    - Update geoip and geoip6 to the October 1 2019 Maxmind GeoLite2
5189      Country database. Closes ticket 31931.
5190
5191  o Minor features (maintenance scripts):
5192    - Add a Coccinelle script to detect bugs caused by incrementing or
5193      decrementing a variable inside a call to log_debug(). Since
5194      log_debug() is a macro whose arguments are conditionally
5195      evaluated, it is usually an error to do this. One such bug was
5196      30628, in which SENDME cells were miscounted by a decrement
5197      operator inside a log_debug() call. Closes ticket 30743.
5198
5199  o Minor features (onion services v3):
5200    - Assist users who try to setup v2 client authorization in v3 onion
5201      services by pointing them to the right documentation. Closes
5202      ticket 28966.
5203
5204  o Minor bugfixes (Appveyor continuous integration):
5205    - Avoid spurious errors when Appveyor CI fails before the install
5206      step. Fixes bug 31884; bugfix on 0.3.4.2-alpha.
5207
5208  o Minor bugfixes (best practices tracker):
5209    - When listing overbroad exceptions, do not also list problems, and
5210      do not list insufficiently broad exceptions. Fixes bug 31338;
5211      bugfix on 0.4.2.1-alpha.
5212
5213  o Minor bugfixes (controller protocol):
5214    - Fix the MAPADDRESS controller command to accept one or more
5215      arguments. Previously, it required two or more arguments, and
5216      ignored the first. Fixes bug 31772; bugfix on 0.4.1.1-alpha.
5217
5218  o Minor bugfixes (logging):
5219    - Add a missing check for HAVE_PTHREAD_H, because the backtrace code
5220      uses mutexes. Fixes bug 31614; bugfix on 0.2.5.2-alpha.
5221    - Disable backtrace signal handlers when shutting down tor. Fixes
5222      bug 31614; bugfix on 0.2.5.2-alpha.
5223    - Rate-limit our the logging message about the obsolete .exit
5224      notation. Previously, there was no limit on this warning, which
5225      could potentially be triggered many times by a hostile website.
5226      Fixes bug 31466; bugfix on 0.2.2.1-alpha.
5227    - When initialising log domain masks, only set known log domains.
5228      Fixes bug 31854; bugfix on 0.2.1.1-alpha.
5229
5230  o Minor bugfixes (logging, protocol violations):
5231    - Do not log a nonfatal assertion failure when receiving a VERSIONS
5232      cell on a connection using the obsolete v1 link protocol. Log a
5233      protocol_warn instead. Fixes bug 31107; bugfix on 0.2.4.4-alpha.
5234
5235  o Minor bugfixes (modules):
5236    - Explain what the optional Directory Authority module is, and what
5237      happens when it is disabled. Fixes bug 31825; bugfix
5238      on 0.3.4.1-alpha.
5239
5240  o Minor bugfixes (multithreading):
5241    - Avoid some undefined behaviour when freeing mutexes. Fixes bug
5242      31736; bugfix on 0.0.7.
5243
5244  o Minor bugfixes (relay):
5245    - Avoid crashing when starting with a corrupt keys directory where
5246      the old ntor key and the new ntor key are identical. Fixes bug
5247      30916; bugfix on 0.2.4.8-alpha.
5248
5249  o Minor bugfixes (tests, SunOS):
5250    - Avoid a map_anon_nofork test failure due to a signed/unsigned
5251      integer comparison. Fixes bug 31897; bugfix on 0.4.1.1-alpha.
5252
5253  o Code simplification and refactoring:
5254    - Refactor connection_control_process_inbuf() to reduce the size of
5255      a practracker exception. Closes ticket 31840.
5256    - Refactor the microdescs_parse_from_string() function into smaller
5257      pieces, for better comprehensibility. Closes ticket 31675.
5258    - Use SEVERITY_MASK_IDX() to find the LOG_* mask indexes in the unit
5259      tests and fuzzers, rather than using hard-coded values. Closes
5260      ticket 31334.
5261    - Interface for function `decrypt_desc_layer` cleaned up. Closes
5262      ticket 31589.
5263
5264  o Documentation:
5265    - Document the signal-safe logging behaviour in the tor man page.
5266      Also add some comments to the relevant functions. Closes
5267      ticket 31839.
5268    - Explain why we can't destroy the backtrace buffer mutex. Explain
5269      why we don't need to destroy the log mutex. Closes ticket 31736.
5270    - The Tor source code repository now includes a (somewhat dated)
5271      description of Tor's modular architecture, in doc/HACKING/design.
5272      This is based on the old "tor-guts.git" repository, which we are
5273      adopting and superseding. Closes ticket 31849.
5274
5275
5276Changes in version 0.4.1.6 - 2019-09-19
5277  This release backports several bugfixes to improve stability and
5278  correctness.  Anyone experiencing build problems or crashes with 0.4.1.5,
5279  or experiencing reliability issues with single onion services, should
5280  upgrade.
5281
5282  o Major bugfixes (crash, Linux, Android, backport from 0.4.2.1-alpha):
5283    - Tolerate systems (including some Android installations) where
5284      madvise and MADV_DONTDUMP are available at build-time, but not at
5285      run time. Previously, these systems would notice a failed syscall
5286      and abort. Fixes bug 31570; bugfix on 0.4.1.1-alpha.
5287    - Tolerate systems (including some Linux installations) where
5288      madvise and/or MADV_DONTFORK are available at build-time, but not
5289      at run time. Previously, these systems would notice a failed
5290      syscall and abort. Fixes bug 31696; bugfix on 0.4.1.1-alpha.
5291
5292  o Minor features (stem tests, backport from 0.4.2.1-alpha):
5293    - Change "make test-stem" so it only runs the stem tests that use
5294      tor. This change makes test-stem faster and more reliable. Closes
5295      ticket 31554.
5296
5297  o Minor bugfixes (build system, backport form 0.4.2.1-alpha):
5298    - Do not include the deprecated <sys/sysctl.h> on Linux or Windows
5299      systems. Fixes bug 31673; bugfix on 0.2.5.4-alpha.
5300
5301  o Minor bugfixes (compilation, backport from 0.4.2.1-alpha):
5302    - Add more stub functions to fix compilation on Android with link-
5303      time optimization when --disable-module-dirauth is used.
5304      Previously, these compilation settings would make the compiler
5305      look for functions that didn't exist. Fixes bug 31552; bugfix
5306      on 0.4.1.1-alpha.
5307    - Suppress spurious float-conversion warnings from GCC when calling
5308      floating-point classifier functions on FreeBSD. Fixes part of bug
5309      31687; bugfix on 0.3.1.5-alpha.
5310
5311  o Minor bugfixes (controller protocol):
5312    - Fix the MAPADDRESS controller command to accept one or more
5313      arguments. Previously, it required two or more arguments, and ignored
5314      the first. Fixes bug 31772; bugfix on 0.4.1.1-alpha.
5315
5316  o Minor bugfixes (FreeBSD, PF-based proxy, IPv6, backport from 0.4.2.1-alpha):
5317    - When extracting an IPv6 address from a PF-based proxy, verify that
5318      we are actually configured to receive an IPv6 address, and log an
5319      internal error if not. Fixes part of bug 31687; bugfix
5320      on 0.2.3.4-alpha.
5321
5322  o Minor bugfixes (guards, backport from 0.4.2.1-alpha):
5323    - When tor is missing descriptors for some primary entry guards,
5324      make the log message less alarming. It's normal for descriptors to
5325      expire, as long as tor fetches new ones soon after. Fixes bug
5326      31657; bugfix on 0.3.3.1-alpha.
5327
5328  o Minor bugfixes (logging, backport from 0.4.2.1-alpha):
5329    - Change log level of message "Hash of session info was not as
5330      expected" to LOG_PROTOCOL_WARN. Fixes bug 12399; bugfix
5331      on 0.1.1.10-alpha.
5332
5333  o Minor bugfixes (rust, backport from 0.4.2.1-alpha):
5334    - Correctly exclude a redundant rust build job in Travis. Fixes bug
5335      31463; bugfix on 0.3.5.4-alpha.
5336
5337  o Minor bugfixes (v2 single onion services, backport from 0.4.2.1-alpha):
5338    - Always retry v2 single onion service intro and rend circuits with
5339      a 3-hop path. Previously, v2 single onion services used a 3-hop
5340      path when rendezvous circuits were retried after a remote or
5341      delayed failure, but a 1-hop path for immediate retries. Fixes bug
5342      23818; bugfix on 0.2.9.3-alpha.
5343
5344  o Minor bugfixes (v3 single onion services, backport from 0.4.2.1-alpha):
5345    - Always retry v3 single onion service intro and rend circuits with
5346      a 3-hop path. Previously, v3 single onion services used a 3-hop
5347      path when rend circuits were retried after a remote or delayed
5348      failure, but a 1-hop path for immediate retries. Fixes bug 23818;
5349      bugfix on 0.3.2.1-alpha.
5350    - Make v3 single onion services fall back to a 3-hop intro, when all
5351      intro points are unreachable via a 1-hop path. Previously, v3
5352      single onion services failed when all intro nodes were unreachable
5353      via a 1-hop path. Fixes bug 23507; bugfix on 0.3.2.1-alpha.
5354
5355  o Documentation (backport from 0.4.2.1-alpha):
5356    - Use RFC 2397 data URL scheme to embed an image into tor-exit-
5357      notice.html so that operators no longer have to host it
5358      themselves. Closes ticket 31089.
5359
5360
5361Changes in version 0.4.2.1-alpha - 2019-09-17
5362  This is the first alpha release in the 0.4.2.x series. It adds new
5363  defenses for denial-of-service attacks against onion services. It also
5364  includes numerous kinds of bugfixes and refactoring to help improve
5365  Tor's stability and ease of development.
5366
5367  o Major features (onion service v3, denial of service):
5368    - Add onion service introduction denial of service defenses. Intro
5369      points can now rate-limit client introduction requests, using
5370      parameters that can be sent by the service within the
5371      ESTABLISH_INTRO cell. If the cell extension for this is not used,
5372      the intro point will honor the consensus parameters. Closes
5373      ticket 30924.
5374
5375  o Major bugfixes (circuit build, guard):
5376    - When considering upgrading circuits from "waiting for guard" to
5377      "open", always ignore circuits that are marked for close.
5378      Previously we could end up in the situation where a subsystem is
5379      notified of a circuit opening, but the circuit is still marked for
5380      close, leading to undesirable behavior. Fixes bug 30871; bugfix
5381      on 0.3.0.1-alpha.
5382
5383  o Major bugfixes (crash, Linux, Android):
5384    - Tolerate systems (including some Android installations) where
5385      madvise and MADV_DONTDUMP are available at build-time, but not at
5386      run time. Previously, these systems would notice a failed syscall
5387      and abort. Fixes bug 31570; bugfix on 0.4.1.1-alpha.
5388    - Tolerate systems (including some Linux installations) where
5389      madvise and/or MADV_DONTFORK are available at build-time, but not
5390      at run time. Previously, these systems would notice a failed
5391      syscall and abort. Fixes bug 31696; bugfix on 0.4.1.1-alpha.
5392
5393  o Minor features (best practices tracker):
5394    - Our best-practices tracker now integrates with our include-checker
5395      tool to keep track of how many layering violations we have not yet
5396      fixed. We hope to reduce this number over time to improve Tor's
5397      modularity. Closes ticket 31176.
5398    - Add a TOR_PRACTRACKER_OPTIONS variable for passing arguments to
5399      practracker from the environment. We may want this for continuous
5400      integration. Closes ticket 31309.
5401    - Give a warning rather than an error when a practracker exception
5402      is violated by a small amount, add a --list-overbroad option to
5403      practracker that lists exceptions that are stricter than they need
5404      to be, and provide an environment variable for disabling
5405      practracker. Closes ticket 30752.
5406    - Our best-practices tracker now looks at headers as well as C
5407      files. Closes ticket 31175.
5408
5409  o Minor features (build system):
5410    - Add --disable-manpage and --disable-html-manual options to
5411      configure script. This will enable shortening build times by not
5412      building documentation. Resolves issue 19381.
5413
5414  o Minor features (compilation):
5415    - Log a more useful error message when we are compiling and one of
5416      the compile-time hardening options we have selected can be linked
5417      but not executed. Closes ticket 27530.
5418
5419  o Minor features (configuration):
5420    - The configuration code has been extended to allow splitting
5421      configuration data across multiple objects. Previously, all
5422      configuration data needed to be kept in a single object, which
5423      tended to become bloated. Closes ticket 31240.
5424
5425  o Minor features (continuous integration):
5426    - When running CI builds on Travis, put some random data in
5427      ~/.torrc, to make sure no tests are reading the Tor configuration
5428      file from its default location. Resolves issue 30102.
5429
5430  o Minor features (debugging):
5431    - Log a nonfatal assertion failure if we encounter a configuration
5432      line whose command is "CLEAR" but which has a nonempty value. This
5433      should be impossible, according to the rules of our configuration
5434      line parsing. Closes ticket 31529.
5435
5436  o Minor features (git hooks):
5437    - Our pre-commit git hook now checks for a special file before
5438      running practracker, so that practracker only runs on branches
5439      that are based on master. Since the pre-push hook calls the pre-
5440      commit hook, practracker will also only run before pushes of
5441      branches based on master. Closes ticket 30979.
5442
5443  o Minor features (git scripts):
5444    - Add a "--" command-line argument, to separate git-push-all.sh
5445      script arguments from arguments that are passed through to git
5446      push. Closes ticket 31314.
5447    - Add a -r <remote-name> argument to git-push-all.sh, so the script
5448      can push test branches to a personal remote. Closes ticket 31314.
5449    - Add a -t <test-branch-prefix> argument to git-merge-forward.sh and
5450      git-push-all.sh, which makes these scripts create, merge forward,
5451      and push test branches. Closes ticket 31314.
5452    - Add a -u argument to git-merge-forward.sh, so that the script can
5453      re-use existing test branches after a merge failure and fix.
5454      Closes ticket 31314.
5455    - Add a TOR_GIT_PUSH env var, which sets the default git push
5456      command and arguments for git-push-all.sh. Closes ticket 31314.
5457    - Add a TOR_PUSH_DELAY variable to git-push-all.sh, which makes the
5458      script push master and maint branches with a delay between each
5459      branch. These delays trigger the CI jobs in a set order, which
5460      should show the most likely failures first. Also make pushes
5461      atomic by default, and make the script pass any command-line
5462      arguments to git push. Closes ticket 29879.
5463    - Call the shellcheck script from the pre-commit hook. Closes
5464      ticket 30967.
5465    - Skip pushing test branches that are the same as a remote
5466      maint/release/master branch in git-push-all.sh by default. Add a
5467      -s argument, so git-push-all.sh can push all test branches. Closes
5468      ticket 31314.
5469
5470  o Minor features (IPv6, logging):
5471    - Log IPv6 addresses as well as IPv4 addresses when describing
5472      routerinfos, routerstatuses, and nodes. Closes ticket 21003.
5473
5474  o Minor features (onion service v3):
5475    - Do not allow single hop clients to fetch or post an HS descriptor
5476      from an HSDir. Closes ticket 24964.
5477
5478  o Minor features (onion service):
5479    - Disallow single-hop clients at the introduction point. We've
5480      removed Tor2web support a while back and single-hop rendezvous
5481      attempts are blocked at the relays. This change should remove load
5482      off the network from spammy clients. Close ticket 24963.
5483
5484  o Minor features (stem tests):
5485    - Change "make test-stem" so it only runs the stem tests that use
5486      tor. This change makes test-stem faster and more reliable. Closes
5487      ticket 31554.
5488
5489  o Minor features (testing):
5490    - Add a script to invoke "tor --dump-config" and "tor
5491      --verify-config" with various configuration options, and see
5492      whether tor's resulting configuration or error messages are what
5493      we expect. Use it for integration testing of our +Option and
5494      /Option flags. Closes ticket 31637.
5495    - Improve test coverage for our existing configuration parsing and
5496      management API. Closes ticket 30893.
5497    - Add integration tests to make sure that practracker gives the
5498      outputs we expect. Closes ticket 31477.
5499    - The practracker self-tests are now run as part of the Tor test
5500      suite. Closes ticket 31304.
5501
5502  o Minor features (token bucket):
5503    - Implement a generic token bucket that uses a single counter, for
5504      use in anti-DoS onion service work. Closes ticket 30687.
5505
5506  o Minor bugfixes (best practices tracker):
5507    - Fix a few issues in the best-practices script, including tests,
5508      tab tolerance, error reporting, and directory-exclusion logic.
5509      Fixes bug 29746; bugfix on 0.4.1.1-alpha.
5510    - When running check-best-practices, only consider files in the src
5511      subdirectory. Previously we had recursively considered all
5512      subdirectories, which made us get confused by the temporary
5513      directories made by "make distcheck". Fixes bug 31578; bugfix
5514      on 0.4.1.1-alpha.
5515
5516  o Minor bugfixes (build system):
5517    - Do not include the deprecated <sys/sysctl.h> on Linux or Windows
5518      systems. Fixes bug 31673; bugfix on 0.2.5.4-alpha.
5519
5520  o Minor bugfixes (chutney, makefiles, documentation):
5521    - "make test-network-all" now shows the warnings from each test-
5522      network.sh run on the console, so developers see new warnings
5523      early. We've also improved the documentation for this feature, and
5524      renamed a Makefile variable so the code is self-documenting. Fixes
5525      bug 30455; bugfix on 0.3.0.4-rc.
5526
5527  o Minor bugfixes (compilation):
5528    - Add more stub functions to fix compilation on Android with link-
5529      time optimization when --disable-module-dirauth is used.
5530      Previously, these compilation settings would make the compiler
5531      look for functions that didn't exist. Fixes bug 31552; bugfix
5532      on 0.4.1.1-alpha.
5533    - Suppress spurious float-conversion warnings from GCC when calling
5534      floating-point classifier functions on FreeBSD. Fixes part of bug
5535      31687; bugfix on 0.3.1.5-alpha.
5536
5537  o Minor bugfixes (configuration):
5538    - Invalid floating-point values in the configuration file are now
5539      treated as errors in the configuration. Previously, they were
5540      ignored and treated as zero. Fixes bug 31475; bugfix on 0.0.1.
5541
5542  o Minor bugfixes (coverity):
5543    - Add an assertion when parsing a BEGIN cell so that coverity can be
5544      sure that we are not about to dereference a NULL address. Fixes
5545      bug 31026; bugfix on 0.2.4.7-alpha. This is CID 1447296.
5546    - In our siphash implementation, when building for coverity, use
5547      memcpy in place of a switch statement, so that coverity can tell
5548      we are not accessing out-of-bounds memory. Fixes bug 31025; bugfix
5549      on 0.2.8.1-alpha. This is tracked as CID 1447293 and 1447295.
5550    - Fix several coverity warnings from our unit tests. Fixes bug
5551      31030; bugfix on 0.2.4.1-alpha, 0.3.2.1-alpha, and 0.4.0.1-alpha.
5552
5553  o Minor bugfixes (developer tooling):
5554    - Only log git script changes in the post-merge script when the
5555      merge was to the master branch. Fixes bug 31040; bugfix
5556      on 0.4.1.1-alpha.
5557
5558  o Minor bugfixes (directory authorities):
5559    - Return a distinct status when formatting annotations fails. Fixes
5560      bug 30780; bugfix on 0.2.0.8-alpha.
5561
5562  o Minor bugfixes (error handling):
5563    - On abort, try harder to flush the output buffers of log messages.
5564      On some platforms (macOS), log messages could be discarded when
5565      the process terminates. Fixes bug 31571; bugfix on 0.3.5.1-alpha.
5566    - Report the tor version whenever an assertion fails. Previously, we
5567      only reported the Tor version on some crashes, and some non-fatal
5568      assertions. Fixes bug 31571; bugfix on 0.3.5.1-alpha.
5569    - When tor aborts due to an error, close log file descriptors before
5570      aborting. Closing the logs makes some OSes flush log file buffers,
5571      rather than deleting buffered log lines. Fixes bug 31594; bugfix
5572      on 0.2.5.2-alpha.
5573
5574  o Minor bugfixes (FreeBSD, PF-based proxy, IPv6):
5575    - When extracting an IPv6 address from a PF-based proxy, verify that
5576      we are actually configured to receive an IPv6 address, and log an
5577      internal error if not. Fixes part of bug 31687; bugfix
5578      on 0.2.3.4-alpha.
5579
5580  o Minor bugfixes (git hooks):
5581    - Remove a duplicate call to practracker from the pre-push hook. The
5582      pre-push hook already calls the pre-commit hook, which calls
5583      practracker. Fixes bug 31462; bugfix on 0.4.1.1-alpha.
5584
5585  o Minor bugfixes (git scripts):
5586    - Stop hard-coding the bash path in the git scripts. Some OSes don't
5587      have bash in /usr/bin, others have an ancient bash at this path.
5588      Fixes bug 30840; bugfix on 0.4.0.1-alpha.
5589    - Stop hard-coding the tor master branch name and worktree path in
5590      the git scripts. Fixes bug 30841; bugfix on 0.4.0.1-alpha.
5591    - Allow git-push-all.sh to be run from any directory. Previously,
5592      the script only worked if run from an upstream worktree directory.
5593      Closes ticket 31678.
5594
5595  o Minor bugfixes (guards):
5596    - When tor is missing descriptors for some primary entry guards,
5597      make the log message less alarming. It's normal for descriptors to
5598      expire, as long as tor fetches new ones soon after. Fixes bug
5599      31657; bugfix on 0.3.3.1-alpha.
5600
5601  o Minor bugfixes (ipv6):
5602    - Check for private IPv6 addresses alongside their IPv4 equivalents
5603      when authorities check descriptors. Previously, we only checked
5604      for private IPv4 addresses. Fixes bug 31088; bugfix on
5605      0.2.3.21-rc. Patch by Neel Chauhan.
5606    - When parsing microdescriptors, we should check the IPv6 exit
5607      policy alongside IPv4. Previously, we checked both exit policies
5608      for only router info structures, while microdescriptors were
5609      IPv4-only. Fixes bug 27284; bugfix on 0.2.3.1-alpha. Patch by
5610      Neel Chauhan.
5611
5612  o Minor bugfixes (logging):
5613    - Change log level of message "Hash of session info was not as
5614      expected" to LOG_PROTOCOL_WARN. Fixes bug 12399; bugfix
5615      on 0.1.1.10-alpha.
5616    - Fix a code issue that would have broken our parsing of log domains
5617      as soon as we had 33 of them. Fortunately, we still only have 29.
5618      Fixes bug 31451; bugfix on 0.4.1.4-rc.
5619
5620  o Minor bugfixes (memory management):
5621    - Stop leaking a small amount of memory in nt_service_install(), in
5622      unreachable code. Fixes bug 30799; bugfix on 0.2.0.7-alpha. Patch
5623      by Xiaoyin Liu.
5624
5625  o Minor bugfixes (networking, IP addresses):
5626    - When parsing addresses via Tor's internal DNS lookup API, reject
5627      IPv4 addresses in square brackets, and accept IPv6 addresses in
5628      square brackets. This change completes the work started in 23082,
5629      making address parsing consistent between tor's internal DNS
5630      lookup and address parsing APIs. Fixes bug 30721; bugfix
5631      on 0.2.1.5-alpha.
5632    - When parsing addresses via Tor's internal address:port parsing and
5633      DNS lookup APIs, require IPv6 addresses with ports to have square
5634      brackets. But allow IPv6 addresses without ports, whether or not
5635      they have square brackets. Fixes bug 30721; bugfix
5636      on 0.2.1.5-alpha.
5637
5638  o Minor bugfixes (onion service v3):
5639    - When purging the client descriptor cache, close any introduction
5640      point circuits associated with purged cache entries. This avoids
5641      picking those circuits later when connecting to the same
5642      introduction points. Fixes bug 30921; bugfix on 0.3.2.1-alpha.
5643
5644  o Minor bugfixes (onion services):
5645    - In the hs_ident_circuit_t data structure, remove the unused field
5646      circuit_type and the respective argument in hs_ident_circuit_new().
5647      This field was set by clients (for introduction) and services (for
5648      introduction and rendezvous) but was never used afterwards. Fixes
5649      bug 31490; bugfix on 0.3.2.1-alpha. Patch by Neel Chauhan.
5650
5651  o Minor bugfixes (operator tools):
5652    - Make tor-print-ed-signing-cert(1) print certificate expiration
5653      date in RFC 1123 and UNIX timestamp formats, to make output
5654      machine readable. Fixes bug 31012; bugfix on 0.3.5.1-alpha.
5655
5656  o Minor bugfixes (rust):
5657    - Correctly exclude a redundant rust build job in Travis. Fixes bug
5658      31463; bugfix on 0.3.5.4-alpha.
5659    - Raise the minimum rustc version to 1.31.0, as checked by configure
5660      and CI. Fixes bug 31442; bugfix on 0.3.5.4-alpha.
5661
5662  o Minor bugfixes (sendme, code structure):
5663    - Rename the trunnel SENDME file definition from sendme.trunnel to
5664      sendme_cell.trunnel to avoid having twice sendme.{c|h} in the
5665      repository. Fixes bug 30769; bugfix on 0.4.1.1-alpha.
5666
5667  o Minor bugfixes (statistics):
5668    - Stop removing the ed25519 signature if the extra info file is too
5669      big. If the signature data was removed, but the keyword was kept,
5670      this could result in an unparseable extra info file. Fixes bug
5671      30958; bugfix on 0.2.7.2-alpha.
5672
5673  o Minor bugfixes (subsystems):
5674    - Make the subsystem init order match the subsystem module
5675      dependencies. Call windows process security APIs as early as
5676      possible. Initialize logging before network and time, so that
5677      network and time can use logging. Fixes bug 31615; bugfix
5678      on 0.4.0.1-alpha.
5679
5680  o Minor bugfixes (testing):
5681    - Teach the util/socketpair_ersatz test to work correctly when we
5682      have no network stack configured. Fixes bug 30804; bugfix
5683      on 0.2.5.1-alpha.
5684
5685  o Minor bugfixes (v2 single onion services):
5686    - Always retry v2 single onion service intro and rend circuits with
5687      a 3-hop path. Previously, v2 single onion services used a 3-hop
5688      path when rendezvous circuits were retried after a remote or
5689      delayed failure, but a 1-hop path for immediate retries. Fixes bug
5690      23818; bugfix on 0.2.9.3-alpha.
5691
5692  o Minor bugfixes (v3 single onion services):
5693    - Always retry v3 single onion service intro and rend circuits with
5694      a 3-hop path. Previously, v3 single onion services used a 3-hop
5695      path when rend circuits were retried after a remote or delayed
5696      failure, but a 1-hop path for immediate retries. Fixes bug 23818;
5697      bugfix on 0.3.2.1-alpha.
5698    - Make v3 single onion services fall back to a 3-hop intro, when all
5699      intro points are unreachable via a 1-hop path. Previously, v3
5700      single onion services failed when all intro nodes were unreachable
5701      via a 1-hop path. Fixes bug 23507; bugfix on 0.3.2.1-alpha.
5702
5703  o Documentation:
5704    - Improve documentation in circuit padding subsystem. Patch by
5705      Tobias Pulls. Closes ticket 31113.
5706    - Include an example usage for IPv6 ORPort in our sample torrc.
5707      Closes ticket 31320; patch from Ali Raheem.
5708    - Use RFC 2397 data URL scheme to embed an image into tor-exit-
5709      notice.html so that operators no longer have to host it
5710      themselves. Closes ticket 31089.
5711
5712  o Removed features:
5713    - No longer include recommended package digests in votes as detailed
5714      in proposal 301. The RecommendedPackages torrc option is
5715      deprecated and will no longer have any effect. "package" lines
5716      will still be considered when computing consensuses for consensus
5717      methods that include them. (This change has no effect on the list
5718      of recommended Tor versions, which is still in use.) Closes
5719      ticket 29738.
5720    - Remove torctl.in from contrib/dist directory. Resolves
5721      ticket 30550.
5722
5723  o Testing:
5724    - Run shellcheck for all non-third-party shell scripts that are
5725      shipped with Tor. Closes ticket 29533.
5726    - When checking shell scripts, ignore any user-created directories.
5727      Closes ticket 30967.
5728
5729  o Code simplification and refactoring (config handling):
5730    - Extract our variable manipulation code from confparse.c to a new
5731      lower-level typedvar.h module. Closes ticket 30864.
5732    - Lower another layer of object management from confparse.c to a
5733      more general tool. Now typed structure members are accessible via
5734      an abstract type. Implements ticket 30914.
5735    - Move our backend logic for working with configuration and state
5736      files into a lower-level library, since it no longer depends on
5737      any tor-specific functionality. Closes ticket 31626.
5738    - Numerous simplifications in configuration-handling logic: remove
5739      duplicated macro definitions, replace magical names with flags,
5740      and refactor "TestingTorNetwork" to use the same default-option
5741      logic as the rest of Tor. Closes ticket 30935.
5742    - Replace our ad-hoc set of flags for configuration variables and
5743      configuration variable types with fine-grained orthogonal flags
5744      corresponding to the actual behavior we want. Closes ticket 31625.
5745
5746  o Code simplification and refactoring (misc):
5747    - Eliminate some uses of lower-level control reply abstractions,
5748      primarily in the onion_helper functions. Closes ticket 30889.
5749    - Rework bootstrap tracking to use the new publish-subscribe
5750      subsystem. Closes ticket 29976.
5751    - Rewrite format_node_description() and router_get_verbose_nickname()
5752      to use strlcpy() and strlcat(). The previous implementation used
5753      memcpy() and pointer arithmetic, which was error-prone. Closes
5754      ticket 31545. This is CID 1452819.
5755    - Split extrainfo_dump_to_string() into smaller functions. Closes
5756      ticket 30956.
5757    - Use the ptrdiff_t type consistently for expressing variable
5758      offsets and pointer differences. Previously we incorrectly (but
5759      harmlessly) used int and sometimes off_t for these cases. Closes
5760      ticket 31532.
5761    - Use the subsystems mechanism to manage the main event loop code.
5762      Closes ticket 30806.
5763    - Various simplifications and minor improvements to the circuit
5764      padding machines. Patch by Tobias Pulls. Closes tickets 31112
5765      and 31098.
5766
5767  o Documentation (hard-coded directories):
5768    - Improve the documentation for the DirAuthority and FallbackDir
5769      torrc options. Closes ticket 30955.
5770
5771  o Documentation (tor.1 man page):
5772    - Fix typo in tor.1 man page: the option is "--help", not "-help".
5773      Fixes bug 31008; bugfix on 0.2.2.9-alpha.
5774
5775
5776Changes in version 0.4.1.5 - 2019-08-20
5777  This is the first stable release in the 0.4.1.x series. This series
5778  adds experimental circuit-level padding, authenticated SENDME cells to
5779  defend against certain attacks, and several performance improvements
5780  to save on CPU consumption. It fixes bugs in bootstrapping and v3
5781  onion services. It also includes numerous smaller features and
5782  bugfixes on earlier versions.
5783
5784  Per our support policy, we will support the 0.4.1.x series for nine
5785  months, or until three months after the release of a stable 0.4.2.x:
5786  whichever is longer. If you need longer-term support, please stick
5787  with 0.3.5.x, which will we plan to support until Feb 2022.
5788
5789  Below are the changes since 0.4.1.4-rc. For a complete list of changes
5790  since 0.4.0.5, see the ReleaseNotes file.
5791
5792  o Directory authority changes:
5793    - The directory authority "dizum" has a new IP address. Closes
5794      ticket 31406.
5795
5796  o Minor features (circuit padding logging):
5797    - Demote noisy client-side warn logs about circuit padding to
5798      protocol warnings. Add additional log messages and circuit ID
5799      fields to help with bug 30992 and any other future issues.
5800
5801  o Minor bugfixes (circuit padding negotiation):
5802    - Bump the circuit padding protocol version to explicitly signify
5803      that the HS setup machine support is finalized in 0.4.1.x-stable.
5804      This also means that 0.4.1.x-alpha clients will not negotiate
5805      padding with 0.4.1.x-stable relays, and 0.4.1.x-stable clients
5806      will not negotiate padding with 0.4.1.x-alpha relays (or 0.4.0.x
5807      relays). Fixes bug 31356; bugfix on 0.4.1.1-alpha.
5808
5809  o Minor bugfixes (circuit padding):
5810    - Ignore non-padding cells on padding circuits. This addresses
5811      various warning messages from subsystems that were not expecting
5812      padding circuits. Fixes bug 30942; bugfix on 0.4.1.1-alpha.
5813
5814  o Minor bugfixes (clock skew detection):
5815    - Don't believe clock skew results from NETINFO cells that appear to
5816      arrive before we sent the VERSIONS cells they are responding to.
5817      Previously, we would accept them up to 3 minutes "in the past".
5818      Fixes bug 31343; bugfix on 0.2.4.4-alpha.
5819
5820  o Minor bugfixes (compatibility, standards compliance):
5821    - Fix a bug that would invoke undefined behavior on certain
5822      operating systems when trying to asprintf() a string exactly
5823      INT_MAX bytes long. We don't believe this is exploitable, but it's
5824      better to fix it anyway. Fixes bug 31001; bugfix on 0.2.2.11-alpha.
5825      Found and fixed by Tobias Stoeckmann.
5826
5827  o Minor bugfixes (compilation warning):
5828    - Fix a compilation warning on Windows about casting a function
5829      pointer for GetTickCount64(). Fixes bug 31374; bugfix
5830      on 0.2.9.1-alpha.
5831
5832  o Minor bugfixes (compilation):
5833    - Avoid using labs() on time_t, which can cause compilation warnings
5834      on 64-bit Windows builds. Fixes bug 31343; bugfix on 0.2.4.4-alpha.
5835
5836  o Minor bugfixes (distribution):
5837    - Do not ship any temporary files found in the
5838      scripts/maint/practracker directory. Fixes bug 31311; bugfix
5839      on 0.4.1.1-alpha.
5840
5841  o Testing (continuous integration):
5842    - In Travis, make stem log a controller trace to the console, and
5843      tail stem's tor log after failure. Closes ticket 30591.
5844    - In Travis, only run the stem tests that use a tor binary. Closes
5845      ticket 30694.
5846
5847
5848Changes in version 0.4.1.4-rc - 2019-07-25
5849  Tor 0.4.1.4-rc fixes a few bugs from previous versions of Tor, and
5850  updates to a new list of fallback directories. If no new bugs are
5851  found, the next release in the 0.4.1.x serious should be stable.
5852
5853  o Major bugfixes (circuit build, guard):
5854    - When considering upgrading circuits from "waiting for guard" to
5855      "open", always ignore circuits that are marked for close. Otherwise,
5856      we can end up in the situation where a subsystem is notified that
5857      a closing circuit has just opened, leading to undesirable
5858      behavior. Fixes bug 30871; bugfix on 0.3.0.1-alpha.
5859
5860  o Minor features (continuous integration):
5861    - Our Travis configuration now uses Chutney to run some network
5862      integration tests automatically. Closes ticket 29280.
5863
5864  o Minor features (fallback directory list):
5865    - Replace the 157 fallbacks originally introduced in Tor 0.3.5.6-rc
5866      in December 2018 (of which ~122 were still functional), with a
5867      list of 148 fallbacks (70 new, 78 existing, 79 removed) generated
5868      in June 2019. Closes ticket 28795.
5869
5870  o Minor bugfixes (circuit padding):
5871    - On relays, properly check that a padding machine is absent before
5872      logging a warning about it being absent. Fixes bug 30649; bugfix
5873      on 0.4.0.1-alpha.
5874    - Add two NULL checks in unreachable places to silence Coverity (CID
5875      144729 and 1447291) and better future-proof ourselves. Fixes bug
5876      31024; bugfix on 0.4.1.1-alpha.
5877
5878  o Minor bugfixes (crash on exit):
5879    - Avoid a set of possible code paths that could try to use freed
5880      memory in routerlist_free() while Tor was exiting. Fixes bug
5881      31003; bugfix on 0.1.2.2-alpha.
5882
5883  o Minor bugfixes (logging):
5884    - Fix a conflict between the flag used for messaging-domain log
5885      messages, and the LD_NO_MOCK testing flag. Fixes bug 31080; bugfix
5886      on 0.4.1.1-alpha.
5887
5888  o Minor bugfixes (memory leaks):
5889    - Fix a trivial memory leak when parsing an invalid value from a
5890      download schedule in the configuration. Fixes bug 30894; bugfix
5891      on 0.3.4.1-alpha.
5892
5893  o Code simplification and refactoring:
5894    - Remove some dead code from circpad_machine_remove_token() to fix
5895      some Coverity warnings (CID 1447298). Fixes bug 31027; bugfix
5896      on 0.4.1.1-alpha.
5897
5898
5899Changes in version 0.4.1.3-alpha - 2019-06-25
5900  Tor 0.4.1.3-alpha resolves numerous bugs left over from the previous
5901  alpha, most of them from earlier release series.
5902
5903  o Major bugfixes (Onion service reachability):
5904    - Properly clean up the introduction point map when circuits change
5905      purpose from onion service circuits to pathbias, measurement, or
5906      other circuit types. This should fix some service-side instances
5907      of introduction point failure. Fixes bug 29034; bugfix
5908      on 0.3.2.1-alpha.
5909
5910  o Minor features (geoip):
5911    - Update geoip and geoip6 to the June 10 2019 Maxmind GeoLite2
5912      Country database. Closes ticket 30852.
5913
5914  o Minor features (logging):
5915    - Give a more useful assertion failure message if we think we have
5916      minherit() but we fail to make a region non-inheritable. Give a
5917      compile-time warning if our support for minherit() is incomplete.
5918      Closes ticket 30686.
5919
5920  o Minor bugfixes (circuit isolation):
5921    - Fix a logic error that prevented the SessionGroup sub-option from
5922      being accepted. Fixes bug 22619; bugfix on 0.2.7.2-alpha.
5923
5924  o Minor bugfixes (continuous integration):
5925    - Allow the test-stem job to fail in Travis, because it sometimes
5926      hangs. Fixes bug 30744; bugfix on 0.3.5.4-alpha.
5927    - Skip test_rebind on macOS in Travis, because it is unreliable on
5928      macOS on Travis. Fixes bug 30713; bugfix on 0.3.5.1-alpha.
5929    - Skip test_rebind when the TOR_SKIP_TEST_REBIND environment
5930      variable is set. Fixes bug 30713; bugfix on 0.3.5.1-alpha.
5931
5932  o Minor bugfixes (directory authorities):
5933    - Stop crashing after parsing an unknown descriptor purpose
5934      annotation. We think this bug can only be triggered by modifying a
5935      local file. Fixes bug 30781; bugfix on 0.2.0.8-alpha.
5936
5937  o Minor bugfixes (pluggable transports):
5938    - When running as a bridge with pluggable transports, always publish
5939      pluggable transport information in our extrainfo descriptor, even
5940      if ExtraInfoStatistics is 0. This information is needed by
5941      BridgeDB. Fixes bug 30956; bugfix on 0.4.1.1-alpha.
5942
5943  o Documentation:
5944    - Mention URLs for Travis/Appveyor/Jenkins in ReleasingTor.md.
5945      Closes ticket 30630.
5946
5947
5948Changes in version 0.4.1.2-alpha - 2019-06-06
5949  Tor 0.4.1.2-alpha resolves numerous bugs--some of them from the
5950  previous alpha, and some much older. It also contains minor testing
5951  improvements, and an improvement to the security of our authenticated
5952  SENDME implementation.
5953
5954  o Major bugfixes (bridges):
5955    - Consider our directory information to have changed when our list
5956      of bridges changes. Previously, Tor would not re-compute the
5957      status of its directory information when bridges changed, and
5958      therefore would not realize that it was no longer able to build
5959      circuits. Fixes part of bug 29875.
5960    - Do not count previously configured working bridges towards our
5961      total of working bridges. Previously, when Tor's list of bridges
5962      changed, it would think that the old bridges were still usable,
5963      and delay fetching router descriptors for the new ones. Fixes part
5964      of bug 29875; bugfix on 0.3.0.1-alpha.
5965
5966  o Major bugfixes (flow control, SENDME):
5967    - Decrement the stream-level package window after packaging a cell.
5968      Previously, it was done inside a log_debug() call, meaning that if
5969      debug logs were not enabled, the decrement would never happen, and
5970      thus the window would be out of sync with the other end point.
5971      Fixes bug 30628; bugfix on 0.4.1.1-alpha.
5972
5973  o Major bugfixes (onion service reachability):
5974    - Properly clean up the introduction point map and associated state
5975      when circuits change purpose from onion service circuits to
5976      pathbias, measurement, or other circuit types. This may fix some
5977      instances of introduction point failure. Fixes bug 29034; bugfix
5978      on 0.3.2.1-alpha.
5979
5980  o Minor features (authenticated SENDME):
5981    - Ensure that there is enough randomness on every circuit to prevent
5982      an attacker from successfully predicting the hashes they will need
5983      to include in authenticated SENDME cells. At a random interval, if
5984      we have not sent randomness already, we now leave some extra space
5985      at the end of a cell that we can fill with random bytes. Closes
5986      ticket 26846.
5987
5988  o Minor features (continuous integration):
5989    - When running coverage builds on Travis, we now set
5990      TOR_TEST_RNG_SEED, to avoid RNG-based coverage differences. Part
5991      of ticket 28878.
5992
5993  o Minor features (maintenance):
5994    - Add a new "make autostyle" target that developers can use to apply
5995      all automatic Tor style and consistency conversions to the
5996      codebase. Closes ticket 30539.
5997
5998  o Minor features (testing):
5999    - The circuitpadding tests now use a reproducible RNG implementation,
6000      so that if a test fails, we can learn why. Part of ticket 28878.
6001    - Tor's tests now support an environment variable, TOR_TEST_RNG_SEED,
6002      to set the RNG seed for tests that use a reproducible RNG. Part of
6003      ticket 28878.
6004    - When running tests in coverage mode, take additional care to make
6005      our coverage deterministic, so that we can accurately track
6006      changes in code coverage. Closes ticket 30519.
6007
6008  o Minor bugfixes (configuration, proxies):
6009    - Fix a bug that prevented us from supporting SOCKS5 proxies that
6010      want authentication along with configured (but unused!)
6011      ClientTransportPlugins. Fixes bug 29670; bugfix on 0.2.6.1-alpha.
6012
6013  o Minor bugfixes (controller):
6014    - POSTDESCRIPTOR requests should work again. Previously, they were
6015      broken if a "purpose=" flag was specified. Fixes bug 30580; bugfix
6016      on 0.4.1.1-alpha.
6017    - Repair the HSFETCH command so that it works again. Previously, it
6018      expected a body when it shouldn't have. Fixes bug 30646; bugfix
6019      on 0.4.1.1-alpha.
6020
6021  o Minor bugfixes (developer tooling):
6022    - Fix pre-push hook to allow fixup and squash commits when pushing
6023      to non-upstream git remote. Fixes bug 30286; bugfix
6024      on 0.4.0.1-alpha.
6025
6026  o Minor bugfixes (directory authority):
6027    - Move the "bandwidth-file-headers" line in directory authority
6028      votes so that it conforms to dir-spec.txt. Fixes bug 30316; bugfix
6029      on 0.3.5.1-alpha.
6030
6031  o Minor bugfixes (NetBSD):
6032    - Fix usage of minherit() on NetBSD and other platforms that define
6033      MAP_INHERIT_{ZERO,NONE} instead of INHERIT_{ZERO,NONE}. Fixes bug
6034      30614; bugfix on 0.4.0.2-alpha. Patch from Taylor Campbell.
6035
6036  o Minor bugfixes (out-of-memory handler):
6037    - When purging the DNS cache because of an out-of-memory condition,
6038      try purging just the older entries at first. Previously, we would
6039      always purge the whole thing. Fixes bug 29617; bugfix
6040      on 0.3.5.1-alpha.
6041
6042  o Minor bugfixes (portability):
6043    - Avoid crashing in our tor_vasprintf() implementation on systems
6044      that define neither vasprintf() nor _vscprintf(). (This bug has
6045      been here long enough that we question whether people are running
6046      Tor on such systems, but we're applying the fix out of caution.)
6047      Fixes bug 30561; bugfix on 0.2.8.2-alpha. Found and fixed by
6048      Tobias Stoeckmann.
6049
6050  o Minor bugfixes (shutdown, libevent, memory safety):
6051    - Avoid use-after-free bugs when shutting down, by making sure that
6052      we shut down libevent only after shutting down all of its users.
6053      We believe these are harmless in practice, since they only occur
6054      on the shutdown path, and do not involve any attacker-controlled
6055      data. Fixes bug 30629; bugfix on 0.4.1.1-alpha.
6056
6057  o Minor bugfixes (static analysis):
6058    - Fix several spurious Coverity warnings about the unit tests, to
6059      lower our chances of missing real warnings in the future. Fixes
6060      bug 30150; bugfix on 0.3.5.1-alpha and various other Tor versions.
6061
6062  o Testing:
6063    - Specify torrc paths (with empty files) when launching tor in
6064      integration tests; refrain from reading user and system torrcs.
6065      Resolves issue 29702.
6066
6067
6068Changes in version 0.4.1.1-alpha - 2019-05-22
6069  This is the first alpha in the 0.4.1.x series. It introduces
6070  lightweight circuit padding to make some onion-service circuits harder
6071  to distinguish, includes a new "authenticated SENDME" feature to make
6072  certain denial-of-service attacks more difficult, and improves
6073  performance in several areas.
6074
6075  o Major features (circuit padding):
6076    - Onion service clients now add padding cells at the start of their
6077      INTRODUCE and RENDEZVOUS circuits, to make those circuits' traffic
6078      look more like general purpose Exit traffic. The overhead for this
6079      is 2 extra cells in each direction for RENDEZVOUS circuits, and 1
6080      extra upstream cell and 10 downstream cells for INTRODUCE
6081      circuits. This feature is only enabled when also supported by the
6082      circuit's middle node. (Clients may specify fixed middle nodes
6083      with the MiddleNodes option, and may force-disable this feature
6084      with the CircuitPadding option.) Closes ticket 28634.
6085
6086  o Major features (code organization):
6087    - Tor now includes a generic publish-subscribe message-passing
6088      subsystem that we can use to organize intermodule dependencies. We
6089      hope to use this to reduce dependencies between modules that don't
6090      need to be related, and to generally simplify our codebase. Closes
6091      ticket 28226.
6092
6093  o Major features (controller protocol):
6094    - Controller commands are now parsed using a generalized parsing
6095      subsystem. Previously, each controller command was responsible for
6096      parsing its own input, which led to strange inconsistencies.
6097      Closes ticket 30091.
6098
6099  o Major features (flow control):
6100    - Implement authenticated SENDMEs as detailed in proposal 289. A
6101      SENDME cell now includes the digest of the traffic that it
6102      acknowledges, so that once an end point receives the SENDME, it
6103      can confirm the other side's knowledge of the previous cells that
6104      were sent, and prevent certain types of denial-of-service attacks.
6105      This behavior is controlled by two new consensus parameters: see
6106      the proposal for more details. Fixes ticket 26288.
6107
6108  o Major features (performance):
6109    - Our node selection algorithm now excludes nodes in linear time.
6110      Previously, the algorithm was quadratic, which could slow down
6111      heavily used onion services. Closes ticket 30307.
6112
6113  o Major features (performance, RNG):
6114    - Tor now constructs a fast secure pseudorandom number generator for
6115      each thread, to use when performance is critical. This PRNG is
6116      based on AES-CTR, using a buffering construction similar to
6117      libottery and the (newer) OpenBSD arc4random() code. It
6118      outperforms OpenSSL 1.1.1a's CSPRNG by roughly a factor of 100 for
6119      small outputs. Although we believe it to be cryptographically
6120      strong, we are only using it when necessary for performance.
6121      Implements tickets 29023 and 29536.
6122
6123  o Major bugfixes (onion service v3):
6124    - Fix an unreachable bug in which an introduction point could try to
6125      send an INTRODUCE_ACK with a status code that Trunnel would refuse
6126      to encode, leading the relay to assert(). We've consolidated the
6127      ABI values into Trunnel now. Fixes bug 30454; bugfix
6128      on 0.3.0.1-alpha.
6129    - Clients can now handle unknown status codes from INTRODUCE_ACK
6130      cells. (The NACK behavior will stay the same.) This will allow us
6131      to extend status codes in the future without breaking the normal
6132      client behavior. Fixes another part of bug 30454; bugfix
6133      on 0.3.0.1-alpha.
6134
6135  o Minor features (circuit padding):
6136    - We now use a fast PRNG when scheduling circuit padding. Part of
6137      ticket 28636.
6138    - Allow the padding machine designer to pick the edges of their
6139      histogram instead of trying to compute them automatically using an
6140      exponential formula. Resolves some undefined behavior in the case
6141      of small histograms and allows greater flexibility on machine
6142      design. Closes ticket 29298; bugfix on 0.4.0.1-alpha.
6143    - Allow circuit padding machines to hold a circuit open until they
6144      are done padding it. Closes ticket 28780.
6145
6146  o Minor features (compile-time modules):
6147    - Add a "--list-modules" command to print a list of which compile-
6148      time modules are enabled. Closes ticket 30452.
6149
6150  o Minor features (continuous integration):
6151    - Remove sudo configuration lines from .travis.yml as they are no
6152      longer needed with current Travis build environment. Resolves
6153      issue 30213.
6154    - In Travis, show stem's tor log after failure. Closes ticket 30234.
6155
6156  o Minor features (controller):
6157    - Add onion service version 3 support to the HSFETCH command.
6158      Previously, only version 2 onion services were supported. Closes
6159      ticket 25417. Patch by Neel Chauhan.
6160
6161  o Minor features (debugging):
6162    - Introduce tor_assertf() and tor_assertf_nonfatal() to enable
6163      logging of additional information during assert failure. Now we
6164      can use format strings to include information for trouble
6165      shooting. Resolves ticket 29662.
6166
6167  o Minor features (defense in depth):
6168    - In smartlist_remove_keeporder(), set unused pointers to NULL, in
6169      case a bug causes them to be used later. Closes ticket 30176.
6170      Patch from Tobias Stoeckmann.
6171    - Tor now uses a cryptographically strong PRNG even for decisions
6172      that we do not believe are security-sensitive. Previously, for
6173      performance reasons, we had used a trivially predictable linear
6174      congruential generator algorithm for certain load-balancing and
6175      statistical sampling decisions. Now we use our fast RNG in those
6176      cases. Closes ticket 29542.
6177
6178  o Minor features (developer tools):
6179    - Tor's "practracker" test script now checks for files and functions
6180      that seem too long and complicated. Existing overlong functions
6181      and files are accepted for now, but should eventually be
6182      refactored. Closes ticket 29221.
6183    - Add some scripts used for git maintenance to scripts/git. Closes
6184      ticket 29391.
6185    - Call practracker from pre-push and pre-commit git hooks to let
6186      developers know if they made any code style violations. Closes
6187      ticket 30051.
6188    - Add a script to check that each header has a well-formed and
6189      unique guard macro. Closes ticket 29756.
6190
6191  o Minor features (geoip):
6192    - Update geoip and geoip6 to the May 13 2019 Maxmind GeoLite2
6193      Country database. Closes ticket 30522.
6194
6195  o Minor features (HTTP tunnel):
6196    - Return an informative web page when the HTTPTunnelPort is used as
6197      an HTTP proxy. Closes ticket 27821, patch by "eighthave".
6198
6199  o Minor features (IPv6, v3 onion services):
6200    - Make v3 onion services put IPv6 addresses in service descriptors.
6201      Before this change, service descriptors only contained IPv4
6202      addresses. Implements 26992.
6203
6204  o Minor features (modularity):
6205    - The "--disable-module-dirauth" compile-time option now disables
6206      even more dirauth-only code. Closes ticket 30345.
6207
6208  o Minor features (performance):
6209    - Use OpenSSL's implementations of SHA3 when available (in OpenSSL
6210      1.1.1 and later), since they tend to be faster than tiny-keccak.
6211      Closes ticket 28837.
6212
6213  o Minor features (testing):
6214    - Tor's unit test code now contains helper functions to replace the
6215      PRNG with a deterministic or reproducible version for testing.
6216      Previously, various tests implemented this in various ways.
6217      Implements ticket 29732.
6218    - We now have a script, cov-test-determinism.sh, to identify places
6219      where our unit test coverage has become nondeterministic. Closes
6220      ticket 29436.
6221    - Check that representative subsets of values of `int` and `unsigned
6222      int` can be represented by `void *`. Resolves issue 29537.
6223
6224  o Minor bugfixes (bridge authority):
6225    - Bridge authorities now set bridges as running or non-running when
6226      about to dump their status to a file. Previously, they set bridges
6227      as running in response to a GETINFO command, but those shouldn't
6228      modify data structures. Fixes bug 24490; bugfix on 0.2.0.13-alpha.
6229      Patch by Neel Chauhan.
6230
6231  o Minor bugfixes (channel padding statistics):
6232    - Channel padding write totals and padding-enabled totals are now
6233      counted properly in relay extrainfo descriptors. Fixes bug 29231;
6234      bugfix on 0.3.1.1-alpha.
6235
6236  o Minor bugfixes (circuit padding):
6237    - Add a "CircuitPadding" torrc option to disable circuit padding.
6238      Fixes bug 28693; bugfix on 0.4.0.1-alpha.
6239    - Allow circuit padding machines to specify that they do not
6240      contribute much overhead, and provide consensus flags and torrc
6241      options to force clients to only use these low overhead machines.
6242      Fixes bug 29203; bugfix on 0.4.0.1-alpha.
6243    - Provide a consensus parameter to fully disable circuit padding, to
6244      be used in emergency network overload situations. Fixes bug 30173;
6245      bugfix on 0.4.0.1-alpha.
6246    - The circuit padding subsystem will no longer schedule padding if
6247      dormant mode is enabled. Fixes bug 28636; bugfix on 0.4.0.1-alpha.
6248    - Inspect a circuit-level cell queue before sending padding, to
6249      avoid sending padding while too much data is already queued. Fixes
6250      bug 29204; bugfix on 0.4.0.1-alpha.
6251    - Avoid calling monotime_absolute_usec() in circuit padding machines
6252      that do not use token removal or circuit RTT estimation. Fixes bug
6253      29085; bugfix on 0.4.0.1-alpha.
6254
6255  o Minor bugfixes (compilation, unusual configurations):
6256    - Avoid failures when building with the ALL_BUGS_ARE_FATAL option
6257      due to missing declarations of abort(), and prevent other such
6258      failures in the future. Fixes bug 30189; bugfix on 0.3.4.1-alpha.
6259
6260  o Minor bugfixes (controller protocol):
6261    - Teach the controller parser to distinguish an object preceded by
6262      an argument list from one without. Previously, it couldn't
6263      distinguish an argument list from the first line of a multiline
6264      object. Fixes bug 29984; bugfix on 0.2.3.8-alpha.
6265
6266  o Minor bugfixes (directory authority, ipv6):
6267    - Directory authorities with IPv6 support now always mark themselves
6268      as reachable via IPv6. Fixes bug 24338; bugfix on 0.2.4.1-alpha.
6269      Patch by Neel Chauhan.
6270
6271  o Minor bugfixes (documentation):
6272    - Improve the documentation for using MapAddress with ".exit". Fixes
6273      bug 30109; bugfix on 0.1.0.1-rc.
6274    - Improve the monotonic time module and function documentation to
6275      explain what "monotonic" actually means, and document some results
6276      that have surprised people. Fixes bug 29640; bugfix
6277      on 0.2.9.1-alpha.
6278    - Use proper formatting when providing an example on quoting options
6279      that contain whitespace. Fixes bug 29635; bugfix on 0.2.3.18-rc.
6280
6281  o Minor bugfixes (logging):
6282    - Do not log a warning when running with an OpenSSL version other
6283      than the one Tor was compiled with, if the two versions should be
6284      compatible. Previously, we would warn whenever the version was
6285      different. Fixes bug 30190; bugfix on 0.2.4.2-alpha.
6286    - Warn operators when the MyFamily option is set but ContactInfo is
6287      missing, as the latter should be set too. Fixes bug 25110; bugfix
6288      on 0.3.3.1-alpha.
6289
6290  o Minor bugfixes (memory leak):
6291    - Avoid a minor memory leak that could occur on relays when failing
6292      to create a "keys" directory. Fixes bug 30148; bugfix
6293      on 0.3.3.1-alpha.
6294
6295  o Minor bugfixes (onion services):
6296    - Avoid a GCC 9.1.1 warning (and possible crash depending on libc
6297      implemenation) when failing to load an onion service client
6298      authorization file. Fixes bug 30475; bugfix on 0.3.5.1-alpha.
6299    - When refusing to launch a controller's HSFETCH request because of
6300      rate-limiting, respond to the controller with a new response,
6301      "QUERY_RATE_LIMITED". Previously, we would log QUERY_NO_HSDIR for
6302      this case. Fixes bug 28269; bugfix on 0.3.1.1-alpha. Patch by
6303      Neel Chauhan.
6304    - When relaunching a circuit to a rendezvous service, mark the
6305      circuit as needing high-uptime routers as appropriate. Fixes bug
6306      17357; bugfix on 0.1.0.1-rc. Patch by Neel Chauhan.
6307    - Stop ignoring IPv6 link specifiers sent to v3 onion services.
6308      (IPv6 support for v3 onion services is still incomplete: see
6309      ticket 23493 for details.) Fixes bug 23588; bugfix on
6310      0.3.2.1-alpha. Patch by Neel Chauhan.
6311
6312  o Minor bugfixes (onion services, performance):
6313    - When building circuits to onion services, call tor_addr_parse()
6314      less often. Previously, we called tor_addr_parse() in
6315      circuit_is_acceptable() even if its output wasn't used. This
6316      change should improve performance when building circuits. Fixes
6317      bug 22210; bugfix on 0.2.8.12. Patch by Neel Chauhan.
6318
6319  o Minor bugfixes (performance):
6320    - When checking whether a node is a bridge, use a fast check to make
6321      sure that its identity is set. Previously, we used a constant-time
6322      check, which is not necessary in this case. Fixes bug 30308;
6323      bugfix on 0.3.5.1-alpha.
6324
6325  o Minor bugfixes (pluggable transports):
6326    - Tor now sets TOR_PT_EXIT_ON_STDIN_CLOSE=1 for client transports as
6327      well as servers. Fixes bug 25614; bugfix on 0.2.7.1-alpha.
6328
6329  o Minor bugfixes (probability distributions):
6330    - Refactor and improve parts of the probability distribution code
6331      that made Coverity complain. Fixes bug 29805; bugfix
6332      on 0.4.0.1-alpha.
6333
6334  o Minor bugfixes (python):
6335    - Stop assuming that /usr/bin/python3 exists. For scripts that work
6336      with python2, use /usr/bin/python. Otherwise, use /usr/bin/env
6337      python3. Fixes bug 29913; bugfix on 0.2.5.3-alpha.
6338
6339  o Minor bugfixes (relay):
6340    - When running as a relay, if IPv6Exit is set to 1 while ExitRelay
6341      is auto, act as if ExitRelay is 1. Previously, we would ignore
6342      IPv6Exit if ExitRelay was 0 or auto. Fixes bug 29613; bugfix on
6343      0.3.5.1-alpha. Patch by Neel Chauhan.
6344
6345  o Minor bugfixes (stats):
6346    - When ExtraInfoStatistics is 0, stop including bandwidth usage
6347      statistics, GeoIPFile hashes, ServerTransportPlugin lines, and
6348      bridge statistics by country in extra-info documents. Fixes bug
6349      29018; bugfix on 0.2.4.1-alpha.
6350
6351  o Minor bugfixes (testing):
6352    - Call setrlimit() to disable core dumps in test_bt_cl.c. Previously
6353      we used `ulimit -c` in test_bt.sh, which violates POSIX shell
6354      compatibility. Fixes bug 29061; bugfix on 0.3.5.1-alpha.
6355    - Fix some incorrect code in the v3 onion service unit tests. Fixes
6356      bug 29243; bugfix on 0.3.2.1-alpha.
6357    - In the "routerkeys/*" tests, check the return values of mkdir()
6358      for possible failures. Fixes bug 29939; bugfix on 0.2.7.2-alpha.
6359      Found by Coverity as CID 1444254.
6360    - Split test_utils_general() into several smaller test functions.
6361      This makes it easier to perform resource deallocation on assert
6362      failure, and fixes Coverity warnings CID 1444117 and CID 1444118.
6363      Fixes bug 29823; bugfix on 0.2.9.1-alpha.
6364
6365  o Minor bugfixes (tor-resolve):
6366    - Fix a memory leak in tor-resolve that could happen if Tor gave it
6367      a malformed SOCKS response. (Memory leaks in tor-resolve don't
6368      actually matter, but it's good to fix them anyway.) Fixes bug
6369      30151; bugfix on 0.4.0.1-alpha.
6370
6371  o Code simplification and refactoring:
6372    - Abstract out the low-level formatting of replies on the control
6373      port. Implements ticket 30007.
6374    - Add several assertions in an attempt to fix some Coverity
6375      warnings. Closes ticket 30149.
6376    - Introduce a connection_dir_buf_add() helper function that checks
6377      for compress_state of dir_connection_t and automatically writes a
6378      string to directory connection with or without compression.
6379      Resolves issue 28816.
6380    - Make the base32_decode() API return the number of bytes written,
6381      for consistency with base64_decode(). Closes ticket 28913.
6382    - Move most relay-only periodic events out of mainloop.c into the
6383      relay subsystem. Closes ticket 30414.
6384    - Refactor and encapsulate parts of the codebase that manipulate
6385      crypt_path_t objects. Resolves issue 30236.
6386    - Refactor several places in our code that Coverity incorrectly
6387      believed might have memory leaks. Closes ticket 30147.
6388    - Remove redundant return values in crypto_format, and the
6389      associated return value checks elsewhere in the code. Make the
6390      implementations in crypto_format consistent, and remove redundant
6391      code. Resolves ticket 29660.
6392    - Rename tor_mem_is_zero() to fast_mem_is_zero(), to emphasize that
6393      it is not a constant-time function. Closes ticket 30309.
6394    - Replace hs_desc_link_specifier_t with link_specifier_t, and remove
6395      all hs_desc_link_specifier_t-specific code. Fixes bug 22781;
6396      bugfix on 0.3.2.1-alpha.
6397    - Simplify v3 onion service link specifier handling code. Fixes bug
6398      23576; bugfix on 0.3.2.1-alpha.
6399    - Split crypto_digest.c into NSS code, OpenSSL code, and shared
6400      code. Resolves ticket 29108.
6401    - Split control.c into several submodules, in preparation for
6402      distributing its current responsibilities throughout the codebase.
6403      Closes ticket 29894.
6404    - Start to move responsibility for knowing about periodic events to
6405      the appropriate subsystems, so that the mainloop doesn't need to
6406      know all the periodic events in the rest of the codebase.
6407      Implements tickets 30293 and 30294.
6408
6409  o Documentation:
6410    - Document how to find git commits and tags for bug fixes in
6411      CodingStandards.md. Update some file documentation. Closes
6412      ticket 30261.
6413
6414  o Removed features:
6415    - Remove the linux-tor-prio.sh script from contrib/operator-tools
6416      directory. Resolves issue 29434.
6417    - Remove the obsolete OpenSUSE initscript. Resolves issue 30076.
6418    - Remove the obsolete script at contrib/dist/tor.sh.in. Resolves
6419      issue 30075.
6420
6421  o Code simplification and refactoring (shell scripts):
6422    - Clean up many of our shell scripts to fix shellcheck warnings.
6423      These include autogen.sh (ticket 26069), test_keygen.sh (ticket
6424      29062), test_switch_id.sh (ticket 29065), test_rebind.sh (ticket
6425      29063), src/test/fuzz/minimize.sh (ticket 30079), test_rust.sh
6426      (ticket 29064), torify (ticket 29070), asciidoc-helper.sh (29926),
6427      fuzz_multi.sh (30077), fuzz_static_testcases.sh (ticket 29059),
6428      nagios-check-tor-authority-cert (ticket 29071),
6429      src/test/fuzz/fixup_filenames.sh (ticket 30078), test-network.sh
6430      (ticket 29060), test_key_expiration.sh (ticket 30002),
6431      zero_length_keys.sh (ticket 29068), and test_workqueue_*.sh
6432      (ticket 29067).
6433
6434  o Testing (chutney):
6435    - In "make test-network-all", test IPv6-only v3 single onion
6436      services, using the chutney network single-onion-v23-ipv6-md.
6437      Closes ticket 27251.
6438
6439
6440Changes in version 0.4.0.5 - 2019-05-02
6441  This is the first stable release in the 0.4.0.x series. It contains
6442  improvements for power management and bootstrap reporting, as well as
6443  preliminary backend support for circuit padding to prevent some kinds
6444  of traffic analysis. It also continues our work in refactoring Tor for
6445  long-term maintainability.
6446
6447  Per our support policy, we will support the 0.4.0.x series for nine
6448  months, or until three months after the release of a stable 0.4.1.x:
6449  whichever is longer. If you need longer-term support, please stick
6450  with 0.3.5.x, which will we plan to support until Feb 2022.
6451
6452  Below are the changes since 0.4.0.4-rc. For a complete list of changes
6453  since 0.3.5.7, see the ReleaseNotes file.
6454
6455  o Minor features (continuous integration):
6456    - In Travis, tell timelimit to use stem's backtrace signals, and
6457      launch python directly from timelimit, so python receives the
6458      signals from timelimit, rather than make. Closes ticket 30117.
6459
6460  o Minor features (diagnostic):
6461    - Add more diagnostic log messages in an attempt to solve the issue
6462      of NUL bytes appearing in a microdescriptor cache. Related to
6463      ticket 28223.
6464
6465  o Minor features (testing):
6466    - Use the approx_time() function when setting the "Expires" header
6467      in directory replies, to make them more testable. Needed for
6468      ticket 30001.
6469
6470  o Minor bugfixes (rust):
6471    - Abort on panic in all build profiles, instead of potentially
6472      unwinding into C code. Fixes bug 27199; bugfix on 0.3.3.1-alpha.
6473
6474  o Minor bugfixes (shellcheck):
6475    - Look for scripts in their correct locations during "make
6476      shellcheck". Previously we had looked in the wrong place during
6477      out-of-tree builds. Fixes bug 30263; bugfix on 0.4.0.1-alpha.
6478
6479  o Minor bugfixes (testing):
6480    - Check the time in the "Expires" header using approx_time(). Fixes
6481      bug 30001; bugfix on 0.4.0.4-rc.
6482
6483  o Minor bugfixes (UI):
6484    - Lower log level of unlink() errors during bootstrap. Fixes bug
6485      29930; bugfix on 0.4.0.1-alpha.
6486
6487
6488Changes in version 0.4.0.4-rc - 2019-04-11
6489  Tor 0.4.0.4-rc is the first release candidate in its series; it fixes
6490  several bugs from earlier versions, including some that had affected
6491  stability, and one that prevented relays from working with NSS.
6492
6493  o Major bugfixes (NSS, relay):
6494    - When running with NSS, disable TLS 1.2 ciphersuites that use
6495      SHA384 for their PRF. Due to an NSS bug, the TLS key exporters for
6496      these ciphersuites don't work -- which caused relays to fail to
6497      handshake with one another when these ciphersuites were enabled.
6498      Fixes bug 29241; bugfix on 0.3.5.1-alpha.
6499
6500  o Minor features (bandwidth authority):
6501    - Make bandwidth authorities ignore relays that are reported in the
6502      bandwidth file with the flag "vote=0". This change allows us to
6503      report unmeasured relays for diagnostic reasons without including
6504      their bandwidth in the bandwidth authorities' vote. Closes
6505      ticket 29806.
6506    - When a directory authority is using a bandwidth file to obtain the
6507      bandwidth values that will be included in the next vote, serve
6508      this bandwidth file at /tor/status-vote/next/bandwidth. Closes
6509      ticket 21377.
6510
6511  o Minor features (circuit padding):
6512    - Stop warning about undefined behavior in the probability
6513      distribution tests. Float division by zero may technically be
6514      undefined behavior in C, but it's well defined in IEEE 754.
6515      Partial backport of 29298. Closes ticket 29527; bugfix
6516      on 0.4.0.1-alpha.
6517
6518  o Minor features (continuous integration):
6519    - On Travis Rust builds, cleanup Rust registry and refrain from
6520      caching the "target/" directory to speed up builds. Resolves
6521      issue 29962.
6522
6523  o Minor features (dormant mode):
6524    - Add a DormantCanceledByStartup option to tell Tor that it should
6525      treat a startup event as cancelling any previous dormant state.
6526      Integrators should use this option with caution: it should only be
6527      used if Tor is being started because of something that the user
6528      did, and not if Tor is being automatically started in the
6529      background. Closes ticket 29357.
6530
6531  o Minor features (geoip):
6532    - Update geoip and geoip6 to the April 2 2019 Maxmind GeoLite2
6533      Country database. Closes ticket 29992.
6534
6535  o Minor features (NSS, diagnostic):
6536    - Try to log an error from NSS (if there is any) and a more useful
6537      description of our situation if we are using NSS and a call to
6538      SSL_ExportKeyingMaterial() fails. Diagnostic for ticket 29241.
6539
6540  o Minor bugfixes (security):
6541    - Fix a potential double free bug when reading huge bandwidth files.
6542      The issue is not exploitable in the current Tor network because
6543      the vulnerable code is only reached when directory authorities
6544      read bandwidth files, but bandwidth files come from a trusted
6545      source (usually the authorities themselves). Furthermore, the
6546      issue is only exploitable in rare (non-POSIX) 32-bit architectures,
6547      which are not used by any of the current authorities. Fixes bug
6548      30040; bugfix on 0.3.5.1-alpha. Bug found and fixed by
6549      Tobias Stoeckmann.
6550    - Verify in more places that we are not about to create a buffer
6551      with more than INT_MAX bytes, to avoid possible OOB access in the
6552      event of bugs. Fixes bug 30041; bugfix on 0.2.0.16. Found and
6553      fixed by Tobias Stoeckmann.
6554
6555  o Minor bugfix (continuous integration):
6556    - Reset coverage state on disk after Travis CI has finished. This
6557      should prevent future coverage merge errors from causing the test
6558      suite for the "process" subsystem to fail. The process subsystem
6559      was introduced in 0.4.0.1-alpha. Fixes bug 29036; bugfix
6560      on 0.2.9.15.
6561    - Terminate test-stem if it takes more than 9.5 minutes to run.
6562      (Travis terminates the job after 10 minutes of no output.)
6563      Diagnostic for 29437. Fixes bug 30011; bugfix on 0.3.5.4-alpha.
6564
6565  o Minor bugfixes (bootstrap reporting):
6566    - During bootstrap reporting, correctly distinguish pluggable
6567      transports from plain proxies. Fixes bug 28925; bugfix
6568      on 0.4.0.1-alpha.
6569
6570  o Minor bugfixes (C correctness):
6571    - Fix an unlikely memory leak in consensus_diff_apply(). Fixes bug
6572      29824; bugfix on 0.3.1.1-alpha. This is Coverity warning
6573      CID 1444119.
6574
6575  o Minor bugfixes (circuitpadding testing):
6576    - Minor tweaks to avoid rare test failures related to timers and
6577      monotonic time. Fixes bug 29500; bugfix on 0.4.0.1-alpha.
6578
6579  o Minor bugfixes (directory authorities):
6580    - Actually include the bandwidth-file-digest line in directory
6581      authority votes. Fixes bug 29959; bugfix on 0.4.0.2-alpha.
6582
6583  o Minor bugfixes (logging):
6584    - On Windows, when errors cause us to reload a consensus from disk,
6585      tell the user that we are retrying at log level "notice".
6586      Previously we only logged this information at "info", which was
6587      confusing because the errors themselves were logged at "warning".
6588      Improves previous fix for 28614. Fixes bug 30004; bugfix
6589      on 0.4.0.2-alpha.
6590
6591  o Minor bugfixes (pluggable transports):
6592    - Restore old behavior when it comes to discovering the path of a
6593      given Pluggable Transport executable file. A change in
6594      0.4.0.1-alpha had broken this behavior on paths containing a
6595      space. Fixes bug 29874; bugfix on 0.4.0.1-alpha.
6596
6597  o Minor bugfixes (testing):
6598    - Backport the 0.3.4 src/test/test-network.sh to 0.2.9. We need a
6599      recent test-network.sh to use new chutney features in CI. Fixes
6600      bug 29703; bugfix on 0.2.9.1-alpha.
6601    - Fix a test failure on Windows caused by an unexpected "BUG"
6602      warning in our tests for tor_gmtime_r(-1). Fixes bug 29922; bugfix
6603      on 0.2.9.3-alpha.
6604
6605  o Minor bugfixes (TLS protocol):
6606    - When classifying a client's selection of TLS ciphers, if the
6607      client ciphers are not yet available, do not cache the result.
6608      Previously, we had cached the unavailability of the cipher list
6609      and never looked again, which in turn led us to assume that the
6610      client only supported the ancient V1 link protocol. This, in turn,
6611      was causing Stem integration tests to stall in some cases. Fixes
6612      bug 30021; bugfix on 0.2.4.8-alpha.
6613
6614  o Code simplification and refactoring:
6615    - Introduce a connection_dir_buf_add() helper function that detects
6616      whether compression is in use, and adds a string accordingly.
6617      Resolves issue 28816.
6618    - Refactor handle_get_next_bandwidth() to use
6619      connection_dir_buf_add(). Implements ticket 29897.
6620
6621  o Documentation:
6622    - Clarify that Tor performs stream isolation among *Port listeners
6623      by default. Resolves issue 29121.
6624
6625
6626Changes in version 0.4.0.3-alpha - 2019-03-22
6627  Tor 0.4.0.3-alpha is the third in its series; it fixes several small
6628  bugs from earlier versions.
6629
6630  o Minor features (address selection):
6631    - Treat the subnet 100.64.0.0/10 as public for some purposes;
6632      private for others. This subnet is the RFC 6598 (Carrier Grade
6633      NAT) IP range, and is deployed by many ISPs as an alternative to
6634      RFC 1918 that does not break existing internal networks. Tor now
6635      blocks SOCKS and control ports on these addresses and warns users
6636      if client ports or ExtORPorts are listening on a RFC 6598 address.
6637      Closes ticket 28525. Patch by Neel Chauhan.
6638
6639  o Minor features (geoip):
6640    - Update geoip and geoip6 to the March 4 2019 Maxmind GeoLite2
6641      Country database. Closes ticket 29666.
6642
6643  o Minor bugfixes (circuitpadding):
6644    - Inspect the circuit-level cell queue before sending padding, to
6645      avoid sending padding when too much data is queued. Fixes bug
6646      29204; bugfix on 0.4.0.1-alpha.
6647
6648  o Minor bugfixes (logging):
6649    - Correct a misleading error message when IPv4Only or IPv6Only is
6650      used but the resolved address can not be interpreted as an address
6651      of the specified IP version. Fixes bug 13221; bugfix on
6652      0.2.3.9-alpha. Patch from Kris Katterjohn.
6653    - Log the correct port number for listening sockets when "auto" is
6654      used to let Tor pick the port number. Previously, port 0 was
6655      logged instead of the actual port number. Fixes bug 29144; bugfix
6656      on 0.3.5.1-alpha. Patch from Kris Katterjohn.
6657    - Stop logging a BUG() warning when Tor is waiting for exit
6658      descriptors. Fixes bug 28656; bugfix on 0.3.5.1-alpha.
6659
6660  o Minor bugfixes (memory management):
6661    - Refactor the shared random state's memory management so that it
6662      actually takes ownership of the shared random value pointers.
6663      Fixes bug 29706; bugfix on 0.2.9.1-alpha.
6664
6665  o Minor bugfixes (memory management, testing):
6666    - Stop leaking parts of the shared random state in the shared-random
6667      unit tests. Fixes bug 29599; bugfix on 0.2.9.1-alpha.
6668
6669  o Minor bugfixes (pluggable transports):
6670    - Fix an assertion failure crash bug when a pluggable transport is
6671      terminated during the bootstrap phase. Fixes bug 29562; bugfix
6672      on 0.4.0.1-alpha.
6673
6674  o Minor bugfixes (Rust, protover):
6675    - Add a missing "Padding" value to the Rust implementation of
6676      protover. Fixes bug 29631; bugfix on 0.4.0.1-alpha.
6677
6678  o Minor bugfixes (single onion services):
6679    - Allow connections to single onion services to remain idle without
6680      being disconnected. Previously, relays acting as rendezvous points
6681      for single onion services were mistakenly closing idle rendezvous
6682      circuits after 60 seconds, thinking that they were unused
6683      directory-fetching circuits that had served their purpose. Fixes
6684      bug 29665; bugfix on 0.2.1.26.
6685
6686  o Minor bugfixes (stats):
6687    - When ExtraInfoStatistics is 0, stop including PaddingStatistics in
6688      relay and bridge extra-info documents. Fixes bug 29017; bugfix
6689      on 0.3.1.1-alpha.
6690
6691  o Minor bugfixes (testing):
6692    - Downgrade some LOG_ERR messages in the address/* tests to
6693      warnings. The LOG_ERR messages were occurring when we had no
6694      configured network. We were failing the unit tests, because we
6695      backported 28668 to 0.3.5.8, but did not backport 29530. Fixes bug
6696      29530; bugfix on 0.3.5.8.
6697    - Fix our gcov wrapper script to look for object files at the
6698      correct locations. Fixes bug 29435; bugfix on 0.3.5.1-alpha.
6699    - Decrease the false positive rate of stochastic probability
6700      distribution tests. Fixes bug 29693; bugfix on 0.4.0.1-alpha.
6701
6702  o Minor bugfixes (Windows, CI):
6703    - Skip the Appveyor 32-bit Windows Server 2016 job, and 64-bit
6704      Windows Server 2012 R2 job. The remaining 2 jobs still provide
6705      coverage of 64/32-bit, and Windows Server 2016/2012 R2. Also set
6706      fast_finish, so failed jobs terminate the build immediately. Fixes
6707      bug 29601; bugfix on 0.3.5.4-alpha.
6708
6709
6710Changes in version 0.3.5.8 - 2019-02-21
6711  Tor 0.3.5.8 backports several fixes from later releases, including fixes
6712  for an annoying SOCKS-parsing bug that affected users in earlier 0.3.5.x
6713  releases.
6714
6715  It also includes a fix for a medium-severity security bug affecting Tor
6716  0.3.2.1-alpha and later. All Tor instances running an affected release
6717  should upgrade to 0.3.3.12, 0.3.4.11, 0.3.5.8, or 0.4.0.2-alpha.
6718
6719  o Major bugfixes (cell scheduler, KIST, security):
6720    - Make KIST consider the outbuf length when computing what it can
6721      put in the outbuf. Previously, KIST acted as though the outbuf
6722      were empty, which could lead to the outbuf becoming too full. It
6723      is possible that an attacker could exploit this bug to cause a Tor
6724      client or relay to run out of memory and crash. Fixes bug 29168;
6725      bugfix on 0.3.2.1-alpha. This issue is also being tracked as
6726      TROVE-2019-001 and CVE-2019-8955.
6727
6728  o Major bugfixes (networking, backport from 0.4.0.2-alpha):
6729    - Gracefully handle empty username/password fields in SOCKS5
6730      username/password auth message and allow SOCKS5 handshake to
6731      continue. Previously, we had rejected these handshakes, breaking
6732      certain applications. Fixes bug 29175; bugfix on 0.3.5.1-alpha.
6733
6734  o Minor features (compilation, backport from 0.4.0.2-alpha):
6735    - Compile correctly when OpenSSL is built with engine support
6736      disabled, or with deprecated APIs disabled. Closes ticket 29026.
6737      Patches from "Mangix".
6738
6739  o Minor features (geoip):
6740    - Update geoip and geoip6 to the February 5 2019 Maxmind GeoLite2
6741      Country database. Closes ticket 29478.
6742
6743  o Minor features (testing, backport from 0.4.0.2-alpha):
6744    - Treat all unexpected ERR and BUG messages as test failures. Closes
6745      ticket 28668.
6746
6747  o Minor bugfixes (onion service v3, client, backport from 0.4.0.1-alpha):
6748    - Stop logging a "BUG()" warning and stacktrace when we find a SOCKS
6749      connection waiting for a descriptor that we actually have in the
6750      cache. It turns out that this can actually happen, though it is
6751      rare. Now, tor will recover and retry the descriptor. Fixes bug
6752      28669; bugfix on 0.3.2.4-alpha.
6753
6754  o Minor bugfixes (IPv6, backport from 0.4.0.1-alpha):
6755    - Fix tor_ersatz_socketpair on IPv6-only systems. Previously, the
6756      IPv6 socket was bound using an address family of AF_INET instead
6757      of AF_INET6. Fixes bug 28995; bugfix on 0.3.5.1-alpha. Patch from
6758      Kris Katterjohn.
6759
6760  o Minor bugfixes (build, compatibility, rust, backport from 0.4.0.2-alpha):
6761    - Update Cargo.lock file to match the version made by the latest
6762      version of Rust, so that "make distcheck" will pass again. Fixes
6763      bug 29244; bugfix on 0.3.3.4-alpha.
6764
6765  o Minor bugfixes (client, clock skew, backport from 0.4.0.1-alpha):
6766    - Select guards even if the consensus has expired, as long as the
6767      consensus is still reasonably live. Fixes bug 24661; bugfix
6768      on 0.3.0.1-alpha.
6769
6770  o Minor bugfixes (compilation, backport from 0.4.0.1-alpha):
6771    - Compile correctly on OpenBSD; previously, we were missing some
6772      headers required in order to detect it properly. Fixes bug 28938;
6773      bugfix on 0.3.5.1-alpha. Patch from Kris Katterjohn.
6774
6775  o Minor bugfixes (documentation, backport from 0.4.0.2-alpha):
6776    - Describe the contents of the v3 onion service client authorization
6777      files correctly: They hold public keys, not private keys. Fixes
6778      bug 28979; bugfix on 0.3.5.1-alpha. Spotted by "Felixix".
6779
6780  o Minor bugfixes (logging, backport from 0.4.0.1-alpha):
6781    - Rework rep_hist_log_link_protocol_counts() to iterate through all
6782      link protocol versions when logging incoming/outgoing connection
6783      counts. Tor no longer skips version 5, and we won't have to
6784      remember to update this function when new link protocol version is
6785      developed. Fixes bug 28920; bugfix on 0.2.6.10.
6786
6787  o Minor bugfixes (logging, backport from 0.4.0.2-alpha):
6788    - Log more information at "warning" level when unable to read a
6789      private key; log more information at "info" level when unable to
6790      read a public key. We had warnings here before, but they were lost
6791      during our NSS work. Fixes bug 29042; bugfix on 0.3.5.1-alpha.
6792
6793  o Minor bugfixes (misc, backport from 0.4.0.2-alpha):
6794    - The amount of total available physical memory is now determined
6795      using the sysctl identifier HW_PHYSMEM (rather than HW_USERMEM)
6796      when it is defined and a 64-bit variant is not available. Fixes
6797      bug 28981; bugfix on 0.2.5.4-alpha. Patch from Kris Katterjohn.
6798
6799  o Minor bugfixes (onion services, backport from 0.4.0.2-alpha):
6800    - Avoid crashing if ClientOnionAuthDir (incorrectly) contains more
6801      than one private key for a hidden service. Fixes bug 29040; bugfix
6802      on 0.3.5.1-alpha.
6803    - In hs_cache_store_as_client() log an HSDesc we failed to parse at
6804      "debug" level. Tor used to log it as a warning, which caused very
6805      long log lines to appear for some users. Fixes bug 29135; bugfix
6806      on 0.3.2.1-alpha.
6807    - Stop logging "Tried to establish rendezvous on non-OR circuit..."
6808      as a warning. Instead, log it as a protocol warning, because there
6809      is nothing that relay operators can do to fix it. Fixes bug 29029;
6810      bugfix on 0.2.5.7-rc.
6811
6812  o Minor bugfixes (tests, directory clients, backport from 0.4.0.1-alpha):
6813    - Mark outdated dirservers when Tor only has a reasonably live
6814      consensus. Fixes bug 28569; bugfix on 0.3.2.5-alpha.
6815
6816  o Minor bugfixes (tests, backport from 0.4.0.2-alpha):
6817    - Detect and suppress "bug" warnings from the util/time test on
6818      Windows. Fixes bug 29161; bugfix on 0.2.9.3-alpha.
6819    - Do not log an error-level message if we fail to find an IPv6
6820      network interface from the unit tests. Fixes bug 29160; bugfix
6821      on 0.2.7.3-rc.
6822
6823  o Minor bugfixes (usability, backport from 0.4.0.1-alpha):
6824    - Stop saying "Your Guard ..." in pathbias_measure_{use,close}_rate().
6825      Some users took this phrasing to mean that the mentioned guard was
6826      under their control or responsibility, which it is not. Fixes bug
6827      28895; bugfix on Tor 0.3.0.1-alpha.
6828
6829
6830Changes in version 0.3.4.11 - 2019-02-21
6831  Tor 0.3.4.11 is the third stable release in its series.  It includes
6832  a fix for a medium-severity security bug affecting Tor 0.3.2.1-alpha and
6833  later. All Tor instances running an affected release should upgrade to
6834  0.3.3.12, 0.3.4.11, 0.3.5.8, or 0.4.0.2-alpha.
6835
6836  o Major bugfixes (cell scheduler, KIST, security):
6837    - Make KIST consider the outbuf length when computing what it can
6838      put in the outbuf. Previously, KIST acted as though the outbuf
6839      were empty, which could lead to the outbuf becoming too full. It
6840      is possible that an attacker could exploit this bug to cause a Tor
6841      client or relay to run out of memory and crash. Fixes bug 29168;
6842      bugfix on 0.3.2.1-alpha. This issue is also being tracked as
6843      TROVE-2019-001 and CVE-2019-8955.
6844
6845  o Minor features (geoip):
6846    - Update geoip and geoip6 to the February 5 2019 Maxmind GeoLite2
6847      Country database. Closes ticket 29478.
6848
6849  o Minor bugfixes (build, compatibility, rust, backport from 0.4.0.2-alpha):
6850    - Update Cargo.lock file to match the version made by the latest
6851      version of Rust, so that "make distcheck" will pass again. Fixes
6852      bug 29244; bugfix on 0.3.3.4-alpha.
6853
6854  o Minor bugfixes (onion services, backport from 0.4.0.2-alpha):
6855    - Stop logging "Tried to establish rendezvous on non-OR circuit..."
6856      as a warning. Instead, log it as a protocol warning, because there
6857      is nothing that relay operators can do to fix it. Fixes bug 29029;
6858      bugfix on 0.2.5.7-rc.
6859
6860
6861Changes in version 0.3.3.12 - 2019-02-21
6862  Tor 0.3.3.12 fixes a medium-severity security bug affecting Tor
6863  0.3.2.1-alpha and later. All Tor instances running an affected release
6864  should upgrade to 0.3.3.12, 0.3.4.11, 0.3.5.8, or 0.4.0.2-alpha.
6865
6866  This release marks the end of support for the Tor 0.3.3.x series. We
6867  recommend that users switch to either the Tor 0.3.4 series (supported
6868  until at least 10 June 2019), or the Tor 0.3.5 series, which will
6869  receive long-term support until at least 1 Feb 2022.
6870
6871  o Major bugfixes (cell scheduler, KIST, security):
6872    - Make KIST consider the outbuf length when computing what it can
6873      put in the outbuf. Previously, KIST acted as though the outbuf
6874      were empty, which could lead to the outbuf becoming too full. It
6875      is possible that an attacker could exploit this bug to cause a Tor
6876      client or relay to run out of memory and crash. Fixes bug 29168;
6877      bugfix on 0.3.2.1-alpha. This issue is also being tracked as
6878      TROVE-2019-001 and CVE-2019-8955.
6879
6880  o Minor features (geoip):
6881    - Update geoip and geoip6 to the February 5 2019 Maxmind GeoLite2
6882      Country database. Closes ticket 29478.
6883
6884  o Minor bugfixes (build, compatibility, rust, backport from 0.4.0.2-alpha):
6885    - Update Cargo.lock file to match the version made by the latest
6886      version of Rust, so that "make distcheck" will pass again. Fixes
6887      bug 29244; bugfix on 0.3.3.4-alpha.
6888
6889  o Minor bugfixes (onion services, backport from 0.4.0.2-alpha):
6890    - Stop logging "Tried to establish rendezvous on non-OR circuit..."
6891      as a warning. Instead, log it as a protocol warning, because there
6892      is nothing that relay operators can do to fix it. Fixes bug 29029;
6893      bugfix on 0.2.5.7-rc.
6894
6895
6896Changes in version 0.4.0.2-alpha - 2019-02-21
6897  Tor 0.4.0.2-alpha is the second alpha in its series; it fixes several
6898  bugs from earlier versions, including several that had broken
6899  backward compatibility.
6900
6901  It also includes a fix for a medium-severity security bug affecting Tor
6902  0.3.2.1-alpha and later. All Tor instances running an affected release
6903  should upgrade to 0.3.3.12, 0.3.4.11, 0.3.5.8, or 0.4.0.2-alpha.
6904
6905  o Major bugfixes (cell scheduler, KIST, security):
6906    - Make KIST consider the outbuf length when computing what it can
6907      put in the outbuf. Previously, KIST acted as though the outbuf
6908      were empty, which could lead to the outbuf becoming too full. It
6909      is possible that an attacker could exploit this bug to cause a Tor
6910      client or relay to run out of memory and crash. Fixes bug 29168;
6911      bugfix on 0.3.2.1-alpha. This issue is also being tracked as
6912      TROVE-2019-001 and CVE-2019-8955.
6913
6914  o Major bugfixes (networking):
6915    - Gracefully handle empty username/password fields in SOCKS5
6916      username/password auth messsage and allow SOCKS5 handshake to
6917      continue. Previously, we had rejected these handshakes, breaking
6918      certain applications. Fixes bug 29175; bugfix on 0.3.5.1-alpha.
6919
6920  o Major bugfixes (windows, startup):
6921    - When reading a consensus file from disk, detect whether it was
6922      written in text mode, and re-read it in text mode if so. Always
6923      write consensus files in binary mode so that we can map them into
6924      memory later. Previously, we had written in text mode, which
6925      confused us when we tried to map the file on windows. Fixes bug
6926      28614; bugfix on 0.4.0.1-alpha.
6927
6928  o Minor features (compilation):
6929    - Compile correctly when OpenSSL is built with engine support
6930      disabled, or with deprecated APIs disabled. Closes ticket 29026.
6931      Patches from "Mangix".
6932
6933  o Minor features (developer tooling):
6934    - Check that bugfix versions in changes files look like Tor versions
6935      from the versions spec. Warn when bugfixes claim to be on a future
6936      release. Closes ticket 27761.
6937    - Provide a git pre-commit hook that disallows committing if we have
6938      any failures in our code and changelog formatting checks. It is
6939      now available in scripts/maint/pre-commit.git-hook. Implements
6940      feature 28976.
6941
6942  o Minor features (directory authority):
6943    - When a directory authority is using a bandwidth file to obtain
6944      bandwidth values, include the digest of that file in the vote.
6945      Closes ticket 26698.
6946
6947  o Minor features (geoip):
6948    - Update geoip and geoip6 to the February 5 2019 Maxmind GeoLite2
6949      Country database. Closes ticket 29478.
6950
6951  o Minor features (testing):
6952    - Treat all unexpected ERR and BUG messages as test failures. Closes
6953      ticket 28668.
6954
6955  o Minor bugfixes (build, compatibility, rust):
6956    - Update Cargo.lock file to match the version made by the latest
6957      version of Rust, so that "make distcheck" will pass again. Fixes
6958      bug 29244; bugfix on 0.3.3.4-alpha.
6959
6960  o Minor bugfixes (compilation):
6961    - Fix compilation warnings in test_circuitpadding.c. Fixes bug
6962      29169; bugfix on 0.4.0.1-alpha.
6963    - Silence a compiler warning in test-memwipe.c on OpenBSD. Fixes bug
6964      29145; bugfix on 0.2.9.3-alpha. Patch from Kris Katterjohn.
6965
6966  o Minor bugfixes (documentation):
6967    - Describe the contents of the v3 onion service client authorization
6968      files correctly: They hold public keys, not private keys. Fixes
6969      bug 28979; bugfix on 0.3.5.1-alpha. Spotted by "Felixix".
6970
6971  o Minor bugfixes (linux seccomp sandbox):
6972    - Fix startup crash when experimental sandbox support is enabled.
6973      Fixes bug 29150; bugfix on 0.4.0.1-alpha. Patch by Peter Gerber.
6974
6975  o Minor bugfixes (logging):
6976    - Avoid logging that we are relaxing a circuit timeout when that
6977      timeout is fixed. Fixes bug 28698; bugfix on 0.2.4.7-alpha.
6978    - Log more information at "warning" level when unable to read a
6979      private key; log more information at "info" level when unable to
6980      read a public key. We had warnings here before, but they were lost
6981      during our NSS work. Fixes bug 29042; bugfix on 0.3.5.1-alpha.
6982
6983  o Minor bugfixes (misc):
6984    - The amount of total available physical memory is now determined
6985      using the sysctl identifier HW_PHYSMEM (rather than HW_USERMEM)
6986      when it is defined and a 64-bit variant is not available. Fixes
6987      bug 28981; bugfix on 0.2.5.4-alpha. Patch from Kris Katterjohn.
6988
6989  o Minor bugfixes (onion services):
6990    - Avoid crashing if ClientOnionAuthDir (incorrectly) contains more
6991      than one private key for a hidden service. Fixes bug 29040; bugfix
6992      on 0.3.5.1-alpha.
6993    - In hs_cache_store_as_client() log an HSDesc we failed to parse at
6994      "debug" level. Tor used to log it as a warning, which caused very
6995      long log lines to appear for some users. Fixes bug 29135; bugfix
6996      on 0.3.2.1-alpha.
6997    - Stop logging "Tried to establish rendezvous on non-OR circuit..."
6998      as a warning. Instead, log it as a protocol warning, because there
6999      is nothing that relay operators can do to fix it. Fixes bug 29029;
7000      bugfix on 0.2.5.7-rc.
7001
7002  o Minor bugfixes (scheduler):
7003    - When re-adding channels to the pending list, check the correct
7004      channel's sched_heap_idx. This issue has had no effect in mainline
7005      Tor, but could have led to bugs down the road in improved versions
7006      of our circuit scheduling code. Fixes bug 29508; bugfix
7007      on 0.3.2.10.
7008
7009  o Minor bugfixes (tests):
7010    - Fix intermittent failures on an adaptive padding test. Fixes one
7011      case of bug 29122; bugfix on 0.4.0.1-alpha.
7012    - Disable an unstable circuit-padding test that was failing
7013      intermittently because of an ill-defined small histogram. Such
7014      histograms will be allowed again after 29298 is implemented. Fixes
7015      a second case of bug 29122; bugfix on 0.4.0.1-alpha.
7016    - Detect and suppress "bug" warnings from the util/time test on
7017      Windows. Fixes bug 29161; bugfix on 0.2.9.3-alpha.
7018    - Do not log an error-level message if we fail to find an IPv6
7019      network interface from the unit tests. Fixes bug 29160; bugfix
7020      on 0.2.7.3-rc.
7021
7022  o Documentation:
7023    - In the manpage entry describing MapAddress torrc setting, use
7024      example IP addresses from ranges specified for use in documentation
7025      by RFC 5737. Resolves issue 28623.
7026
7027  o Removed features:
7028    - Remove the old check-tor script. Resolves issue 29072.
7029
7030
7031Changes in version 0.4.0.1-alpha - 2019-01-18
7032  Tor 0.4.0.1-alpha is the first release in the new 0.4.0.x series. It
7033  introduces improved features for power and bandwidth conservation,
7034  more accurate reporting of bootstrap progress for user interfaces, and
7035  an experimental backend for an exciting new adaptive padding feature.
7036  There is also the usual assortment of bugfixes and minor features, all
7037  described below.
7038
7039  o Major features (battery management, client, dormant mode):
7040    - When Tor is running as a client, and it is unused for a long time,
7041      it can now enter a "dormant" state. When Tor is dormant, it avoids
7042      network and CPU activity until it is reawoken either by a user
7043      request or by a controller command. For more information, see the
7044      configuration options starting with "Dormant". Implements tickets
7045      2149 and 28335.
7046    - The client's memory of whether it is "dormant", and how long it
7047      has spent idle, persists across invocations. Implements
7048      ticket 28624.
7049    - There is a DormantOnFirstStartup option that integrators can use
7050      if they expect that in many cases, Tor will be installed but
7051      not used.
7052
7053  o Major features (bootstrap reporting):
7054    - When reporting bootstrap progress, report the first connection
7055      uniformly, regardless of whether it's a connection for building
7056      application circuits. This allows finer-grained reporting of early
7057      progress than previously possible, with the improvements of ticket
7058      27169. Closes tickets 27167 and 27103. Addresses ticket 27308.
7059    - When reporting bootstrap progress, treat connecting to a proxy or
7060      pluggable transport as separate from having successfully used that
7061      proxy or pluggable transport to connect to a relay. Closes tickets
7062      27100 and 28884.
7063
7064  o Major features (circuit padding):
7065    - Implement preliminary support for the circuit padding portion of
7066      Proposal 254. The implementation supports Adaptive Padding (aka
7067      WTF-PAD) state machines for use between experimental clients and
7068      relays. Support is also provided for APE-style state machines that
7069      use probability distributions instead of histograms to specify
7070      inter-packet delay. At the moment, Tor does not provide any
7071      padding state machines that are used in normal operation: for now,
7072      this feature exists solely for experimentation. Closes
7073      ticket 28142.
7074
7075  o Major features (refactoring):
7076    - Tor now uses an explicit list of its own subsystems when
7077      initializing and shutting down. Previously, these systems were
7078      managed implicitly in various places throughout the codebase.
7079      (There may still be some subsystems using the old system.) Closes
7080      ticket 28330.
7081
7082  o Minor features (bootstrap reporting):
7083    - When reporting bootstrap progress, stop distinguishing between
7084      situations where only internal paths are available and situations
7085      where external paths are available. Previously, Tor would often
7086      erroneously report that it had only internal paths. Closes
7087      ticket 27402.
7088
7089  o Minor features (continuous integration):
7090    - Log Python version during each Travis CI job. Resolves
7091      issue 28551.
7092
7093  o Minor features (controller):
7094    - Add a DROPOWNERSHIP command to undo the effects of TAKEOWNERSHIP.
7095      Implements ticket 28843.
7096
7097  o Minor features (developer tooling):
7098    - Provide a git hook script to prevent "fixup!" and "squash!"
7099      commits from ending up in the master branch, as scripts/main/pre-
7100      push.git-hook. Closes ticket 27993.
7101
7102  o Minor features (directory authority):
7103    - Directory authorities support a new consensus algorithm, under
7104      which the family lines in microdescriptors are encoded in a
7105      canonical form. This change makes family lines more compressible
7106      in transit, and on the client. Closes ticket 28266; implements
7107      proposal 298.
7108
7109  o Minor features (directory authority, relay):
7110    - Authorities now vote on a "StaleDesc" flag to indicate that a
7111      relay's descriptor is so old that the relay should upload again
7112      soon. Relays treat this flag as a signal to upload a new
7113      descriptor. This flag will eventually let us remove the
7114      'published' date from routerstatus entries, and make our consensus
7115      diffs much smaller. Closes ticket 26770; implements proposal 293.
7116
7117  o Minor features (fallback directory mirrors):
7118    - Update the fallback whitelist based on operator opt-ins and opt-
7119      outs. Closes ticket 24805, patch by Phoul.
7120
7121  o Minor features (FreeBSD):
7122    - On FreeBSD-based systems, warn relay operators if the
7123      "net.inet.ip.random_id" sysctl (IP ID randomization) is disabled.
7124      Closes ticket 28518.
7125
7126  o Minor features (HTTP standards compliance):
7127    - Stop sending the header "Content-type: application/octet-stream"
7128      along with transparently compressed documents: this confused
7129      browsers. Closes ticket 28100.
7130
7131  o Minor features (IPv6):
7132    - We add an option ClientAutoIPv6ORPort, to make clients randomly
7133      prefer a node's IPv4 or IPv6 ORPort. The random preference is set
7134      every time a node is loaded from a new consensus or bridge config.
7135      We expect that this option will enable clients to bootstrap more
7136      quickly without having to determine whether they support IPv4,
7137      IPv6, or both. Closes ticket 27490. Patch by Neel Chauhan.
7138    - When using addrs_in_same_network_family(), avoid choosing circuit
7139      paths that pass through the same IPv6 subnet more than once.
7140      Previously, we only checked IPv4 subnets. Closes ticket 24393.
7141      Patch by Neel Chauhan.
7142
7143  o Minor features (log messages):
7144    - Improve log message in v3 onion services that could print out
7145      negative revision counters. Closes ticket 27707. Patch
7146      by "ffmancera".
7147
7148  o Minor features (memory usage):
7149    - Save memory by storing microdescriptor family lists with a more
7150      compact representation. Closes ticket 27359.
7151    - Tor clients now use mmap() to read consensus files from disk, so
7152      that they no longer need keep the full text of a consensus in
7153      memory when parsing it or applying a diff. Closes ticket 27244.
7154
7155  o Minor features (parsing):
7156    - Directory authorities now validate that router descriptors and
7157      ExtraInfo documents are in a valid subset of UTF-8, and reject
7158      them if they are not. Closes ticket 27367.
7159
7160  o Minor features (performance):
7161    - Cache the results of summarize_protocol_flags(), so that we don't
7162      have to parse the same protocol-versions string over and over.
7163      This should save us a huge number of malloc calls on startup, and
7164      may reduce memory fragmentation with some allocators. Closes
7165      ticket 27225.
7166    - Remove a needless memset() call from get_token_arguments, thereby
7167      speeding up the tokenization of directory objects by about 20%.
7168      Closes ticket 28852.
7169    - Replace parse_short_policy() with a faster implementation, to
7170      improve microdescriptor parsing time. Closes ticket 28853.
7171    - Speed up directory parsing a little by avoiding use of the non-
7172      inlined strcmp_len() function. Closes ticket 28856.
7173    - Speed up microdescriptor parsing by about 30%, to help improve
7174      startup time. Closes ticket 28839.
7175
7176  o Minor features (pluggable transports):
7177    - Add support for emitting STATUS updates to Tor's control port from
7178      a pluggable transport process. Closes ticket 28846.
7179    - Add support for logging to Tor's logging subsystem from a
7180      pluggable transport process. Closes ticket 28180.
7181
7182  o Minor features (process management):
7183    - Add a new process API for handling child processes. This new API
7184      allows Tor to have bi-directional communication with child
7185      processes on both Unix and Windows. Closes ticket 28179.
7186    - Use the subsystem manager to initialize and shut down the process
7187      module. Closes ticket 28847.
7188
7189  o Minor features (relay):
7190    - When listing relay families, list them in canonical form including
7191      the relay's own identity, and try to give a more useful set of
7192      warnings. Part of ticket 28266 and proposal 298.
7193
7194  o Minor features (required protocols):
7195    - Before exiting because of a missing required protocol, Tor will
7196      now check the publication time of the consensus, and not exit
7197      unless the consensus is newer than the Tor program's own release
7198      date. Previously, Tor would not check the consensus publication
7199      time, and so might exit because of a missing protocol that might
7200      no longer be required in a current consensus. Implements proposal
7201      297; closes ticket 27735.
7202
7203  o Minor features (testing):
7204    - Allow a HeartbeatPeriod of less than 30 minutes in testing Tor
7205      networks. Closes ticket 28840. Patch by Rob Jansen.
7206
7207  o Minor bugfixes (client, clock skew):
7208    - Bootstrap successfully even when Tor's clock is behind the clocks
7209      on the authorities. Fixes bug 28591; bugfix on 0.2.0.9-alpha.
7210    - Select guards even if the consensus has expired, as long as the
7211      consensus is still reasonably live. Fixes bug 24661; bugfix
7212      on 0.3.0.1-alpha.
7213
7214  o Minor bugfixes (compilation):
7215    - Compile correctly on OpenBSD; previously, we were missing some
7216      headers required in order to detect it properly. Fixes bug 28938;
7217      bugfix on 0.3.5.1-alpha. Patch from Kris Katterjohn.
7218
7219  o Minor bugfixes (directory clients):
7220    - Mark outdated dirservers when Tor only has a reasonably live
7221      consensus. Fixes bug 28569; bugfix on 0.3.2.5-alpha.
7222
7223  o Minor bugfixes (directory mirrors):
7224    - Even when a directory mirror's clock is behind the clocks on the
7225      authorities, we now allow the mirror to serve "future"
7226      consensuses. Fixes bug 28654; bugfix on 0.3.0.1-alpha.
7227
7228  o Minor bugfixes (DNS):
7229    - Gracefully handle an empty or absent resolve.conf file by falling
7230      back to using "localhost" as a DNS server (and hoping it works).
7231      Previously, we would just stop running as an exit. Fixes bug
7232      21900; bugfix on 0.2.1.10-alpha.
7233
7234  o Minor bugfixes (guards):
7235    - In count_acceptable_nodes(), the minimum number is now one bridge
7236      or guard node, and two non-guard nodes for a circuit. Previously,
7237      we had added up the sum of all nodes with a descriptor, but that
7238      could cause us to build failing circuits when we had either too
7239      many bridges or not enough guard nodes. Fixes bug 25885; bugfix on
7240      0.2.3.1-alpha. Patch by Neel Chauhan.
7241
7242  o Minor bugfixes (IPv6):
7243    - Fix tor_ersatz_socketpair on IPv6-only systems. Previously, the
7244      IPv6 socket was bound using an address family of AF_INET instead
7245      of AF_INET6. Fixes bug 28995; bugfix on 0.3.5.1-alpha. Patch from
7246      Kris Katterjohn.
7247
7248  o Minor bugfixes (logging):
7249    - Rework rep_hist_log_link_protocol_counts() to iterate through all
7250      link protocol versions when logging incoming/outgoing connection
7251      counts. Tor no longer skips version 5, and we won't have to
7252      remember to update this function when new link protocol version is
7253      developed. Fixes bug 28920; bugfix on 0.2.6.10.
7254
7255  o Minor bugfixes (networking):
7256    - Introduce additional checks into tor_addr_parse() to reject
7257      certain incorrect inputs that previously were not detected. Fixes
7258      bug 23082; bugfix on 0.2.0.10-alpha.
7259
7260  o Minor bugfixes (onion service v3, client):
7261    - Stop logging a "BUG()" warning and stacktrace when we find a SOCKS
7262      connection waiting for a descriptor that we actually have in the
7263      cache. It turns out that this can actually happen, though it is
7264      rare. Now, tor will recover and retry the descriptor. Fixes bug
7265      28669; bugfix on 0.3.2.4-alpha.
7266
7267  o Minor bugfixes (periodic events):
7268    - Refrain from calling routerlist_remove_old_routers() from
7269      check_descriptor_callback(). Instead, create a new hourly periodic
7270      event. Fixes bug 27929; bugfix on 0.2.8.1-alpha.
7271
7272  o Minor bugfixes (pluggable transports):
7273    - Make sure that data is continously read from standard output and
7274      standard error pipes of a pluggable transport child-process, to
7275      avoid deadlocking when a pipe's buffer is full. Fixes bug 26360;
7276      bugfix on 0.2.3.6-alpha.
7277
7278  o Minor bugfixes (unit tests):
7279    - Instead of relying on hs_free_all() to clean up all onion service
7280      objects in test_build_descriptors(), we now deallocate them one by
7281      one. This lets Coverity know that we are not leaking memory there
7282      and fixes CID 1442277. Fixes bug 28989; bugfix on 0.3.5.1-alpha.
7283
7284  o Minor bugfixes (usability):
7285    - Stop saying "Your Guard ..." in pathbias_measure_{use,close}_rate().
7286      Some users took this phrasing to mean that the mentioned guard was
7287      under their control or responsibility, which it is not. Fixes bug
7288      28895; bugfix on Tor 0.3.0.1-alpha.
7289
7290  o Code simplification and refactoring:
7291    - Reimplement NETINFO cell parsing and generation to rely on
7292      trunnel-generated wire format handling code. Closes ticket 27325.
7293    - Remove unnecessary unsafe code from the Rust macro "cstr!". Closes
7294      ticket 28077.
7295    - Rework SOCKS wire format handling to rely on trunnel-generated
7296      parsing/generation code. Resolves ticket 27620.
7297    - Split out bootstrap progress reporting from control.c into a
7298      separate file. Part of ticket 27402.
7299    - The .may_include files that we use to describe our directory-by-
7300      directory dependency structure now describe a noncircular
7301      dependency graph over the directories that they cover. Our
7302      checkIncludes.py tool now enforces this noncircularity. Closes
7303      ticket 28362.
7304
7305  o Documentation:
7306    - Mention that you cannot add a new onion service if Tor is already
7307      running with Sandbox enabled. Closes ticket 28560.
7308    - Improve ControlPort documentation. Mention that it accepts
7309      address:port pairs, and can be used multiple times. Closes
7310      ticket 28805.
7311    - Document the exact output of "tor --version". Closes ticket 28889.
7312
7313  o Removed features:
7314    - Stop responding to the 'GETINFO status/version/num-concurring' and
7315      'GETINFO status/version/num-versioning' control port commands, as
7316      those were deprecated back in 0.2.0.30. Also stop listing them in
7317      output of 'GETINFO info/names'. Resolves ticket 28757.
7318    - The scripts used to generate and maintain the list of fallback
7319      directories have been extracted into a new "fallback-scripts"
7320      repository. Closes ticket 27914.
7321
7322  o Testing:
7323    - Run shellcheck for scripts in the in scripts/ directory. Closes
7324      ticket 28058.
7325    - Add unit tests for tokenize_string() and get_next_token()
7326      functions. Resolves ticket 27625.
7327
7328  o Code simplification and refactoring (onion service v3):
7329    - Consolidate the authorized client descriptor cookie computation
7330      code from client and service into one function. Closes
7331      ticket 27549.
7332
7333  o Code simplification and refactoring (shell scripts):
7334    - Cleanup scan-build.sh to silence shellcheck warnings. Closes
7335      ticket 28007.
7336    - Fix issues that shellcheck found in chutney-git-bisect.sh.
7337      Resolves ticket 28006.
7338    - Fix issues that shellcheck found in updateRustDependencies.sh.
7339      Resolves ticket 28012.
7340    - Fix shellcheck warnings in cov-diff script. Resolves issue 28009.
7341    - Fix shellcheck warnings in run_calltool.sh. Resolves ticket 28011.
7342    - Fix shellcheck warnings in run_trunnel.sh. Resolves issue 28010.
7343    - Fix shellcheck warnings in scripts/test/coverage. Resolves
7344      issue 28008.
7345
7346
7347Changes in version 0.3.3.11 - 2019-01-07
7348  Tor 0.3.3.11 backports numerous fixes from later versions of Tor.
7349  numerous fixes, including an important fix for anyone using OpenSSL
7350  1.1.1. Anyone running an earlier version of Tor 0.3.3 should upgrade
7351  to this version, or to a later series.
7352
7353  As a reminder, support the Tor 0.3.3 series will end on 22 Feb 2019.
7354  We anticipate that this will be the last release of Tor 0.3.3, unless
7355  some major bug is before then. Some time between now and then, users
7356  should switch to either the Tor 0.3.4 series (supported until at least
7357  10 June 2019), or the Tor 0.3.5 series, which will receive long-term
7358  support until at least 1 Feb 2022.
7359
7360  o Major bugfixes (OpenSSL, portability, backport from 0.3.5.5-alpha):
7361    - Fix our usage of named groups when running as a TLS 1.3 client in
7362      OpenSSL 1.1.1. Previously, we only initialized EC groups when
7363      running as a relay, which caused clients to fail to negotiate TLS
7364      1.3 with relays. Fixes bug 28245; bugfix on 0.2.9.15 (when TLS 1.3
7365      support was added).
7366
7367  o Major bugfixes (restart-in-process, backport from 0.3.5.1-alpha):
7368    - Fix a use-after-free error that could be caused by passing Tor an
7369      impossible set of options that would fail during options_act().
7370      Fixes bug 27708; bugfix on 0.3.3.1-alpha.
7371
7372  o Minor features (continuous integration, backport from 0.3.5.1-alpha):
7373    - Only run one online rust build in Travis, to reduce network
7374      errors. Skip offline rust builds on Travis for Linux gcc, because
7375      they're redundant. Implements ticket 27252.
7376    - Skip gcc on OSX in Travis CI, because it's rarely used. Skip a
7377      duplicate hardening-off build in Travis on Tor 0.2.9. Skip gcc on
7378      Linux with default settings, because all the non-default builds
7379      use gcc on Linux. Implements ticket 27252.
7380
7381  o Minor features (continuous integration, backport from 0.3.5.3-alpha):
7382    - Use the Travis Homebrew addon to install packages on macOS during
7383      Travis CI. The package list is the same, but the Homebrew addon
7384      does not do a `brew update` by default. Implements ticket 27738.
7385
7386  o Minor features (fallback directory list, backport from 0.3.5.6-rc):
7387    - Replace the 150 fallbacks originally introduced in Tor
7388      0.3.3.1-alpha in January 2018 (of which ~115 were still
7389      functional), with a list of 157 fallbacks (92 new, 65 existing, 85
7390      removed) generated in December 2018. Closes ticket 24803.
7391
7392  o Minor features (geoip):
7393    - Update geoip and geoip6 to the January 3 2019 Maxmind GeoLite2
7394      Country database. Closes ticket 29012.
7395
7396  o Minor features (OpenSSL bug workaround, backport from 0.3.5.7):
7397    - Work around a bug in OpenSSL 1.1.1a, which prevented the TLS 1.3
7398      key export function from handling long labels. When this bug is
7399      detected, Tor will disable TLS 1.3. We recommend upgrading to a
7400      version of OpenSSL without this bug when it becomes available.
7401      Closes ticket 28973.
7402
7403  o Minor bugfixes (relay statistics, backport from 0.3.5.7):
7404    - Update relay descriptor on bandwidth changes only when the uptime
7405      is smaller than 24h, in order to reduce the efficiency of guard
7406      discovery attacks. Fixes bug 24104; bugfix on 0.1.1.6-alpha.
7407
7408  o Minor bugfixes (C correctness, backport from 0.3.5.4-alpha):
7409    - Avoid undefined behavior in an end-of-string check when parsing
7410      the BEGIN line in a directory object. Fixes bug 28202; bugfix
7411      on 0.2.0.3-alpha.
7412
7413  o Minor bugfixes (code safety, backport from 0.3.5.3-alpha):
7414    - Rewrite our assertion macros so that they no longer suppress the
7415      compiler's -Wparentheses warnings. Fixes bug 27709; bugfix
7416
7417  o Minor bugfixes (compilation, backport from 0.3.5.5-alpha):
7418    - Initialize a variable unconditionally in aes_new_cipher(), since
7419      some compilers cannot tell that we always initialize it before
7420      use. Fixes bug 28413; bugfix on 0.2.9.3-alpha.
7421
7422  o Minor bugfixes (directory authority, backport from 0.3.5.4-alpha):
7423    - Log additional info when we get a relay that shares an ed25519 ID
7424      with a different relay, instead making a BUG() warning. Fixes bug
7425      27800; bugfix on 0.3.2.1-alpha.
7426
7427  o Minor bugfixes (directory permissions, backport form 0.3.5.3-alpha):
7428    - When a user requests a group-readable DataDirectory, give it to
7429      them. Previously, when the DataDirectory and the CacheDirectory
7430      were the same, the default setting (0) for
7431      CacheDirectoryGroupReadable would override the setting for
7432      DataDirectoryGroupReadable. Fixes bug 26913; bugfix
7433      on 0.3.3.1-alpha.
7434
7435  o Minor bugfixes (onion service v3, backport from 0.3.5.1-alpha):
7436    - When the onion service directory can't be created or has the wrong
7437      permissions, do not log a stack trace. Fixes bug 27335; bugfix
7438      on 0.3.2.1-alpha.
7439
7440  o Minor bugfixes (onion service v3, backport from 0.3.5.2-alpha):
7441    - Close all SOCKS request (for the same .onion) if the newly fetched
7442      descriptor is unusable. Before that, we would close only the first
7443      one leaving the other hanging and let to time out by themselves.
7444      Fixes bug 27410; bugfix on 0.3.2.1-alpha.
7445
7446  o Minor bugfixes (onion service v3, backport from 0.3.5.3-alpha):
7447    - Don't warn so loudly when Tor is unable to decode an onion
7448      descriptor. This can now happen as a normal use case if a client
7449      gets a descriptor with client authorization but the client is not
7450      authorized. Fixes bug 27550; bugfix on 0.3.5.1-alpha.
7451
7452  o Minor bugfixes (onion service v3, backport from 0.3.5.6-rc):
7453    - When deleting an ephemeral onion service (DEL_ONION), do not close
7454      any rendezvous circuits in order to let the existing client
7455      connections finish by themselves or closed by the application. The
7456      HS v2 is doing that already so now we have the same behavior for
7457      all versions. Fixes bug 28619; bugfix on 0.3.3.1-alpha.
7458
7459  o Minor bugfixes (HTTP tunnel):
7460    - Fix a bug warning when closing an HTTP tunnel connection due to
7461      an HTTP request we couldn't handle. Fixes bug 26470; bugfix on
7462      0.3.2.1-alpha.
7463
7464  o Minor bugfixes (memory leaks, backport from 0.3.5.5-alpha):
7465    - Fix a harmless memory leak in libtorrunner.a. Fixes bug 28419;
7466      bugfix on 0.3.3.1-alpha. Patch from Martin Kepplinger.
7467
7468  o Minor bugfixes (netflow padding, backport from 0.3.5.1-alpha):
7469    - Ensure circuitmux queues are empty before scheduling or sending
7470      padding. Fixes bug 25505; bugfix on 0.3.1.1-alpha.
7471
7472  o Minor bugfixes (protover, backport from 0.3.5.3-alpha):
7473    - Reject protocol names containing bytes other than alphanumeric
7474      characters and hyphens ([A-Za-z0-9-]). Fixes bug 27316; bugfix
7475      on 0.2.9.4-alpha.
7476
7477  o Minor bugfixes (rust, backport from 0.3.5.1-alpha):
7478    - Compute protover votes correctly in the rust version of the
7479      protover code. Previously, the protover rewrite in 24031 allowed
7480      repeated votes from the same voter for the same protocol version
7481      to be counted multiple times in protover_compute_vote(). Fixes bug
7482      27649; bugfix on 0.3.3.5-rc.
7483    - Reject protover names that contain invalid characters. Fixes bug
7484      27687; bugfix on 0.3.3.1-alpha.
7485
7486  o Minor bugfixes (rust, backport from 0.3.5.2-alpha):
7487    - protover_all_supported() would attempt to allocate up to 16GB on
7488      some inputs, leading to a potential memory DoS. Fixes bug 27206;
7489      bugfix on 0.3.3.5-rc.
7490
7491  o Minor bugfixes (rust, backport from 0.3.5.4-alpha):
7492    - Fix a potential null dereference in protover_all_supported(). Add
7493      a test for it. Fixes bug 27804; bugfix on 0.3.3.1-alpha.
7494    - Return a string that can be safely freed by C code, not one
7495      created by the rust allocator, in protover_all_supported(). Fixes
7496      bug 27740; bugfix on 0.3.3.1-alpha.
7497    - Fix an API mismatch in the rust implementation of
7498      protover_compute_vote(). This bug could have caused crashes on any
7499      directory authorities running Tor with Rust (which we do not yet
7500      recommend). Fixes bug 27741; bugfix on 0.3.3.6.
7501
7502  o Minor bugfixes (testing, backport from 0.3.5.1-alpha):
7503    - If a unit test running in a subprocess exits abnormally or with a
7504      nonzero status code, treat the test as having failed, even if the
7505      test reported success. Without this fix, memory leaks don't cause
7506      the tests to fail, even with LeakSanitizer. Fixes bug 27658;
7507      bugfix on 0.2.2.4-alpha.
7508
7509  o Minor bugfixes (testing, backport from 0.3.5.4-alpha):
7510    - Treat backtrace test failures as expected on BSD-derived systems
7511      (NetBSD, OpenBSD, and macOS/Darwin) until we solve bug 17808.
7512      (FreeBSD failures have been treated as expected since 18204 in
7513      0.2.8.) Fixes bug 27948; bugfix on 0.2.5.2-alpha.
7514
7515  o Minor bugfixes (unit tests, guard selection, backport from 0.3.5.6-rc):
7516    - Stop leaking memory in an entry guard unit test. Fixes bug 28554;
7517      bugfix on 0.3.0.1-alpha.
7518
7519
7520Changes in version 0.3.4.10 - 2019-01-07
7521  Tor 0.3.4.9 is the second stable release in its series; it backports
7522  numerous fixes, including an important fix for relays, and for anyone
7523  using OpenSSL 1.1.1. Anyone running an  earlier version of Tor 0.3.4
7524  should upgrade.
7525
7526  As a reminder, the Tor 0.3.4 series will be supported until 10 June
7527  2019. Some time between now and then, users should switch to the Tor
7528  0.3.5 series, which will receive long-term support until at least 1
7529  Feb 2022.
7530
7531  o Major bugfixes (OpenSSL, portability, backport from 0.3.5.5-alpha):
7532    - Fix our usage of named groups when running as a TLS 1.3 client in
7533      OpenSSL 1.1.1. Previously, we only initialized EC groups when
7534      running as a relay, which caused clients to fail to negotiate TLS
7535      1.3 with relays. Fixes bug 28245; bugfix on 0.2.9.15 (when TLS 1.3
7536      support was added).
7537
7538  o Major bugfixes (relay, directory, backport from 0.3.5.7):
7539    - Always reactivate linked connections in the main loop so long as
7540      any linked connection has been active. Previously, connections
7541      serving directory information wouldn't get reactivated after the
7542      first chunk of data was sent (usually 32KB), which would prevent
7543      clients from bootstrapping. Fixes bug 28912; bugfix on
7544      0.3.4.1-alpha. Patch by "cypherpunks3".
7545
7546  o Minor features (continuous integration, Windows, backport from 0.3.5.6-rc):
7547    - Always show the configure and test logs, and upload them as build
7548      artifacts, when building for Windows using Appveyor CI.
7549      Implements 28459.
7550
7551  o Minor features (controller, backport from 0.3.5.1-alpha):
7552    - For purposes of CIRC_BW-based dropped cell detection, track half-
7553      closed stream ids, and allow their ENDs, SENDMEs, DATA and path
7554      bias check cells to arrive without counting it as dropped until
7555      either the END arrives, or the windows are empty. Closes
7556      ticket 25573.
7557
7558  o Minor features (fallback directory list, backport from 0.3.5.6-rc):
7559    - Replace the 150 fallbacks originally introduced in Tor
7560      0.3.3.1-alpha in January 2018 (of which ~115 were still
7561      functional), with a list of 157 fallbacks (92 new, 65 existing, 85
7562      removed) generated in December 2018. Closes ticket 24803.
7563
7564  o Minor features (geoip):
7565    - Update geoip and geoip6 to the November 6 2018 Maxmind GeoLite2
7566      Country database. Closes ticket 28395.
7567
7568  o Minor features (OpenSSL bug workaround, backport from 0.3.5.7):
7569    - Work around a bug in OpenSSL 1.1.1a, which prevented the TLS 1.3
7570      key export function from handling long labels. When this bug is
7571      detected, Tor will disable TLS 1.3. We recommend upgrading to a
7572      version of OpenSSL without this bug when it becomes available.
7573      Closes ticket 28973.
7574
7575  o Minor bugfixes (compilation, backport from 0.3.5.5-alpha):
7576    - Initialize a variable unconditionally in aes_new_cipher(), since
7577      some compilers cannot tell that we always initialize it before
7578      use. Fixes bug 28413; bugfix on 0.2.9.3-alpha.
7579
7580  o Minor bugfixes (connection, relay, backport from 0.3.5.5-alpha):
7581    - Avoid a logging a BUG() stacktrace when closing connection held
7582      open because the write side is rate limited but not the read side.
7583      Now, the connection read side is simply shut down until Tor is
7584      able to flush the connection and close it. Fixes bug 27750; bugfix
7585      on 0.3.4.1-alpha.
7586
7587  o Minor bugfixes (continuous integration, Windows, backport from 0.3.5.5-alpha):
7588    - Manually configure the zstd compiler options, when building using
7589      mingw on Appveyor Windows CI. The MSYS2 mingw zstd package does
7590      not come with a pkg-config file. Fixes bug 28454; bugfix
7591      on 0.3.4.1-alpha.
7592    - Stop using an external OpenSSL install, and stop installing MSYS2
7593      packages, when building using mingw on Appveyor Windows CI. Fixes
7594      bug 28399; bugfix on 0.3.4.1-alpha.
7595
7596  o Minor bugfixes (continuous integration, Windows, backport from 0.3.5.6-rc):
7597    - Explicitly specify the path to the OpenSSL library and do not
7598      download OpenSSL from Pacman, but instead use the library that is
7599      already provided by AppVeyor. Fixes bug 28574; bugfix on master.
7600
7601  o Minor bugfixes (directory permissions, backport form 0.3.5.3-alpha):
7602    - When a user requests a group-readable DataDirectory, give it to
7603      them. Previously, when the DataDirectory and the CacheDirectory
7604      were the same, the default setting (0) for
7605      CacheDirectoryGroupReadable would override the setting for
7606      DataDirectoryGroupReadable. Fixes bug 26913; bugfix
7607      on 0.3.3.1-alpha.
7608
7609  o Minor bugfixes (memory leaks, backport from 0.3.5.5-alpha):
7610    - Fix a harmless memory leak in libtorrunner.a. Fixes bug 28419;
7611      bugfix on 0.3.3.1-alpha. Patch from Martin Kepplinger.
7612
7613  o Minor bugfixes (onion service v3, backport from 0.3.5.3-alpha):
7614    - Don't warn so loudly when Tor is unable to decode an onion
7615      descriptor. This can now happen as a normal use case if a client
7616      gets a descriptor with client authorization but the client is not
7617      authorized. Fixes bug 27550; bugfix on 0.3.5.1-alpha.
7618
7619  o Minor bugfixes (onion service v3, backport from 0.3.5.6-rc):
7620    - When deleting an ephemeral onion service (DEL_ONION), do not close
7621      any rendezvous circuits in order to let the existing client
7622      connections finish by themselves or closed by the application. The
7623      HS v2 is doing that already so now we have the same behavior for
7624      all versions. Fixes bug 28619; bugfix on 0.3.3.1-alpha.
7625
7626  o Minor bugfixes (relay statistics, backport from 0.3.5.7):
7627    - Update relay descriptor on bandwidth changes only when the uptime
7628      is smaller than 24h, in order to reduce the efficiency of guard
7629      discovery attacks. Fixes bug 24104; bugfix on 0.1.1.6-alpha.
7630
7631  o Minor bugfixes (unit tests, guard selection, backport from 0.3.5.6-rc):
7632    - Stop leaking memory in an entry guard unit test. Fixes bug 28554;
7633      bugfix on 0.3.0.1-alpha.
7634
7635
7636Changes in version 0.3.5.7 - 2019-01-07
7637  Tor 0.3.5.7 is the first stable release in its series; it includes
7638  compilation and portability fixes, and a fix for a severe problem
7639  affecting directory caches.
7640
7641  The Tor 0.3.5 series includes several new features and performance
7642  improvements, including client authorization for v3 onion services,
7643  cleanups to bootstrap reporting, support for improved bandwidth-
7644  measurement tools, experimental support for NSS in place of OpenSSL,
7645  and much more. It also begins a full reorganization of Tor's code
7646  layout, for improved modularity and maintainability in the future.
7647  Finally, there is the usual set of performance improvements and
7648  bugfixes that we try to do in every release series.
7649
7650  There are a couple of changes in the 0.3.5 that may affect
7651  compatibility. First, the default version for newly created onion
7652  services is now v3. Use the HiddenServiceVersion option if you want to
7653  override this. Second, some log messages related to bootstrapping have
7654  changed; if you use stem, you may need to update to the latest version
7655  so it will recognize them.
7656
7657  We have designated 0.3.5 as a "long-term support" (LTS) series: we
7658  will continue to patch major bugs in typical configurations of 0.3.5
7659  until at least 1 Feb 2022. (We do not plan to provide long-term
7660  support for embedding, Rust support, NSS support, running a directory
7661  authority, or unsupported platforms. For these, you will need to stick
7662  with the latest stable release.)
7663
7664  Below are the changes since 0.3.5.6-rc. For a complete list of changes
7665  since 0.3.4.9, see the ReleaseNotes file.
7666
7667  o Major bugfixes (relay, directory):
7668    - Always reactivate linked connections in the main loop so long as
7669      any linked connection has been active. Previously, connections
7670      serving directory information wouldn't get reactivated after the
7671      first chunk of data was sent (usually 32KB), which would prevent
7672      clients from bootstrapping. Fixes bug 28912; bugfix on
7673      0.3.4.1-alpha. Patch by "cypherpunks3".
7674
7675  o Minor features (compilation):
7676    - When possible, place our warning flags in a separate file, to
7677      avoid flooding verbose build logs. Closes ticket 28924.
7678
7679  o Minor features (geoip):
7680    - Update geoip and geoip6 to the January 3 2019 Maxmind GeoLite2
7681      Country database. Closes ticket 29012.
7682
7683  o Minor features (OpenSSL bug workaround):
7684    - Work around a bug in OpenSSL 1.1.1a, which prevented the TLS 1.3
7685      key export function from handling long labels. When this bug is
7686      detected, Tor will disable TLS 1.3. We recommend upgrading to a
7687      version of OpenSSL without this bug when it becomes available.
7688      Closes ticket 28973.
7689
7690  o Minor features (performance):
7691    - Remove about 96% of the work from the function that we run at
7692      startup to test our curve25519_basepoint implementation. Since
7693      this function has yet to find an actual failure, we now only run
7694      it for 8 iterations instead of 200. Based on our profile
7695      information, this change should save around 8% of our startup time
7696      on typical desktops, and may have a similar effect on other
7697      platforms. Closes ticket 28838.
7698    - Stop re-validating our hardcoded Diffie-Hellman parameters on
7699      every startup. Doing this wasted time and cycles, especially on
7700      low-powered devices. Closes ticket 28851.
7701
7702  o Minor bugfixes (compilation):
7703    - Fix compilation for Android by adding a missing header to
7704      freespace.c. Fixes bug 28974; bugfix on 0.3.5.1-alpha.
7705
7706  o Minor bugfixes (correctness):
7707    - Fix an unreached code path where we checked the value of
7708      "hostname" inside send_resolved_hostname_cell(). Previously, we
7709      used it before checking it; now we check it first. Fixes bug
7710      28879; bugfix on 0.1.2.7-alpha.
7711
7712  o Minor bugfixes (testing):
7713    - Make sure that test_rebind.py actually obeys its timeout, even
7714      when it receives a large number of log messages. Fixes bug 28883;
7715      bugfix on 0.3.5.4-alpha.
7716    - Stop running stem's unit tests as part of "make test-stem", but
7717      continue to run stem's unit and online tests during "make test-
7718      stem-full". Fixes bug 28568; bugfix on 0.2.6.3-alpha.
7719
7720  o Minor bugfixes (windows services):
7721    - Make Tor start correctly as an NT service again: previously it was
7722      broken by refactoring. Fixes bug 28612; bugfix on 0.3.5.3-alpha.
7723
7724  o Code simplification and refactoring:
7725    - When parsing a port configuration, make it more obvious to static
7726      analyzer tools that we always initialize the address. Closes
7727      ticket 28881.
7728
7729
7730Changes in version 0.3.5.6-rc - 2018-12-18
7731  Tor 0.3.5.6-rc fixes numerous small bugs in earlier versions of Tor.
7732  It is the first release candidate in the 0.3.5.x series; if no further
7733  huge bugs are found, our next release may be the stable 0.3.5.x.
7734
7735  o Minor features (continuous integration, Windows):
7736    - Always show the configure and test logs, and upload them as build
7737      artifacts, when building for Windows using Appveyor CI.
7738      Implements 28459.
7739
7740  o Minor features (fallback directory list):
7741    - Replace the 150 fallbacks originally introduced in Tor
7742      0.3.3.1-alpha in January 2018 (of which ~115 were still
7743      functional), with a list of 157 fallbacks (92 new, 65 existing, 85
7744      removed) generated in December 2018. Closes ticket 24803.
7745
7746  o Minor features (geoip):
7747    - Update geoip and geoip6 to the December 5 2018 Maxmind GeoLite2
7748      Country database. Closes ticket 28744.
7749
7750  o Minor bugfixes (compilation):
7751    - Add missing dependency on libgdi32.dll for tor-print-ed-signing-
7752      cert.exe on Windows. Fixes bug 28485; bugfix on 0.3.5.1-alpha.
7753
7754  o Minor bugfixes (continuous integration, Windows):
7755    - Explicitly specify the path to the OpenSSL library and do not
7756      download OpenSSL from Pacman, but instead use the library that is
7757      already provided by AppVeyor. Fixes bug 28574; bugfix on master.
7758
7759  o Minor bugfixes (onion service v3):
7760    - When deleting an ephemeral onion service (DEL_ONION), do not close
7761      any rendezvous circuits in order to let the existing client
7762      connections finish by themselves or closed by the application. The
7763      HS v2 is doing that already so now we have the same behavior for
7764      all versions. Fixes bug 28619; bugfix on 0.3.3.1-alpha.
7765
7766  o Minor bugfixes (restart-in-process, boostrap):
7767    - Add missing resets of bootstrap tracking state when shutting down
7768      (regression caused by ticket 27169). Fixes bug 28524; bugfix
7769      on 0.3.5.1-alpha.
7770
7771  o Minor bugfixes (testing):
7772    - Use a separate DataDirectory for the test_rebind script.
7773      Previously, this script would run using the default DataDirectory,
7774      and sometimes fail. Fixes bug 28562; bugfix on 0.3.5.1-alpha.
7775      Patch from Taylor R Campbell.
7776    - Stop leaking memory in an entry guard unit test. Fixes bug 28554;
7777      bugfix on 0.3.0.1-alpha.
7778
7779  o Minor bugfixes (Windows):
7780    - Correctly identify Windows 8.1, Windows 10, and Windows Server
7781      2008 and later from their NT versions. Fixes bug 28096; bugfix on
7782      0.2.2.34; reported by Keifer Bly.
7783    - On recent Windows versions, the GetVersionEx() function may report
7784      an earlier Windows version than the running OS. To avoid user
7785      confusion, add "[or later]" to Tor's version string on affected
7786      versions of Windows. Fixes bug 28096; bugfix on 0.2.2.34; reported
7787      by Keifer Bly.
7788    - Remove Windows versions that were never supported by the
7789      GetVersionEx() function. Stop duplicating the latest Windows
7790      version in get_uname(). Fixes bug 28096; bugfix on 0.2.2.34;
7791      reported by Keifer Bly.
7792
7793  o Testing:
7794    - Increase logging and tag all log entries with timestamps in
7795      test_rebind.py. Provides diagnostics for issue 28229.
7796
7797  o Code simplification and refactoring (shared random, dirauth):
7798    - Change many tor_assert() to use BUG() instead. The idea is to not
7799      crash a dirauth but rather scream loudly with a stacktrace and let
7800      it continue run. The shared random subsystem is very resilient and
7801      if anything wrong happens with it, at worst a non coherent value
7802      will be put in the vote and discarded by the other authorities.
7803      Closes ticket 19566.
7804
7805  o Documentation (onion services):
7806    - Document in the man page that changing ClientOnionAuthDir value or
7807      adding a new file in the directory will not work at runtime upon
7808      sending a HUP if Sandbox 1. Closes ticket 28128.
7809    - Note in the man page that the only real way to fully revoke an
7810      onion service v3 client authorization is by restarting the tor
7811      process. Closes ticket 28275.
7812
7813
7814Changes in version 0.3.5.5-alpha - 2018-11-16
7815  Tor 0.3.5.5-alpha includes numerous bugfixes on earlier releases,
7816  including several that we hope to backport to older release series in
7817  the future.
7818
7819  o Major bugfixes (OpenSSL, portability):
7820    - Fix our usage of named groups when running as a TLS 1.3 client in
7821      OpenSSL 1.1.1. Previously, we only initialized EC groups when
7822      running as a relay, which caused clients to fail to negotiate TLS
7823      1.3 with relays. Fixes bug 28245; bugfix on 0.2.9.15 (when TLS 1.3
7824      support was added).
7825
7826  o Minor features (geoip):
7827    - Update geoip and geoip6 to the November 6 2018 Maxmind GeoLite2
7828      Country database. Closes ticket 28395.
7829
7830  o Minor bugfixes (compilation):
7831    - Initialize a variable unconditionally in aes_new_cipher(), since
7832      some compilers cannot tell that we always initialize it before
7833      use. Fixes bug 28413; bugfix on 0.2.9.3-alpha.
7834
7835  o Minor bugfixes (connection, relay):
7836    - Avoid a logging a BUG() stacktrace when closing connection held
7837      open because the write side is rate limited but not the read side.
7838      Now, the connection read side is simply shut down until Tor is
7839      able to flush the connection and close it. Fixes bug 27750; bugfix
7840      on 0.3.4.1-alpha.
7841
7842  o Minor bugfixes (continuous integration, Windows):
7843    - Manually configure the zstd compiler options, when building using
7844      mingw on Appveyor Windows CI. The MSYS2 mingw zstd package does
7845      not come with a pkg-config file. Fixes bug 28454; bugfix
7846      on 0.3.4.1-alpha.
7847    - Stop using an external OpenSSL install, and stop installing MSYS2
7848      packages, when building using mingw on Appveyor Windows CI. Fixes
7849      bug 28399; bugfix on 0.3.4.1-alpha.
7850
7851  o Minor bugfixes (documentation):
7852    - Make Doxygen work again after the code movement in the 0.3.5
7853      source tree. Fixes bug 28435; bugfix on 0.3.5.1-alpha.
7854
7855  o Minor bugfixes (Linux seccomp2 sandbox):
7856    - Permit the "shutdown()" system call, which is apparently used by
7857      OpenSSL under some circumstances. Fixes bug 28183; bugfix
7858      on 0.2.5.1-alpha.
7859
7860  o Minor bugfixes (logging):
7861    - Stop talking about the Named flag in log messages. Clients have
7862      ignored the Named flag since 0.3.2. Fixes bug 28441; bugfix
7863      on 0.3.2.1-alpha.
7864
7865  o Minor bugfixes (memory leaks):
7866    - Fix a harmless memory leak in libtorrunner.a. Fixes bug 28419;
7867      bugfix on 0.3.3.1-alpha. Patch from Martin Kepplinger.
7868
7869  o Minor bugfixes (onion services):
7870    - On an intro point for a version 3 onion service, stop closing
7871      introduction circuits on an NACK. This lets the client decide
7872      whether to reuse the circuit or discard it. Previously, we closed
7873      intro circuits when sending NACKs. Fixes bug 27841; bugfix on
7874      0.3.2.1-alpha. Patch by Neel Chaunan.
7875    - When replacing a descriptor in the client cache, make sure to
7876      close all client introduction circuits for the old descriptor, so
7877      we don't end up with unusable leftover circuits. Fixes bug 27471;
7878      bugfix on 0.3.2.1-alpha.
7879
7880
7881Changes in version 0.3.5.4-alpha - 2018-11-08
7882  Tor 0.3.5.4-alpha includes numerous bugfixes on earlier versions and
7883  improves our continuous integration support. It continues our attempts
7884  to stabilize this alpha branch and build it into a foundation for an
7885  acceptable long-term-support release.
7886
7887  o Major bugfixes (compilation, rust):
7888    - Rust tests can now build and run successfully with the
7889      --enable-fragile-hardening option enabled. Doing this currently
7890      requires the rust beta channel; it will be possible with stable
7891      rust once Rust version 1.31 is released. Patch from Alex Crichton.
7892      Fixes bugs 27272, 27273, and 27274. Bugfix on 0.3.1.1-alpha.
7893
7894  o Major bugfixes (embedding, main loop):
7895    - When DisableNetwork becomes set, actually disable periodic events
7896      that are already enabled. (Previously, we would refrain from
7897      enabling new ones, but we would leave the old ones turned on.)
7898      Fixes bug 28348; bugfix on 0.3.4.1-alpha.
7899
7900  o Minor features (continuous integration):
7901    - Add a Travis CI build for --enable-nss on Linux gcc. Closes
7902      ticket 27751.
7903    - Add new CI job to Travis configuration to run stem-based
7904      integration tests. Closes ticket 27913.
7905
7906  o Minor features (Windows, continuous integration):
7907    - Build tor on Windows Server 2012 R2 and Windows Server 2016 using
7908      Appveyor's CI. Closes ticket 28318.
7909
7910  o Minor bugfixes (C correctness, also in 0.3.4.9):
7911    - Avoid undefined behavior in an end-of-string check when parsing
7912      the BEGIN line in a directory object. Fixes bug 28202; bugfix
7913      on 0.2.0.3-alpha.
7914
7915  o Minor bugfixes (compilation):
7916    - Fix a pair of missing headers on OpenBSD. Fixes bug 28303; bugfix
7917      on 0.3.5.1-alpha. Patch from Kris Katterjohn.
7918
7919  o Minor bugfixes (compilation, OpenSolaris):
7920    - Fix compilation on OpenSolaris and its descendants by adding a
7921      missing include to compat_pthreads.c. Fixes bug 27963; bugfix
7922      on 0.3.5.1-alpha.
7923
7924  o Minor bugfixes (configuration):
7925    - Refuse to start with relative file paths and RunAsDaemon set
7926      (regression from the fix for bug 22731). Fixes bug 28298; bugfix
7927      on 0.3.3.1-alpha.
7928
7929  o Minor bugfixes (directory authority, also in 0.3.4.9):
7930    - Log additional info when we get a relay that shares an ed25519 ID
7931      with a different relay, instead of a BUG() warning with a
7932      backtrace. Fixes bug 27800; bugfix on 0.3.2.1-alpha.
7933
7934  o Minor bugfixes (onion service v3):
7935    - Build the service descriptor's signing key certificate before
7936      uploading, so we always have a fresh one: leaving no chances for
7937      it to expire service side. Fixes bug 27838; bugfix
7938      on 0.3.2.1-alpha.
7939
7940  o Minor bugfixes (onion service v3, client authorization):
7941    - Fix an assert() when adding a client authorization for the first
7942      time and then sending a HUP signal to the service. Before that,
7943      Tor would stop abruptly. Fixes bug 27995; bugfix on 0.3.5.1-alpha.
7944
7945  o Minor bugfixes (onion services):
7946    - Unless we have explicitly set HiddenServiceVersion, detect the
7947      onion service version and then look for invalid options.
7948      Previously, we did the reverse, but that broke existing configs
7949      which were pointed to a v2 service and had options like
7950      HiddenServiceAuthorizeClient set. Fixes bug 28127; bugfix on
7951      0.3.5.1-alpha. Patch by Neel Chauhan.
7952
7953  o Minor bugfixes (portability):
7954    - Make the OPE code (which is used for v3 onion services) run
7955      correctly on big-endian platforms. Fixes bug 28115; bugfix
7956      on 0.3.5.1-alpha.
7957
7958  o Minor bugfixes (protover, rust):
7959    - Reject extra commas in version strings. Fixes bug 27197; bugfix
7960      on 0.3.3.3-alpha.
7961
7962  o Minor bugfixes (relay shutdown, systemd):
7963    - Notify systemd of ShutdownWaitLength so it can be set to longer
7964      than systemd's TimeoutStopSec. In Tor's systemd service file, set
7965      TimeoutSec to 60 seconds to allow Tor some time to shut down.
7966      Fixes bug 28113; bugfix on 0.2.6.2-alpha.
7967
7968  o Minor bugfixes (rust, also in 0.3.4.9):
7969    - Fix a potential null dereference in protover_all_supported(). Add
7970      a test for it. Fixes bug 27804; bugfix on 0.3.3.1-alpha.
7971    - Return a string that can be safely freed by C code, not one
7972      created by the rust allocator, in protover_all_supported(). Fixes
7973      bug 27740; bugfix on 0.3.3.1-alpha.
7974
7975  o Minor bugfixes (rust, directory authority, also in 0.3.4.9):
7976    - Fix an API mismatch in the rust implementation of
7977      protover_compute_vote(). This bug could have caused crashes on any
7978      directory authorities running Tor with Rust (which we do not yet
7979      recommend). Fixes bug 27741; bugfix on 0.3.3.6.
7980
7981  o Minor bugfixes (testing):
7982    - Avoid hangs and race conditions in test_rebind.py. Fixes bug
7983      27968; bugfix on 0.3.5.1-alpha.
7984
7985  o Minor bugfixes (testing, also in 0.3.4.9):
7986    - Treat backtrace test failures as expected on BSD-derived systems
7987      (NetBSD, OpenBSD, and macOS/Darwin) until we solve bug 17808.
7988      (FreeBSD failures have been treated as expected since 18204 in
7989      0.2.8.) Fixes bug 27948; bugfix on 0.2.5.2-alpha.
7990
7991  o Documentation (onion service manpage):
7992    - Improve HSv3 client authorization by making some options more
7993      explicit and detailed. Closes ticket 28026. Patch by Mike Tigas.
7994
7995
7996Changes in version 0.3.4.9 - 2018-11-02
7997  Tor 0.3.4.9 is the second stable release in its series; it backports
7998  numerous fixes, including a fix for a bandwidth management bug that
7999  was causing memory exhaustion on relays. Anyone running an earlier
8000  version of Tor 0.3.4.9 should upgrade.
8001
8002  o Major bugfixes (compilation, backport from 0.3.5.3-alpha):
8003    - Fix compilation on ARM (and other less-used CPUs) when compiling
8004      with OpenSSL before 1.1. Fixes bug 27781; bugfix on 0.3.4.1-alpha.
8005
8006  o Major bugfixes (mainloop, bootstrap, backport from 0.3.5.3-alpha):
8007    - Make sure Tor bootstraps and works properly if only the
8008      ControlPort is set. Prior to this fix, Tor would only bootstrap
8009      when a client port was set (Socks, Trans, NATD, DNS or HTTPTunnel
8010      port). Fixes bug 27849; bugfix on 0.3.4.1-alpha.
8011
8012  o Major bugfixes (relay, backport from 0.3.5.3-alpha):
8013    - When our write bandwidth limit is exhausted, stop writing on the
8014      connection. Previously, we had a typo in the code that would make
8015      us stop reading instead, leading to relay connections being stuck
8016      indefinitely and consuming kernel RAM. Fixes bug 28089; bugfix
8017      on 0.3.4.1-alpha.
8018
8019  o Major bugfixes (restart-in-process, backport from 0.3.5.1-alpha):
8020    - Fix a use-after-free error that could be caused by passing Tor an
8021      impossible set of options that would fail during options_act().
8022      Fixes bug 27708; bugfix on 0.3.3.1-alpha.
8023
8024  o Minor features (continuous integration, backport from 0.3.5.1-alpha):
8025    - Don't do a distcheck with --disable-module-dirauth in Travis.
8026      Implements ticket 27252.
8027    - Only run one online rust build in Travis, to reduce network
8028      errors. Skip offline rust builds on Travis for Linux gcc, because
8029      they're redundant. Implements ticket 27252.
8030    - Skip gcc on OSX in Travis CI, because it's rarely used. Skip a
8031      duplicate hardening-off build in Travis on Tor 0.2.9. Skip gcc on
8032      Linux with default settings, because all the non-default builds
8033      use gcc on Linux. Implements ticket 27252.
8034
8035  o Minor features (continuous integration, backport from 0.3.5.3-alpha):
8036    - Use the Travis Homebrew addon to install packages on macOS during
8037      Travis CI. The package list is the same, but the Homebrew addon
8038      does not do a `brew update` by default. Implements ticket 27738.
8039
8040  o Minor features (geoip):
8041    - Update geoip and geoip6 to the October 9 2018 Maxmind GeoLite2
8042      Country database. Closes ticket 27991.
8043
8044  o Minor bugfixes (32-bit OSX and iOS, timing, backport from 0.3.5.2-alpha):
8045    - Fix an integer overflow bug in our optimized 32-bit millisecond-
8046      difference algorithm for 32-bit Apple platforms. Previously, it
8047      would overflow when calculating the difference between two times
8048      more than 47 days apart. Fixes part of bug 27139; bugfix
8049      on 0.3.4.1-alpha.
8050    - Improve the precision of our 32-bit millisecond difference
8051      algorithm for 32-bit Apple platforms. Fixes part of bug 27139;
8052      bugfix on 0.3.4.1-alpha.
8053    - Relax the tolerance on the mainloop/update_time_jumps test when
8054      running on 32-bit Apple platforms. Fixes part of bug 27139; bugfix
8055      on 0.3.4.1-alpha.
8056
8057  o Minor bugfixes (C correctness, to appear in 0.3.5.4-alpha):
8058    - Avoid undefined behavior in an end-of-string check when parsing
8059      the BEGIN line in a directory object. Fixes bug 28202; bugfix
8060      on 0.2.0.3-alpha.
8061
8062  o Minor bugfixes (CI, appveyor, to appear in 0.3.5.4-alpha):
8063    - Only install the necessary mingw packages during our appveyor
8064      builds. This change makes the build a little faster, and prevents
8065      a conflict with a preinstalled mingw openssl that appveyor now
8066      ships. Fixes bugs 27943 and 27765; bugfix on 0.3.4.2-alpha.
8067
8068  o Minor bugfixes (code safety, backport from 0.3.5.3-alpha):
8069    - Rewrite our assertion macros so that they no longer suppress the
8070      compiler's -Wparentheses warnings. Fixes bug 27709; bugfix
8071
8072  o Minor bugfixes (continuous integration, backport from 0.3.5.1-alpha):
8073    - Stop reinstalling identical packages in our Windows CI. Fixes bug
8074      27464; bugfix on 0.3.4.1-alpha.
8075
8076  o Minor bugfixes (directory authority, to appear in 0.3.5.4-alpha):
8077    - Log additional info when we get a relay that shares an ed25519 ID
8078      with a different relay, instead making a BUG() warning. Fixes bug
8079      27800; bugfix on 0.3.2.1-alpha.
8080
8081  o Minor bugfixes (directory connection shutdown, backport from 0.3.5.1-alpha):
8082    - Avoid a double-close when shutting down a stalled directory
8083      connection. Fixes bug 26896; bugfix on 0.3.4.1-alpha.
8084
8085  o Minor bugfixes (HTTP tunnel, backport from 0.3.5.1-alpha):
8086    - Fix a bug warning when closing an HTTP tunnel connection due to an
8087      HTTP request we couldn't handle. Fixes bug 26470; bugfix
8088      on 0.3.2.1-alpha.
8089
8090  o Minor bugfixes (netflow padding, backport from 0.3.5.1-alpha):
8091    - Ensure circuitmux queues are empty before scheduling or sending
8092      padding. Fixes bug 25505; bugfix on 0.3.1.1-alpha.
8093
8094  o Minor bugfixes (onion service v3, backport from 0.3.5.1-alpha):
8095    - When the onion service directory can't be created or has the wrong
8096      permissions, do not log a stack trace. Fixes bug 27335; bugfix
8097      on 0.3.2.1-alpha.
8098
8099  o Minor bugfixes (onion service v3, backport from 0.3.5.2-alpha):
8100    - Close all SOCKS request (for the same .onion) if the newly fetched
8101      descriptor is unusable. Before that, we would close only the first
8102      one leaving the other hanging and let to time out by themselves.
8103      Fixes bug 27410; bugfix on 0.3.2.1-alpha.
8104
8105  o Minor bugfixes (onion service v3, backport from 0.3.5.3-alpha):
8106    - When selecting a v3 rendezvous point, don't only look at the
8107      protover, but also check whether the curve25519 onion key is
8108      present. This way we avoid picking a relay that supports the v3
8109      rendezvous but for which we don't have the microdescriptor. Fixes
8110      bug 27797; bugfix on 0.3.2.1-alpha.
8111
8112  o Minor bugfixes (protover, backport from 0.3.5.3-alpha):
8113    - Reject protocol names containing bytes other than alphanumeric
8114      characters and hyphens ([A-Za-z0-9-]). Fixes bug 27316; bugfix
8115      on 0.2.9.4-alpha.
8116
8117  o Minor bugfixes (rust, backport from 0.3.5.1-alpha):
8118    - Compute protover votes correctly in the rust version of the
8119      protover code. Previously, the protover rewrite in 24031 allowed
8120      repeated votes from the same voter for the same protocol version
8121      to be counted multiple times in protover_compute_vote(). Fixes bug
8122      27649; bugfix on 0.3.3.5-rc.
8123    - Reject protover names that contain invalid characters. Fixes bug
8124      27687; bugfix on 0.3.3.1-alpha.
8125
8126  o Minor bugfixes (rust, backport from 0.3.5.2-alpha):
8127    - protover_all_supported() would attempt to allocate up to 16GB on
8128      some inputs, leading to a potential memory DoS. Fixes bug 27206;
8129      bugfix on 0.3.3.5-rc.
8130
8131  o Minor bugfixes (rust, directory authority, to appear in 0.3.5.4-alpha):
8132    - Fix an API mismatch in the rust implementation of
8133      protover_compute_vote(). This bug could have caused crashes on any
8134      directory authorities running Tor with Rust (which we do not yet
8135      recommend). Fixes bug 27741; bugfix on 0.3.3.6.
8136
8137  o Minor bugfixes (rust, to appear in 0.3.5.4-alpha):
8138    - Fix a potential null dereference in protover_all_supported(). Add
8139      a test for it. Fixes bug 27804; bugfix on 0.3.3.1-alpha.
8140    - Return a string that can be safely freed by C code, not one
8141      created by the rust allocator, in protover_all_supported(). Fixes
8142      bug 27740; bugfix on 0.3.3.1-alpha.
8143
8144  o Minor bugfixes (testing, backport from 0.3.5.1-alpha):
8145    - If a unit test running in a subprocess exits abnormally or with a
8146      nonzero status code, treat the test as having failed, even if the
8147      test reported success. Without this fix, memory leaks don't cause
8148      the tests to fail, even with LeakSanitizer. Fixes bug 27658;
8149      bugfix on 0.2.2.4-alpha.
8150
8151  o Minor bugfixes (testing, backport from 0.3.5.3-alpha):
8152    - Make the hs_service tests use the same time source when creating
8153      the introduction point and when testing it. Now tests work better
8154      on very slow systems like ARM or Travis. Fixes bug 27810; bugfix
8155      on 0.3.2.1-alpha.
8156
8157  o Minor bugfixes (testing, to appear in 0.3.5.4-alpha):
8158    - Treat backtrace test failures as expected on BSD-derived systems
8159      (NetBSD, OpenBSD, and macOS/Darwin) until we solve bug 17808.
8160      (FreeBSD failures have been treated as expected since 18204 in
8161      0.2.8.) Fixes bug 27948; bugfix on 0.2.5.2-alpha.
8162
8163
8164Changes in version 0.3.5.3-alpha - 2018-10-17
8165  Tor 0.3.5.3-alpha fixes several bugs, mostly from previous 0.3.5.x
8166  versions. One important fix for relays addresses a problem with rate-
8167  limiting code from back in 0.3.4.x: If the fix works out, we'll be
8168  backporting it soon. This release is still an alpha, but we hope it's
8169  getting closer and closer to stability.
8170
8171  o Major features (onion services):
8172    - Version 3 onion services can now use the per-service
8173      HiddenServiceExportCircuitID option to differentiate client
8174      circuits. It communicates with the service by using the HAProxy
8175      protocol to assign virtual IP addresses to inbound client
8176      circuits. Closes ticket 4700. Patch by Mahrud Sayrafi.
8177
8178  o Major bugfixes (compilation):
8179    - Fix compilation on ARM (and other less-used CPUs) when compiling
8180      with OpenSSL before 1.1. Fixes bug 27781; bugfix on 0.3.4.1-alpha.
8181
8182  o Major bugfixes (initialization, crash):
8183    - Fix an assertion crash that would stop Tor from starting up if it
8184      tried to activate a periodic event too early. Fixes bug 27861;
8185      bugfix on 0.3.5.1-alpha.
8186
8187  o Major bugfixes (mainloop, bootstrap):
8188    - Make sure Tor bootstraps and works properly if only the
8189      ControlPort is set. Prior to this fix, Tor would only bootstrap
8190      when a client port was set (Socks, Trans, NATD, DNS or HTTPTunnel
8191      port). Fixes bug 27849; bugfix on 0.3.4.1-alpha.
8192
8193  o Major bugfixes (relay):
8194    - When our write bandwidth limit is exhausted, stop writing on the
8195      connection. Previously, we had a typo in the code that would make
8196      us stop reading instead, leading to relay connections being stuck
8197      indefinitely and consuming kernel RAM. Fixes bug 28089; bugfix
8198      on 0.3.4.1-alpha.
8199
8200  o Minor features (continuous integration):
8201    - Use the Travis Homebrew addon to install packages on macOS during
8202      Travis CI. The package list is the same, but the Homebrew addon
8203      does not do a `brew update` by default. Implements ticket 27738.
8204    - Report what program produced the mysterious core file that we
8205      occasionally see on Travis CI during make distcheck. Closes
8206      ticket 28024.
8207
8208  o Minor features (geoip):
8209    - Update geoip and geoip6 to the October 9 2018 Maxmind GeoLite2
8210      Country database. Closes ticket 27991.
8211
8212  o Minor bugfixes (code safety):
8213    - Rewrite our assertion macros so that they no longer suppress the
8214      compiler's -Wparentheses warnings. Fixes bug 27709; bugfix
8215      on 0.0.6.
8216
8217  o Minor bugfixes (compilation):
8218    - Compile the ed25519-donna code with a correct declaration of
8219      crypto_strongest_rand(). Previously, we built it with one type,
8220      but linked it against another in the unit tests, which caused
8221      compilation failures with LTO enabled. This could have caused
8222      other undefined behavior in the tests. Fixes bug 27728; bugfix
8223      on 0.3.5.1-alpha.
8224
8225  o Minor bugfixes (compilation, netbsd):
8226    - Add a missing include back into procmon.c. Fixes bug 27990; bugfix
8227      on 0.3.5.1-alpha.
8228
8229  o Minor bugfixes (continuous integration, appveyor):
8230    - Install only the necessary mingw packages during our appveyor
8231      builds. This change makes the build a little faster, and prevents
8232      a conflict with a preinstalled mingw openssl that appveyor now
8233      ships. Fixes bugs 27765 and 27943; bugfix on 0.3.4.2-alpha.
8234
8235  o Minor bugfixes (directory permissions):
8236    - When a user requests a group-readable DataDirectory, give it to
8237      them. Previously, when the DataDirectory and the CacheDirectory
8238      were the same, the default setting (0) for
8239      CacheDirectoryGroupReadable would override the setting for
8240      DataDirectoryGroupReadable. Fixes bug 26913; bugfix
8241      on 0.3.3.1-alpha.
8242
8243  o Minor bugfixes (memory leaks):
8244    - Fix a small memory leak when calling Tor with --dump-config. Fixes
8245      bug 27893; bugfix on 0.3.2.1-alpha.
8246
8247  o Minor bugfixes (networking):
8248    - In retry_listeners_ports(), make sure that we're removing a member
8249      of old_conns smartlist at most once. Fixes bug 27808; bugfix
8250      on 0.3.5.1-alpha.
8251    - Refrain from attempting socket rebinding when old and new
8252      listeners are in different address families. Fixes bug 27928;
8253      bugfix on 0.3.5.1-alpha.
8254
8255  o Minor bugfixes (onion service v3):
8256    - Stop dumping a stack trace when trying to connect to an intro
8257      point without having a descriptor for it. Fixes bug 27774; bugfix
8258      on 0.3.2.1-alpha.
8259    - Don't warn so loudly when Tor is unable to decode an onion
8260      descriptor. This can now happen as a normal use case if a client
8261      gets a descriptor with client authorization but the client is not
8262      authorized. Fixes bug 27550; bugfix on 0.3.5.1-alpha.
8263    - When selecting a v3 rendezvous point, don't only look at the
8264      protover, but also check whether the curve25519 onion key is
8265      present. This way we avoid picking a relay that supports the v3
8266      rendezvous but for which we don't have the microdescriptor. Fixes
8267      bug 27797; bugfix on 0.3.2.1-alpha.
8268
8269  o Minor bugfixes (protover):
8270    - Reject protocol names containing bytes other than alphanumeric
8271      characters and hyphens ([A-Za-z0-9-]). Fixes bug 27316; bugfix
8272      on 0.2.9.4-alpha.
8273
8274  o Minor bugfixes (testing):
8275    - Make the hs_service tests use the same time source when creating
8276      the introduction point and when testing it. Now tests work better
8277      on very slow systems like ARM or Travis. Fixes bug 27810; bugfix
8278      on 0.3.2.1-alpha.
8279    - In test_rebind.py, check if the Python version is in the supported
8280      range. Fixes bug 27675; bugfix on 0.3.5.1-alpha.
8281
8282  o Code simplification and refactoring:
8283    - Divide more large Tor source files -- especially ones that span
8284      multiple areas of functionality -- into smaller parts, including
8285      onion.c and main.c. Closes ticket 26747.
8286    - Divide the "routerparse.c" module into separate modules for each
8287      group of parsed objects. Closes ticket 27924.
8288    - Move protover_rust.c to the same place protover.c was moved to.
8289      Closes ticket 27814.
8290    - Split directory.c into separate pieces for client, server, and
8291      common functionality. Closes ticket 26744.
8292    - Split the non-statistics-related parts from the rephist.c and
8293      geoip.c modules. Closes ticket 27892.
8294    - Split the router.c file into relay-only and shared components, to
8295      help with future modularization. Closes ticket 27864.
8296
8297  o Documentation:
8298    - In the tor-resolve(1) manpage, fix the reference to socks-
8299      extensions.txt by adding a web URL. Resolves ticket 27853.
8300    - Mention that we require Python to be 2.7 or newer for some
8301      integration tests that we ship with Tor. Resolves ticket 27677.
8302
8303
8304Changes in version 0.3.5.2-alpha - 2018-09-21
8305  Tor 0.3.5.2-alpha fixes several bugs in 0.3.5.1-alpha, including one
8306  that made Tor think it had run out of sockets. Anybody running a relay
8307  or an onion service on 0.3.5.1-alpha should upgrade.
8308
8309  o Major bugfixes (relay bandwidth statistics):
8310    - When we close relayed circuits, report the data in the circuit
8311      queues as being written in our relay bandwidth stats. This
8312      mitigates guard discovery and other attacks that close circuits
8313      for the explicit purpose of noticing this discrepancy in
8314      statistics. Fixes bug 23512; bugfix on 0.0.8pre3.
8315
8316  o Major bugfixes (socket accounting):
8317    - In our socket accounting code, count a socket as closed even when
8318      it is closed indirectly by the TLS layer. Previously, we would
8319      count these sockets as still in use, and incorrectly believe that
8320      we had run out of sockets. Fixes bug 27795; bugfix
8321      on 0.3.5.1-alpha.
8322
8323  o Minor bugfixes (32-bit OSX and iOS, timing):
8324    - Fix an integer overflow bug in our optimized 32-bit millisecond-
8325      difference algorithm for 32-bit Apple platforms. Previously, it
8326      would overflow when calculating the difference between two times
8327      more than 47 days apart. Fixes part of bug 27139; bugfix
8328      on 0.3.4.1-alpha.
8329    - Improve the precision of our 32-bit millisecond difference
8330      algorithm for 32-bit Apple platforms. Fixes part of bug 27139;
8331      bugfix on 0.3.4.1-alpha.
8332    - Relax the tolerance on the mainloop/update_time_jumps test when
8333      running on 32-bit Apple platforms. Fixes part of bug 27139; bugfix
8334      on 0.3.4.1-alpha.
8335
8336  o Minor bugfixes (onion service v3):
8337    - Close all SOCKS request (for the same .onion) if the newly fetched
8338      descriptor is unusable. Before that, we would close only the first
8339      one leaving the other hanging and let to time out by themselves.
8340      Fixes bug 27410; bugfix on 0.3.2.1-alpha.
8341
8342  o Minor bugfixes (memory leak):
8343    - Fix an unlikely memory leak when trying to read a private key from
8344      a ridiculously large file. Fixes bug 27764; bugfix on
8345      0.3.5.1-alpha. This is CID 1439488.
8346
8347  o Minor bugfixes (NSS):
8348    - Correctly detect failure to open a dummy TCP socket when stealing
8349      ownership of an fd from the NSS layer. Fixes bug 27782; bugfix
8350      on 0.3.5.1-alpha.
8351
8352  o Minor bugfixes (rust):
8353    - protover_all_supported() would attempt to allocate up to 16GB on
8354      some inputs, leading to a potential memory DoS. Fixes bug 27206;
8355      bugfix on 0.3.3.5-rc.
8356
8357  o Minor bugfixes (testing):
8358    - Revise the "conditionvar_timeout" test so that it succeeds even on
8359      heavily loaded systems where the test threads are not scheduled
8360      within 200 msec. Fixes bug 27073; bugfix on 0.2.6.3-alpha.
8361
8362  o Code simplification and refactoring:
8363    - Divide the routerlist.c and dirserv.c modules into smaller parts.
8364      Closes ticket 27799.
8365
8366
8367Changes in version 0.3.5.1-alpha - 2018-09-18
8368  Tor 0.3.5.1-alpha is the first release of the 0.3.5.x series. It adds
8369  client authorization for modern (v3) onion services, improves
8370  bootstrap reporting, begins reorganizing Tor's codebase, adds optional
8371  support for NSS in place of OpenSSL, and much more.
8372
8373  o Major features (onion services, UI change):
8374    - For a newly created onion service, the default version is now 3.
8375      Tor still supports existing version 2 services, but the operator
8376      now needs to set "HiddenServiceVersion 2" in order to create a new
8377      version 2 service. For existing services, Tor now learns the
8378      version by reading the key file. Closes ticket 27215.
8379
8380  o Major features (relay, UI change):
8381    - Relays no longer run as exits by default. If the "ExitRelay"
8382      option is auto (or unset), and no exit policy is specified with
8383      ExitPolicy or ReducedExitPolicy, we now treat ExitRelay as 0.
8384      Previously in this case, we allowed exit traffic and logged a
8385      warning message. Closes ticket 21530. Patch by Neel Chauhan.
8386    - Tor now validates that the ContactInfo config option is valid UTF-
8387      8 when parsing torrc. Closes ticket 27428.
8388
8389  o Major features (bootstrap):
8390    - Don't report directory progress until after a connection to a
8391      relay or bridge has succeeded. Previously, we'd report 80%
8392      progress based on cached directory information when we couldn't
8393      even connect to the network. Closes ticket 27169.
8394
8395  o Major features (new code layout):
8396    - Nearly all of Tor's source code has been moved around into more
8397      logical places. The "common" directory is now divided into a set
8398      of libraries in "lib", and files in the "or" directory have been
8399      split into "core" (logic absolutely needed for onion routing),
8400      "feature" (independent modules in Tor), and "app" (to configure
8401      and invoke the rest of Tor). See doc/HACKING/CodeStructure.md for
8402      more information. Closes ticket 26481.
8403
8404      This refactoring is not complete: although the libraries have been
8405      refactored to be acyclic, the main body of Tor is still too
8406      interconnected. We will attempt to improve this in the future.
8407
8408  o Major features (onion services v3):
8409    - Implement onion service client authorization at the descriptor
8410      level: only authorized clients can decrypt a service's descriptor
8411      to find out how to contact it. A new torrc option was added to
8412      control this client side: ClientOnionAuthDir <path>. On the
8413      service side, if the "authorized_clients/" directory exists in the
8414      onion service directory path, client configurations are read from
8415      the files within. See the manpage for more details. Closes ticket
8416      27547. Patch done by Suphanat Chunhapanya (haxxpop).
8417    - Improve revision counter generation in next-gen onion services.
8418      Onion services can now scale by hosting multiple instances on
8419      different hosts without synchronization between them, which was
8420      previously impossible because descriptors would get rejected by
8421      HSDirs. Addresses ticket 25552.
8422
8423  o Major features (portability, cryptography, experimental, TLS):
8424    - Tor now has the option to compile with the NSS library instead of
8425      OpenSSL. This feature is experimental, and we expect that bugs may
8426      remain. It is mainly intended for environments where Tor's
8427      performance is not CPU-bound, and where NSS is already known to be
8428      installed. To try it out, configure Tor with the --enable-nss
8429      flag. Closes tickets 26631, 26815, and 26816.
8430
8431      If you are experimenting with this option and using an old cached
8432      consensus, Tor may fail to start. To solve this, delete your
8433      "cached-consensus" and "cached-microdesc-consensus" files,
8434      (if present), and restart Tor.
8435
8436  o Major bugfixes (directory authority):
8437    - Actually check that the address we get from DirAuthority
8438      configuration line is valid IPv4. Explicitly disallow DirAuthority
8439      address to be a DNS hostname. Fixes bug 26488; bugfix
8440      on 0.1.2.10-rc.
8441
8442  o Major bugfixes (restart-in-process):
8443    - Fix a use-after-free error that could be caused by passing Tor an
8444      impossible set of options that would fail during options_act().
8445      Fixes bug 27708; bugfix on 0.3.3.1-alpha.
8446
8447  o Minor features (admin tools):
8448    - Add a new --key-expiration option to print the expiration date of
8449      the signing cert in an ed25519_signing_cert file. Resolves
8450      issue 19506.
8451
8452  o Minor features (build):
8453    - If you pass the "--enable-pic" option to configure, Tor will try
8454      to tell the compiler to build position-independent code suitable
8455      to link into a dynamic library. (The default remains -fPIE, for
8456      code suitable for a relocatable executable.) Closes ticket 23846.
8457
8458  o Minor features (code correctness, testing):
8459    - Tor's build process now includes a "check-includes" make target to
8460      verify that no module of Tor relies on any headers from a higher-
8461      level module. We hope to use this feature over time to help
8462      refactor our codebase. Closes ticket 26447.
8463
8464  o Minor features (code layout):
8465    - We have a new "lowest-level" error-handling API for use by code
8466      invoked from within the logging module. With this interface, the
8467      logging code is no longer at risk of calling into itself if a
8468      failure occurs while it is trying to log something. Closes
8469      ticket 26427.
8470
8471  o Minor features (compilation):
8472    - Tor's configure script now supports a --with-malloc= option to
8473      select your malloc implementation. Supported options are
8474      "tcmalloc", "jemalloc", "openbsd" (deprecated), and "system" (the
8475      default). Addresses part of ticket 20424. Based on a patch from
8476      Alex Xu.
8477
8478  o Minor features (config):
8479    - The "auto" keyword in torrc is now case-insensitive. Closes
8480      ticket 26663.
8481
8482  o Minor features (continuous integration):
8483    - Don't do a distcheck with --disable-module-dirauth in Travis.
8484      Implements ticket 27252.
8485    - Install libcap-dev and libseccomp2-dev so these optional
8486      dependencies get tested on Travis CI. Closes ticket 26560.
8487    - Only run one online rust build in Travis, to reduce network
8488      errors. Skip offline rust builds on Travis for Linux gcc, because
8489      they're redundant. Implements ticket 27252.
8490    - Skip gcc on OSX in Travis CI, because it's rarely used. Skip a
8491      duplicate hardening-off build in Travis on Tor 0.2.9. Skip gcc on
8492      Linux with default settings, because all the non-default builds
8493      use gcc on Linux. Implements ticket 27252.
8494
8495  o Minor features (controller):
8496    - Emit CIRC_BW events as soon as we detect that we processed an
8497      invalid or otherwise dropped cell on a circuit. This allows
8498      vanguards and other controllers to react more quickly to dropped
8499      cells. Closes ticket 27678.
8500    - For purposes of CIRC_BW-based dropped cell detection, track half-
8501      closed stream ids, and allow their ENDs, SENDMEs, DATA and path
8502      bias check cells to arrive without counting it as dropped until
8503      either the END arrives, or the windows are empty. Closes
8504      ticket 25573.
8505    - Implement a 'GETINFO md/all' controller command to enable getting
8506      all known microdescriptors. Closes ticket 8323.
8507    - The GETINFO command now support an "uptime" argument, to return
8508      Tor's uptime in seconds. Closes ticket 25132.
8509
8510  o Minor features (denial-of-service avoidance):
8511    - Make our OOM handler aware of the DNS cache so that it doesn't
8512      fill up the memory. This check is important for our DoS mitigation
8513      subsystem. Closes ticket 18642. Patch by Neel Chauhan.
8514
8515  o Minor features (development):
8516    - Tor's makefile now supports running the "clippy" Rust style tool
8517      on our Rust code. Closes ticket 22156.
8518
8519  o Minor features (directory authority):
8520    - There is no longer an artificial upper limit on the length of
8521      bandwidth lines. Closes ticket 26223.
8522    - When a bandwidth file is used to obtain the bandwidth measurements,
8523      include this bandwidth file headers in the votes. Closes
8524      ticket 3723.
8525    - Improved support for networks with only a single authority or a
8526      single fallback directory. Patch from Gabriel Somlo. Closes
8527      ticket 25928.
8528
8529  o Minor features (embedding API):
8530    - The Tor controller API now supports a function to launch Tor with
8531      a preconstructed owning controller FD, so that embedding
8532      applications don't need to manage controller ports and
8533      authentication. Closes ticket 24204.
8534    - The Tor controller API now has a function that returns the name
8535      and version of the backend implementing the API. Closes
8536      ticket 26947.
8537
8538  o Minor features (geoip):
8539    - Update geoip and geoip6 to the September 6 2018 Maxmind GeoLite2
8540      Country database. Closes ticket 27631.
8541
8542  o Minor features (memory management):
8543    - Get Libevent to use the same memory allocator as Tor, by calling
8544      event_set_mem_functions() during initialization. Resolves
8545      ticket 8415.
8546
8547  o Minor features (memory usage):
8548    - When not using them, store legacy TAP public onion keys in DER-
8549      encoded format, rather than as expanded public keys. This should
8550      save several megabytes on typical clients. Closes ticket 27246.
8551
8552  o Minor features (OpenSSL):
8553    - When possible, use RFC5869 HKDF implementation from OpenSSL rather
8554      than our own. Resolves ticket 19979.
8555
8556  o Minor features (Rust, code quality):
8557    - Improve rust code quality in the rust protover implementation by
8558      making it more idiomatic. Includes changing an internal API to
8559      take &str instead of &String. Closes ticket 26492.
8560
8561  o Minor features (testing):
8562    - Add scripts/test/chutney-git-bisect.sh, for bisecting using
8563      chutney. Implements ticket 27211.
8564
8565  o Minor features (tor-resolve):
8566    - The tor-resolve utility can now be used with IPv6 SOCKS proxies.
8567      Side-effect of the refactoring for ticket 26526.
8568
8569  o Minor features (UI):
8570    - Log each included configuration file or directory as we read it,
8571      to provide more visibility about where Tor is reading from. Patch
8572      from Unto Sten; closes ticket 27186.
8573    - Lower log level of "Scheduler type KIST has been enabled" to INFO.
8574      Closes ticket 26703.
8575
8576  o Minor bugfixes (bootstrap):
8577    - Try harder to get descriptors in non-exit test networks, by using
8578      the mid weight for the third hop when there are no exits. Fixes
8579      bug 27237; bugfix on 0.2.6.2-alpha.
8580
8581  o Minor bugfixes (C correctness):
8582    - Avoid casting smartlist index to int implicitly, as it may trigger
8583      a warning (-Wshorten-64-to-32). Fixes bug 26282; bugfix on
8584      0.2.3.13-alpha, 0.2.7.1-alpha and 0.2.1.1-alpha.
8585    - Use time_t for all values in
8586      predicted_ports_prediction_time_remaining(). Rework the code that
8587      computes difference between durations/timestamps. Fixes bug 27165;
8588      bugfix on 0.3.1.1-alpha.
8589
8590  o Minor bugfixes (client, memory usage):
8591    - When not running as a directory cache, there is no need to store
8592      the text of the current consensus networkstatus in RAM.
8593      Previously, however, clients would store it anyway, at a cost of
8594      over 5 MB. Now, they do not. Fixes bug 27247; bugfix
8595      on 0.3.0.1-alpha.
8596
8597  o Minor bugfixes (client, reachableaddresses):
8598    - Instead of adding a "reject *:*" line to ReachableAddresses when
8599      loading the configuration, add one to the policy after parsing it
8600      in parse_reachable_addresses(). This prevents extra "reject *.*"
8601      lines from accumulating on reloads. Fixes bug 20874; bugfix on
8602      0.1.1.5-alpha. Patch by Neel Chauhan.
8603
8604  o Minor bugfixes (code quality):
8605    - Rename sandbox_getaddrinfo() and other functions to no longer
8606      misleadingly suggest that they are sandbox-only. Fixes bug 26525;
8607      bugfix on 0.2.7.1-alpha.
8608
8609  o Minor bugfixes (configuration, Onion Services):
8610    - In rend_service_parse_port_config(), disallow any input to remain
8611      after address-port pair was parsed. This will catch address and
8612      port being whitespace-separated by mistake of the user. Fixes bug
8613      27044; bugfix on 0.2.9.10.
8614
8615  o Minor bugfixes (continuous integration):
8616    - Stop reinstalling identical packages in our Windows CI. Fixes bug
8617      27464; bugfix on 0.3.4.1-alpha.
8618
8619  o Minor bugfixes (controller):
8620    - Consider all routerinfo errors other than "not a server" to be
8621      transient for the purpose of "GETINFO exit-policy/*" controller
8622      request. Print stacktrace in the unlikely case of failing to
8623      recompute routerinfo digest. Fixes bug 27034; bugfix
8624      on 0.3.4.1-alpha.
8625
8626  o Minor bugfixes (directory connection shutdown):
8627    - Avoid a double-close when shutting down a stalled directory
8628      connection. Fixes bug 26896; bugfix on 0.3.4.1-alpha.
8629
8630  o Minor bugfixes (HTTP tunnel):
8631    - Fix a bug warning when closing an HTTP tunnel connection due to an
8632      HTTP request we couldn't handle. Fixes bug 26470; bugfix
8633      on 0.3.2.1-alpha.
8634
8635  o Minor bugfixes (ipv6):
8636    - In addrs_in_same_network_family(), we choose the subnet size based
8637      on the IP version (IPv4 or IPv6). Previously, we chose a fixed
8638      subnet size of /16 for both IPv4 and IPv6 addresses. Fixes bug
8639      15518; bugfix on 0.2.3.1-alpha. Patch by Neel Chauhan.
8640
8641  o Minor bugfixes (logging):
8642    - As a precaution, do an early return from log_addr_has_changed() if
8643      Tor is running as client. Also, log a stack trace for debugging as
8644      this function should only be called when Tor runs as server. Fixes
8645      bug 26892; bugfix on 0.1.1.9-alpha.
8646    - Refrain from mentioning bug 21018 in the logs, as it is already
8647      fixed. Fixes bug 25477; bugfix on 0.2.9.8.
8648
8649  o Minor bugfixes (logging, documentation):
8650    - When SafeLogging is enabled, scrub IP address in
8651      channel_tls_process_netinfo_cell(). Also, add a note to manpage
8652      that scrubbing is not guaranteed on loglevels below Notice. Fixes
8653      bug 26882; bugfix on 0.2.4.10-alpha.
8654
8655  o Minor bugfixes (netflow padding):
8656    - Ensure circuitmux queues are empty before scheduling or sending
8657      padding. Fixes bug 25505; bugfix on 0.3.1.1-alpha.
8658
8659  o Minor bugfixes (onion service v2):
8660    - Log at level "info", not "warning", in the case that we do not
8661      have a consensus when a .onion request comes in. This can happen
8662      normally while bootstrapping. Fixes bug 27040; bugfix
8663      on 0.2.8.2-alpha.
8664
8665  o Minor bugfixes (onion service v3):
8666    - When the onion service directory can't be created or has the wrong
8667      permissions, do not log a stack trace. Fixes bug 27335; bugfix
8668      on 0.3.2.1-alpha.
8669
8670  o Minor bugfixes (OS compatibility):
8671    - Properly handle configuration changes that move a listener to/from
8672      wildcard IP address. If the first attempt to bind a socket fails,
8673      close the old listener and try binding the socket again. Fixes bug
8674      17873; bugfix on 0.0.8pre-1.
8675
8676  o Minor bugfixes (performance)::
8677    - Rework node_is_a_configured_bridge() to no longer call
8678      node_get_all_orports(), which was performing too many memory
8679      allocations. Fixes bug 27224; bugfix on 0.2.3.9.
8680
8681  o Minor bugfixes (relay statistics):
8682    - Update relay descriptor on bandwidth changes only when the uptime
8683      is smaller than 24h, in order to reduce the efficiency of guard
8684      discovery attacks. Fixes bug 24104; bugfix on 0.1.1.6-alpha.
8685
8686  o Minor bugfixes (relays):
8687    - Consider the fact that we'll be making direct connections to our
8688      entry and guard nodes when computing the fraction of nodes that
8689      have their descriptors. Also, if we are using bridges and there is
8690      at least one bridge with a full descriptor, treat the fraction of
8691      guards available as 100%. Fixes bug 25886; bugfix on 0.2.4.10-alpha.
8692      Patch by Neel Chauhan.
8693    - Update the message logged on relays when DirCache is disabled.
8694      Since 0.3.3.5-rc, authorities require DirCache (V2Dir) for the
8695      Guard flag. Fixes bug 24312; bugfix on 0.3.3.5-rc.
8696
8697  o Minor bugfixes (rust, protover):
8698    - Compute protover votes correctly in the rust version of the
8699      protover code. Previously, the protover rewrite in 24031 allowed
8700      repeated votes from the same voter for the same protocol version
8701      to be counted multiple times in protover_compute_vote(). Fixes bug
8702      27649; bugfix on 0.3.3.5-rc.
8703    - Reject protover names that contain invalid characters. Fixes bug
8704      27687; bugfix on 0.3.3.1-alpha.
8705
8706  o Minor bugfixes (testing):
8707    - Fix two unit tests to work when HOME environment variable is not
8708      set. Fixes bug 27096; bugfix on 0.2.8.1-alpha.
8709    - If a unit test running in a subprocess exits abnormally or with a
8710      nonzero status code, treat the test as having failed, even if the
8711      test reported success. Without this fix, memory leaks don't cause
8712      the tests to fail, even with LeakSanitizer. Fixes bug 27658;
8713      bugfix on 0.2.2.4-alpha.
8714    - When logging a version mismatch in our openssl_version tests,
8715      report the actual offending version strings. Fixes bug 26152;
8716      bugfix on 0.2.9.1-alpha.
8717    - Fix forking tests on Windows when there is a space somewhere in
8718      the path. Fixes bug 26437; bugfix on 0.2.2.4-alpha.
8719
8720  o Code simplification and refactoring:
8721    - 'updateFallbackDirs.py' now ignores the blacklist file, as it's not
8722      longer needed. Closes ticket 26502.
8723    - Include paths to header files within Tor are now qualified by
8724      directory within the top-level src directory.
8725    - Many structures have been removed from the centralized "or.h"
8726      header, and moved into their own headers. This will allow us to
8727      reduce the number of places in the code that rely on each
8728      structure's contents and layout. Closes ticket 26383.
8729    - Remove ATTR_NONNULL macro from codebase. Resolves ticket 26527.
8730    - Remove GetAdaptersAddresses_fn_t. The code that used it was
8731      removed as part of the 26481 refactor. Closes ticket 27467.
8732    - Rework Tor SOCKS server code to use Trunnel and benefit from
8733      autogenerated functions for parsing and generating SOCKS wire
8734      format. New implementation is cleaner, more maintainable and
8735      should be less prone to heartbleed-style vulnerabilities.
8736      Implements a significant fraction of ticket 3569.
8737    - Split sampled_guards_update_from_consensus() and
8738      select_entry_guard_for_circuit() into subfunctions. In
8739      entry_guards_update_primary() unite three smartlist enumerations
8740      into one and move smartlist comparison code out of the function.
8741      Closes ticket 21349.
8742    - Tor now assumes that you have standards-conformant stdint.h and
8743      inttypes.h headers when compiling. Closes ticket 26626.
8744    - Unify our bloom filter logic. Previously we had two copies of this
8745      code: one for routerlist filtering, and one for address set
8746      calculations. Closes ticket 26510.
8747    - Use the simpler strcmpstart() helper in
8748      rend_parse_v2_service_descriptor instead of strncmp(). Closes
8749      ticket 27630.
8750    - Utility functions that can perform a DNS lookup are now wholly
8751      separated from those that can't, in separate headers and C
8752      modules. Closes ticket 26526.
8753
8754  o Documentation:
8755    - Copy paragraph and URL to Tor's code of conduct document from
8756      CONTRIBUTING to new CODE_OF_CONDUCT file. Resolves ticket 26638.
8757    - Remove old instructions from INSTALL document. Closes ticket 26588.
8758    - Warn users that they should not include MyFamily line(s) in their
8759      torrc when running Tor bridge. Closes ticket 26908.
8760
8761  o Removed features:
8762    - Tor no longer supports building with the dmalloc library. For
8763      debugging memory issues, we suggest using gperftools or msan
8764      instead. Closes ticket 26426.
8765    - Tor no longer attempts to run on Windows environments without the
8766      GetAdaptersAddresses() function. This function has existed since
8767      Windows XP, which is itself already older than we support.
8768    - Remove Tor2web functionality for version 2 onion services. The
8769      Tor2webMode and Tor2webRendezvousPoints options are now obsolete.
8770      (This feature was never shipped in vanilla Tor and it was only
8771      possible to use this feature by building the support at compile
8772      time. Tor2webMode is not implemented for version 3 onion services.)
8773      Closes ticket 26367.
8774
8775
8776Changes in version 0.2.9.17 - 2018-09-10
8777  Tor 0.2.9.17 backports numerous bugfixes from later versions of Tor.
8778
8779  o Minor features (compatibility, backport from 0.3.4.8):
8780    - Tell OpenSSL to maintain backward compatibility with previous
8781      RSA1024/DH1024 users in Tor. With OpenSSL 1.1.1-pre6, these
8782      ciphers are disabled by default. Closes ticket 27344.
8783
8784  o Minor features (continuous integration, backport from 0.3.4.7-rc):
8785    - Enable macOS builds in our Travis CI configuration. Closes
8786      ticket 24629.
8787    - Install libcap-dev and libseccomp2-dev so these optional
8788      dependencies get tested on Travis CI. Closes ticket 26560.
8789    - Run asciidoc during Travis CI. Implements ticket 27087.
8790    - Use ccache in our Travis CI configuration. Closes ticket 26952.
8791
8792  o Minor features (geoip):
8793    - Update geoip and geoip6 to the August 7 2018 Maxmind GeoLite2
8794      Country database. Closes ticket 27089.
8795
8796  o Minor bugfixes (compilation, backport from 0.3.4.6-rc):
8797    - When compiling with --enable-openbsd-malloc or --enable-tcmalloc,
8798      tell the compiler not to include the system malloc implementation.
8799      Fixes bug 20424; bugfix on 0.2.0.20-rc.
8800
8801  o Minor bugfixes (compilation, backport from 0.3.4.7-rc):
8802    - Silence a spurious compiler warning on the GetAdaptersAddresses
8803      function pointer cast. This issue is already fixed by 26481 in
8804      0.3.5 and later, by removing the lookup and cast. Fixes bug 27465;
8805      bugfix on 0.2.3.11-alpha.
8806    - Stop calling SetProcessDEPPolicy() on 64-bit Windows. It is not
8807      supported, and always fails. Some compilers warn about the
8808      function pointer cast on 64-bit Windows. Fixes bug 27461; bugfix
8809      on 0.2.2.23-alpha.
8810
8811  o Minor bugfixes (compilation, windows, backport from 0.3.4.7-rc):
8812    - Don't link or search for pthreads when building for Windows, even
8813      if we are using build environment (like mingw) that provides a
8814      pthreads library. Fixes bug 27081; bugfix on 0.1.0.1-rc.
8815
8816  o Minor bugfixes (continuous integration, backport from 0.3.4.6-rc):
8817    - Skip a pair of unreliable key generation tests on Windows, until
8818      the underlying issue in bug 26076 is resolved. Fixes bug 26830 and
8819      bug 26853; bugfix on 0.2.7.3-rc and 0.3.2.1-alpha respectively.
8820
8821  o Minor bugfixes (continuous integration, backport from 0.3.4.7-rc):
8822    - Pass the module flags to distcheck configure, and log the flags
8823      before running configure. (Backported to 0.2.9 and later as a
8824      precaution.) Fixes bug 27088; bugfix on 0.3.4.1-alpha.
8825
8826  o Minor bugfixes (continuous integration, backport from 0.3.4.8):
8827    - When a Travis build fails, and showing a log fails, keep trying to
8828      show the other logs. Fixes bug 27453; bugfix on 0.3.4.7-rc.
8829    - When we use echo in Travis, don't pass a --flag as the first
8830      argument. Fixes bug 27418; bugfix on 0.3.4.7-rc.
8831
8832  o Minor bugfixes (directory authority, backport from 0.3.4.6-rc):
8833    - When voting for recommended versions, make sure that all of the
8834      versions are well-formed and parsable. Fixes bug 26485; bugfix
8835      on 0.1.1.6-alpha.
8836
8837  o Minor bugfixes (linux seccomp2 sandbox, backport from 0.3.4.7-rc):
8838    - Fix a bug in out sandboxing rules for the openat() syscall.
8839      Previously, no openat() call would be permitted, which would break
8840      filesystem operations on recent glibc versions. Fixes bug 25440;
8841      bugfix on 0.2.9.15. Diagnosis and patch from Daniel Pinto.
8842
8843  o Minor bugfixes (onion services, backport from 0.3.4.8):
8844    - Silence a spurious compiler warning in
8845      rend_client_send_introduction(). Fixes bug 27463; bugfix
8846      on 0.1.1.2-alpha.
8847
8848  o Minor bugfixes (single onion services, Tor2web, backport from 0.3.4.6-rc):
8849    - Log a protocol warning when single onion services or Tor2web clients
8850      fail to authenticate direct connections to relays.
8851      Fixes bug 26924; bugfix on 0.2.9.1-alpha.
8852
8853  o Minor bugfixes (testing, backport from 0.3.4.6-rc):
8854    - Disable core dumps in test_bt.sh, to avoid failures in "make
8855      distcheck". Fixes bug 26787; bugfix on 0.2.5.2-alpha.
8856
8857  o Minor bugfixes (testing, chutney, backport from 0.3.4.8):
8858    - Before running make test-network-all, delete old logs and test
8859      result files, to avoid spurious failures. Fixes bug 27295; bugfix
8860      on 0.2.7.3-rc.
8861
8862  o Minor bugfixes (testing, openssl compatibility, backport from 0.3.4.7-rc):
8863    - Our "tortls/cert_matches_key" unit test no longer relies on
8864      OpenSSL internals. Previously, it relied on unsupported OpenSSL
8865      behavior in a way that caused it to crash with OpenSSL 1.0.2p.
8866      Fixes bug 27226; bugfix on 0.2.5.1-alpha.
8867
8868  o Minor bugfixes (Windows, compilation, backport from 0.3.4.7-rc):
8869    - Silence a compilation warning on MSVC 2017 and clang-cl. Fixes bug
8870      27185; bugfix on 0.2.2.2-alpha.
8871
8872
8873Changes in version 0.3.2.12 - 2018-09-10
8874  Tor 0.3.2.12 backport numerous fixes from later versions of Tor.
8875
8876  o Minor features (compatibility, backport from 0.3.4.8):
8877    - Tell OpenSSL to maintain backward compatibility with previous
8878      RSA1024/DH1024 users in Tor. With OpenSSL 1.1.1-pre6, these
8879      ciphers are disabled by default. Closes ticket 27344.
8880
8881  o Minor features (continuous integration, backport from 0.3.4.7-rc):
8882    - Enable macOS builds in our Travis CI configuration. Closes
8883      ticket 24629.
8884    - Install libcap-dev and libseccomp2-dev so these optional
8885      dependencies get tested on Travis CI. Closes ticket 26560.
8886    - Run asciidoc during Travis CI. Implements ticket 27087.
8887    - Use ccache in our Travis CI configuration. Closes ticket 26952.
8888
8889  o Minor features (continuous integration, rust, backport from 0.3.4.7-rc):
8890    - Use cargo cache in our Travis CI configuration. Closes
8891      ticket 26952.
8892
8893  o Minor features (controller, backport from 0.3.4.6-rc):
8894    - The control port now exposes the list of HTTPTunnelPorts and
8895      ExtOrPorts via GETINFO net/listeners/httptunnel and
8896      net/listeners/extor respectively. Closes ticket 26647.
8897
8898  o Minor features (directory authorities, backport from 0.3.4.7-rc):
8899    - Authorities no longer vote to make the subprotocol version
8900      "LinkAuth=1" a requirement: it is unsupportable with NSS, and
8901      hasn't been needed since Tor 0.3.0.1-alpha. Closes ticket 27286.
8902
8903  o Minor features (geoip):
8904    - Update geoip and geoip6 to the August 7 2018 Maxmind GeoLite2
8905      Country database. Closes ticket 27089.
8906
8907  o Minor bugfixes (compilation, backport from 0.3.4.6-rc):
8908    - When compiling with --enable-openbsd-malloc or --enable-tcmalloc,
8909      tell the compiler not to include the system malloc implementation.
8910      Fixes bug 20424; bugfix on 0.2.0.20-rc.
8911    - Don't try to use a pragma to temporarily disable the
8912      -Wunused-const-variable warning if the compiler doesn't support
8913      it. Fixes bug 26785; bugfix on 0.3.2.11.
8914
8915  o Minor bugfixes (compilation, backport from 0.3.4.7-rc):
8916    - Silence a spurious compiler warning on the GetAdaptersAddresses
8917      function pointer cast. This issue is already fixed by 26481 in
8918      0.3.5 and later, by removing the lookup and cast. Fixes bug 27465;
8919      bugfix on 0.2.3.11-alpha.
8920    - Stop calling SetProcessDEPPolicy() on 64-bit Windows. It is not
8921      supported, and always fails. Some compilers warn about the
8922      function pointer cast on 64-bit Windows. Fixes bug 27461; bugfix
8923      on 0.2.2.23-alpha.
8924
8925  o Minor bugfixes (compilation, windows, backport from 0.3.4.7-rc):
8926    - Don't link or search for pthreads when building for Windows, even
8927      if we are using build environment (like mingw) that provides a
8928      pthreads library. Fixes bug 27081; bugfix on 0.1.0.1-rc.
8929
8930  o Minor bugfixes (continuous integration, backport from 0.3.4.6-rc):
8931    - Skip a pair of unreliable key generation tests on Windows, until
8932      the underlying issue in bug 26076 is resolved. Fixes bug 26830 and
8933      bug 26853; bugfix on 0.2.7.3-rc and 0.3.2.1-alpha respectively.
8934
8935  o Minor bugfixes (continuous integration, backport from 0.3.4.7-rc):
8936    - Build with zstd on macOS. Fixes bug 27090; bugfix on 0.3.1.5-alpha.
8937    - Pass the module flags to distcheck configure, and log the flags
8938      before running configure. (Backported to 0.2.9 and later as a
8939      precaution.) Fixes bug 27088; bugfix on 0.3.4.1-alpha.
8940
8941  o Minor bugfixes (continuous integration, backport from 0.3.4.8):
8942    - When a Travis build fails, and showing a log fails, keep trying to
8943      show the other logs. Fixes bug 27453; bugfix on 0.3.4.7-rc.
8944    - When we use echo in Travis, don't pass a --flag as the first
8945      argument. Fixes bug 27418; bugfix on 0.3.4.7-rc.
8946
8947  o Minor bugfixes (directory authority, backport from 0.3.4.6-rc):
8948    - When voting for recommended versions, make sure that all of the
8949      versions are well-formed and parsable. Fixes bug 26485; bugfix
8950      on 0.1.1.6-alpha.
8951
8952  o Minor bugfixes (linux seccomp2 sandbox, backport from 0.3.4.7-rc):
8953    - Fix a bug in out sandboxing rules for the openat() syscall.
8954      Previously, no openat() call would be permitted, which would break
8955      filesystem operations on recent glibc versions. Fixes bug 25440;
8956      bugfix on 0.2.9.15. Diagnosis and patch from Daniel Pinto.
8957
8958  o Minor bugfixes (logging, backport from 0.3.4.6-rc):
8959    - Improve the log message when connection initiators fail to
8960      authenticate direct connections to relays. Fixes bug 26927; bugfix
8961      on 0.3.0.1-alpha.
8962
8963  o Minor bugfixes (onion services, backport from 0.3.4.7-rc):
8964    - Fix bug that causes services to not ever rotate their descriptors
8965      if they were getting SIGHUPed often. Fixes bug 26932; bugfix
8966      on 0.3.2.1-alpha.
8967
8968  o Minor bugfixes (onion services, backport from 0.3.4.8):
8969    - Silence a spurious compiler warning in
8970      rend_client_send_introduction(). Fixes bug 27463; bugfix
8971      on 0.1.1.2-alpha.
8972
8973  o Minor bugfixes (rust, backport from 0.3.4.7-rc):
8974    - Backport test_rust.sh from master. Fixes bug 26497; bugfix
8975      on 0.3.1.5-alpha.
8976    - Consistently use ../../.. as a fallback for $abs_top_srcdir in
8977      test_rust.sh. Fixes bug 27093; bugfix on 0.3.4.3-alpha.
8978    - Stop setting $CARGO_HOME. cargo will use the user's $CARGO_HOME, or
8979      $HOME/.cargo by default. Fixes bug 26497; bugfix on 0.3.1.5-alpha.
8980
8981  o Minor bugfixes (single onion services, Tor2web, backport from 0.3.4.6-rc):
8982    - Log a protocol warning when single onion services or Tor2web clients
8983      fail to authenticate direct connections to relays.
8984      Fixes bug 26924; bugfix on 0.2.9.1-alpha.
8985
8986  o Minor bugfixes (testing, backport from 0.3.4.6-rc):
8987    - Disable core dumps in test_bt.sh, to avoid failures in "make
8988      distcheck". Fixes bug 26787; bugfix on 0.2.5.2-alpha.
8989
8990  o Minor bugfixes (testing, chutney, backport from 0.3.4.8):
8991    - When running make test-network-all, use the mixed+hs-v2 network.
8992      (A previous fix to chutney removed v3 onion services from the
8993      mixed+hs-v23 network, so seeing "mixed+hs-v23" in tests is
8994      confusing.) Fixes bug 27345; bugfix on 0.3.2.1-alpha.
8995    - Before running make test-network-all, delete old logs and test
8996      result files, to avoid spurious failures. Fixes bug 27295; bugfix
8997      on 0.2.7.3-rc.
8998
8999  o Minor bugfixes (testing, openssl compatibility):
9000    - Our "tortls/cert_matches_key" unit test no longer relies on OpenSSL
9001      internals.  Previously, it relied on unsupported OpenSSL behavior in
9002      a way that caused it to crash with OpenSSL 1.0.2p. Fixes bug 27226;
9003      bugfix on 0.2.5.1-alpha.
9004
9005  o Minor bugfixes (testing, openssl compatibility, backport from 0.3.4.7-rc):
9006    - Our "tortls/cert_matches_key" unit test no longer relies on
9007      OpenSSL internals. Previously, it relied on unsupported OpenSSL
9008      behavior in a way that caused it to crash with OpenSSL 1.0.2p.
9009      Fixes bug 27226; bugfix on 0.2.5.1-alpha.
9010
9011  o Minor bugfixes (Windows, compilation, backport from 0.3.4.7-rc):
9012    - Silence a compilation warning on MSVC 2017 and clang-cl. Fixes bug
9013      27185; bugfix on 0.2.2.2-alpha.
9014
9015
9016Changes in version 0.3.3.10 - 2018-09-10
9017  Tor 0.3.3.10 backports numerous fixes from later versions of Tor.
9018
9019  o Minor features (bug workaround, backport from 0.3.4.7-rc):
9020    - Compile correctly on systems that provide the C11 stdatomic.h
9021      header, but where C11 atomic functions don't actually compile.
9022      Closes ticket 26779; workaround for Debian issue 903709.
9023
9024  o Minor features (compatibility, backport from 0.3.4.8):
9025    - Tell OpenSSL to maintain backward compatibility with previous
9026      RSA1024/DH1024 users in Tor. With OpenSSL 1.1.1-pre6, these
9027      ciphers are disabled by default. Closes ticket 27344.
9028
9029  o Minor features (continuous integration, backport from 0.3.4.7-rc):
9030    - Backport Travis rust distcheck to 0.3.3. Closes ticket 24629.
9031    - Enable macOS builds in our Travis CI configuration. Closes
9032      ticket 24629.
9033    - Install libcap-dev and libseccomp2-dev so these optional
9034      dependencies get tested on Travis CI. Closes ticket 26560.
9035    - Run asciidoc during Travis CI. Implements ticket 27087.
9036    - Use ccache in our Travis CI configuration. Closes ticket 26952.
9037
9038  o Minor features (continuous integration, rust, backport from 0.3.4.7-rc):
9039    - Use cargo cache in our Travis CI configuration. Closes
9040      ticket 26952.
9041
9042  o Minor features (controller, backport from 0.3.4.6-rc):
9043    - The control port now exposes the list of HTTPTunnelPorts and
9044      ExtOrPorts via GETINFO net/listeners/httptunnel and
9045      net/listeners/extor respectively. Closes ticket 26647.
9046
9047  o Minor features (directory authorities, backport from 0.3.4.7-rc):
9048    - Authorities no longer vote to make the subprotocol version
9049      "LinkAuth=1" a requirement: it is unsupportable with NSS, and
9050      hasn't been needed since Tor 0.3.0.1-alpha. Closes ticket 27286.
9051
9052  o Minor features (geoip):
9053    - Update geoip and geoip6 to the August 7 2018 Maxmind GeoLite2
9054      Country database. Closes ticket 27089.
9055
9056  o Minor bugfixes (compilation, backport from 0.3.4.6-rc):
9057    - When compiling with --enable-openbsd-malloc or --enable-tcmalloc,
9058      tell the compiler not to include the system malloc implementation.
9059      Fixes bug 20424; bugfix on 0.2.0.20-rc.
9060    - Don't try to use a pragma to temporarily disable the
9061      -Wunused-const-variable warning if the compiler doesn't support
9062      it. Fixes bug 26785; bugfix on 0.3.2.11.
9063
9064  o Minor bugfixes (compilation, backport from 0.3.4.7-rc):
9065    - Silence a spurious compiler warning on the GetAdaptersAddresses
9066      function pointer cast. This issue is already fixed by 26481 in
9067      0.3.5 and later, by removing the lookup and cast. Fixes bug 27465;
9068      bugfix on 0.2.3.11-alpha.
9069    - Stop calling SetProcessDEPPolicy() on 64-bit Windows. It is not
9070      supported, and always fails. Some compilers warn about the
9071      function pointer cast on 64-bit Windows. Fixes bug 27461; bugfix
9072      on 0.2.2.23-alpha.
9073
9074  o Minor bugfixes (compilation, windows, backport from 0.3.4.7-rc):
9075    - Don't link or search for pthreads when building for Windows, even
9076      if we are using build environment (like mingw) that provides a
9077      pthreads library. Fixes bug 27081; bugfix on 0.1.0.1-rc.
9078
9079  o Minor bugfixes (continuous integration, backport from 0.3.4.6-rc):
9080    - Skip a pair of unreliable key generation tests on Windows, until
9081      the underlying issue in bug 26076 is resolved. Fixes bug 26830 and
9082      bug 26853; bugfix on 0.2.7.3-rc and 0.3.2.1-alpha respectively.
9083
9084  o Minor bugfixes (continuous integration, backport from 0.3.4.7-rc):
9085    - Build with zstd on macOS. Fixes bug 27090; bugfix on 0.3.1.5-alpha.
9086    - Pass the module flags to distcheck configure, and log the flags
9087      before running configure. (Backported to 0.2.9 and later as a
9088      precaution.) Fixes bug 27088; bugfix on 0.3.4.1-alpha.
9089
9090  o Minor bugfixes (continuous integration, backport from 0.3.4.8):
9091    - When a Travis build fails, and showing a log fails, keep trying to
9092      show the other logs. Fixes bug 27453; bugfix on 0.3.4.7-rc.
9093    - When we use echo in Travis, don't pass a --flag as the first
9094      argument. Fixes bug 27418; bugfix on 0.3.4.7-rc.
9095
9096  o Minor bugfixes (directory authority, backport from 0.3.4.6-rc):
9097    - When voting for recommended versions, make sure that all of the
9098      versions are well-formed and parsable. Fixes bug 26485; bugfix
9099      on 0.1.1.6-alpha.
9100
9101  o Minor bugfixes (in-process restart, backport from 0.3.4.7-rc):
9102    - Always call tor_free_all() when leaving tor_run_main(). When we
9103      did not, restarting tor in-process would cause an assertion
9104      failure. Fixes bug 26948; bugfix on 0.3.3.1-alpha.
9105
9106  o Minor bugfixes (linux seccomp2 sandbox, backport from 0.3.4.7-rc):
9107    - Fix a bug in our sandboxing rules for the openat() syscall.
9108      Previously, no openat() call would be permitted, which would break
9109      filesystem operations on recent glibc versions. Fixes bug 25440;
9110      bugfix on 0.2.9.15. Diagnosis and patch from Daniel Pinto.
9111
9112  o Minor bugfixes (logging, backport from 0.3.4.6-rc):
9113    - Improve the log message when connection initiators fail to
9114      authenticate direct connections to relays. Fixes bug 26927; bugfix
9115      on 0.3.0.1-alpha.
9116
9117  o Minor bugfixes (onion services, backport from 0.3.4.7-rc):
9118    - Fix bug that causes services to not ever rotate their descriptors
9119      if they were getting SIGHUPed often. Fixes bug 26932; bugfix
9120      on 0.3.2.1-alpha.
9121
9122  o Minor bugfixes (onion services, backport from 0.3.4.8):
9123    - Silence a spurious compiler warning in
9124      rend_client_send_introduction(). Fixes bug 27463; bugfix
9125      on 0.1.1.2-alpha.
9126
9127  o Minor bugfixes (portability, backport from 0.3.4.6-rc):
9128    - Work around two different bugs in the OS X 10.10 and later SDKs
9129      that would prevent us from successfully targeting earlier versions
9130      of OS X. Fixes bug 26876; bugfix on 0.3.3.1-alpha.
9131
9132  o Minor bugfixes (portability, backport from 0.3.4.7-rc):
9133    - Fix compilation of the unit tests on GNU/Hurd, which does not
9134      define PATH_MAX. Fixes bug 26873; bugfix on 0.3.3.1-alpha. Patch
9135      from "paulusASol".
9136
9137  o Minor bugfixes (rust, backport from 0.3.4.7-rc):
9138    - Backport test_rust.sh from master. Fixes bug 26497; bugfix
9139      on 0.3.1.5-alpha.
9140    - Consistently use ../../.. as a fallback for $abs_top_srcdir in
9141      test_rust.sh. Fixes bug 27093; bugfix on 0.3.4.3-alpha.
9142    - Protover parsing was accepting the presence of whitespace in
9143      version strings, which the C implementation would choke on, e.g.
9144      "Desc=1\t,2". Fixes bug 27177; bugfix on 0.3.3.5-rc.
9145    - Protover parsing was ignoring a 2nd hyphen and everything after
9146      it, accepting entries like "Link=1-5-foo". Fixes bug 27164; bugfix
9147      on 0.3.3.1-alpha.
9148    - Stop setting $CARGO_HOME. cargo will use the user's $CARGO_HOME, or
9149      $HOME/.cargo by default. Fixes bug 26497; bugfix on 0.3.1.5-alpha.
9150    - cd to ${abs_top_builddir}/src/rust before running cargo in
9151      src/test/test_rust.sh. This makes the working directory consistent
9152      between builds and tests. Fixes bug 26497; bugfix on 0.3.3.2-alpha.
9153
9154  o Minor bugfixes (single onion services, Tor2web, backport from 0.3.4.6-rc):
9155    - Log a protocol warning when single onion services or Tor2web clients
9156      fail to authenticate direct connections to relays.
9157      Fixes bug 26924; bugfix on 0.2.9.1-alpha.
9158
9159  o Minor bugfixes (testing, backport from 0.3.4.6-rc):
9160    - Disable core dumps in test_bt.sh, to avoid failures in "make
9161      distcheck". Fixes bug 26787; bugfix on 0.2.5.2-alpha.
9162
9163  o Minor bugfixes (testing, chutney, backport from 0.3.4.8):
9164    - When running make test-network-all, use the mixed+hs-v2 network.
9165      (A previous fix to chutney removed v3 onion services from the
9166      mixed+hs-v23 network, so seeing "mixed+hs-v23" in tests is
9167      confusing.) Fixes bug 27345; bugfix on 0.3.2.1-alpha.
9168    - Before running make test-network-all, delete old logs and test
9169      result files, to avoid spurious failures. Fixes bug 27295; bugfix
9170      on 0.2.7.3-rc.
9171
9172  o Minor bugfixes (testing, openssl compatibility, backport from 0.3.4.7-rc):
9173    - Our "tortls/cert_matches_key" unit test no longer relies on
9174      OpenSSL internals. Previously, it relied on unsupported OpenSSL
9175      behavior in a way that caused it to crash with OpenSSL 1.0.2p.
9176      Fixes bug 27226; bugfix on 0.2.5.1-alpha.
9177
9178  o Minor bugfixes (v3 onion services, backport from 0.3.4.6-rc):
9179    - Stop sending ed25519 link specifiers in v3 onion service introduce
9180      cells and descriptors, when the rendezvous or introduction point
9181      doesn't support ed25519 link authentication. Fixes bug 26627;
9182      bugfix on 0.3.2.4-alpha.
9183
9184  o Minor bugfixes (Windows, compilation, backport from 0.3.4.7-rc):
9185    - Silence a compilation warning on MSVC 2017 and clang-cl. Fixes bug
9186      27185; bugfix on 0.2.2.2-alpha.
9187
9188
9189Changes in version 0.3.4.8 - 2018-09-10
9190  Tor 0.3.4.8 is the first stable release in its series; it includes
9191  compilation and portability fixes.
9192
9193  The Tor 0.3.4 series includes improvements for running Tor in
9194  low-power and embedded environments, which should help performance in
9195  general. We've begun work on better modularity, and included preliminary
9196  changes on the directory authority side to accommodate a new bandwidth
9197  measurement system.  We've also integrated more continuous-integration
9198  systems into our development process, and made corresponding changes to
9199  Tor's testing infrastructure.  Finally, we've continued to refine
9200  our anti-denial-of-service code.
9201
9202  Below are the changes since 0.3.4.7-rc.  For a complete list of changes
9203  since 0.3.3.9, see the ReleaseNotes file.
9204
9205  o Minor features (compatibility):
9206    - Tell OpenSSL to maintain backward compatibility with previous
9207      RSA1024/DH1024 users in Tor. With OpenSSL 1.1.1-pre6, these
9208      ciphers are disabled by default. Closes ticket 27344.
9209
9210  o Minor features (continuous integration):
9211    - Log the compiler path and version during Appveyor builds.
9212      Implements ticket 27449.
9213    - Show config.log and test-suite.log after failed Appveyor builds.
9214      Also upload the zipped full logs as a build artifact. Implements
9215      ticket 27430.
9216
9217  o Minor bugfixes (compilation):
9218    - Silence a spurious compiler warning on the GetAdaptersAddresses
9219      function pointer cast. This issue is already fixed by 26481 in
9220      0.3.5 and later, by removing the lookup and cast. Fixes bug 27465;
9221      bugfix on 0.2.3.11-alpha.
9222    - Stop calling SetProcessDEPPolicy() on 64-bit Windows. It is not
9223      supported, and always fails. Some compilers warn about the
9224      function pointer cast on 64-bit Windows. Fixes bug 27461; bugfix
9225      on 0.2.2.23-alpha.
9226
9227  o Minor bugfixes (continuous integration):
9228    - Disable gcc hardening in Appveyor Windows 64-bit builds. As of
9229      August 29 2018, Appveyor images come with gcc 8.2.0 by default.
9230      Executables compiled for 64-bit Windows with this version of gcc
9231      crash when Tor's --enable-gcc-hardening flag is set. Fixes bug
9232      27460; bugfix on 0.3.4.1-alpha.
9233    - When a Travis build fails, and showing a log fails, keep trying to
9234      show the other logs. Fixes bug 27453; bugfix on 0.3.4.7-rc.
9235    - When we use echo in Travis, don't pass a --flag as the first
9236      argument. Fixes bug 27418; bugfix on 0.3.4.7-rc.
9237
9238  o Minor bugfixes (onion services):
9239    - Silence a spurious compiler warning in
9240      rend_client_send_introduction(). Fixes bug 27463; bugfix
9241      on 0.1.1.2-alpha.
9242
9243  o Minor bugfixes (testing, chutney):
9244    - When running make test-network-all, use the mixed+hs-v2 network.
9245      (A previous fix to chutney removed v3 onion services from the
9246      mixed+hs-v23 network, so seeing "mixed+hs-v23" in tests is
9247      confusing.) Fixes bug 27345; bugfix on 0.3.2.1-alpha.
9248    - Before running make test-network-all, delete old logs and test
9249      result files, to avoid spurious failures. Fixes bug 27295; bugfix
9250      on 0.2.7.3-rc.
9251
9252Changes in version 0.3.4.7-rc - 2018-08-24
9253  Tor 0.3.4.7-rc fixes several small compilation, portability, and
9254  correctness issues in previous versions of Tor. This version is a
9255  release candidate: if no serious bugs are found, we expect that the
9256  stable 0.3.4 release will be (almost) the same as this release.
9257
9258  o Minor features (bug workaround):
9259    - Compile correctly on systems that provide the C11 stdatomic.h
9260      header, but where C11 atomic functions don't actually compile.
9261      Closes ticket 26779; workaround for Debian issue 903709.
9262
9263  o Minor features (continuous integration):
9264    - Backport Travis rust distcheck to 0.3.3. Closes ticket 24629.
9265    - Enable macOS builds in our Travis CI configuration. Closes
9266      ticket 24629.
9267    - Install libcap-dev and libseccomp2-dev so these optional
9268      dependencies get tested on Travis CI. Closes ticket 26560.
9269    - Only post Appveyor IRC notifications when the build fails.
9270      Implements ticket 27275.
9271    - Run asciidoc during Travis CI. Implements ticket 27087.
9272    - Use ccache in our Travis CI configuration. Closes ticket 26952.
9273
9274  o Minor features (continuous integration, rust):
9275    - Use cargo cache in our Travis CI configuration. Closes
9276      ticket 26952.
9277
9278  o Minor features (directory authorities):
9279    - Authorities no longer vote to make the subprotocol version
9280      "LinkAuth=1" a requirement: it is unsupportable with NSS, and
9281      hasn't been needed since Tor 0.3.0.1-alpha. Closes ticket 27286.
9282
9283  o Minor features (geoip):
9284    - Update geoip and geoip6 to the August 7 2018 Maxmind GeoLite2
9285      Country database. Closes ticket 27089.
9286
9287  o Minor bugfixes (compilation, windows):
9288    - Don't link or search for pthreads when building for Windows, even
9289      if we are using build environment (like mingw) that provides a
9290      pthreads library. Fixes bug 27081; bugfix on 0.1.0.1-rc.
9291
9292  o Minor bugfixes (continuous integration):
9293    - Improve Appveyor CI IRC logging. Generate correct branches and
9294      URLs for pull requests and tags. Use unambiguous short commits.
9295      Fixes bug 26979; bugfix on master.
9296    - Build with zstd on macOS. Fixes bug 27090; bugfix on 0.3.1.5-alpha.
9297    - Pass the module flags to distcheck configure, and log the flags
9298      before running configure. (Backported to 0.2.9 and later as a
9299      precaution.) Fixes bug 27088; bugfix on 0.3.4.1-alpha.
9300
9301  o Minor bugfixes (in-process restart):
9302    - Always call tor_free_all() when leaving tor_run_main(). When we
9303      did not, restarting tor in-process would cause an assertion
9304      failure. Fixes bug 26948; bugfix on 0.3.3.1-alpha.
9305
9306  o Minor bugfixes (linux seccomp2 sandbox):
9307    - Fix a bug in out sandboxing rules for the openat() syscall.
9308      Previously, no openat() call would be permitted, which would break
9309      filesystem operations on recent glibc versions. Fixes bug 25440;
9310      bugfix on 0.2.9.15. Diagnosis and patch from Daniel Pinto.
9311
9312  o Minor bugfixes (onion services):
9313    - Fix bug that causes services to not ever rotate their descriptors
9314      if they were getting SIGHUPed often. Fixes bug 26932; bugfix
9315      on 0.3.2.1-alpha.
9316
9317  o Minor bugfixes (portability):
9318    - Fix compilation of the unit tests on GNU/Hurd, which does not
9319      define PATH_MAX. Fixes bug 26873; bugfix on 0.3.3.1-alpha. Patch
9320      from "paulusASol".
9321
9322  o Minor bugfixes (rust):
9323    - Backport test_rust.sh from master. Fixes bug 26497; bugfix
9324      on 0.3.1.5-alpha.
9325    - Consistently use ../../.. as a fallback for $abs_top_srcdir in
9326      test_rust.sh. Fixes bug 27093; bugfix on 0.3.4.3-alpha.
9327    - Protover parsing was accepting the presence of whitespace in
9328      version strings, which the C implementation would choke on, e.g.
9329      "Desc=1\t,2". Fixes bug 27177; bugfix on 0.3.3.5-rc.
9330    - Protover parsing was ignoring a 2nd hyphen and everything after
9331      it, accepting entries like "Link=1-5-foo". Fixes bug 27164; bugfix
9332      on 0.3.3.1-alpha.
9333    - Stop setting $CARGO_HOME. cargo will use the user's $CARGO_HOME, or
9334      $HOME/.cargo by default. Fixes bug 26497; bugfix on 0.3.1.5-alpha.
9335    - cd to ${abs_top_builddir}/src/rust before running cargo in
9336      src/test/test_rust.sh. This makes the working directory consistent
9337      between builds and tests. Fixes bug 26497; bugfix on 0.3.3.2-alpha.
9338
9339  o Minor bugfixes (testing, bootstrap):
9340    - When calculating bootstrap progress, check exit policies and the
9341      exit flag. Previously, Tor would only check the exit flag, which
9342      caused race conditions in small and fast networks like chutney.
9343      Fixes bug 27236; bugfix on 0.2.6.3-alpha.
9344
9345  o Minor bugfixes (testing, openssl compatibility):
9346    - Our "tortls/cert_matches_key" unit test no longer relies on
9347      OpenSSL internals. Previously, it relied on unsupported OpenSSL
9348      behavior in a way that caused it to crash with OpenSSL 1.0.2p.
9349      Fixes bug 27226; bugfix on 0.2.5.1-alpha.
9350
9351  o Minor bugfixes (Windows, compilation):
9352    - Silence a compilation warning on MSVC 2017 and clang-cl. Fixes bug
9353      27185; bugfix on 0.2.2.2-alpha.
9354
9355
9356Changes in version 0.3.4.6-rc - 2018-08-06
9357  Tor 0.3.4.6-rc fixes several small compilation, portability, and
9358  correctness issues in previous versions of Tor. This version is a
9359  release candidate: if no serious bugs are found, we expect that the
9360  stable 0.3.4 release will be (almost) the same as this release.
9361
9362  o Major bugfixes (event scheduler):
9363    - When we enable a periodic event, schedule it in the event loop
9364      rather than running it immediately. Previously, we would re-run
9365      periodic events immediately in the middle of (for example)
9366      changing our options, with unpredictable effects. Fixes bug 27003;
9367      bugfix on 0.3.4.1-alpha.
9368
9369  o Minor features (compilation):
9370    - When building Tor, prefer to use Python 3 over Python 2, and more
9371      recent (contemplated) versions over older ones. Closes
9372      ticket 26372.
9373    - When compiling with --enable-openbsd-malloc or --enable-tcmalloc,
9374      tell the compiler not to include the system malloc implementation.
9375      Fixes bug 20424; bugfix on 0.2.0.20-rc.
9376    - Don't try to use a pragma to temporarily disable the
9377      -Wunused-const-variable warning if the compiler doesn't support
9378      it. Fixes bug 26785; bugfix on 0.3.2.11.
9379
9380  o Minor bugfixes (continuous integration):
9381    - Skip a pair of unreliable key generation tests on Windows, until
9382      the underlying issue in bug 26076 is resolved. Fixes bug 26830 and
9383      bug 26853; bugfix on 0.2.7.3-rc and 0.3.2.1-alpha respectively.
9384
9385  o Minor features (controller):
9386    - The control port now exposes the list of HTTPTunnelPorts and
9387      ExtOrPorts via GETINFO net/listeners/httptunnel and
9388      net/listeners/extor respectively. Closes ticket 26647.
9389
9390  o Minor bugfixes (directory authority):
9391    - When voting for recommended versions, make sure that all of the
9392      versions are well-formed and parsable. Fixes bug 26485; bugfix
9393      on 0.1.1.6-alpha.
9394
9395  o Minor features (geoip):
9396    - Update geoip and geoip6 to the July 3 2018 Maxmind GeoLite2
9397      Country database. Closes ticket 26674.
9398
9399  o Minor features (Rust, portability):
9400    - Rust cross-compilation is now supported. Closes ticket 25895.
9401
9402  o Minor bugfixes (compilation):
9403    - Update build system so that tor builds again with --disable-unittests
9404      after recent refactoring. Fixes bug 26789; bugfix on 0.3.4.3-alpha.
9405    - Fix a compilation warning on some versions of GCC when building
9406      code that calls routerinfo_get_my_routerinfo() twice, assuming
9407      that the second call will succeed if the first one did. Fixes bug
9408      26269; bugfix on 0.2.8.2-alpha.
9409
9410  o Minor bugfixes (controller):
9411    - Report the port correctly when a port is configured to bind to
9412      "auto". Fixes bug 26568; bugfix on 0.3.4.1-alpha.
9413    - Parse the "HSADDRESS=" parameter in HSPOST commands properly.
9414      Previously, it was misparsed and ignored. Fixes bug 26523; bugfix
9415      on 0.3.3.1-alpha. Patch by "akwizgran".
9416
9417  o Minor bugfixes (correctness, flow control):
9418    - Upon receiving a stream-level SENDME cell, verify that our window
9419      has not grown too large. Fixes bug 26214; bugfix on svn
9420      r54 (pre-0.0.1).
9421
9422  o Minor bugfixes (memory, correctness):
9423    - Fix a number of small memory leaks identified by coverity. Fixes
9424      bug 26467; bugfix on numerous Tor versions.
9425
9426  o Minor bugfixes (logging):
9427    - Improve the log message when connection initiators fail to
9428      authenticate direct connections to relays. Fixes bug 26927; bugfix
9429      on 0.3.0.1-alpha.
9430
9431  o Minor bugfixes (portability):
9432    - Avoid a compilation error in test_bwmgt.c on Solaris 10. Fixes bug
9433      26994; bugfix on 0.3.4.1-alpha.
9434    - Work around two different bugs in the OS X 10.10 and later SDKs
9435      that would prevent us from successfully targeting earlier versions
9436      of OS X. Fixes bug 26876; bugfix on 0.3.3.1-alpha.
9437
9438  o Minor bugfixes (single onion services, Tor2web):
9439    - Log a protocol warning when single onion services or Tor2web
9440      clients fail to authenticate direct connections to relays. Fixes
9441      bug 26924; bugfix on 0.2.9.1-alpha.
9442
9443  o Minor bugfixes (testing):
9444    - Disable core dumps in test_bt.sh, to avoid failures in "make
9445      distcheck". Fixes bug 26787; bugfix on 0.2.5.2-alpha.
9446
9447  o Minor bugfixes (testing, compatibility):
9448    - When running the ntor_ref.py and hs_ntor_ref.py tests, make sure
9449      only to pass strings (rather than "bytes" objects) to the Python
9450      subprocess module. Python 3 on Windows seems to require this.
9451      Fixes bug 26535; bugfix on 0.2.5.5-alpha (for ntor_ref.py) and
9452      0.3.1.1-alpha (for hs_ntor_ref.py).
9453
9454  o Minor bugfixes (v3 onion services):
9455    - Stop sending ed25519 link specifiers in v3 onion service introduce
9456      cells and descriptors, when the rendezvous or introduction point
9457      doesn't support ed25519 link authentication. Fixes bug 26627;
9458      bugfix on 0.3.2.4-alpha.
9459
9460
9461Changes in version 0.3.4.5-rc - 2018-07-13
9462  Tor 0.3.4.5-rc moves to a new bridge authority, meaning people running
9463  bridge relays should upgrade.
9464
9465  o Directory authority changes:
9466    - The "Bifroest" bridge authority has been retired; the new bridge
9467      authority is "Serge", and it is operated by George from the
9468      TorBSD project. Closes ticket 26771.
9469
9470
9471Changes in version 0.3.3.9 - 2018-07-13
9472  Tor 0.3.3.9 moves to a new bridge authority, meaning people running
9473  bridge relays should upgrade.
9474
9475  o Directory authority changes:
9476    - The "Bifroest" bridge authority has been retired; the new bridge
9477      authority is "Serge", and it is operated by George from the
9478      TorBSD project. Closes ticket 26771.
9479
9480
9481Changes in version 0.3.2.11 - 2018-07-13
9482  Tor 0.3.2.11 moves to a new bridge authority, meaning people running
9483  bridge relays should upgrade. We also take this opportunity to backport
9484  other minor fixes.
9485
9486  o Directory authority changes:
9487    - The "Bifroest" bridge authority has been retired; the new bridge
9488      authority is "Serge", and it is operated by George from the
9489      TorBSD project. Closes ticket 26771.
9490
9491  o Directory authority changes (backport from 0.3.3.7):
9492    - Add an IPv6 address for the "dannenberg" directory authority.
9493      Closes ticket 26343.
9494
9495  o Major bugfixes (directory authorities, backport from 0.3.4.1-alpha):
9496    - When directory authorities read a zero-byte bandwidth file, they
9497      would previously log a warning with the contents of an
9498      uninitialised buffer. They now log a warning about the empty file
9499      instead. Fixes bug 26007; bugfix on 0.2.2.1-alpha.
9500
9501  o Major bugfixes (onion service, backport from 0.3.4.1-alpha):
9502    - Correctly detect when onion services get disabled after HUP. Fixes
9503      bug 25761; bugfix on 0.3.2.1.
9504
9505  o Minor features (sandbox, backport from 0.3.3.4-alpha):
9506    - Explicitly permit the poll() system call when the Linux
9507      seccomp2-based sandbox is enabled: apparently, some versions of
9508      libc use poll() when calling getpwnam(). Closes ticket 25313.
9509
9510  o Minor feature (continuous integration, backport from 0.3.3.5-rc):
9511    - Update the Travis CI configuration to use the stable Rust channel,
9512      now that we have decided to require that. Closes ticket 25714.
9513
9514  o Minor features (continuous integration, backport from 0.3.4.1-alpha):
9515    - Our .travis.yml configuration now includes support for testing the
9516      results of "make distcheck". (It's not uncommon for "make check"
9517      to pass but "make distcheck" to fail.) Closes ticket 25814.
9518    - Our Travis CI configuration now integrates with the Coveralls
9519      coverage analysis tool. Closes ticket 25818.
9520
9521  o Minor features (relay, diagnostic, backport from 0.3.4.3-alpha):
9522    - Add several checks to detect whether Tor relays are uploading
9523      their descriptors without specifying why they regenerated them.
9524      Diagnostic for ticket 25686.
9525
9526  o Minor features (compilation, backport from 0.3.4.4-rc):
9527    - When building Tor, prefer to use Python 3 over Python 2, and more
9528      recent (contemplated) versions over older ones. Closes
9529      ticket 26372.
9530
9531  o Minor features (geoip):
9532    - Update geoip and geoip6 to the July 3 2018 Maxmind GeoLite2
9533      Country database. Closes ticket 26674.
9534
9535  o Minor bugfixes (correctness, client, backport from 0.3.4.1-alpha):
9536    - Upon receiving a malformed connected cell, stop processing the
9537      cell immediately. Previously we would mark the connection for
9538      close, but continue processing the cell as if the connection were
9539      open. Fixes bug 26072; bugfix on 0.2.4.7-alpha.
9540
9541  o Minor bugfixes (Linux seccomp2 sandbox, backport from 0.3.4.1-alpha):
9542    - Allow the nanosleep() system call, which glibc uses to implement
9543      sleep() and usleep(). Fixes bug 24969; bugfix on 0.2.5.1-alpha.
9544
9545  o Minor bugfixes (testing, compatibility, backport from 0.3.4.4-rc):
9546    - When running the hs_ntor_ref.py test, make sure only to pass
9547      strings (rather than "bytes" objects) to the Python subprocess
9548      module. Python 3 on Windows seems to require this. Fixes bug
9549      26535; bugfix on 0.3.1.1-alpha.
9550    - When running the ntor_ref.py test, make sure only to pass strings
9551      (rather than "bytes" objects) to the Python subprocess module.
9552      Python 3 on Windows seems to require this. Fixes bug 26535; bugfix
9553      on 0.2.5.5-alpha.
9554
9555  o Minor bugfixes (compatibility, openssl, backport from 0.3.4.2-alpha):
9556    - Work around a change in OpenSSL 1.1.1 where return values that
9557      would previously indicate "no password" now indicate an empty
9558      password. Without this workaround, Tor instances running with
9559      OpenSSL 1.1.1 would accept descriptors that other Tor instances
9560      would reject. Fixes bug 26116; bugfix on 0.2.5.16.
9561
9562  o Minor bugfixes (documentation, backport from 0.3.3.5-rc):
9563    - Document that the PerConnBW{Rate,Burst} options will fall back to
9564      their corresponding consensus parameters only if those parameters
9565      are set. Previously we had claimed that these values would always
9566      be set in the consensus. Fixes bug 25296; bugfix on 0.2.2.7-alpha.
9567
9568  o Minor bugfixes (compilation, backport from 0.3.4.4-rc):
9569    - Fix a compilation warning on some versions of GCC when building
9570      code that calls routerinfo_get_my_routerinfo() twice, assuming
9571      that the second call will succeed if the first one did. Fixes bug
9572      26269; bugfix on 0.2.8.2-alpha.
9573
9574  o Minor bugfixes (client, backport from 0.3.4.1-alpha):
9575    - Don't consider Tor running as a client if the ControlPort is open,
9576      but no actual client ports are open. Fixes bug 26062; bugfix
9577      on 0.2.9.4-alpha.
9578
9579  o Minor bugfixes (hardening, backport from 0.3.4.2-alpha):
9580    - Prevent a possible out-of-bounds smartlist read in
9581      protover_compute_vote(). Fixes bug 26196; bugfix on 0.2.9.4-alpha.
9582
9583  o Minor bugfixes (C correctness, backport from 0.3.3.4-alpha):
9584    - Fix a very unlikely (impossible, we believe) null pointer
9585      dereference. Fixes bug 25629; bugfix on 0.2.9.15. Found by
9586      Coverity; this is CID 1430932.
9587
9588  o Minor bugfixes (onion service, backport from 0.3.4.1-alpha):
9589    - Fix a memory leak when a v3 onion service is configured and gets a
9590      SIGHUP signal. Fixes bug 25901; bugfix on 0.3.2.1-alpha.
9591    - When parsing the descriptor signature, look for the token plus an
9592      extra white-space at the end. This is more correct but also will
9593      allow us to support new fields that might start with "signature".
9594      Fixes bug 26069; bugfix on 0.3.0.1-alpha.
9595
9596  o Minor bugfixes (relay, backport from 0.3.4.3-alpha):
9597    - Relays now correctly block attempts to re-extend to the previous
9598      relay by Ed25519 identity. Previously they would warn in this
9599      case, but not actually reject the attempt. Fixes bug 26158; bugfix
9600      on 0.3.0.1-alpha.
9601
9602  o Minor bugfixes (relay, crash, backport from 0.3.4.1-alpha):
9603    - Avoid a crash when running with DirPort set but ORPort turned off.
9604      Fixes a case of bug 23693; bugfix on 0.3.1.1-alpha.
9605
9606  o Minor bugfixes (compilation, backport from 0.3.4.2-alpha):
9607    - Silence unused-const-variable warnings in zstd.h with some GCC
9608      versions. Fixes bug 26272; bugfix on 0.3.1.1-alpha.
9609
9610  o Minor bugfixes (testing, backport from 0.3.3.4-alpha):
9611    - Avoid intermittent test failures due to a test that had relied on
9612      onion service introduction point creation finishing within 5
9613      seconds of real clock time. Fixes bug 25450; bugfix
9614      on 0.3.1.3-alpha.
9615
9616  o Minor bugfixes (compilation, backport from 0.3.3.4-alpha):
9617    - Fix a C99 compliance issue in our configuration script that caused
9618      compilation issues when compiling Tor with certain versions of
9619      xtools. Fixes bug 25474; bugfix on 0.3.2.5-alpha.
9620
9621  o Minor bugfixes (memory, correctness, backport from 0.3.4.4-rc):
9622    - Fix a number of small memory leaks identified by coverity. Fixes
9623      bug 26467; bugfix on numerous Tor versions.
9624
9625  o Code simplification and refactoring (backport from 0.3.3.5-rc):
9626    - Move the list of default directory authorities to its own file.
9627      Closes ticket 24854. Patch by "beastr0".
9628
9629
9630Changes in version 0.2.9.16 - 2018-07-13
9631  Tor 0.2.9.16 moves to a new bridge authority, meaning people running
9632  bridge relays should upgrade. We also take this opportunity to backport
9633  other minor fixes.
9634
9635  o Directory authority changes:
9636    - The "Bifroest" bridge authority has been retired; the new bridge
9637      authority is "Serge", and it is operated by George from the
9638      TorBSD project. Closes ticket 26771.
9639
9640  o Directory authority changes (backport from 0.3.3.7):
9641    - Add an IPv6 address for the "dannenberg" directory authority.
9642      Closes ticket 26343.
9643
9644  o Major bugfixes (directory authorities, backport from 0.3.4.1-alpha):
9645    - When directory authorities read a zero-byte bandwidth file, they
9646      would previously log a warning with the contents of an
9647      uninitialised buffer. They now log a warning about the empty file
9648      instead. Fixes bug 26007; bugfix on 0.2.2.1-alpha.
9649
9650  o Minor features (sandbox, backport from 0.3.3.4-alpha):
9651    - Explicitly permit the poll() system call when the Linux
9652      seccomp2-based sandbox is enabled: apparently, some versions of
9653      libc use poll() when calling getpwnam(). Closes ticket 25313.
9654
9655  o Minor features (continuous integration, backport from 0.3.4.1-alpha):
9656    - Our .travis.yml configuration now includes support for testing the
9657      results of "make distcheck". (It's not uncommon for "make check"
9658      to pass but "make distcheck" to fail.) Closes ticket 25814.
9659    - Our Travis CI configuration now integrates with the Coveralls
9660      coverage analysis tool. Closes ticket 25818.
9661
9662  o Minor features (compilation, backport from 0.3.4.4-rc):
9663    - When building Tor, prefer to use Python 3 over Python 2, and more
9664      recent (contemplated) versions over older ones. Closes
9665      ticket 26372.
9666
9667  o Minor features (geoip):
9668    - Update geoip and geoip6 to the July 3 2018 Maxmind GeoLite2
9669      Country database. Closes ticket 26674.
9670
9671  o Minor bugfixes (correctness, client, backport from 0.3.4.1-alpha):
9672    - Upon receiving a malformed connected cell, stop processing the
9673      cell immediately. Previously we would mark the connection for
9674      close, but continue processing the cell as if the connection were
9675      open. Fixes bug 26072; bugfix on 0.2.4.7-alpha.
9676
9677  o Minor bugfixes (Linux seccomp2 sandbox, backport from 0.3.4.1-alpha):
9678    - Allow the nanosleep() system call, which glibc uses to implement
9679      sleep() and usleep(). Fixes bug 24969; bugfix on 0.2.5.1-alpha.
9680
9681  o Minor bugfixes (testing, compatibility, backport from 0.3.4.4-rc):
9682    - When running the ntor_ref.py test, make sure only to pass strings
9683      (rather than "bytes" objects) to the Python subprocess module.
9684      Python 3 on Windows seems to require this. Fixes bug 26535; bugfix
9685      on 0.2.5.5-alpha.
9686
9687  o Minor bugfixes (compatibility, openssl, backport from 0.3.4.2-alpha):
9688    - Work around a change in OpenSSL 1.1.1 where return values that
9689      would previously indicate "no password" now indicate an empty
9690      password. Without this workaround, Tor instances running with
9691      OpenSSL 1.1.1 would accept descriptors that other Tor instances
9692      would reject. Fixes bug 26116; bugfix on 0.2.5.16.
9693
9694  o Minor bugfixes (compilation, backport from 0.3.4.4-rc):
9695    - Fix a compilation warning on some versions of GCC when building
9696      code that calls routerinfo_get_my_routerinfo() twice, assuming
9697      that the second call will succeed if the first one did. Fixes bug
9698      26269; bugfix on 0.2.8.2-alpha.
9699
9700  o Minor bugfixes (client, backport from 0.3.4.1-alpha):
9701    - Don't consider Tor running as a client if the ControlPort is open,
9702      but no actual client ports are open. Fixes bug 26062; bugfix
9703      on 0.2.9.4-alpha.
9704
9705  o Minor bugfixes (hardening, backport from 0.3.4.2-alpha):
9706    - Prevent a possible out-of-bounds smartlist read in
9707      protover_compute_vote(). Fixes bug 26196; bugfix on 0.2.9.4-alpha.
9708
9709  o Minor bugfixes (C correctness, backport from 0.3.3.4-alpha):
9710    - Fix a very unlikely (impossible, we believe) null pointer
9711      dereference. Fixes bug 25629; bugfix on 0.2.9.15. Found by
9712      Coverity; this is CID 1430932.
9713
9714  o Minor bugfixes (memory, correctness, backport from 0.3.4.4-rc):
9715    - Fix a number of small memory leaks identified by coverity. Fixes
9716      bug 26467; bugfix on numerous Tor versions.
9717
9718  o Code simplification and refactoring (backport from 0.3.3.5-rc):
9719    - Move the list of default directory authorities to its own file.
9720      Closes ticket 24854. Patch by "beastr0".
9721
9722
9723Changes in version 0.3.4.4-rc - 2018-07-09
9724  Tor 0.3.4.4-rc fixes several small compilation, portability, and
9725  correctness issues in previous versions of Tor. This version is a
9726  release candidate: if no serious bugs are found, we expect that the
9727  stable 0.3.4 release will be (almost) the same as this release.
9728
9729  o Minor features (compilation):
9730    - When building Tor, prefer to use Python 3 over Python 2, and more
9731      recent (contemplated) versions over older ones. Closes
9732      ticket 26372.
9733
9734  o Minor features (geoip):
9735    - Update geoip and geoip6 to the July 3 2018 Maxmind GeoLite2
9736      Country database. Closes ticket 26674.
9737
9738  o Minor features (Rust, portability):
9739    - Rust cross-compilation is now supported. Closes ticket 25895.
9740
9741  o Minor bugfixes (compilation):
9742    - Fix a compilation warning on some versions of GCC when building
9743      code that calls routerinfo_get_my_routerinfo() twice, assuming
9744      that the second call will succeed if the first one did. Fixes bug
9745      26269; bugfix on 0.2.8.2-alpha.
9746
9747  o Minor bugfixes (control port):
9748    - Report the port correctly when a port is configured to bind to
9749      "auto". Fixes bug 26568; bugfix on 0.3.4.1-alpha.
9750    - Handle the HSADDRESS= argument to the HSPOST command properly.
9751      (Previously, this argument was misparsed and thus ignored.) Fixes
9752      bug 26523; bugfix on 0.3.3.1-alpha. Patch by "akwizgran".
9753
9754  o Minor bugfixes (correctness, flow control):
9755    - Upon receiving a stream-level SENDME cell, verify that our window
9756      has not grown too large. Fixes bug 26214; bugfix on svn
9757      r54 (pre-0.0.1).
9758
9759  o Minor bugfixes (memory, correctness):
9760    - Fix a number of small memory leaks identified by coverity. Fixes
9761      bug 26467; bugfix on numerous Tor versions.
9762
9763  o Minor bugfixes (testing, compatibility):
9764    - When running the hs_ntor_ref.py test, make sure only to pass
9765      strings (rather than "bytes" objects) to the Python subprocess
9766      module. Python 3 on Windows seems to require this. Fixes bug
9767      26535; bugfix on 0.3.1.1-alpha.
9768    - When running the ntor_ref.py test, make sure only to pass strings
9769      (rather than "bytes" objects) to the Python subprocess module.
9770      Python 3 on Windows seems to require this. Fixes bug 26535; bugfix
9771      on 0.2.5.5-alpha.
9772
9773
9774Changes in version 0.3.3.8 - 2018-07-09
9775  Tor 0.3.3.8 backports several changes from the 0.3.4.x series, including
9776  fixes for a memory leak affecting directory authorities.
9777
9778  o Major bugfixes (directory authority, backport from 0.3.4.3-alpha):
9779    - Stop leaking memory on directory authorities when planning to
9780      vote. This bug was crashing authorities by exhausting their
9781      memory. Fixes bug 26435; bugfix on 0.3.3.6.
9782
9783  o Major bugfixes (rust, testing, backport from 0.3.4.3-alpha):
9784    - Make sure that failing tests in Rust will actually cause the build
9785      to fail: previously, they were ignored. Fixes bug 26258; bugfix
9786      on 0.3.3.4-alpha.
9787
9788  o Minor features (compilation, backport from 0.3.4.4-rc):
9789    - When building Tor, prefer to use Python 3 over Python 2, and more
9790      recent (contemplated) versions over older ones. Closes
9791      ticket 26372.
9792
9793  o Minor features (geoip):
9794    - Update geoip and geoip6 to the July 3 2018 Maxmind GeoLite2
9795      Country database. Closes ticket 26674.
9796
9797  o Minor features (relay, diagnostic, backport from 0.3.4.3-alpha):
9798    - Add several checks to detect whether Tor relays are uploading
9799      their descriptors without specifying why they regenerated them.
9800      Diagnostic for ticket 25686.
9801
9802  o Minor bugfixes (circuit path selection, backport from 0.3.4.1-alpha):
9803    - Don't count path selection failures as circuit build failures.
9804      This change should eliminate cases where Tor blames its guard or
9805      the network for situations like insufficient microdescriptors
9806      and/or overly restrictive torrc settings. Fixes bug 25705; bugfix
9807      on 0.3.3.1-alpha.
9808
9809  o Minor bugfixes (compilation, backport from 0.3.4.4-rc):
9810    - Fix a compilation warning on some versions of GCC when building
9811      code that calls routerinfo_get_my_routerinfo() twice, assuming
9812      that the second call will succeed if the first one did. Fixes bug
9813      26269; bugfix on 0.2.8.2-alpha.
9814
9815  o Minor bugfixes (control port, backport from 0.3.4.4-rc):
9816    - Handle the HSADDRESS= argument to the HSPOST command properly.
9817      (Previously, this argument was misparsed and thus ignored.) Fixes
9818      bug 26523; bugfix on 0.3.3.1-alpha. Patch by "akwizgran".
9819
9820  o Minor bugfixes (memory, correctness, backport from 0.3.4.4-rc):
9821    - Fix a number of small memory leaks identified by coverity. Fixes
9822      bug 26467; bugfix on numerous Tor versions.
9823
9824  o Minor bugfixes (relay, backport from 0.3.4.3-alpha):
9825    - Relays now correctly block attempts to re-extend to the previous
9826      relay by Ed25519 identity. Previously they would warn in this
9827      case, but not actually reject the attempt. Fixes bug 26158; bugfix
9828      on 0.3.0.1-alpha.
9829
9830  o Minor bugfixes (restart-in-process, backport from 0.3.4.1-alpha):
9831    - When shutting down, Tor now clears all the flags in the control.c
9832      module. This should prevent a bug where authentication cookies are
9833      not generated on restart. Fixes bug 25512; bugfix on 0.3.3.1-alpha.
9834
9835  o Minor bugfixes (testing, compatibility, backport from 0.3.4.4-rc):
9836    - When running the hs_ntor_ref.py test, make sure only to pass
9837      strings (rather than "bytes" objects) to the Python subprocess
9838      module. Python 3 on Windows seems to require this. Fixes bug
9839      26535; bugfix on 0.3.1.1-alpha.
9840    - When running the ntor_ref.py test, make sure only to pass strings
9841      (rather than "bytes" objects) to the Python subprocess module.
9842      Python 3 on Windows seems to require this. Fixes bug 26535; bugfix
9843      on 0.2.5.5-alpha.
9844
9845
9846Changes in version 0.3.4.3-alpha - 2018-06-26
9847  Tor 0.3.4.3-alpha fixes several bugs in earlier versions, including
9848  one that was causing stability issues on directory authorities.
9849
9850  o Major bugfixes (directory authority):
9851    - Stop leaking memory on directory authorities when planning to
9852      vote. This bug was crashing authorities by exhausting their
9853      memory. Fixes bug 26435; bugfix on 0.3.3.6.
9854
9855  o Major bugfixes (rust, testing):
9856    - Make sure that failing tests in Rust will actually cause the build
9857      to fail: previously, they were ignored. Fixes bug 26258; bugfix
9858      on 0.3.3.4-alpha.
9859
9860  o Minor feature (directory authorities):
9861    - Stop warning about incomplete bw lines before the first complete
9862      bw line has been found, so that additional header lines can be
9863      ignored. Fixes bug 25960; bugfix on 0.2.2.1-alpha
9864
9865  o Minor features (relay, diagnostic):
9866    - Add several checks to detect whether Tor relays are uploading
9867      their descriptors without specifying why they regenerated them.
9868      Diagnostic for ticket 25686.
9869
9870  o Minor features (unit tests):
9871    - Test complete bandwidth measurements files, and test that
9872      incomplete bandwidth lines only give warnings when the end of the
9873      header has not been detected. Fixes bug 25947; bugfix
9874      on 0.2.2.1-alpha
9875
9876  o Minor bugfixes (compilation):
9877    - Refrain from compiling unit testing related object files when
9878      --disable-unittests is set to configure script. Fixes bug 24891;
9879      bugfix on 0.2.5.1-alpha.
9880    - When linking the libtor_testing.a library, only include the
9881      dirauth object files once. Previously, they were getting added
9882      twice. Fixes bug 26402; bugfix on 0.3.4.1-alpha.
9883    - The --enable-fatal-warnings flag now affects Rust code as well.
9884      Closes ticket 26245.
9885
9886  o Minor bugfixes (onion services):
9887    - Recompute some consensus information after detecting a clock jump,
9888      or after transitioning from a non-live consensus to a live
9889      consensus. We do this to avoid having an outdated state, and
9890      miscalculating the index for next-generation onion services. Fixes
9891      bug 24977; bugfix on 0.3.2.1-alpha.
9892
9893  o Minor bugfixes (relay):
9894    - Relays now correctly block attempts to re-extend to the previous
9895      relay by Ed25519 identity. Previously they would warn in this
9896      case, but not actually reject the attempt. Fixes bug 26158; bugfix
9897      on 0.3.0.1-alpha.
9898
9899  o Minor bugfixes (testing):
9900    - Fix compilation of the doctests in the Rust crypto crate. Fixes
9901      bug 26415; bugfix on 0.3.4.1-alpha.
9902    - Instead of trying to read the geoip configuration files from
9903      within the unit tests, instead create our own ersatz files with
9904      just enough geoip data in the format we expect. Trying to read
9905      from the source directory created problems on Windows with mingw,
9906      where the build system's paths are not the same as the platform's
9907      paths. Fixes bug 25787; bugfix on 0.3.4.1-alpha.
9908    - Refrain from trying to get an item from an empty smartlist in
9909      test_bridges_clear_bridge_list. Set DEBUG_SMARTLIST in unit tests
9910      to catch improper smartlist usage. Furthermore, enable
9911      DEBUG_SMARTLIST globally when build is configured with fragile
9912      hardening. Fixes bug 26196; bugfix on 0.3.4.1-alpha.
9913
9914
9915Changes in version 0.3.3.7 - 2018-06-12
9916  Tor 0.3.3.7 backports several changes from the 0.3.4.x series, including
9917  fixes for bugs affecting compatibility and stability.
9918
9919  o Directory authority changes:
9920    - Add an IPv6 address for the "dannenberg" directory authority.
9921      Closes ticket 26343.
9922
9923  o Minor features (geoip):
9924    - Update geoip and geoip6 to the June 7 2018 Maxmind GeoLite2
9925      Country database. Closes ticket 26351.
9926
9927  o Minor bugfixes (compatibility, openssl, backport from 0.3.4.2-alpha):
9928    - Work around a change in OpenSSL 1.1.1 where return values that
9929      would previously indicate "no password" now indicate an empty
9930      password. Without this workaround, Tor instances running with
9931      OpenSSL 1.1.1 would accept descriptors that other Tor instances
9932      would reject. Fixes bug 26116; bugfix on 0.2.5.16.
9933
9934  o Minor bugfixes (compilation, backport from 0.3.4.2-alpha):
9935    - Silence unused-const-variable warnings in zstd.h with some GCC
9936      versions. Fixes bug 26272; bugfix on 0.3.1.1-alpha.
9937
9938  o Minor bugfixes (controller, backport from 0.3.4.2-alpha):
9939    - Improve accuracy of the BUILDTIMEOUT_SET control port event's
9940      TIMEOUT_RATE and CLOSE_RATE fields. (We were previously
9941      miscounting the total number of circuits for these field values.)
9942      Fixes bug 26121; bugfix on 0.3.3.1-alpha.
9943
9944  o Minor bugfixes (hardening, backport from 0.3.4.2-alpha):
9945    - Prevent a possible out-of-bounds smartlist read in
9946      protover_compute_vote(). Fixes bug 26196; bugfix on 0.2.9.4-alpha.
9947
9948  o Minor bugfixes (path selection, backport from 0.3.4.1-alpha):
9949    - Only select relays when they have the descriptors we prefer to use
9950      for them. This change fixes a bug where we could select a relay
9951      because it had _some_ descriptor, but reject it later with a
9952      nonfatal assertion error because it didn't have the exact one we
9953      wanted. Fixes bugs 25691 and 25692; bugfix on 0.3.3.4-alpha.
9954
9955
9956Changes in version 0.3.4.2-alpha - 2018-06-12
9957  Tor 0.3.4.2-alpha fixes several minor bugs in the previous alpha
9958  release, and forward-ports an authority-only security fix from 0.3.3.6.
9959
9960  o Directory authority changes:
9961    - Add an IPv6 address for the "dannenberg" directory authority.
9962      Closes ticket 26343.
9963
9964  o Major bugfixes (security, directory authority, denial-of-service, also in 0.3.3.6):
9965    - Fix a bug that could have allowed an attacker to force a directory
9966      authority to use up all its RAM by passing it a maliciously
9967      crafted protocol versions string. Fixes bug 25517; bugfix on
9968      0.2.9.4-alpha. This issue is also tracked as TROVE-2018-005.
9969
9970  o Minor features (continuous integration):
9971    - Add the necessary configuration files for continuous integration
9972      testing on Windows, via the Appveyor platform. Closes ticket
9973      25549. Patches from Marcin Cieślak and Isis Lovecruft.
9974
9975  o Minor features (geoip):
9976    - Update geoip and geoip6 to the June 7 2018 Maxmind GeoLite2
9977      Country database. Closes ticket 26351.
9978
9979  o Minor bugfixes (compatibility, openssl):
9980    - Work around a change in OpenSSL 1.1.1 where return values that
9981      would previously indicate "no password" now indicate an empty
9982      password. Without this workaround, Tor instances running with
9983      OpenSSL 1.1.1 would accept descriptors that other Tor instances
9984      would reject. Fixes bug 26116; bugfix on 0.2.5.16.
9985
9986  o Minor bugfixes (compilation):
9987    - Silence unused-const-variable warnings in zstd.h with some GCC
9988      versions. Fixes bug 26272; bugfix on 0.3.1.1-alpha.
9989    - Fix compilation when using OpenSSL 1.1.0 with the "no-deprecated"
9990      flag enabled. Fixes bug 26156; bugfix on 0.3.4.1-alpha.
9991    - Avoid a compiler warning when casting the return value of
9992      smartlist_len() to double with DEBUG_SMARTLIST enabled. Fixes bug
9993      26283; bugfix on 0.2.4.10-alpha.
9994
9995  o Minor bugfixes (control port):
9996    - Do not count 0-length RELAY_COMMAND_DATA cells as valid data in
9997      CIRC_BW events. Previously, such cells were counted entirely in
9998      the OVERHEAD field. Now they are not. Fixes bug 26259; bugfix
9999      on 0.3.4.1-alpha.
10000
10001  o Minor bugfixes (controller):
10002    - Improve accuracy of the BUILDTIMEOUT_SET control port event's
10003      TIMEOUT_RATE and CLOSE_RATE fields. (We were previously
10004      miscounting the total number of circuits for these field values.)
10005      Fixes bug 26121; bugfix on 0.3.3.1-alpha.
10006
10007  o Minor bugfixes (hardening):
10008    - Prevent a possible out-of-bounds smartlist read in
10009      protover_compute_vote(). Fixes bug 26196; bugfix on 0.2.9.4-alpha.
10010
10011  o Minor bugfixes (onion services):
10012    - Fix a bug that blocked the creation of ephemeral v3 onion
10013      services. Fixes bug 25939; bugfix on 0.3.4.1-alpha.
10014
10015  o Minor bugfixes (test coverage tools):
10016    - Update our "cov-diff" script to handle output from the latest
10017      version of gcov, and to remove extraneous timestamp information
10018      from its output. Fixes bugs 26101 and 26102; bugfix
10019      on 0.2.5.1-alpha.
10020
10021
10022Changes in version 0.3.3.6 - 2018-05-22
10023  Tor 0.3.3.6 is the first stable release in the 0.3.3 series. It
10024  backports several important fixes from the 0.3.4.1-alpha.
10025
10026  The Tor 0.3.3 series includes controller support and other
10027  improvements for v3 onion services, official support for embedding Tor
10028  within other applications, and our first non-trivial module written in
10029  the Rust programming language. (Rust is still not enabled by default
10030  when building Tor.) And as usual, there are numerous other smaller
10031  bugfixes, features, and improvements.
10032
10033  Below are the changes since 0.3.3.5-rc. For a list of all changes
10034  since 0.3.2.10, see the ReleaseNotes file.
10035
10036  o Major bugfixes (directory authorities, security, backport from 0.3.4.1-alpha):
10037    - When directory authorities read a zero-byte bandwidth file, they
10038      would previously log a warning with the contents of an
10039      uninitialised buffer. They now log a warning about the empty file
10040      instead. Fixes bug 26007; bugfix on 0.2.2.1-alpha.
10041
10042  o Major bugfixes (security, directory authority, denial-of-service):
10043    - Fix a bug that could have allowed an attacker to force a directory
10044      authority to use up all its RAM by passing it a maliciously
10045      crafted protocol versions string. Fixes bug 25517; bugfix on
10046      0.2.9.4-alpha. This issue is also tracked as TROVE-2018-005.
10047
10048  o Major bugfixes (crash, backport from 0.3.4.1-alpha):
10049    - Avoid a rare assertion failure in the circuit build timeout code
10050      if we fail to allow any circuits to actually complete. Fixes bug
10051      25733; bugfix on 0.2.2.2-alpha.
10052
10053  o Major bugfixes (directory authorities, backport from 0.3.4.1-alpha):
10054    - Avoid a crash when testing router reachability on a router that
10055      could have an ed25519 ID, but which does not. Fixes bug 25415;
10056      bugfix on 0.3.3.2-alpha.
10057
10058  o Major bugfixes (onion service, backport from 0.3.4.1-alpha):
10059    - Correctly detect when onion services get disabled after HUP. Fixes
10060      bug 25761; bugfix on 0.3.2.1.
10061
10062  o Major bugfixes (relay, denial of service, backport from 0.3.4.1-alpha):
10063    - Impose a limit on circuit cell queue size. The limit can be
10064      controlled by a consensus parameter. Fixes bug 25226; bugfix
10065      on 0.2.4.14-alpha.
10066
10067  o Minor features (compatibility, backport from 0.3.4.1-alpha):
10068    - Avoid some compilation warnings with recent versions of LibreSSL.
10069      Closes ticket 26006.
10070
10071  o Minor features (continuous integration, backport from 0.3.4.1-alpha):
10072    - Our .travis.yml configuration now includes support for testing the
10073      results of "make distcheck". (It's not uncommon for "make check"
10074      to pass but "make distcheck" to fail.) Closes ticket 25814.
10075    - Our Travis CI configuration now integrates with the Coveralls
10076      coverage analysis tool. Closes ticket 25818.
10077
10078  o Minor features (geoip):
10079    - Update geoip and geoip6 to the May 1 2018 Maxmind GeoLite2 Country
10080      database. Closes ticket 26104.
10081
10082  o Minor bugfixes (client, backport from 0.3.4.1-alpha):
10083    - Don't consider Tor running as a client if the ControlPort is open,
10084      but no actual client ports are open. Fixes bug 26062; bugfix
10085      on 0.2.9.4-alpha.
10086
10087  o Minor bugfixes (correctness, client, backport from 0.3.4.1-alpha):
10088    - Upon receiving a malformed connected cell, stop processing the
10089      cell immediately. Previously we would mark the connection for
10090      close, but continue processing the cell as if the connection were
10091      open. Fixes bug 26072; bugfix on 0.2.4.7-alpha.
10092
10093  o Minor bugfixes (documentation, backport from 0.3.4.1-alpha):
10094    - Stop saying in the manual that clients cache ipv4 dns answers from
10095      exit relays. We haven't used them since 0.2.6.3-alpha, and in
10096      ticket 24050 we stopped even caching them as of 0.3.2.6-alpha, but
10097      we forgot to say so in the man page. Fixes bug 26052; bugfix
10098      on 0.3.2.6-alpha.
10099
10100  o Minor bugfixes (Linux seccomp2 sandbox, backport from 0.3.4.1-alpha):
10101    - Allow the nanosleep() system call, which glibc uses to implement
10102      sleep() and usleep(). Fixes bug 24969; bugfix on 0.2.5.1-alpha.
10103
10104  o Minor bugfixes (onion service, backport from 0.3.4.1-alpha):
10105    - Fix a memory leak when a v3 onion service is configured and gets a
10106      SIGHUP signal. Fixes bug 25901; bugfix on 0.3.2.1-alpha.
10107    - When parsing the descriptor signature, look for the token plus an
10108      extra white-space at the end. This is more correct but also will
10109      allow us to support new fields that might start with "signature".
10110      Fixes bug 26069; bugfix on 0.3.0.1-alpha.
10111
10112  o Minor bugfixes (relay, crash, backport from 0.3.4.1-alpha):
10113    - Avoid a crash when running with DirPort set but ORPort turned off.
10114      Fixes a case of bug 23693; bugfix on 0.3.1.1-alpha.
10115
10116  o Documentation (backport from 0.3.4.1-alpha):
10117    - Correct an IPv6 error in the documentation for ExitPolicy. Closes
10118      ticket 25857. Patch from "CTassisF".
10119
10120
10121Changes in version 0.3.4.1-alpha - 2018-05-17
10122  Tor 0.3.4.1-alpha is the first release in the 0.3.4.x series. It
10123  includes refactoring to begin reducing Tor's binary size and idle CPU
10124  usage on mobile, along with prep work for new bandwidth scanners,
10125  improvements to the experimental "vanguards" feature, and numerous
10126  other small features and bugfixes.
10127
10128  o New system requirements:
10129    - Tor no longer tries to support old operating systems without
10130      mmap() or some local equivalent. Apparently, compilation on such
10131      systems has been broken for some time, without anybody noticing or
10132      complaining. Closes ticket 25398.
10133
10134  o Major feature (directory authority, modularization):
10135    - The directory authority subsystem has been modularized. The code
10136      is now located in src/or/dirauth/, and is compiled in by default.
10137      To disable the module, the configure option
10138      --disable-module-dirauth has been added. This module may be
10139      disabled by default in some future release. Closes ticket 25610.
10140
10141  o Major features (main loop, CPU usage):
10142    - When Tor is disabled (via DisableNetwork or via hibernation), it
10143      no longer needs to run any per-second events. This change should
10144      make it easier for mobile applications to disable Tor while the
10145      device is sleeping, or Tor is not running. Closes ticket 26063.
10146    - Tor no longer enables all of its periodic events by default.
10147      Previously, Tor would enable all possible main loop events,
10148      regardless of whether it needed them. Furthermore, many of these
10149      events are now disabled with Tor is hibernating or DisableNetwork
10150      is set. This is a big step towards reducing client CPU usage by
10151      reducing the amount of wake-ups the daemon does. Closes ticket
10152      25376 and 25762.
10153    - The bandwidth-limitation logic has been refactored so that
10154      bandwidth calculations are performed on-demand, rather than every
10155      TokenBucketRefillInterval milliseconds. This change should improve
10156      the granularity of our bandwidth calculations, and limit the
10157      number of times that the Tor process needs to wake up when it is
10158      idle. Closes ticket 25373.
10159    - Move responsibility for many operations from a once-per-second
10160      callback to a callback that is only scheduled as needed. Moving
10161      this functionality has allowed us to disable the callback when
10162      Tor's network is disabled. Once enough items are removed from our
10163      once-per-second callback, we can eliminate it entirely to conserve
10164      CPU when idle. The functionality removed includes: closing
10165      connections, circuits, and channels (ticket 25932); consensus
10166      voting (25937); flushing log callbacks (25951); honoring delayed
10167      SIGNEWNYM requests (25949); rescanning the consensus cache
10168      (25931); saving the state file to disk (25948); warning relay
10169      operators about unreachable ports (25952); and keeping track of
10170      Tor's uptime (26009).
10171
10172  o Major bugfixes (directory authorities, security):
10173    - When directory authorities read a zero-byte bandwidth file, they
10174      would previously log a warning with the contents of an
10175      uninitialised buffer. They now log a warning about the empty file
10176      instead. Fixes bug 26007; bugfix on 0.2.2.1-alpha.
10177
10178  o Major bugfixes (crash):
10179    - Avoid a rare assertion failure in the circuit build timeout code
10180      if we fail to allow any circuits to actually complete. Fixes bug
10181      25733; bugfix on 0.2.2.2-alpha.
10182
10183  o Major bugfixes (directory authority):
10184    - Avoid a crash when testing router reachability on a router that
10185      could have an ed25519 ID, but which does not. Fixes bug 25415;
10186      bugfix on 0.3.3.2-alpha.
10187
10188  o Major bugfixes (onion service):
10189    - Correctly detect when onion services get disabled after HUP. Fixes
10190      bug 25761; bugfix on 0.3.2.1.
10191
10192  o Major bugfixes (protover, voting):
10193    - Revise Rust implementation of protover to use a more memory-
10194      efficient voting algorithm and corresponding data structures, thus
10195      avoiding a potential (but small impact) DoS attack where specially
10196      crafted protocol strings would expand to several potential
10197      megabytes in memory. In the process, several portions of code were
10198      revised to be methods on new, custom types, rather than functions
10199      taking interchangeable types, thus increasing type safety of the
10200      module. Custom error types and handling were added as well, in
10201      order to facilitate better error dismissal/handling in outside
10202      crates and avoid mistakenly passing an internal error string to C
10203      over the FFI boundary. Many tests were added, and some previous
10204      differences between the C and Rust implementations have been
10205      remedied. Fixes bug 24031; bugfix on 0.3.3.1-alpha.
10206
10207  o Major bugfixes (relay, denial of service):
10208    - Impose a limit on circuit cell queue size. The limit can be
10209      controlled by a consensus parameter. Fixes bug 25226; bugfix
10210      on 0.2.4.14-alpha.
10211
10212  o Minor features (accounting):
10213    - When Tor becomes dormant, it now uses a scheduled event to wake up
10214      at the right time. Previously, we would use the per-second timer
10215      to check whether to wake up, but we no longer have any per-second
10216      timers enabled when the network is disabled. Closes ticket 26064.
10217
10218  o Minor features (code quality):
10219    - Add optional spell-checking for the Tor codebase, using the
10220      "misspell" program. To use this feature, run "make check-typos".
10221      Closes ticket 25024.
10222
10223  o Minor features (compatibility):
10224    - Tor now detects versions of OpenSSL 1.1.0 and later compiled with
10225      the no-deprecated option, and builds correctly with them. Closes
10226      tickets 19429, 19981, and 25353.
10227    - Avoid some compilation warnings with recent versions of LibreSSL.
10228      Closes ticket 26006.
10229
10230  o Minor features (compression, zstd):
10231    - When running with zstd, Tor now considers using advanced functions
10232      that the zstd maintainers have labeled as potentially unstable. To
10233      prevent breakage, Tor will only use this functionality when the
10234      runtime version of the zstd library matches the version with which
10235      Tor was compiled. Closes ticket 25162.
10236
10237  o Minor features (configuration):
10238    - The "DownloadSchedule" options have been renamed to end with
10239      "DownloadInitialDelay". The old names are still allowed, but will
10240      produce a warning. Comma-separated lists are still permitted for
10241      these options, but all values after the first are ignored (as they
10242      have been since 0.2.9). Closes ticket 23354.
10243
10244  o Minor features (continuous integration):
10245    - Our .travis.yml configuration now includes support for testing the
10246      results of "make distcheck". (It's not uncommon for "make check"
10247      to pass but "make distcheck" to fail.) Closes ticket 25814.
10248    - Our Travis CI configuration now integrates with the Coveralls
10249      coverage analysis tool. Closes ticket 25818.
10250
10251  o Minor features (control port):
10252    - Introduce GETINFO "current-time/{local,utc}" to return the local
10253      and UTC times respectively in ISO format. This helps a controller
10254      like Tor Browser detect a time-related error. Closes ticket 25511.
10255      Patch by Neel Chauhan.
10256    - Introduce new fields to the CIRC_BW event. There are two new
10257      fields in each of the read and written directions. The DELIVERED
10258      fields report the total valid data on the circuit, as measured by
10259      the payload sizes of verified and error-checked relay command
10260      cells. The OVERHEAD fields report the total unused bytes in each
10261      of these cells. Closes ticket 25903.
10262
10263  o Minor features (directory authority):
10264    - Directory authorities now open their key-pinning files as O_SYNC,
10265      to limit their chances of accidentally writing partial lines.
10266      Closes ticket 23909.
10267
10268  o Minor features (directory authority, forward compatibility):
10269    - Make the lines of the measured bandwidth file able to contain
10270      their entries in any order. Previously, the node_id entry needed
10271      to come first. Closes ticket 26004.
10272
10273  o Minor features (entry guards):
10274    - Introduce a new torrc option NumPrimaryGuards for controlling the
10275      number of primary guards. Closes ticket 25843.
10276
10277  o Minor features (geoip):
10278    - Update geoip and geoip6 to the May 1 2018 Maxmind GeoLite2 Country
10279      database. Closes ticket 26104.
10280
10281  o Minor features (performance):
10282    - Avoid a needless call to malloc() when processing an incoming
10283      relay cell. Closes ticket 24914.
10284    - Make our timing-wheel code run a tiny bit faster on 32-bit
10285      platforms, by preferring 32-bit math to 64-bit. Closes
10286      ticket 24688.
10287    - Avoid a needless malloc()/free() pair every time we handle an ntor
10288      handshake. Closes ticket 25150.
10289
10290  o Minor features (testing):
10291    - Add a unit test for voting_schedule_get_start_of_next_interval().
10292      Closes ticket 26014, and helps make unit test coverage
10293      more deterministic.
10294    - A new unittests module specifically for testing the functions in
10295      the (new-ish) bridges.c module has been created with new
10296      unittests, raising the code coverage percentages. Closes 25425.
10297    - We now have improved testing for addressmap_get_virtual_address()
10298      function. This should improve our test coverage, and make our test
10299      coverage more deterministic. Closes ticket 25993.
10300
10301  o Minor features (timekeeping, circuit scheduling):
10302    - When keeping track of how busy each circuit have been recently on
10303      a given connection, use coarse-grained monotonic timers rather
10304      than gettimeofday(). This change should marginally increase
10305      accuracy and performance. Implements part of ticket 25927.
10306
10307  o Minor bugfixes (bandwidth management):
10308    - Consider ourselves "low on write bandwidth" if we have exhausted
10309      our write bandwidth some time in the last second. This was the
10310      documented behavior before, but the actual behavior was to change
10311      this value every TokenBucketRefillInterval. Fixes bug 25828;
10312      bugfix on 0.2.3.5-alpha.
10313
10314  o Minor bugfixes (C correctness):
10315    - Add a missing lock acquisition in the shutdown code of the control
10316      subsystem. Fixes bug 25675; bugfix on 0.2.7.3-rc. Found by
10317      Coverity; this is CID 1433643.
10318
10319  o Minor bugfixes (circuit path selection):
10320    - Don't count path selection failures as circuit build failures.
10321      This change should eliminate cases where Tor blames its guard or
10322      the network for situations like insufficient microdescriptors
10323      and/or overly restrictive torrc settings. Fixes bug 25705; bugfix
10324      on 0.3.3.1-alpha.
10325
10326  o Minor bugfixes (client):
10327    - Don't consider Tor running as a client if the ControlPort is open,
10328      but no actual client ports are open. Fixes bug 26062; bugfix
10329      on 0.2.9.4-alpha.
10330
10331  o Minor bugfixes (code style):
10332    - Fixed multiple includes of transports.h in src/or/connection.c
10333      Fixes bug 25261; bugfix on 0.2.5.1-alpha.
10334    - Remove the unused variable n_possible from the function
10335      channel_get_for_extend(). Fixes bug 25645; bugfix on 0.2.4.4-alpha
10336
10337  o Minor bugfixes (control interface):
10338    - Respond with more human-readable error messages to GETINFO exit-
10339      policy/* requests. Also, let controller know if an error is
10340      transient (response code 551) or not (response code 552). Fixes
10341      bug 25852; bugfix on 0.2.8.1-alpha.
10342
10343  o Minor bugfixes (controller):
10344    - Make CIRC_BW event reflect the total of all data sent on a
10345      circuit, including padding and dropped cells. Also fix a mis-
10346      counting bug when STREAM_BW events were enabled. Fixes bug 25400;
10347      bugfix on 0.2.5.2-alpha.
10348
10349  o Minor bugfixes (correctness, client):
10350    - Upon receiving a malformed connected cell, stop processing the cell
10351      immediately.  Previously we would mark the connection for close, but
10352      continue processing the cell as if the connection were open. Fixes bug
10353      26072; bugfix on 0.2.4.7-alpha.
10354
10355  o Minor bugfixes (directory client):
10356    - When unverified-consensus is verified, rename it to cached-
10357      consenus. Fixes bug 4187; bugfix on 0.2.0.3-alpha.
10358    - Fixed launching a certificate fetch always during the scheduled
10359      periodic consensus fetch by fetching only in those cases when
10360      consensus are waiting for certs. Fixes bug 24740; bugfix
10361      on 0.2.9.1-alpha.
10362
10363  o Minor bugfixes (documentation):
10364    - Stop saying in the manual that clients cache ipv4 dns answers from
10365      exit relays. We haven't used them since 0.2.6.3-alpha, and in
10366      ticket 24050 we stopped even caching them as of 0.3.2.6-alpha, but
10367      we forgot to say so in the man page. Fixes bug 26052; bugfix
10368      on 0.3.2.6-alpha.
10369
10370  o Minor bugfixes (error reporting):
10371    - Improve tolerance for directory authorities with skewed clocks.
10372      Previously, an authority with a clock more than 60 seconds ahead
10373      could cause a client with a correct clock to warn that the
10374      client's clock was behind. Now the clocks of a majority of
10375      directory authorities have to be ahead of the client before this
10376      warning will occur. Fixes bug 25756; bugfix on 0.2.2.25-alpha.
10377
10378  o Minor bugfixes (Linux seccomp2 sandbox):
10379    - Allow the nanosleep() system call, which glibc uses to implement
10380      sleep() and usleep(). Fixes bug 24969; bugfix on 0.2.5.1-alpha.
10381
10382  o Minor bugfixes (onion service):
10383    - Fix a memory leak when a v3 onion service is configured and gets a
10384      SIGHUP signal. Fixes bug 25901; bugfix on 0.3.2.1-alpha.
10385    - When parsing the descriptor signature, look for the token plus an
10386      extra white-space at the end. This is more correct but also will
10387      allow us to support new fields that might start with "signature".
10388      Fixes bug 26069; bugfix on 0.3.0.1-alpha.
10389
10390  o Minor bugfixes (path selection):
10391    - Only select relays when they have the descriptors we prefer to use
10392      for them. This change fixes a bug where we could select a relay
10393      because it had _some_ descriptor, but reject it later with a
10394      nonfatal assertion error because it didn't have the exact one we
10395      wanted. Fixes bugs 25691 and 25692; bugfix on 0.3.3.4-alpha.
10396
10397  o Minor bugfixes (portability):
10398    - Do not align mmap length, as it is not required by POSIX, and the
10399      getpagesize function is deprecated. Fixes bug 25399; bugfix
10400      on 0.1.1.23.
10401
10402  o Minor bugfixes (portability, FreeBSD):
10403    - In have_enough_mem_for_dircache(), the variable DIRCACHE_MIN_MEM_MB
10404      does not stringify on FreeBSD, so we switch to tor_asprintf().
10405      Fixes bug 20887; bugfix on 0.2.8.1-alpha. Patch by Neel Chauhan.
10406
10407  o Minor bugfixes (relay statistics):
10408    - When a relay is collecting internal statistics about how many
10409      create cell requests it has seen of each type, accurately count
10410      the requests from relays that temporarily fall out of the
10411      consensus. (To be extra conservative, we were already ignoring
10412      requests from clients in our counts, and we continue ignoring them
10413      here.) Fixes bug 24910; bugfix on 0.2.4.17-rc.
10414
10415  o Minor bugfixes (relay, crash):
10416    - Avoid a crash when running with DirPort set but ORPort turned off.
10417      Fixes a case of bug 23693; bugfix on 0.3.1.1-alpha.
10418
10419  o Minor bugfixes (restart-in-process):
10420    - When shutting down, Tor now clears all the flags in the control.c
10421      module. This should prevent a bug where authentication cookies are
10422      not generated on restart. Fixes bug 25512; bugfix on 0.3.3.1-alpha.
10423
10424  o Minor bugfixes (testing):
10425    - When testing workqueue event-cancellation, make sure that we
10426      actually cancel an event, and that cancel each event with equal
10427      probability. (It was previously possible, though extremely
10428      unlikely, for our event-canceling test not to cancel any events.)
10429      Fixes bug 26008; bugfix on 0.2.6.3-alpha.
10430    - Repeat part of the test in test_client_pick_intro() a number of
10431      times, to give it consistent coverage. Fixes bug 25996; bugfix
10432      on 0.3.2.1-alpha.
10433    - Remove randomness from the hs_common/responsible_hsdirs test, so
10434      that it always takes the same path through the function it tests.
10435      Fixes bug 25997; bugfix on 0.3.2.1-alpha.
10436    - Change the behavior of the "channel/outbound" test so that it
10437      never causes a 10-second rollover for the EWMA circuitmux code.
10438      Previously, this behavior would happen randomly, and result in
10439      fluctuating test coverage. Fixes bug 25994; bugfix
10440      on 0.3.3.1-alpha.
10441    - Use X509_new() to allocate certificates that will be freed later
10442      with X509_free(). Previously, some parts of the unit tests had
10443      used tor_malloc_zero(), which is incorrect, and which caused test
10444      failures on Windows when they were built with extra hardening.
10445      Fixes bugs 25943 and 25944; bugfix on 0.2.8.1-alpha. Patch by
10446      Marcin Cieślak.
10447    - While running the circuit_timeout test, fix the PRNG to a
10448      deterministic AES stream, so that the test coverage from this test
10449      will itself be deterministic. Fixes bug 25995; bugfix
10450      on 0.2.2.2-alpha.
10451
10452  o Minor bugfixes (vanguards):
10453    - Allow the last hop in a vanguard circuit to be the same as our
10454      first, to prevent the adversary from influencing guard node choice
10455      by choice of last hop. Also prevent the creation of A - B - A
10456      paths, or A - A paths, which are forbidden by relays. Fixes bug
10457      25870; bugfix on 0.3.3.1-alpha.
10458
10459  o Code simplification and refactoring:
10460    - Remove duplicate code in parse_{c,s}method_line and bootstrap
10461      their functionalities into a single function. Fixes bug 6236;
10462      bugfix on 0.2.3.6-alpha.
10463    - We remove the PortForwarding and PortForwardingHelper options,
10464      related functions, and the port_forwarding tests. These options
10465      were used by the now-deprecated Vidalia to help ordinary users
10466      become Tor relays or bridges. Closes ticket 25409. Patch by
10467      Neel Chauhan.
10468    - In order to make the OR and dir checking function in router.c less
10469      confusing we renamed some functions and
10470      consider_testing_reachability() has been split into
10471      router_should_check_reachability() and
10472      router_do_reachability_checks(). Also we improved the documentation
10473      in some functions. Closes ticket 18918.
10474    - Initial work to isolate Libevent usage to a handful of modules in
10475      our codebase, to simplify our call structure, and so that we can
10476      more easily change event loops in the future if needed. Closes
10477      ticket 23750.
10478    - Introduce a function to call getsockname() and return tor_addr_t,
10479      to save a little complexity throughout the codebase. Closes
10480      ticket 18105.
10481    - Make hsdir_index in node_t a hsdir_index_t rather than a pointer
10482      as hsdir_index is always present. Also, we move hsdir_index_t into
10483      or.h. Closes ticket 23094. Patch by Neel Chauhan.
10484    - Merge functions used for describing nodes and suppress the
10485      functions that do not allocate memory for the output buffer
10486      string. NODE_DESC_BUF_LEN constant and format_node_description()
10487      function cannot be used externally from router.c module anymore.
10488      Closes ticket 25432. Patch by valentecaio.
10489    - Our main loop has been simplified so that all important operations
10490      happen inside events. Previously, some operations had to happen
10491      outside the event loop, to prevent infinite sequences of event
10492      activations. Closes ticket 25374.
10493    - Put a SHA1 public key digest in hs_service_intro_point_t, and use
10494      it in register_intro_circ() and service_intro_point_new(). This
10495      prevents the digest from being re-calculated each time. Closes
10496      ticket 23107. Patch by Neel Chauhan.
10497    - Refactor token-bucket implementations to use a common backend.
10498      Closes ticket 25766.
10499    - Remove extern declaration of stats_n_seconds_working variable from
10500      main, protecting its accesses with get_uptime() and reset_uptime()
10501      functions. Closes ticket 25081, patch by “valentecaio”.
10502    - Remove our previous logic for "cached gettimeofday()" -- our
10503      coarse monotonic timers are fast enough for this purpose, and far
10504      less error-prone. Implements part of ticket 25927.
10505    - Remove the return value for fascist_firewall_choose_address_base(),
10506      and sister functions such as fascist_firewall_choose_address_node()
10507      and fascist_firewall_choose_address_rs(). Also, while we're here,
10508      initialize the ap argument as leaving it uninitialized can pose a
10509      security hazard. Closes ticket 24734. Patch by Neel Chauhan.
10510    - Rename two fields of connection_t struct. timestamp_lastwritten is
10511      renamed to timestamp_last_write_allowed and timestamp_lastread is
10512      renamed to timestamp_last_read_allowed. Closes ticket 24714, patch
10513      by "valentecaio".
10514    - Since Tor requires C99, remove our old workaround code for libc
10515      implementations where free(NULL) doesn't work. Closes ticket 24484.
10516    - Use our standard rate-limiting code to deal with excessive
10517      libevent failures, rather than the hand-rolled logic we had
10518      before. Closes ticket 26016.
10519    - We remove the return value of node_get_prim_orport() and
10520      node_get_prim_dirport(), and introduce node_get_prim_orport() in
10521      node_ipv6_or_preferred() and node_ipv6_dir_preferred() in order to
10522      check for a null address. Closes ticket 23873. Patch by
10523      Neel Chauhan.
10524    - We switch to should_record_bridge_info() in
10525      geoip_note_client_seen() and options_need_geoip_info() instead of
10526      accessing the configuration values directly. Fixes bug 25290;
10527      bugfix on 0.2.1.6-alpha. Patch by Neel Chauhan.
10528
10529  o Deprecated features:
10530    - As we are not recommending 0.2.5 anymore, we require relays that
10531      once had an ed25519 key associated with their RSA key to always
10532      have that key, instead of allowing them to drop back to a version
10533      that didn't support ed25519. This means they need to use a new RSA
10534      key if they want to downgrade to an older version of tor without
10535      ed25519. Closes ticket 20522.
10536
10537  o Documentation:
10538    - Correct an IPv6 error in the documentation for ExitPolicy. Closes
10539      ticket 25857. Patch from "CTassisF".
10540
10541  o Removed features:
10542    - Directory authorities will no longer support voting according to
10543      any consensus method before consensus method 25. This keeps
10544      authorities compatible with all authorities running 0.2.9.8 and
10545      later, and does not break any clients or relays. Implements ticket
10546      24378 and proposal 290.
10547    - The PortForwarding and PortForwardingHelper features have been
10548      removed. The reasoning is, given that implementations of NAT
10549      traversal protocols within common consumer grade routers are
10550      frequently buggy, and that the target audience for a NAT punching
10551      feature is a perhaps less-technically-inclined relay operator,
10552      when the helper fails to setup traversal the problems are usually
10553      deep, ugly, and very router specific, making them horrendously
10554      impossible for technical support to reliable assist with, and thus
10555      resulting in frustration all around. Unfortunately, relay
10556      operators who would like to run relays behind NATs will need to
10557      become more familiar with the port forwarding configurations on
10558      their local router. Closes 25409.
10559    - The TestingEnableTbEmptyEvent option has been removed. It was used
10560      in testing simulations to measure how often connection buckets
10561      were emptied, in order to improve our scheduling, but it has not
10562      been actively used in years. Closes ticket 25760.
10563    - The old "round-robin" circuit multiplexer (circuitmux)
10564      implementation has been removed, along with a fairly large set of
10565      code that existed to support it. It has not been the default
10566      circuitmux since we introduced the "EWMA" circuitmux in 0.2.4.x,
10567      but it still required an unreasonable amount of memory and CPU.
10568      Closes ticket 25268.
10569
10570
10571Changes in version 0.3.3.5-rc - 2018-04-15
10572  Tor 0.3.3.5-rc fixes various bugs in earlier versions of Tor,
10573  including some that could affect reliability or correctness.
10574
10575  This is the first release candidate in the 0.3.3 series. If we find no
10576  new bugs or regression here, then the first stable 0.3.3 release will
10577  be nearly identical to this one.
10578
10579  o Major bugfixes (security, protover, voting):
10580    - Revise Rust implementation of protover to use a more memory-
10581      efficient voting algorithm and corresponding data structures, thus
10582      avoiding a potential memory-based DoS attack where specially
10583      crafted protocol strings would expand to fill available memory.
10584      Fixes bug 24031; bugfix on 0.3.3.1-alpha.
10585
10586  o Major bugfixes (performance, load balancing):
10587    - Directory authorities no longer vote in favor of the Guard flag
10588      for relays without directory support. Starting in Tor
10589      0.3.0.1-alpha, clients have been avoiding using such relays in the
10590      Guard position, leading to increasingly broken load balancing for
10591      the 5%-or-so of Guards that don't advertise directory support.
10592      Fixes bug 22310; bugfix on 0.3.0.6.
10593
10594  o Minor feature (continuous integration):
10595    - Update the Travis CI configuration to use the stable Rust channel,
10596      now that we have decided to require that. Closes ticket 25714.
10597
10598  o Minor features (config options):
10599    - Change the way the default value for MaxMemInQueues is calculated.
10600      We now use 40% of the hardware RAM if the system has 8 GB RAM or
10601      more. Otherwise we use the former value of 75%. Closes
10602      ticket 24782.
10603
10604  o Minor features (geoip):
10605    - Update geoip and geoip6 to the April 3 2018 Maxmind GeoLite2
10606      Country database. Closes ticket 25718.
10607
10608  o Minor bugfixes (client):
10609    - When using a listed relay as a bridge, and also using
10610      microdescriptors, and considering that relay as a non-bridge in a
10611      circuit, treat its microdescriptor as a valid source of
10612      information about that relay. This change should prevent a non-
10613      fatal assertion error. Fixes bug 25691; bugfix on 0.3.3.4-alpha.
10614
10615  o Minor bugfixes (controller):
10616    - Restore the correct operation of the RESOLVE command, which had
10617      been broken since we added the ability to enable/disable DNS on
10618      specific listener ports. Fixes bug 25617; bugfix on 0.2.9.3-alpha.
10619
10620  o Minor bugfixes (distribution, compilation, rust):
10621    - Build correctly when the rust dependencies submodule is loaded,
10622      but the TOR_RUST_DEPENDENCIES environment variable is not set.
10623      Fixes bug 25679; bugfix on 0.3.3.1-alpha.
10624    - Actually include all of our Rust source in our source
10625      distributions. (Previously, a few of the files were accidentally
10626      omitted.) Fixes bug 25732; bugfix on 0.3.3.2-alpha.
10627
10628  o Minor bugfixes (documentation):
10629    - Document that the PerConnBW{Rate,Burst} options will fall back to
10630      their corresponding consensus parameters only if those parameters
10631      are set. Previously we had claimed that these values would always
10632      be set in the consensus. Fixes bug 25296; bugfix on 0.2.2.7-alpha.
10633    - Revert a misformatting issue in the ExitPolicy documentation.
10634      Fixes bug 25582; bugfix on 0.3.3.1-alpha.
10635
10636  o Minor bugfixes (exit relay DNS retries):
10637    - Re-attempt timed-out DNS queries 3 times before failure, since our
10638      timeout is 5 seconds for them, but clients wait 10-15. Also allow
10639      slightly more timeouts per resolver when an exit has multiple
10640      resolvers configured. Fixes bug 21394; bugfix on 0.3.1.9.
10641
10642  o Minor bugfixes (onion services):
10643    - Re-instate counting the client HSDir fetch circuits against the
10644      MaxClientCircuitsPending rate limit. Fixes bug 24989; bugfix
10645      on 0.3.3.1-alpha.
10646    - Remove underscores from the _HSLayer{2,3}Nodes options. This
10647      expert-user configuration can now be enabled as HSLayer{2,3}Nodes.
10648      Fixes bug 25581; bugfix on 0.3.3.1-alpha
10649
10650  o Code simplification and refactoring:
10651    - Move the list of default directory authorities to its own file.
10652      Closes ticket 24854. Patch by "beastr0".
10653
10654  o Documentation (manpage, denial of service):
10655    - Provide more detail about the denial-of-service options, by
10656      listing each mitigation and explaining how they relate. Closes
10657      ticket 25248.
10658
10659
10660Changes in version 0.3.3.4-alpha - 2018-03-29
10661  Tor 0.3.3.4-alpha includes various bugfixes for issues found during
10662  the alpha testing of earlier releases in its series. We are
10663  approaching a stable 0.3.3.4-alpha release: more testing is welcome!
10664
10665  o New system requirements:
10666    - When built with Rust, Tor now depends on version 0.2.39 of the
10667      libc crate. Closes tickets 25310 and 25664.
10668
10669  o Major bugfixes (relay, connection):
10670    - If we have failed to connect to a relay and received a connection
10671      refused, timeout, or similar error (at the TCP level), do not try
10672      that same address/port again for 60 seconds after the failure has
10673      occurred. Fixes bug 24767; bugfix on 0.0.6.
10674
10675  o Minor features (geoip):
10676    - Update geoip and geoip6 to the March 8 2018 Maxmind GeoLite2
10677      Country database. Closes ticket 25469.
10678
10679  o Minor features (log messages):
10680    - Improve log message in the out-of-memory handler to include
10681      information about memory usage from the different compression
10682      backends. Closes ticket 25372.
10683
10684  o Minor features (sandbox):
10685    - Explicitly permit the poll() system call when the Linux
10686      seccomp2-based sandbox is enabled: apparently, some versions of
10687      libc use poll() when calling getpwnam(). Closes ticket 25313.
10688
10689  o Minor bugfixes (C correctness):
10690    - Fix a very unlikely (impossible, we believe) null pointer
10691      dereference. Fixes bug 25629; bugfix on 0.2.9.15. Found by
10692      Coverity; this is CID 1430932.
10693
10694  o Minor bugfixes (channel, client):
10695    - Better identify client connection when reporting to the geoip
10696      client cache. Fixes bug 24904; bugfix on 0.3.1.7.
10697
10698  o Minor bugfixes (compilation):
10699    - Fix a C99 compliance issue in our configuration script that caused
10700      compilation issues when compiling Tor with certain versions of
10701      xtools. Fixes bug 25474; bugfix on 0.3.2.5-alpha.
10702
10703  o Minor bugfixes (controller, reliability):
10704    - Avoid a (nonfatal) assertion failure when extending a one-hop
10705      circuit from the controller to become a multihop circuit. Fixes
10706      bug 24903; bugfix on 0.2.5.2-alpha.
10707
10708  o Major bugfixes (networking):
10709    - Tor will no longer reject IPv6 address strings from Tor Browser
10710      when they are passed as hostnames in SOCKS5 requests. Fixes bug
10711      25036, bugfix on Tor 0.3.1.2.
10712
10713  o Minor bugfixes (networking):
10714    - string_is_valid_hostname() will not consider IP strings to be
10715      valid hostnames. Fixes bug 25055; bugfix on Tor 0.2.5.5.
10716
10717  o Minor bugfixes (onion service v3):
10718    - Avoid an assertion failure when the next onion service
10719      descriptor rotation type is out of sync with the consensus's
10720      valid-after time. Instead, log a warning message with extra
10721      information, so we can better hunt down the cause of this
10722      assertion. Fixes bug 25306; bugfix on 0.3.2.1-alpha.
10723
10724  o Minor bugfixes (testing):
10725    - Avoid intermittent test failures due to a test that had relied on
10726      onion service introduction point creation finishing within 5
10727      seconds of real clock time. Fixes bug 25450; bugfix
10728      on 0.3.1.3-alpha.
10729    - Rust crates are now automatically detected and tested. Previously,
10730      some crates were not tested by `make test-rust` due to a static
10731      string in the `src/test/test_rust.sh` script specifying which
10732      crates to test. Fixes bug 25560; bugfix on 0.3.3.3-alpha.
10733
10734  o Minor bugfixes (testing, benchmarks):
10735    - Fix a crash when running benchmark tests on win32 systems. The
10736      crash was due to a mutex that wasn't initialized before logging
10737      and options were initialized. Fixes bug 25479; bugfix
10738      on 0.3.3.3-alpha.
10739
10740  o Minor bugfixes (warnings, ipv6):
10741    - Avoid a bug warning that could occur when trying to connect to a
10742      relay over IPv6. This warning would occur on a Tor instance that
10743      downloads router descriptors, but prefers to use microdescriptors.
10744      Fixes bug 25213; bugfix on 0.3.3.1-alpha.
10745
10746  o Code simplification and refactoring:
10747    - Remove the old (deterministic) directory retry logic entirely:
10748      We've used exponential backoff exclusively for some time. Closes
10749      ticket 23814.
10750
10751  o Documentation:
10752    - Improved the documentation of AccountingStart parameter. Closes
10753      ticket 23635.
10754    - Update the documentation for "Log" to include the current list of
10755      logging domains. Closes ticket 25378.
10756
10757
10758Changes in version 0.3.1.10 - 2018-03-03
10759  Tor 0.3.1.10 backports a number of bugfixes, including important fixes for
10760  security issues.
10761
10762  It includes an important security fix for a remote crash attack
10763  against directory authorities, tracked as TROVE-2018-001.
10764
10765  This release also backports our new system for improved resistance to
10766  denial-of-service attacks against relays.
10767
10768  This release also fixes several minor bugs and annoyances from
10769  earlier releases.
10770
10771  All directory authorities should upgrade to one of the versions
10772  released today. Relays running 0.3.1.x may wish to update to one of
10773  the versions released today, for the DoS mitigations.
10774
10775  Please note: according to our release calendar, Tor 0.3.1 will no
10776  longer be supported after 1 July 2018. If you will be running Tor
10777  after that date, you should make sure to plan to upgrade to the latest
10778  stable version, or downgrade to 0.2.9 (which will receive long-term
10779  support).
10780
10781  o Major bugfixes (denial-of-service, directory authority, backport from 0.3.3.3-alpha):
10782    - Fix a protocol-list handling bug that could be used to remotely crash
10783      directory authorities with a null-pointer exception. Fixes bug 25074;
10784      bugfix on 0.2.9.4-alpha. Also tracked as TROVE-2018-001 and
10785      CVE-2018-0490.
10786
10787  o Major features (denial-of-service mitigation, backport from 0.3.3.2-alpha):
10788    - Give relays some defenses against the recent network overload. We
10789      start with three defenses (default parameters in parentheses).
10790      First: if a single client address makes too many concurrent
10791      connections (>100), hang up on further connections. Second: if a
10792      single client address makes circuits too quickly (more than 3 per
10793      second, with an allowed burst of 90) while also having too many
10794      connections open (3), refuse new create cells for the next while
10795      (1-2 hours). Third: if a client asks to establish a rendezvous
10796      point to you directly, ignore the request. These defenses can be
10797      manually controlled by new torrc options, but relays will also
10798      take guidance from consensus parameters, so there's no need to
10799      configure anything manually. Implements ticket 24902.
10800
10801  o Minor features (linux seccomp2 sandbox, backport from 0.3.2.5-alpha):
10802    - Update the sandbox rules so that they should now work correctly
10803      with Glibc 2.26. Closes ticket 24315.
10804
10805  o Major bugfixes (onion services, retry behavior, backport from 0.3.3.1-alpha):
10806    - Fix an "off by 2" error in counting rendezvous failures on the
10807      onion service side. While we thought we would stop the rendezvous
10808      attempt after one failed circuit, we were actually making three
10809      circuit attempts before giving up. Now switch to a default of 2,
10810      and allow the consensus parameter "hs_service_max_rdv_failures" to
10811      override. Fixes bug 24895; bugfix on 0.0.6.
10812
10813  o Major bugfixes (protocol versions, backport from 0.3.3.2-alpha):
10814    - Add Link protocol version 5 to the supported protocols list. Fixes
10815      bug 25070; bugfix on 0.3.1.1-alpha.
10816
10817  o Major bugfixes (relay, backport from 0.3.3.1-alpha):
10818    - Fix a set of false positives where relays would consider
10819      connections to other relays as being client-only connections (and
10820      thus e.g. deserving different link padding schemes) if those
10821      relays fell out of the consensus briefly. Now we look only at the
10822      initial handshake and whether the connection authenticated as a
10823      relay. Fixes bug 24898; bugfix on 0.3.1.1-alpha.
10824
10825  o Minor features (denial-of-service avoidance, backport from 0.3.3.2-alpha):
10826    - Make our OOM handler aware of the geoip client history cache so it
10827      doesn't fill up the memory. This check is important for IPv6 and
10828      our DoS mitigation subsystem. Closes ticket 25122.
10829
10830  o Minor feature (relay statistics, backport from 0.3.2.6-alpha):
10831    - Change relay bandwidth reporting stats interval from 4 hours to 24
10832      hours in order to reduce the efficiency of guard discovery
10833      attacks. Fixes ticket 23856.
10834
10835  o Minor features (compatibility, OpenSSL, backport from 0.3.3.3-alpha):
10836    - Tor will now support TLS1.3 once OpenSSL 1.1.1 is released.
10837      Previous versions of Tor would not have worked with OpenSSL 1.1.1,
10838      since they neither disabled TLS 1.3 nor enabled any of the
10839      ciphersuites it requires. Now we enable the TLS 1.3 ciphersuites.
10840      Closes ticket 24978.
10841
10842  o Minor features (fallback directory mirrors, backport from 0.3.2.9):
10843    - The fallback directory list has been re-generated based on the
10844      current status of the network. Tor uses fallback directories to
10845      bootstrap when it doesn't yet have up-to-date directory
10846      information. Closes ticket 24801.
10847    - Make the default DirAuthorityFallbackRate 0.1, so that clients
10848      prefer to bootstrap from fallback directory mirrors. This is a
10849      follow-up to 24679, which removed weights from the default
10850      fallbacks. Implements ticket 24681.
10851
10852  o Minor features (geoip):
10853    - Update geoip and geoip6 to the February 7 2018 Maxmind GeoLite2
10854      Country database.
10855
10856  o Minor bugfix (channel connection, backport from 0.3.3.2-alpha):
10857    - Use the actual observed address of an incoming relay connection,
10858      not the canonical address of the relay from its descriptor, when
10859      making decisions about how to handle the incoming connection.
10860      Fixes bug 24952; bugfix on 0.2.4.11-alpha. Patch by "ffmancera".
10861
10862  o Minor bugfix (directory authority, backport from 0.3.3.2-alpha):
10863    - Directory authorities, when refusing a descriptor from a rejected
10864      relay, now explicitly tell the relay (in its logs) to set a valid
10865      ContactInfo address and contact the bad-relays@ mailing list.
10866      Fixes bug 25170; bugfix on 0.2.9.1.
10867
10868  o Minor bugfixes (address selection, backport from 0.3.2.9):
10869    - When the fascist_firewall_choose_address_ functions don't find a
10870      reachable address, set the returned address to the null address
10871      and port. This is a precautionary measure, because some callers do
10872      not check the return value. Fixes bug 24736; bugfix
10873      on 0.2.8.2-alpha.
10874
10875  o Major bugfixes (bootstrapping, backport from 0.3.2.5-alpha):
10876    - Fetch descriptors aggressively whenever we lack enough to build
10877      circuits, regardless of how many descriptors we are missing.
10878      Previously, we would delay launching the fetch when we had fewer
10879      than 15 missing descriptors, even if some of those descriptors
10880      were blocking circuits from building. Fixes bug 23985; bugfix on
10881      0.1.1.11-alpha. The effects of this bug became worse in
10882      0.3.0.3-alpha, when we began treating missing descriptors from our
10883      primary guards as a reason to delay circuits.
10884    - Don't try fetching microdescriptors from relays that have failed
10885      to deliver them in the past. Fixes bug 23817; bugfix
10886      on 0.3.0.1-alpha.
10887
10888  o Minor bugfixes (compilation, backport from 0.3.2.7-rc):
10889    - Fix a signed/unsigned comparison warning introduced by our fix to
10890      TROVE-2017-009. Fixes bug 24480; bugfix on 0.2.5.16.
10891
10892  o Minor bugfixes (control port, linux seccomp2 sandbox, backport from 0.3.2.5-alpha):
10893    - Avoid a crash when attempting to use the seccomp2 sandbox together
10894      with the OwningControllerProcess feature. Fixes bug 24198; bugfix
10895      on 0.2.5.1-alpha.
10896
10897  o Minor bugfixes (denial-of-service, backport from 0.3.3.3-alpha):
10898    - Fix a possible crash on malformed consensus. If a consensus had
10899      contained an unparseable protocol line, it could have made clients
10900      and relays crash with a null-pointer exception. To exploit this
10901      issue, however, an attacker would need to be able to subvert the
10902      directory authority system. Fixes bug 25251; bugfix on
10903      0.2.9.4-alpha. Also tracked as TROVE-2018-004.
10904
10905  o Minor bugfixes (directory cache, backport from 0.3.2.5-alpha):
10906    - Recover better from empty or corrupt files in the consensus cache
10907      directory. Fixes bug 24099; bugfix on 0.3.1.1-alpha.
10908    - When a consensus diff calculation is only partially successful,
10909      only record the successful parts as having succeeded. Partial
10910      success can happen if (for example) one compression method fails
10911      but the others succeed. Previously we misrecorded all the
10912      calculations as having succeeded, which would later cause a
10913      nonfatal assertion failure. Fixes bug 24086; bugfix
10914      on 0.3.1.1-alpha.
10915
10916  o Minor bugfixes (entry guards, backport from 0.3.2.3-alpha):
10917    - Tor now updates its guard state when it reads a consensus
10918      regardless of whether it's missing descriptors. That makes tor use
10919      its primary guards to fetch descriptors in some edge cases where
10920      it would previously have used fallback directories. Fixes bug
10921      23862; bugfix on 0.3.0.1-alpha.
10922
10923  o Minor bugfixes (logging, backport from 0.3.3.2-alpha):
10924    - Don't treat inability to store a cached consensus object as a bug:
10925      it can happen normally when we are out of disk space. Fixes bug
10926      24859; bugfix on 0.3.1.1-alpha.
10927
10928  o Minor bugfixes (memory usage, backport from 0.3.2.8-rc):
10929    - When queuing DESTROY cells on a channel, only queue the circuit-id
10930      and reason fields: not the entire 514-byte cell. This fix should
10931      help mitigate any bugs or attacks that fill up these queues, and
10932      free more RAM for other uses. Fixes bug 24666; bugfix
10933      on 0.2.5.1-alpha.
10934
10935  o Minor bugfixes (network layer, backport from 0.3.2.5-alpha):
10936    - When closing a connection via close_connection_immediately(), we
10937      mark it as "not blocked on bandwidth", to prevent later calls from
10938      trying to unblock it, and give it permission to read. This fixes a
10939      backtrace warning that can happen on relays under various
10940      circumstances. Fixes bug 24167; bugfix on 0.1.0.1-rc.
10941
10942  o Minor bugfixes (path selection, backport from 0.3.2.4-alpha):
10943    - When selecting relays by bandwidth, avoid a rounding error that
10944      could sometimes cause load to be imbalanced incorrectly.
10945      Previously, we would always round upwards; now, we round towards
10946      the nearest integer. This had the biggest effect when a relay's
10947      weight adjustments should have given it weight 0, but it got
10948      weight 1 instead. Fixes bug 23318; bugfix on 0.2.4.3-alpha.
10949    - When calculating the fraction of nodes that have descriptors, and
10950      all nodes in the network have zero bandwidths, count the number of
10951      nodes instead. Fixes bug 23318; bugfix on 0.2.4.10-alpha.
10952    - Actually log the total bandwidth in compute_weighted_bandwidths().
10953      Fixes bug 24170; bugfix on 0.2.4.3-alpha.
10954
10955  o Minor bugfixes (performance, fragile-hardening, backport from 0.3.3.1-alpha):
10956    - Improve the performance of our consensus-diff application code
10957      when Tor is built with the --enable-fragile-hardening option set.
10958      Fixes bug 24826; bugfix on 0.3.1.1-alpha.
10959
10960  o Minor bugfixes (OSX, backport from 0.3.3.1-alpha):
10961    - Don't exit the Tor process if setrlimit() fails to change the file
10962      limit (which can happen sometimes on some versions of OSX). Fixes
10963      bug 21074; bugfix on 0.0.9pre5.
10964
10965  o Minor bugfixes (portability, msvc, backport from 0.3.2.9):
10966    - Fix a bug in the bit-counting parts of our timing-wheel code on
10967      MSVC. (Note that MSVC is still not a supported build platform, due
10968      to cyptographic timing channel risks.) Fixes bug 24633; bugfix
10969      on 0.2.9.1-alpha.
10970
10971  o Minor bugfixes (relay, partial backport):
10972    - Make the internal channel_is_client() function look at what sort
10973      of connection handshake the other side used, rather than whether
10974      the other side ever sent a create_fast cell to us. Backports part
10975      of the fixes from bugs 22805 and 24898.
10976
10977  o Minor bugfixes (spec conformance, backport from 0.3.3.3-alpha):
10978    - Forbid "-0" as a protocol version. Fixes part of bug 25249; bugfix on
10979      0.2.9.4-alpha.
10980    - Forbid UINT32_MAX as a protocol version. Fixes part of bug 25249;
10981      bugfix on 0.2.9.4-alpha.
10982
10983  o Code simplification and refactoring (backport from 0.3.3.3-alpha):
10984    - Update the "rust dependencies" submodule to be a project-level
10985      repository, rather than a user repository. Closes ticket 25323.
10986
10987
10988Changes in version 0.2.9.15 - 2018-03-03
10989  Tor 0.2.9.15 backports important security and stability bugfixes from
10990  later Tor releases.
10991
10992  It includes an important security fix for a remote crash attack
10993  against directory authorities, tracked as TROVE-2018-001.
10994
10995  This release also backports our new system for improved resistance to
10996  denial-of-service attacks against relays.
10997
10998  This release also fixes several minor bugs and annoyances from
10999  earlier releases.
11000
11001  All directory authorities should upgrade to one of the versions
11002  released today. Relays running 0.2.9.x may wish to update to one of
11003  the versions released today, for the DoS mitigations.
11004
11005  o Major bugfixes (denial-of-service, directory authority, backport from 0.3.3.3-alpha):
11006    - Fix a protocol-list handling bug that could be used to remotely crash
11007      directory authorities with a null-pointer exception. Fixes bug 25074;
11008      bugfix on 0.2.9.4-alpha. Also tracked as TROVE-2018-001 and
11009      CVE-2018-0490.
11010
11011  o Major features (denial-of-service mitigation):
11012    - Give relays some defenses against the recent network overload. We
11013      start with three defenses (default parameters in parentheses).
11014      First: if a single client address makes too many concurrent
11015      connections (>100), hang up on further connections. Second: if a
11016      single client address makes circuits too quickly (more than 3 per
11017      second, with an allowed burst of 90) while also having too many
11018      connections open (3), refuse new create cells for the next while
11019      (1-2 hours). Third: if a client asks to establish a rendezvous
11020      point to you directly, ignore the request. These defenses can be
11021      manually controlled by new torrc options, but relays will also
11022      take guidance from consensus parameters, so there's no need to
11023      configure anything manually. Implements ticket 24902.
11024
11025  o Major bugfixes (bootstrapping):
11026    - Fetch descriptors aggressively whenever we lack enough to build
11027      circuits, regardless of how many descriptors we are missing.
11028      Previously, we would delay launching the fetch when we had fewer
11029      than 15 missing descriptors, even if some of those descriptors
11030      were blocking circuits from building. Fixes bug 23985; bugfix on
11031      0.1.1.11-alpha. The effects of this bug became worse in
11032      0.3.0.3-alpha, when we began treating missing descriptors from our
11033      primary guards as a reason to delay circuits.
11034
11035  o Major bugfixes (onion services, retry behavior):
11036    - Fix an "off by 2" error in counting rendezvous failures on the
11037      onion service side. While we thought we would stop the rendezvous
11038      attempt after one failed circuit, we were actually making three
11039      circuit attempts before giving up. Now switch to a default of 2,
11040      and allow the consensus parameter "hs_service_max_rdv_failures" to
11041      override. Fixes bug 24895; bugfix on 0.0.6.
11042
11043  o Minor feature (relay statistics):
11044    - Change relay bandwidth reporting stats interval from 4 hours to 24
11045      hours in order to reduce the efficiency of guard discovery
11046      attacks. Fixes ticket 23856.
11047
11048  o Minor features (compatibility, OpenSSL):
11049    - Tor will now support TLS1.3 once OpenSSL 1.1.1 is released.
11050      Previous versions of Tor would not have worked with OpenSSL 1.1.1,
11051      since they neither disabled TLS 1.3 nor enabled any of the
11052      ciphersuites it requires. Now we enable the TLS 1.3 ciphersuites.
11053      Closes ticket 24978.
11054
11055  o Minor features (denial-of-service avoidance):
11056    - Make our OOM handler aware of the geoip client history cache so it
11057      doesn't fill up the memory. This check is important for IPv6 and
11058      our DoS mitigation subsystem. Closes ticket 25122.
11059
11060  o Minor features (fallback directory mirrors):
11061    - The fallback directory list has been re-generated based on the
11062      current status of the network. Tor uses fallback directories to
11063      bootstrap when it doesn't yet have up-to-date directory
11064      information. Closes ticket 24801.
11065    - Make the default DirAuthorityFallbackRate 0.1, so that clients
11066      prefer to bootstrap from fallback directory mirrors. This is a
11067      follow-up to 24679, which removed weights from the default
11068      fallbacks. Implements ticket 24681.
11069
11070  o Minor features (geoip):
11071    - Update geoip and geoip6 to the February 7 2018 Maxmind GeoLite2
11072      Country database.
11073
11074  o Minor features (linux seccomp2 sandbox):
11075    - Update the sandbox rules so that they should now work correctly
11076      with Glibc 2.26. Closes ticket 24315.
11077
11078  o Minor bugfix (channel connection):
11079    - Use the actual observed address of an incoming relay connection,
11080      not the canonical address of the relay from its descriptor, when
11081      making decisions about how to handle the incoming connection.
11082      Fixes bug 24952; bugfix on 0.2.4.11-alpha. Patch by "ffmancera".
11083
11084  o Minor bugfix (directory authority):
11085    - Directory authorities, when refusing a descriptor from a rejected
11086      relay, now explicitly tell the relay (in its logs) to set a valid
11087      ContactInfo address and contact the bad-relays@ mailing list.
11088      Fixes bug 25170; bugfix on 0.2.9.1.
11089
11090  o Minor bugfixes (address selection):
11091    - When the fascist_firewall_choose_address_ functions don't find a
11092      reachable address, set the returned address to the null address
11093      and port. This is a precautionary measure, because some callers do
11094      not check the return value. Fixes bug 24736; bugfix
11095      on 0.2.8.2-alpha.
11096
11097  o Minor bugfixes (compilation):
11098    - Fix a signed/unsigned comparison warning introduced by our fix to
11099      TROVE-2017-009. Fixes bug 24480; bugfix on 0.2.5.16.
11100
11101  o Minor bugfixes (control port, linux seccomp2 sandbox):
11102    - Avoid a crash when attempting to use the seccomp2 sandbox together
11103      with the OwningControllerProcess feature. Fixes bug 24198; bugfix
11104      on 0.2.5.1-alpha.
11105
11106  o Minor bugfixes (denial-of-service, backport from 0.3.3.3-alpha):
11107    - Fix a possible crash on malformed consensus. If a consensus had
11108      contained an unparseable protocol line, it could have made clients
11109      and relays crash with a null-pointer exception. To exploit this
11110      issue, however, an attacker would need to be able to subvert the
11111      directory authority system. Fixes bug 25251; bugfix on
11112      0.2.9.4-alpha. Also tracked as TROVE-2018-004.
11113
11114  o Minor bugfixes (memory usage):
11115    - When queuing DESTROY cells on a channel, only queue the circuit-id
11116      and reason fields: not the entire 514-byte cell. This fix should
11117      help mitigate any bugs or attacks that fill up these queues, and
11118      free more RAM for other uses. Fixes bug 24666; bugfix
11119      on 0.2.5.1-alpha.
11120
11121  o Minor bugfixes (network layer):
11122    - When closing a connection via close_connection_immediately(), we
11123      mark it as "not blocked on bandwidth", to prevent later calls from
11124      trying to unblock it, and give it permission to read. This fixes a
11125      backtrace warning that can happen on relays under various
11126      circumstances. Fixes bug 24167; bugfix on 0.1.0.1-rc.
11127
11128  o Minor bugfixes (OSX):
11129    - Don't exit the Tor process if setrlimit() fails to change the file
11130      limit (which can happen sometimes on some versions of OSX). Fixes
11131      bug 21074; bugfix on 0.0.9pre5.
11132
11133  o Minor bugfixes (path selection):
11134    - When selecting relays by bandwidth, avoid a rounding error that
11135      could sometimes cause load to be imbalanced incorrectly.
11136      Previously, we would always round upwards; now, we round towards
11137      the nearest integer. This had the biggest effect when a relay's
11138      weight adjustments should have given it weight 0, but it got
11139      weight 1 instead. Fixes bug 23318; bugfix on 0.2.4.3-alpha.
11140    - When calculating the fraction of nodes that have descriptors, and
11141      all nodes in the network have zero bandwidths, count the number of
11142      nodes instead. Fixes bug 23318; bugfix on 0.2.4.10-alpha.
11143    - Actually log the total bandwidth in compute_weighted_bandwidths().
11144      Fixes bug 24170; bugfix on 0.2.4.3-alpha.
11145
11146  o Minor bugfixes (portability, msvc):
11147    - Fix a bug in the bit-counting parts of our timing-wheel code on
11148      MSVC. (Note that MSVC is still not a supported build platform, due
11149      to cryptographic timing channel risks.) Fixes bug 24633; bugfix
11150      on 0.2.9.1-alpha.
11151
11152  o Minor bugfixes (relay):
11153    - Make the internal channel_is_client() function look at what sort
11154      of connection handshake the other side used, rather than whether
11155      the other side ever sent a create_fast cell to us. Backports part
11156      of the fixes from bugs 22805 and 24898.
11157
11158  o Minor bugfixes (spec conformance, backport from 0.3.3.3-alpha):
11159    - Forbid "-0" as a protocol version. Fixes part of bug 25249; bugfix on
11160      0.2.9.4-alpha.
11161    - Forbid UINT32_MAX as a protocol version. Fixes part of bug 25249;
11162      bugfix on 0.2.9.4-alpha.
11163
11164
11165Changes in version 0.3.2.10 - 2018-03-03
11166  Tor 0.3.2.10 is the second stable release in the 0.3.2 series. It
11167  backports a number of bugfixes, including important fixes for security
11168  issues.
11169
11170  It includes an important security fix for a remote crash attack
11171  against directory authorities, tracked as TROVE-2018-001.
11172
11173  Additionally, it backports a fix for a bug whose severity we have
11174  upgraded: Bug 24700, which was fixed in 0.3.3.2-alpha, can be remotely
11175  triggered in order to crash relays with a use-after-free pattern. As
11176  such, we are now tracking that bug as TROVE-2018-002 and
11177  CVE-2018-0491, and backporting it to earlier releases. This bug
11178  affected versions 0.3.2.1-alpha through 0.3.2.9, as well as version
11179  0.3.3.1-alpha.
11180
11181  This release also backports our new system for improved resistance to
11182  denial-of-service attacks against relays.
11183
11184  This release also fixes several minor bugs and annoyances from
11185  earlier releases.
11186
11187  Relays running 0.3.2.x SHOULD upgrade to one of the versions released
11188  today, for the fix to TROVE-2018-002. Directory authorities should
11189  also upgrade. (Relays on earlier versions might want to update too for
11190  the DoS mitigations.)
11191
11192  o Major bugfixes (denial-of-service, directory authority, backport from 0.3.3.3-alpha):
11193    - Fix a protocol-list handling bug that could be used to remotely crash
11194      directory authorities with a null-pointer exception. Fixes bug 25074;
11195      bugfix on 0.2.9.4-alpha. Also tracked as TROVE-2018-001 and
11196      CVE-2018-0490.
11197
11198  o Major bugfixes (scheduler, KIST, denial-of-service, backport from 0.3.3.2-alpha):
11199    - Avoid adding the same channel twice in the KIST scheduler pending
11200      list, which could lead to remote denial-of-service use-after-free
11201      attacks against relays. Fixes bug 24700; bugfix on 0.3.2.1-alpha.
11202
11203  o Major features (denial-of-service mitigation, backport from 0.3.3.2-alpha):
11204    - Give relays some defenses against the recent network overload. We
11205      start with three defenses (default parameters in parentheses).
11206      First: if a single client address makes too many concurrent
11207      connections (>100), hang up on further connections. Second: if a
11208      single client address makes circuits too quickly (more than 3 per
11209      second, with an allowed burst of 90) while also having too many
11210      connections open (3), refuse new create cells for the next while
11211      (1-2 hours). Third: if a client asks to establish a rendezvous
11212      point to you directly, ignore the request. These defenses can be
11213      manually controlled by new torrc options, but relays will also
11214      take guidance from consensus parameters, so there's no need to
11215      configure anything manually. Implements ticket 24902.
11216
11217  o Major bugfixes (onion services, retry behavior, backport from 0.3.3.1-alpha):
11218    - Fix an "off by 2" error in counting rendezvous failures on the
11219      onion service side. While we thought we would stop the rendezvous
11220      attempt after one failed circuit, we were actually making three
11221      circuit attempts before giving up. Now switch to a default of 2,
11222      and allow the consensus parameter "hs_service_max_rdv_failures" to
11223      override. Fixes bug 24895; bugfix on 0.0.6.
11224    - New-style (v3) onion services now obey the "max rendezvous circuit
11225      attempts" logic. Previously they would make as many rendezvous
11226      circuit attempts as they could fit in the MAX_REND_TIMEOUT second
11227      window before giving up. Fixes bug 24894; bugfix on 0.3.2.1-alpha.
11228
11229  o Major bugfixes (protocol versions, backport from 0.3.3.2-alpha):
11230    - Add Link protocol version 5 to the supported protocols list. Fixes
11231      bug 25070; bugfix on 0.3.1.1-alpha.
11232
11233  o Major bugfixes (relay, backport from 0.3.3.1-alpha):
11234    - Fix a set of false positives where relays would consider
11235      connections to other relays as being client-only connections (and
11236      thus e.g. deserving different link padding schemes) if those
11237      relays fell out of the consensus briefly. Now we look only at the
11238      initial handshake and whether the connection authenticated as a
11239      relay. Fixes bug 24898; bugfix on 0.3.1.1-alpha.
11240
11241  o Major bugfixes (scheduler, consensus, backport from 0.3.3.2-alpha):
11242    - The scheduler subsystem was failing to promptly notice changes in
11243      consensus parameters, making it harder to switch schedulers
11244      network-wide. Fixes bug 24975; bugfix on 0.3.2.1-alpha.
11245
11246  o Minor features (denial-of-service avoidance, backport from 0.3.3.2-alpha):
11247    - Make our OOM handler aware of the geoip client history cache so it
11248      doesn't fill up the memory. This check is important for IPv6 and
11249      our DoS mitigation subsystem. Closes ticket 25122.
11250
11251  o Minor features (compatibility, OpenSSL, backport from 0.3.3.3-alpha):
11252    - Tor will now support TLS1.3 once OpenSSL 1.1.1 is released.
11253      Previous versions of Tor would not have worked with OpenSSL 1.1.1,
11254      since they neither disabled TLS 1.3 nor enabled any of the
11255      ciphersuites it requires. Now we enable the TLS 1.3 ciphersuites.
11256      Closes ticket 24978.
11257
11258  o Minor features (geoip):
11259    - Update geoip and geoip6 to the February 7 2018 Maxmind GeoLite2
11260      Country database.
11261
11262  o Minor features (logging, diagnostic, backport from 0.3.3.2-alpha):
11263    - When logging a failure to create an onion service's descriptor,
11264      also log what the problem with the descriptor was. Diagnostic
11265      for ticket 24972.
11266
11267  o Minor bugfix (channel connection, backport from 0.3.3.2-alpha):
11268    - Use the actual observed address of an incoming relay connection,
11269      not the canonical address of the relay from its descriptor, when
11270      making decisions about how to handle the incoming connection.
11271      Fixes bug 24952; bugfix on 0.2.4.11-alpha. Patch by "ffmancera".
11272
11273  o Minor bugfixes (denial-of-service, backport from 0.3.3.3-alpha):
11274    - Fix a possible crash on malformed consensus. If a consensus had
11275      contained an unparseable protocol line, it could have made clients
11276      and relays crash with a null-pointer exception. To exploit this
11277      issue, however, an attacker would need to be able to subvert the
11278      directory authority system. Fixes bug 25251; bugfix on
11279      0.2.9.4-alpha. Also tracked as TROVE-2018-004.
11280
11281  o Minor bugfix (directory authority, backport from 0.3.3.2-alpha):
11282    - Directory authorities, when refusing a descriptor from a rejected
11283      relay, now explicitly tell the relay (in its logs) to set a valid
11284      ContactInfo address and contact the bad-relays@ mailing list.
11285      Fixes bug 25170; bugfix on 0.2.9.1.
11286
11287  o Minor bugfixes (build, rust, backport from 0.3.3.1-alpha):
11288    - When building with Rust on OSX, link against libresolv, to work
11289      around the issue at https://github.com/rust-lang/rust/issues/46797.
11290      Fixes bug 24652; bugfix on 0.3.1.1-alpha.
11291
11292  o Minor bugfixes (onion services, backport from 0.3.3.2-alpha):
11293    - Remove a BUG() statement when a client fetches an onion descriptor
11294      that has a lower revision counter than the one in its cache. This
11295      can happen in normal circumstances due to HSDir desync. Fixes bug
11296      24976; bugfix on 0.3.2.1-alpha.
11297
11298  o Minor bugfixes (logging, backport from 0.3.3.2-alpha):
11299    - Don't treat inability to store a cached consensus object as a bug:
11300      it can happen normally when we are out of disk space. Fixes bug
11301      24859; bugfix on 0.3.1.1-alpha.
11302
11303  o Minor bugfixes (performance, fragile-hardening, backport from 0.3.3.1-alpha):
11304    - Improve the performance of our consensus-diff application code
11305      when Tor is built with the --enable-fragile-hardening option set.
11306      Fixes bug 24826; bugfix on 0.3.1.1-alpha.
11307
11308  o Minor bugfixes (OSX, backport from 0.3.3.1-alpha):
11309    - Don't exit the Tor process if setrlimit() fails to change the file
11310      limit (which can happen sometimes on some versions of OSX). Fixes
11311      bug 21074; bugfix on 0.0.9pre5.
11312
11313  o Minor bugfixes (spec conformance, backport from 0.3.3.3-alpha):
11314    - Forbid "-0" as a protocol version. Fixes part of bug 25249; bugfix on
11315      0.2.9.4-alpha.
11316    - Forbid UINT32_MAX as a protocol version. Fixes part of bug 25249;
11317      bugfix on 0.2.9.4-alpha.
11318
11319  o Minor bugfixes (testing, backport from 0.3.3.1-alpha):
11320    - Fix a memory leak in the scheduler/loop_kist unit test. Fixes bug
11321      25005; bugfix on 0.3.2.7-rc.
11322
11323  o Minor bugfixes (v3 onion services, backport from 0.3.3.2-alpha):
11324    - Look at the "HSRend" protocol version, not the "HSDir" protocol
11325      version, when deciding whether a consensus entry can support the
11326      v3 onion service protocol as a rendezvous point. Fixes bug 25105;
11327      bugfix on 0.3.2.1-alpha.
11328
11329  o Code simplification and refactoring (backport from 0.3.3.3-alpha):
11330    - Update the "rust dependencies" submodule to be a project-level
11331      repository, rather than a user repository. Closes ticket 25323.
11332
11333  o Documentation (backport from 0.3.3.1-alpha)
11334    - Document that operators who run more than one relay or bridge are
11335      expected to set MyFamily and ContactInfo correctly. Closes
11336      ticket 24526.
11337
11338
11339Changes in version 0.3.3.3-alpha - 2018-03-03
11340  Tor 0.3.3.3-alpha is the third alpha release for the 0.3.3.x series.
11341  It includes an important security fix for a remote crash attack
11342  against directory authorities tracked as TROVE-2018-001.
11343
11344  Additionally, with this release, we are upgrading the severity of a
11345  bug fixed in 0.3.3.2-alpha. Bug 24700, which was fixed in
11346  0.3.3.2-alpha, can be remotely triggered in order to crash relays with
11347  a use-after-free pattern. As such, we are now tracking that bug as
11348  TROVE-2018-002 and CVE-2018-0491. This bug affected versions
11349  0.3.2.1-alpha through 0.3.2.9, as well as 0.3.3.1-alpha.
11350
11351  This release also fixes several minor bugs and annoyances from
11352  earlier releases.
11353
11354  Relays running 0.3.2.x should upgrade to one of the versions released
11355  today, for the fix to TROVE-2018-002. Directory authorities should
11356  also upgrade. (Relays on earlier versions might want to update too for
11357  the DoS mitigations.)
11358
11359  o Major bugfixes (denial-of-service, directory authority):
11360    - Fix a protocol-list handling bug that could be used to remotely crash
11361      directory authorities with a null-pointer exception. Fixes bug 25074;
11362      bugfix on 0.2.9.4-alpha. Also tracked as TROVE-2018-001 and
11363      CVE-2018-0490.
11364
11365  o Minor features (compatibility, OpenSSL):
11366    - Tor will now support TLS1.3 once OpenSSL 1.1.1 is released.
11367      Previous versions of Tor would not have worked with OpenSSL 1.1.1,
11368      since they neither disabled TLS 1.3 nor enabled any of the
11369      ciphersuites it requires. Now we enable the TLS 1.3 ciphersuites.
11370      Closes ticket 24978.
11371
11372  o Minor features (logging):
11373    - Clarify the log messages produced when getrandom() or a related
11374      entropy-generation mechanism gives an error. Closes ticket 25120.
11375
11376  o Minor features (testing):
11377    - Add a "make test-rust" target to run the rust tests only. Closes
11378      ticket 25071.
11379
11380  o Minor bugfixes (denial-of-service):
11381    - Fix a possible crash on malformed consensus. If a consensus had
11382      contained an unparseable protocol line, it could have made clients
11383      and relays crash with a null-pointer exception. To exploit this
11384      issue, however, an attacker would need to be able to subvert the
11385      directory authority system. Fixes bug 25251; bugfix on
11386      0.2.9.4-alpha. Also tracked as TROVE-2018-004.
11387
11388  o Minor bugfixes (DoS mitigation):
11389    - Add extra safety checks when refilling the circuit creation bucket
11390      to ensure we never set a value above the allowed maximum burst.
11391      Fixes bug 25202; bugfix on 0.3.3.2-alpha.
11392    - When a new consensus arrives, don't update our DoS-mitigation
11393      parameters if we aren't a public relay. Fixes bug 25223; bugfix
11394      on 0.3.3.2-alpha.
11395
11396  o Minor bugfixes (man page, SocksPort):
11397    - Remove dead code from the old "SocksSocket" option, and rename
11398      SocksSocketsGroupWritable to UnixSocksGroupWritable. The old option
11399      still works, but is deprecated. Fixes bug 24343; bugfix on 0.2.6.3.
11400
11401  o Minor bugfixes (performance):
11402    - Reduce the number of circuits that will be opened at once during
11403      the circuit build timeout phase. This is done by increasing the
11404      idle timeout to 3 minutes, and lowering the maximum number of
11405      concurrent learning circuits to 10. Fixes bug 24769; bugfix
11406      on 0.3.1.1-alpha.
11407
11408  o Minor bugfixes (spec conformance):
11409    - Forbid "-0" as a protocol version. Fixes part of bug 25249; bugfix on
11410      0.2.9.4-alpha.
11411    - Forbid UINT32_MAX as a protocol version. Fixes part of bug 25249;
11412      bugfix on 0.2.9.4-alpha.
11413
11414  o Minor bugfixes (spec conformance, rust):
11415    - Resolve a denial-of-service issue caused by an infinite loop in
11416      the rust protover code. Fixes bug 25250, bugfix on 0.3.3.1-alpha.
11417      Also tracked as TROVE-2018-003.
11418
11419  o Code simplification and refactoring:
11420    - Update the "rust dependencies" submodule to be a project-level
11421      repository, rather than a user repository. Closes ticket 25323.
11422
11423
11424Changes in version 0.3.3.2-alpha - 2018-02-10
11425  Tor 0.3.3.2-alpha is the second alpha in the 0.3.3.x series. It
11426  introduces a mechanism to handle the high loads that many relay
11427  operators have been reporting recently. It also fixes several bugs in
11428  older releases. If this new code proves reliable, we plan to backport
11429  it to older supported release series.
11430
11431  o Major features (denial-of-service mitigation):
11432    - Give relays some defenses against the recent network overload. We
11433      start with three defenses (default parameters in parentheses).
11434      First: if a single client address makes too many concurrent
11435      connections (>100), hang up on further connections. Second: if a
11436      single client address makes circuits too quickly (more than 3 per
11437      second, with an allowed burst of 90) while also having too many
11438      connections open (3), refuse new create cells for the next while
11439      (1-2 hours). Third: if a client asks to establish a rendezvous
11440      point to you directly, ignore the request. These defenses can be
11441      manually controlled by new torrc options, but relays will also
11442      take guidance from consensus parameters, so there's no need to
11443      configure anything manually. Implements ticket 24902.
11444
11445  o Major bugfixes (netflow padding):
11446    - Stop adding unneeded channel padding right after we finish
11447      flushing to a connection that has been trying to flush for many
11448      seconds. Instead, treat all partial or complete flushes as
11449      activity on the channel, which will defer the time until we need
11450      to add padding. This fix should resolve confusing and scary log
11451      messages like "Channel padding timeout scheduled 221453ms in the
11452      past." Fixes bug 22212; bugfix on 0.3.1.1-alpha.
11453
11454  o Major bugfixes (protocol versions):
11455    - Add Link protocol version 5 to the supported protocols list. Fixes
11456      bug 25070; bugfix on 0.3.1.1-alpha.
11457
11458  o Major bugfixes (scheduler, consensus):
11459    - The scheduler subsystem was failing to promptly notice changes in
11460      consensus parameters, making it harder to switch schedulers
11461      network-wide. Fixes bug 24975; bugfix on 0.3.2.1-alpha.
11462
11463  o Minor features (denial-of-service avoidance):
11464    - Make our OOM handler aware of the geoip client history cache so it
11465      doesn't fill up the memory. This check is important for IPv6 and
11466      our DoS mitigation subsystem. Closes ticket 25122.
11467
11468  o Minor features (directory authority):
11469    - When directory authorities are unable to add signatures to a
11470      pending consensus, log the reason why. Closes ticket 24849.
11471
11472  o Minor features (geoip):
11473    - Update geoip and geoip6 to the February 7 2018 Maxmind GeoLite2
11474      Country database.
11475
11476  o Minor features (logging, diagnostic):
11477    - When logging a failure to create an onion service's descriptor,
11478      also log what the problem with the descriptor was. Diagnostic for
11479      ticket 24972.
11480
11481  o Minor bugfix (channel connection):
11482    - Use the actual observed address of an incoming relay connection,
11483      not the canonical address of the relay from its descriptor, when
11484      making decisions about how to handle the incoming connection.
11485      Fixes bug 24952; bugfix on 0.2.4.11-alpha. Patch by "ffmancera".
11486
11487  o Minor bugfix (directory authority):
11488    - Directory authorities, when refusing a descriptor from a rejected
11489      relay, now explicitly tell the relay (in its logs) to set a valid
11490      ContactInfo address and contact the bad-relays@ mailing list.
11491      Fixes bug 25170; bugfix on 0.2.9.1.
11492
11493  o Minor bugfixes (all versions of Tor):
11494    - Use the "misspell" tool to detect and fix typos throughout the
11495      source code. Fixes bug 23650; bugfix on various versions of Tor.
11496      Patch from Deepesh Pathak.
11497
11498  o Minor bugfixes (circuit, cannibalization):
11499    - Don't cannibalize preemptively-built circuits if we no longer
11500      recognize their first hop. This situation can happen if our Guard
11501      relay went off the consensus after the circuit was created. Fixes
11502      bug 24469; bugfix on 0.0.6.
11503
11504  o Minor bugfixes (correctness):
11505    - Remove a nonworking, unnecessary check to see whether a circuit
11506      hop's identity digest was set when the circuit failed. Fixes bug
11507      24927; bugfix on 0.2.4.4-alpha.
11508
11509  o Minor bugfixes (logging):
11510    - Don't treat inability to store a cached consensus object as a bug:
11511      it can happen normally when we are out of disk space. Fixes bug
11512      24859; bugfix on 0.3.1.1-alpha.
11513    - Fix a (mostly harmless) race condition when invoking
11514      LOG_PROTOCOL_WARN message from a subthread while the torrc options
11515      are changing. Fixes bug 23954; bugfix on 0.1.1.9-alpha.
11516
11517  o Minor bugfixes (onion services):
11518    - Remove a BUG() statement when a client fetches an onion descriptor
11519      that has a lower revision counter than the one in its cache. This
11520      can happen in normal circumstances due to HSDir desync. Fixes bug
11521      24976; bugfix on 0.3.2.1-alpha.
11522    - If we are configured to offer a single onion service, don't log
11523      long-term established one hop rendezvous points in the heartbeat.
11524      Fixes bug 25116; bugfix on 0.2.9.6-rc.
11525
11526  o Minor bugfixes (performance):
11527    - Avoid calling protocol_list_supports_protocol() from inside tight
11528      loops when running with cached routerinfo_t objects. Instead,
11529      summarize the relevant protocols as flags in the routerinfo_t, as
11530      we do for routerstatus_t objects. This change simplifies our code
11531      a little, and saves a large amount of short-term memory allocation
11532      operations. Fixes bug 25008; bugfix on 0.2.9.4-alpha.
11533
11534  o Minor bugfixes (Rust FFI):
11535    - Fix a minor memory leak which would happen whenever the C code
11536      would call the Rust implementation of
11537      protover_get_supported_protocols(). This was due to the C version
11538      returning a static string, whereas the Rust version newly allocated
11539      a CString to pass across the FFI boundary. Consequently, the C
11540      code was not expecting to need to free() what it was given. Fixes
11541      bug 25127; bugfix on 0.3.2.1-alpha.
11542
11543  o Minor bugfixes (scheduler, KIST):
11544    - Avoid adding the same channel twice in the KIST scheduler pending
11545      list, which would waste CPU cycles. Fixes bug 24700; bugfix
11546      on 0.3.2.1-alpha.
11547
11548  o Minor bugfixes (unit test, monotonic time):
11549    - Increase a constant (1msec to 10msec) in the monotonic time test
11550      that makes sure the nsec/usec/msec times read are synchronized.
11551      This change was needed to accommodate slow systems like armel or
11552      when the clock_gettime() is not a VDSO on the running kernel.
11553      Fixes bug 25113; bugfix on 0.2.9.1.
11554
11555  o Minor bugfixes (v3 onion services):
11556    - Look at the "HSRend" protocol version, not the "HSDir" protocol
11557      version, when deciding whether a consensus entry can support the
11558      v3 onion service protocol as a rendezvous point. Fixes bug 25105;
11559      bugfix on 0.3.2.1-alpha.
11560
11561  o Code simplification and refactoring:
11562    - Remove the unused nodelist_recompute_all_hsdir_indices(). Closes
11563      ticket 25108.
11564    - Remove a series of counters used to track circuit extend attempts
11565      and connection status but that in reality we aren't using for
11566      anything other than stats logged by a SIGUSR1 signal. Closes
11567      ticket 25163.
11568
11569  o Documentation (man page):
11570    - The HiddenServiceVersion torrc option accepts only one number:
11571      either version 2 or 3. Closes ticket 25026; bugfix
11572      on 0.3.2.2-alpha.
11573
11574
11575Changes in version 0.3.3.1-alpha - 2018-01-25
11576  Tor 0.3.3.1-alpha is the first release in the 0.3.3.x series. It adds
11577  several new features to Tor, including several improvements to
11578  bootstrapping, and support for an experimental "vanguards" feature to
11579  resist guard discovery attacks. This series also includes better
11580  support for applications that need to embed Tor or manage v3
11581  onion services.
11582
11583  o Major features (embedding):
11584    - There is now a documented stable API for programs that need to
11585      embed Tor. See tor_api.h for full documentation and known bugs.
11586      Closes ticket 23684.
11587    - Tor now has support for restarting in the same process.
11588      Controllers that run Tor using the "tor_api.h" interface can now
11589      restart Tor after Tor has exited. This support is incomplete,
11590      however: we fixed crash bugs that prevented it from working at
11591      all, but many bugs probably remain, including a possibility of
11592      security issues. Implements ticket 24581.
11593
11594  o Major features (IPv6, directory documents):
11595    - Add consensus method 27, which adds IPv6 ORPorts to the microdesc
11596      consensus. This information makes it easier for IPv6 clients to
11597      bootstrap and choose reachable entry guards. Implements ticket 23826.
11598    - Add consensus method 28, which removes IPv6 ORPorts from
11599      microdescriptors. Now that the consensus contains IPv6 ORPorts, they
11600      are redundant in microdescs. This change will be used by Tor clients
11601      on 0.2.8.x and later. (That is to say, with all Tor clients that
11602      have IPv6 bootstrap and guard support.) Implements ticket 23828.
11603    - Expand the documentation for AuthDirHasIPv6Connectivity when it is
11604      set by different numbers of authorities. Fixes 23870
11605      on 0.2.4.1-alpha.
11606
11607  o Major features (onion service v3, control port):
11608    - The control port now supports commands and events for v3 onion
11609      services. It is now possible to create ephemeral v3 services using
11610      ADD_ONION. Additionally, several events (HS_DESC, HS_DESC_CONTENT,
11611      CIRC and CIRC_MINOR) and commands (GETINFO, HSPOST, ADD_ONION and
11612      DEL_ONION) have been extended to support v3 onion services. Closes
11613      ticket 20699; implements proposal 284.
11614
11615  o Major features (onion services):
11616    - Provide torrc options to pin the second and third hops of onion
11617      service circuits to a list of nodes. The option HSLayer2Guards
11618      pins the second hop, and the option HSLayer3Guards pins the third
11619      hop. These options are for use in conjunction with experiments
11620      with "vanguards" for preventing guard enumeration attacks. Closes
11621      ticket 13837.
11622
11623  o Major features (rust, portability, experimental):
11624    - Tor now ships with an optional implementation of one of its
11625      smaller modules (protover.c) in the Rust programming language. To
11626      try it out, install a Rust build environment, and configure Tor
11627      with "--enable-rust --enable-cargo-online-mode". This should not
11628      cause any user-visible changes, but should help us gain more
11629      experience with Rust, and plan future Rust integration work.
11630      Implementation by Chelsea Komlo. Closes ticket 22840.
11631
11632  o Minor features (storage, configuration):
11633    - Users can store cached directory documents somewhere other than
11634      the DataDirectory by using the CacheDirectory option. Similarly,
11635      the storage location for relay's keys can be overridden with the
11636      KeyDirectory option. Closes ticket 22703.
11637
11638  o Major features (v3 onion services, ipv6):
11639    - When v3 onion service clients send introduce cells, they now
11640      include the IPv6 address of the rendezvous point, if it has one.
11641      Current v3 onion services running 0.3.2 ignore IPv6 addresses, but
11642      in future Tor versions, IPv6-only v3 single onion services will be
11643      able to use IPv6 addresses to connect directly to the rendezvous
11644      point. Closes ticket 23577. Patch by Neel Chauhan.
11645
11646  o Major bugfixes (onion services, retry behavior):
11647    - Fix an "off by 2" error in counting rendezvous failures on the
11648      onion service side. While we thought we would stop the rendezvous
11649      attempt after one failed circuit, we were actually making three
11650      circuit attempts before giving up. Now switch to a default of 2,
11651      and allow the consensus parameter "hs_service_max_rdv_failures" to
11652      override. Fixes bug 24895; bugfix on 0.0.6.
11653    - New-style (v3) onion services now obey the "max rendezvous circuit
11654      attempts" logic. Previously they would make as many rendezvous
11655      circuit attempts as they could fit in the MAX_REND_TIMEOUT second
11656      window before giving up. Fixes bug 24894; bugfix on 0.3.2.1-alpha.
11657
11658  o Major bugfixes (relays):
11659    - Fix a set of false positives where relays would consider
11660      connections to other relays as being client-only connections (and
11661      thus e.g. deserving different link padding schemes) if those
11662      relays fell out of the consensus briefly. Now we look only at the
11663      initial handshake and whether the connection authenticated as a
11664      relay. Fixes bug 24898; bugfix on 0.3.1.1-alpha.
11665
11666  o Minor feature (IPv6):
11667    - Make IPv6-only clients wait for microdescs for relays, even if we
11668      were previously using descriptors (or were using them as a bridge)
11669      and have a cached descriptor for them. Implements ticket 23827.
11670    - When a consensus has IPv6 ORPorts, make IPv6-only clients use
11671      them, rather than waiting to download microdescriptors.
11672      Implements ticket 23827.
11673
11674  o Minor features (cleanup):
11675    - Tor now deletes the CookieAuthFile and ExtORPortCookieAuthFile
11676      when it stops. Closes ticket 23271.
11677
11678  o Minor features (defensive programming):
11679    - Most of the functions in Tor that free objects have been replaced
11680      with macros that free the objects and set the corresponding
11681      pointers to NULL. This change should help prevent a large class of
11682      dangling pointer bugs. Closes ticket 24337.
11683    - Where possible, the tor_free() macro now only evaluates its input
11684      once. Part of ticket 24337.
11685    - Check that microdesc ed25519 ids are non-zero in
11686      node_get_ed25519_id() before returning them. Implements ticket
11687      24001, patch by "aruna1234".
11688
11689  o Minor features (embedding):
11690    - Tor can now start with a preauthenticated control connection
11691      created by the process that launched it. This feature is meant for
11692      use by programs that want to launch and manage a Tor process
11693      without allowing other programs to manage it as well. For more
11694      information, see the __OwningControllerFD option documented in
11695      control-spec.txt. Closes ticket 23900.
11696    - On most errors that would cause Tor to exit, it now tries to
11697      return from the tor_main() function, rather than calling the
11698      system exit() function. Most users won't notice a difference here,
11699      but it should be significant for programs that run Tor inside
11700      a separate thread: they should now be able to survive Tor's exit
11701      conditions rather than having Tor shut down the entire process.
11702      Closes ticket 23848.
11703    - Applications that want to embed Tor can now tell Tor not to
11704      register any of its own POSIX signal handlers, using the
11705      __DisableSignalHandlers option. Closes ticket 24588.
11706
11707  o Minor features (fallback directory list):
11708    - Avoid selecting fallbacks that change their IP addresses too
11709      often. Select more fallbacks by ignoring the Guard flag, and
11710      allowing lower cutoffs for the Running and V2Dir flags. Also allow
11711      a lower bandwidth, and a higher number of fallbacks per operator
11712      (5% of the list). Implements ticket 24785.
11713    - Update the fallback whitelist and blacklist based on opt-ins and
11714      relay changes. Closes tickets 22321, 24678, 22527, 24135,
11715      and 24695.
11716
11717  o Minor features (fallback directory mirror configuration):
11718    - Add a nickname to each fallback in a C comment. This makes it
11719      easier for operators to find their relays, and allows stem to use
11720      nicknames to identify fallbacks. Implements ticket 24600.
11721    - Add a type and version header to the fallback directory mirror
11722      file. Also add a delimiter to the end of each fallback entry. This
11723      helps external parsers like stem and Relay Search. Implements
11724      ticket 24725.
11725    - Add an extrainfo cache flag for each fallback in a C comment. This
11726      allows stem to use fallbacks to fetch extra-info documents, rather
11727      than using authorities. Implements ticket 22759.
11728    - Add the generateFallbackDirLine.py script for automatically
11729      generating fallback directory mirror lines from relay fingerprints.
11730      No more typos! Add the lookupFallbackDirContact.py script for
11731      automatically looking up operator contact info from relay
11732      fingerprints. Implements ticket 24706, patch by teor and atagar.
11733    - Reject any fallback directory mirror that serves an expired
11734      consensus. Implements ticket 20942, patch by "minik".
11735    - Remove commas and equals signs from external string inputs to the
11736      fallback list. This avoids format confusion attacks. Implements
11737      ticket 24726.
11738    - Remove the "weight=10" line from fallback directory mirror
11739      entries. Ticket 24681 will maintain the current fallback weights
11740      by changing Tor's default fallback weight to 10. Implements
11741      ticket 24679.
11742    - Stop logging excessive information about fallback netblocks.
11743      Implements ticket 24791.
11744
11745  o Minor features (forward-compatibility):
11746    - If a relay supports some link authentication protocol that we do
11747      not recognize, then include that relay's ed25519 key when telling
11748      other relays to extend to it. Previously, we treated future
11749      versions as if they were too old to support ed25519 link
11750      authentication. Closes ticket 20895.
11751
11752  o Minor features (heartbeat):
11753    - Add onion service information to our heartbeat logs, displaying
11754      stats about the activity of configured onion services. Closes
11755      ticket 24896.
11756
11757  o Minor features (instrumentation, development):
11758    - Add the MainloopStats option to allow developers to get
11759      instrumentation information from the main event loop via the
11760      heartbeat messages. We hope to use this to improve Tor's behavior
11761      when it's trying to sleep. Closes ticket 24605.
11762
11763  o Minor features (log messages):
11764    - Improve a warning message that happens when we fail to re-parse an
11765      old router because of an expired certificate. Closes ticket 20020.
11766    - Make the log more quantitative when we hit MaxMemInQueues
11767      threshold exposing some values. Closes ticket 24501.
11768
11769  o Minor features (logging, android):
11770    - Added support for the Android logging subsystem. Closes
11771      ticket 24362.
11772
11773  o Minor features (performance):
11774    - Support predictive circuit building for onion service circuits
11775      with multiple layers of guards. Closes ticket 23101.
11776    - Use stdatomic.h where available, rather than mutexes, to implement
11777      atomic_counter_t. Closes ticket 23953.
11778
11779  o Minor features (performance, 32-bit):
11780    - Improve performance on 32-bit systems by avoiding 64-bit division
11781      when calculating the timestamp in milliseconds for channel padding
11782      computations. Implements ticket 24613.
11783    - Improve performance on 32-bit systems by avoiding 64-bit division
11784      when timestamping cells and buffer chunks for OOM calculations.
11785      Implements ticket 24374.
11786
11787  o Minor features (performance, OSX, iOS):
11788    - Use the mach_approximate_time() function (when available) to
11789      implement coarse monotonic time. Having a coarse time function
11790      should avoid a large number of system calls, and improve
11791      performance slightly, especially under load. Closes ticket 24427.
11792
11793  o Minor features (performance, windows):
11794    - Improve performance on Windows Vista and Windows 7 by adjusting
11795      TCP send window size according to the recommendation from
11796      SIO_IDEAL_SEND_BACKLOG_QUERY. Closes ticket 22798. Patch
11797      from Vort.
11798
11799  o Major features (relay):
11800    - Implement an option, ReducedExitPolicy, to allow an Tor exit relay
11801      operator to use a more reasonable ("reduced") exit policy, rather
11802      than the default one. If you want to run an exit node without
11803      thinking too hard about which ports to allow, this one is for you.
11804      Closes ticket 13605. Patch from Neel Chauhan.
11805
11806  o Minor features (testing, debugging, embedding):
11807    - For development purposes, Tor now has a mode in which it runs for
11808      a few seconds, then stops, and starts again without exiting the
11809      process. This mode is meant to help us debug various issues with
11810      ticket 23847. To use this feature, compile with
11811      --enable-restart-debugging, and set the TOR_DEBUG_RESTART
11812      environment variable. This is expected to crash a lot, and is
11813      really meant for developers only. It will likely be removed in a
11814      future release. Implements ticket 24583.
11815
11816  o Minor bugfix (network IPv6 test):
11817    - Tor's test scripts now check if "ping -6 ::1" works when the user
11818      runs "make test-network-all". Fixes bug 24677; bugfix on
11819      0.2.9.3-alpha. Patch by "ffmancera".
11820
11821  o Minor bugfixes (build, rust):
11822    - Fix output of autoconf checks to display success messages for Rust
11823      dependencies and a suitable rustc compiler version. Fixes bug
11824      24612; bugfix on 0.3.1.3-alpha.
11825    - When building with Rust on OSX, link against libresolv, to work
11826      around the issue at https://github.com/rust-lang/rust/issues/46797.
11827      Fixes bug 24652; bugfix on 0.3.1.1-alpha.
11828    - Don't pass the --quiet option to cargo: it seems to suppress some
11829      errors, which is not what we want to do when building. Fixes bug
11830      24518; bugfix on 0.3.1.7.
11831    - Build correctly when building from outside Tor's source tree with
11832      the TOR_RUST_DEPENDENCIES option set. Fixes bug 22768; bugfix
11833      on 0.3.1.7.
11834
11835  o Minor bugfixes (directory authorities, IPv6):
11836    - When creating a routerstatus (vote) from a routerinfo (descriptor),
11837      set the IPv6 address to the unspecified IPv6 address, and
11838      explicitly initialize the port to zero. Fixes bug 24488; bugfix
11839      on 0.2.4.1-alpha.
11840
11841  o Minor bugfixes (fallback directory mirrors):
11842    - Make updateFallbackDirs.py search harder for python. (Some OSs
11843      don't put it in /usr/bin.) Fixes bug 24708; bugfix
11844      on 0.2.8.1-alpha.
11845
11846  o Minor bugfixes (hibernation, bandwidth accounting, shutdown):
11847    - When hibernating, close connections normally and allow them to
11848      flush. Fixes bug 23571; bugfix on 0.2.4.7-alpha. Also fixes
11849      bug 7267.
11850    - Do not attempt to launch self-reachability tests when entering
11851      hibernation. Fixes a case of bug 12062; bugfix on 0.0.9pre5.
11852    - Resolve several bugs related to descriptor fetching on bridge
11853      clients with bandwidth accounting enabled. (This combination is
11854      not recommended!) Fixes a case of bug 12062; bugfix
11855      on 0.2.0.3-alpha.
11856    - When hibernating, do not attempt to launch DNS checks. Fixes a
11857      case of bug 12062; bugfix on 0.1.2.2-alpha.
11858    - When hibernating, do not try to upload or download descriptors.
11859      Fixes a case of bug 12062; bugfix on 0.0.9pre5.
11860
11861  o Minor bugfixes (IPv6, bridges):
11862    - Tor now always sets IPv6 preferences for bridges. Fixes bug 24573;
11863      bugfix on 0.2.8.2-alpha.
11864    - Tor now sets IPv6 address in the routerstatus as well as in the
11865      router descriptors when updating addresses for a bridge. Closes
11866      ticket 24572; bugfix on 0.2.4.5-alpha. Patch by "ffmancera".
11867
11868  o Minor bugfixes (linux seccomp2 sandbox):
11869    - When running with the sandbox enabled, reload configuration files
11870      correctly even when %include was used. Previously we would crash.
11871      Fixes bug 22605; bugfix on 0.3.1. Patch from Daniel Pinto.
11872
11873  o Minor bugfixes (memory leaks):
11874    - Avoid possible at-exit memory leaks related to use of Libevent's
11875      event_base_once() function. (This function tends to leak memory if
11876      the event_base is closed before the event fires.) Fixes bug 24584;
11877      bugfix on 0.2.8.1-alpha.
11878    - Fix a harmless memory leak in tor-resolve. Fixes bug 24582; bugfix
11879      on 0.2.1.1-alpha.
11880
11881  o Minor bugfixes (OSX):
11882    - Don't exit the Tor process if setrlimit() fails to change the file
11883      limit (which can happen sometimes on some versions of OSX). Fixes
11884      bug 21074; bugfix on 0.0.9pre5.
11885
11886  o Minor bugfixes (performance, fragile-hardening):
11887    - Improve the performance of our consensus-diff application code
11888      when Tor is built with the --enable-fragile-hardening option set.
11889      Fixes bug 24826; bugfix on 0.3.1.1-alpha.
11890
11891  o Minor bugfixes (performance, timeouts):
11892    - Consider circuits for timeout as soon as they complete a hop. This
11893      is more accurate than applying the timeout in
11894      circuit_expire_building() because that function is only called
11895      once per second, which is now too slow for typical timeouts on the
11896      current network. Fixes bug 23114; bugfix on 0.2.2.2-alpha.
11897    - Use onion service circuits (and other circuits longer than 3 hops)
11898      to calculate a circuit build timeout. Previously, Tor only
11899      calculated its build timeout based on circuits that planned to be
11900      exactly 3 hops long. With this change, we include measurements
11901      from all circuits at the point where they complete their third
11902      hop. Fixes bug 23100; bugfix on 0.2.2.2-alpha.
11903
11904  o Minor bugfixes (testing):
11905    - Give out Exit flags in bootstrapping networks. Fixes bug 24137;
11906      bugfix on 0.2.3.1-alpha.
11907    - Fix a memory leak in the scheduler/loop_kist unit test. Fixes bug
11908      25005; bugfix on 0.3.2.7-rc.
11909
11910  o Code simplification and refactoring:
11911    - Remove /usr/athena from search path in configure.ac. Closes
11912      ticket 24363.
11913    - Remove duplicate code in node_has_curve25519_onion_key() and
11914      node_get_curve25519_onion_key(), and add a check for a zero
11915      microdesc curve25519 onion key. Closes ticket 23966, patch by
11916      "aruna1234" and teor.
11917    - Rewrite channel_rsa_id_group_set_badness to reduce temporary
11918      memory allocations with large numbers of OR connections (e.g.
11919      relays). Closes ticket 24119.
11920    - Separate the function that deletes ephemeral files when Tor
11921      stops gracefully.
11922    - Small changes to Tor's buf_t API to make it suitable for use as a
11923      general-purpose safe string constructor. Closes ticket 22342.
11924    - Switch -Wnormalized=id to -Wnormalized=nfkc in configure.ac to
11925      avoid source code identifier confusion. Closes ticket 24467.
11926    - The tor_git_revision[] constant no longer needs to be redeclared
11927      by everything that links against the rest of Tor. Done as part of
11928      ticket 23845, to simplify our external API.
11929    - We make extend_info_from_node() use node_get_curve25519_onion_key()
11930      introduced in ticket 23577 to access the curve25519 public keys
11931      rather than accessing it directly. Closes ticket 23760. Patch by
11932      Neel Chauhan.
11933    - Add a function to log channels' scheduler state changes to aid
11934      debugging efforts. Closes ticket 24531.
11935
11936  o Documentation:
11937    - Add documentation on how to build tor with Rust dependencies
11938      without having to be online. Closes ticket 22907; bugfix
11939      on 0.3.0.3-alpha.
11940    - Clarify the behavior of RelayBandwidth{Rate,Burst} with client
11941      traffic. Closes ticket 24318.
11942    - Document that OutboundBindAddress doesn't apply to DNS requests.
11943      Closes ticket 22145. Patch from Aruna Maurya.
11944    - Document that operators who run more than one relay or bridge are
11945      expected to set MyFamily and ContactInfo correctly. Closes
11946      ticket 24526.
11947
11948  o Code simplification and refactoring (channels):
11949    - Remove the incoming and outgoing channel queues. These were never
11950      used, but still took up a step in our fast path.
11951    - The majority of the channel unit tests have been rewritten and the
11952      code coverage has now been raised to 83.6% for channel.c. Closes
11953      ticket 23709.
11954    - Remove other dead code from the channel subsystem: All together,
11955      this cleanup has removed more than 1500 lines of code overall and
11956      adding very little except for unit test.
11957
11958  o Code simplification and refactoring (circuit rendezvous):
11959    - Split the client-side rendezvous circuit lookup into two
11960      functions: one that returns only established circuits and another
11961      that returns all kinds of circuits. Closes ticket 23459.
11962
11963  o Code simplification and refactoring (controller):
11964    - Make most of the variables in networkstatus_getinfo_by_purpose()
11965      const. Implements ticket 24489.
11966
11967
11968Changes in version 0.3.2.9 - 2018-01-09
11969  Tor 0.3.2.9 is the first stable release in the 0.3.2 series.
11970
11971  The 0.3.2 series includes our long-anticipated new onion service
11972  design, with numerous security features. (For more information, see
11973  our blog post at https://blog.torproject.org/fall-harvest.) We also
11974  have a new circuit scheduler algorithm for improved performance on
11975  relays everywhere (see https://blog.torproject.org/kist-and-tell),
11976  along with many smaller features and bugfixes.
11977
11978  Per our stable release policy, we plan to support each stable release
11979  series for at least the next nine months, or for three months after
11980  the first stable release of the next series: whichever is longer. If
11981  you need a release with long-term support, we recommend that you stay
11982  with the 0.2.9 series.
11983
11984  Below is a list of the changes since 0.3.2.8-rc. For a list of all
11985  changes since 0.3.1, see the ReleaseNotes file.
11986
11987  o Minor features (fallback directory mirrors):
11988    - The fallback directory list has been re-generated based on the
11989      current status of the network. Tor uses fallback directories to
11990      bootstrap when it doesn't yet have up-to-date directory
11991      information. Closes ticket 24801.
11992    - Make the default DirAuthorityFallbackRate 0.1, so that clients
11993      prefer to bootstrap from fallback directory mirrors. This is a
11994      follow-up to 24679, which removed weights from the default
11995      fallbacks. Implements ticket 24681.
11996
11997  o Minor features (geoip):
11998    - Update geoip and geoip6 to the January 5 2018 Maxmind GeoLite2
11999      Country database.
12000
12001  o Minor bugfixes (address selection):
12002    - When the fascist_firewall_choose_address_ functions don't find a
12003      reachable address, set the returned address to the null address
12004      and port. This is a precautionary measure, because some callers do
12005      not check the return value. Fixes bug 24736; bugfix
12006      on 0.2.8.2-alpha.
12007
12008  o Minor bugfixes (compilation):
12009    - Resolve a few shadowed-variable warnings in the onion service
12010      code. Fixes bug 24634; bugfix on 0.3.2.1-alpha.
12011
12012  o Minor bugfixes (portability, msvc):
12013    - Fix a bug in the bit-counting parts of our timing-wheel code on
12014      MSVC. (Note that MSVC is still not a supported build platform, due
12015      to cryptographic timing channel risks.) Fixes bug 24633; bugfix
12016      on 0.2.9.1-alpha.
12017
12018
12019Changes in version 0.3.2.8-rc - 2017-12-21
12020  Tor 0.3.2.8-rc fixes a pair of bugs in the KIST and KISTLite
12021  schedulers that had led servers under heavy load to overload their
12022  outgoing connections. All relay operators running earlier 0.3.2.x
12023  versions should upgrade. This version also includes a mitigation for
12024  over-full DESTROY queues leading to out-of-memory conditions: if it
12025  works, we will soon backport it to earlier release series.
12026
12027  This is the second release candidate in the 0.3.2 series. If we find
12028  no new bugs or regression here, then the first stable 0.3.2 release
12029  will be nearly identical to this.
12030
12031  o Major bugfixes (KIST, scheduler):
12032    - The KIST scheduler did not correctly account for data already
12033      enqueued in each connection's send socket buffer, particularly in
12034      cases when the TCP/IP congestion window was reduced between
12035      scheduler calls. This situation lead to excessive per-connection
12036      buffering in the kernel, and a potential memory DoS. Fixes bug
12037      24665; bugfix on 0.3.2.1-alpha.
12038
12039  o Minor features (geoip):
12040    - Update geoip and geoip6 to the December 6 2017 Maxmind GeoLite2
12041      Country database.
12042
12043  o Minor bugfixes (hidden service v3):
12044    - Bump hsdir_spread_store parameter from 3 to 4 in order to increase
12045      the probability of reaching a service for a client missing
12046      microdescriptors. Fixes bug 24425; bugfix on 0.3.2.1-alpha.
12047
12048  o Minor bugfixes (memory usage):
12049    - When queuing DESTROY cells on a channel, only queue the circuit-id
12050      and reason fields: not the entire 514-byte cell. This fix should
12051      help mitigate any bugs or attacks that fill up these queues, and
12052      free more RAM for other uses. Fixes bug 24666; bugfix
12053      on 0.2.5.1-alpha.
12054
12055  o Minor bugfixes (scheduler, KIST):
12056    - Use a sane write limit for KISTLite when writing onto a connection
12057      buffer instead of using INT_MAX and shoving as much as it can.
12058      Because the OOM handler cleans up circuit queues, we are better
12059      off at keeping them in that queue instead of the connection's
12060      buffer. Fixes bug 24671; bugfix on 0.3.2.1-alpha.
12061
12062
12063Changes in version 0.3.2.7-rc - 2017-12-14
12064  Tor 0.3.2.7-rc fixes various bugs in earlier versions of Tor,
12065  including some that could affect reliability or correctness.
12066
12067  This is the first release candidate in the 0.3.2 series. If we find no
12068  new bugs or regression here, then the first stable 0.3.2. release will
12069  be nearly identical to this.
12070
12071  o Major bugfixes (circuit prediction):
12072    - Fix circuit prediction logic so that a client doesn't treat a port
12073      as being "handled" by a circuit if that circuit already has
12074      isolation settings on it. This change should make Tor clients more
12075      responsive by improving their chances of having a pre-created
12076      circuit ready for use when a request arrives. Fixes bug 18859;
12077      bugfix on 0.2.3.3-alpha.
12078
12079  o Minor features (logging):
12080    - Provide better warnings when the getrandom() syscall fails. Closes
12081      ticket 24500.
12082
12083  o Minor features (portability):
12084    - Tor now compiles correctly on arm64 with libseccomp-dev installed.
12085      (It doesn't yet work with the sandbox enabled.) Closes
12086      ticket 24424.
12087
12088  o Minor bugfixes (bridge clients, bootstrap):
12089    - Retry directory downloads when we get our first bridge descriptor
12090      during bootstrap or while reconnecting to the network. Keep
12091      retrying every time we get a bridge descriptor, until we have a
12092      reachable bridge. Fixes part of bug 24367; bugfix on 0.2.0.3-alpha.
12093    - Stop delaying bridge descriptor fetches when we have cached bridge
12094      descriptors. Instead, only delay bridge descriptor fetches when we
12095      have at least one reachable bridge. Fixes part of bug 24367;
12096      bugfix on 0.2.0.3-alpha.
12097    - Stop delaying directory fetches when we have cached bridge
12098      descriptors. Instead, only delay bridge descriptor fetches when
12099      all our bridges are definitely unreachable. Fixes part of bug
12100      24367; bugfix on 0.2.0.3-alpha.
12101
12102  o Minor bugfixes (compilation):
12103    - Fix a signed/unsigned comparison warning introduced by our fix to
12104      TROVE-2017-009. Fixes bug 24480; bugfix on 0.2.5.16.
12105
12106  o Minor bugfixes (correctness):
12107    - Fix several places in our codebase where a C compiler would be
12108      likely to eliminate a check, based on assuming that undefined
12109      behavior had not happened elsewhere in the code. These cases are
12110      usually a sign of redundant checking or dubious arithmetic. Found
12111      by Georg Koppen using the "STACK" tool from Wang, Zeldovich,
12112      Kaashoek, and Solar-Lezama. Fixes bug 24423; bugfix on various
12113      Tor versions.
12114
12115  o Minor bugfixes (onion service v3):
12116    - Fix a race where an onion service would launch a new intro circuit
12117      after closing an old one, but fail to register it before freeing
12118      the previously closed circuit. This bug was making the service
12119      unable to find the established intro circuit and thus not upload
12120      its descriptor, thus making a service unavailable for up to 24
12121      hours. Fixes bug 23603; bugfix on 0.3.2.1-alpha.
12122
12123  o Minor bugfixes (scheduler, KIST):
12124    - Properly set the scheduler state of an unopened channel in the
12125      KIST scheduler main loop. This prevents a harmless but annoying
12126      log warning. Fixes bug 24502; bugfix on 0.3.2.4-alpha.
12127    - Avoid a possible integer overflow when computing the available
12128      space on the TCP buffer of a channel. This had no security
12129      implications; but could make KIST allow too many cells on a
12130      saturated connection. Fixes bug 24590; bugfix on 0.3.2.1-alpha.
12131    - Downgrade to "info" a harmless warning about the monotonic time
12132      moving backwards: This can happen on platform not supporting
12133      monotonic time. Fixes bug 23696; bugfix on 0.3.2.1-alpha.
12134
12135
12136Changes in version 0.3.2.6-alpha - 2017-12-01
12137  This version of Tor is the latest in the 0.3.2 alpha series. It
12138  includes fixes for several important security issues. All Tor users
12139  should upgrade to this release, or to one of the other releases coming
12140  out today.
12141
12142  o Major bugfixes (security):
12143    - Fix a denial of service bug where an attacker could use a
12144      malformed directory object to cause a Tor instance to pause while
12145      OpenSSL would try to read a passphrase from the terminal. (Tor
12146      instances run without a terminal, which is the case for most Tor
12147      packages, are not impacted.) Fixes bug 24246; bugfix on every
12148      version of Tor. Also tracked as TROVE-2017-011 and CVE-2017-8821.
12149      Found by OSS-Fuzz as testcase 6360145429790720.
12150    - Fix a denial of service issue where an attacker could crash a
12151      directory authority using a malformed router descriptor. Fixes bug
12152      24245; bugfix on 0.2.9.4-alpha. Also tracked as TROVE-2017-010
12153      and CVE-2017-8820.
12154    - When checking for replays in the INTRODUCE1 cell data for a
12155      (legacy) onion service, correctly detect replays in the RSA-
12156      encrypted part of the cell. We were previously checking for
12157      replays on the entire cell, but those can be circumvented due to
12158      the malleability of Tor's legacy hybrid encryption. This fix helps
12159      prevent a traffic confirmation attack. Fixes bug 24244; bugfix on
12160      0.2.4.1-alpha. This issue is also tracked as TROVE-2017-009
12161      and CVE-2017-8819.
12162
12163  o Major bugfixes (security, onion service v2):
12164    - Fix a use-after-free error that could crash v2 Tor onion services
12165      when they failed to open circuits while expiring introduction
12166      points. Fixes bug 24313; bugfix on 0.2.7.2-alpha. This issue is
12167      also tracked as TROVE-2017-013 and CVE-2017-8823.
12168
12169  o Major bugfixes (security, relay):
12170    - When running as a relay, make sure that we never build a path
12171      through ourselves, even in the case where we have somehow lost the
12172      version of our descriptor appearing in the consensus. Fixes part
12173      of bug 21534; bugfix on 0.2.0.1-alpha. This issue is also tracked
12174      as TROVE-2017-012 and CVE-2017-8822.
12175    - When running as a relay, make sure that we never choose ourselves
12176      as a guard. Fixes part of bug 21534; bugfix on 0.3.0.1-alpha. This
12177      issue is also tracked as TROVE-2017-012 and CVE-2017-8822.
12178
12179  o Minor feature (relay statistics):
12180    - Change relay bandwidth reporting stats interval from 4 hours to 24
12181      hours in order to reduce the efficiency of guard discovery
12182      attacks. Fixes ticket 23856.
12183
12184  o Minor features (directory authority):
12185    - Add an IPv6 address for the "bastet" directory authority. Closes
12186      ticket 24394.
12187
12188  o Minor bugfixes (client):
12189    - By default, do not enable storage of client-side DNS values. These
12190      values were unused by default previously, but they should not have
12191      been cached at all. Fixes bug 24050; bugfix on 0.2.6.3-alpha.
12192
12193
12194Changes in version 0.3.1.9 - 2017-12-01:
12195  Tor 0.3.1.9 backports important security and stability fixes from the
12196  0.3.2 development series. All Tor users should upgrade to this
12197  release, or to another of the releases coming out today.
12198
12199  o Major bugfixes (security, backport from 0.3.2.6-alpha):
12200    - Fix a denial of service bug where an attacker could use a
12201      malformed directory object to cause a Tor instance to pause while
12202      OpenSSL would try to read a passphrase from the terminal. (Tor
12203      instances run without a terminal, which is the case for most Tor
12204      packages, are not impacted.) Fixes bug 24246; bugfix on every
12205      version of Tor. Also tracked as TROVE-2017-011 and CVE-2017-8821.
12206      Found by OSS-Fuzz as testcase 6360145429790720.
12207    - Fix a denial of service issue where an attacker could crash a
12208      directory authority using a malformed router descriptor. Fixes bug
12209      24245; bugfix on 0.2.9.4-alpha. Also tracked as TROVE-2017-010
12210      and CVE-2017-8820.
12211    - When checking for replays in the INTRODUCE1 cell data for a
12212      (legacy) onion service, correctly detect replays in the RSA-
12213      encrypted part of the cell. We were previously checking for
12214      replays on the entire cell, but those can be circumvented due to
12215      the malleability of Tor's legacy hybrid encryption. This fix helps
12216      prevent a traffic confirmation attack. Fixes bug 24244; bugfix on
12217      0.2.4.1-alpha. This issue is also tracked as TROVE-2017-009
12218      and CVE-2017-8819.
12219
12220  o Major bugfixes (security, onion service v2, backport from 0.3.2.6-alpha):
12221    - Fix a use-after-free error that could crash v2 Tor onion services
12222      when they failed to open circuits while expiring introduction
12223      points. Fixes bug 24313; bugfix on 0.2.7.2-alpha. This issue is
12224      also tracked as TROVE-2017-013 and CVE-2017-8823.
12225
12226  o Major bugfixes (security, relay, backport from 0.3.2.6-alpha):
12227    - When running as a relay, make sure that we never build a path
12228      through ourselves, even in the case where we have somehow lost the
12229      version of our descriptor appearing in the consensus. Fixes part
12230      of bug 21534; bugfix on 0.2.0.1-alpha. This issue is also tracked
12231      as TROVE-2017-012 and CVE-2017-8822.
12232    - When running as a relay, make sure that we never choose ourselves
12233      as a guard. Fixes part of bug 21534; bugfix on 0.3.0.1-alpha. This
12234      issue is also tracked as TROVE-2017-012 and CVE-2017-8822.
12235
12236  o Major bugfixes (exit relays, DNS, backport from 0.3.2.4-alpha):
12237    - Fix an issue causing DNS to fail on high-bandwidth exit nodes,
12238      making them nearly unusable. Fixes bugs 21394 and 18580; bugfix on
12239      0.1.2.2-alpha, which introduced eventdns. Thanks to Dhalgren for
12240      identifying and finding a workaround to this bug and to Moritz,
12241      Arthur Edelstein, and Roger for helping to track it down and
12242      analyze it.
12243
12244  o Minor features (bridge):
12245    - Bridges now include notice in their descriptors that they are
12246      bridges, and notice of their distribution status, based on their
12247      publication settings. Implements ticket 18329. For more fine-
12248      grained control of how a bridge is distributed, upgrade to 0.3.2.x
12249      or later.
12250
12251  o Minor features (directory authority, backport from 0.3.2.6-alpha):
12252    - Add an IPv6 address for the "bastet" directory authority. Closes
12253      ticket 24394.
12254
12255  o Minor features (geoip):
12256    - Update geoip and geoip6 to the November 6 2017 Maxmind GeoLite2
12257      Country database.
12258
12259  o Minor bugfix (relay address resolution, backport from 0.3.2.1-alpha):
12260    - Avoid unnecessary calls to directory_fetches_from_authorities() on
12261      relays, to prevent spurious address resolutions and descriptor
12262      rebuilds. This is a mitigation for bug 21789. Fixes bug 23470;
12263      bugfix on in 0.2.8.1-alpha.
12264
12265  o Minor bugfixes (compilation, backport from 0.3.2.1-alpha):
12266    - Fix unused variable warnings in donna's Curve25519 SSE2 code.
12267      Fixes bug 22895; bugfix on 0.2.7.2-alpha.
12268
12269  o Minor bugfixes (logging, relay shutdown, annoyance, backport from 0.3.2.2-alpha):
12270    - When a circuit is marked for close, do not attempt to package any
12271      cells for channels on that circuit. Previously, we would detect
12272      this condition lower in the call stack, when we noticed that the
12273      circuit had no attached channel, and log an annoying message.
12274      Fixes bug 8185; bugfix on 0.2.5.4-alpha.
12275
12276  o Minor bugfixes (onion service, backport from 0.3.2.5-alpha):
12277    - Rename the consensus parameter "hsdir-interval" to "hsdir_interval"
12278      so it matches dir-spec.txt. Fixes bug 24262; bugfix
12279      on 0.3.1.1-alpha.
12280
12281  o Minor bugfixes (relay, crash, backport from 0.3.2.4-alpha):
12282    - Avoid a crash when transitioning from client mode to bridge mode.
12283      Previously, we would launch the worker threads whenever our
12284      "public server" mode changed, but not when our "server" mode
12285      changed. Fixes bug 23693; bugfix on 0.2.6.3-alpha.
12286
12287
12288Changes in version 0.3.0.13 - 2017-12-01
12289  Tor 0.3.0.13 backports important security and stability bugfixes from
12290  later Tor releases. All Tor users should upgrade to this release, or
12291  to another of the releases coming out today.
12292
12293  Note: the Tor 0.3.0 series will no longer be supported after 26 Jan
12294  2018. If you need a release with long-term support, please stick with
12295  the 0.2.9 series. Otherwise, please upgrade to 0.3.1 or later.
12296
12297  o Major bugfixes (security, backport from 0.3.2.6-alpha):
12298    - Fix a denial of service bug where an attacker could use a
12299      malformed directory object to cause a Tor instance to pause while
12300      OpenSSL would try to read a passphrase from the terminal. (Tor
12301      instances run without a terminal, which is the case for most Tor
12302      packages, are not impacted.) Fixes bug 24246; bugfix on every
12303      version of Tor. Also tracked as TROVE-2017-011 and CVE-2017-8821.
12304      Found by OSS-Fuzz as testcase 6360145429790720.
12305    - Fix a denial of service issue where an attacker could crash a
12306      directory authority using a malformed router descriptor. Fixes bug
12307      24245; bugfix on 0.2.9.4-alpha. Also tracked as TROVE-2017-010
12308      and CVE-2017-8820.
12309    - When checking for replays in the INTRODUCE1 cell data for a
12310      (legacy) onion service, correctly detect replays in the RSA-
12311      encrypted part of the cell. We were previously checking for
12312      replays on the entire cell, but those can be circumvented due to
12313      the malleability of Tor's legacy hybrid encryption. This fix helps
12314      prevent a traffic confirmation attack. Fixes bug 24244; bugfix on
12315      0.2.4.1-alpha. This issue is also tracked as TROVE-2017-009
12316      and CVE-2017-8819.
12317
12318  o Major bugfixes (security, onion service v2, backport from 0.3.2.6-alpha):
12319    - Fix a use-after-free error that could crash v2 Tor onion services
12320      when they failed to open circuits while expiring introduction
12321      points. Fixes bug 24313; bugfix on 0.2.7.2-alpha. This issue is
12322      also tracked as TROVE-2017-013 and CVE-2017-8823.
12323
12324  o Major bugfixes (security, relay, backport from 0.3.2.6-alpha):
12325    - When running as a relay, make sure that we never build a path
12326      through ourselves, even in the case where we have somehow lost the
12327      version of our descriptor appearing in the consensus. Fixes part
12328      of bug 21534; bugfix on 0.2.0.1-alpha. This issue is also tracked
12329      as TROVE-2017-012 and CVE-2017-8822.
12330    - When running as a relay, make sure that we never choose ourselves
12331      as a guard. Fixes part of bug 21534; bugfix on 0.3.0.1-alpha. This
12332      issue is also tracked as TROVE-2017-012 and CVE-2017-8822.
12333
12334  o Major bugfixes (exit relays, DNS, backport from 0.3.2.4-alpha):
12335    - Fix an issue causing DNS to fail on high-bandwidth exit nodes,
12336      making them nearly unusable. Fixes bugs 21394 and 18580; bugfix on
12337      0.1.2.2-alpha, which introduced eventdns. Thanks to Dhalgren for
12338      identifying and finding a workaround to this bug and to Moritz,
12339      Arthur Edelstein, and Roger for helping to track it down and
12340      analyze it.
12341
12342  o Minor features (security, windows, backport from 0.3.1.1-alpha):
12343    - Enable a couple of pieces of Windows hardening: one
12344      (HeapEnableTerminationOnCorruption) that has been on-by-default
12345      since Windows 8, and unavailable before Windows 7; and one
12346      (PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION) which we believe doesn't
12347      affect us, but shouldn't do any harm. Closes ticket 21953.
12348
12349  o Minor features (bridge, backport from 0.3.1.9):
12350    - Bridges now include notice in their descriptors that they are
12351      bridges, and notice of their distribution status, based on their
12352      publication settings. Implements ticket 18329. For more fine-
12353      grained control of how a bridge is distributed, upgrade to 0.3.2.x
12354      or later.
12355
12356  o Minor features (directory authority, backport from 0.3.2.6-alpha):
12357    - Add an IPv6 address for the "bastet" directory authority. Closes
12358      ticket 24394.
12359
12360  o Minor features (geoip):
12361    - Update geoip and geoip6 to the November 6 2017 Maxmind GeoLite2
12362      Country database.
12363
12364  o Minor bugfix (relay address resolution, backport from 0.3.2.1-alpha):
12365    - Avoid unnecessary calls to directory_fetches_from_authorities() on
12366      relays, to prevent spurious address resolutions and descriptor
12367      rebuilds. This is a mitigation for bug 21789. Fixes bug 23470;
12368      bugfix on in 0.2.8.1-alpha.
12369
12370  o Minor bugfixes (compilation, backport from 0.3.2.1-alpha):
12371    - Fix unused variable warnings in donna's Curve25519 SSE2 code.
12372      Fixes bug 22895; bugfix on 0.2.7.2-alpha.
12373
12374  o Minor bugfixes (logging, relay shutdown, annoyance, backport from 0.3.2.2-alpha):
12375    - When a circuit is marked for close, do not attempt to package any
12376      cells for channels on that circuit. Previously, we would detect
12377      this condition lower in the call stack, when we noticed that the
12378      circuit had no attached channel, and log an annoying message.
12379      Fixes bug 8185; bugfix on 0.2.5.4-alpha.
12380
12381  o Minor bugfixes (relay, crash, backport from 0.3.2.4-alpha):
12382    - Avoid a crash when transitioning from client mode to bridge mode.
12383      Previously, we would launch the worker threads whenever our
12384      "public server" mode changed, but not when our "server" mode
12385      changed. Fixes bug 23693; bugfix on 0.2.6.3-alpha.
12386
12387  o Minor bugfixes (testing, backport from 0.3.1.6-rc):
12388    - Fix an undersized buffer in test-memwipe.c. Fixes bug 23291;
12389      bugfix on 0.2.7.2-alpha. Found and patched by Ties Stuij.
12390
12391
12392Changes in version 0.2.9.14 - 2017-12-01
12393  Tor 0.3.0.13 backports important security and stability bugfixes from
12394  later Tor releases. All Tor users should upgrade to this release, or
12395  to another of the releases coming out today.
12396
12397  o Major bugfixes (exit relays, DNS, backport from 0.3.2.4-alpha):
12398    - Fix an issue causing DNS to fail on high-bandwidth exit nodes,
12399      making them nearly unusable. Fixes bugs 21394 and 18580; bugfix on
12400      0.1.2.2-alpha, which introduced eventdns. Thanks to Dhalgren for
12401      identifying and finding a workaround to this bug and to Moritz,
12402      Arthur Edelstein, and Roger for helping to track it down and
12403      analyze it.
12404
12405  o Major bugfixes (security, backport from 0.3.2.6-alpha):
12406    - Fix a denial of service bug where an attacker could use a
12407      malformed directory object to cause a Tor instance to pause while
12408      OpenSSL would try to read a passphrase from the terminal. (Tor
12409      instances run without a terminal, which is the case for most Tor
12410      packages, are not impacted.) Fixes bug 24246; bugfix on every
12411      version of Tor. Also tracked as TROVE-2017-011 and CVE-2017-8821.
12412      Found by OSS-Fuzz as testcase 6360145429790720.
12413    - Fix a denial of service issue where an attacker could crash a
12414      directory authority using a malformed router descriptor. Fixes bug
12415      24245; bugfix on 0.2.9.4-alpha. Also tracked as TROVE-2017-010
12416      and CVE-2017-8820.
12417    - When checking for replays in the INTRODUCE1 cell data for a
12418      (legacy) onion service, correctly detect replays in the RSA-
12419      encrypted part of the cell. We were previously checking for
12420      replays on the entire cell, but those can be circumvented due to
12421      the malleability of Tor's legacy hybrid encryption. This fix helps
12422      prevent a traffic confirmation attack. Fixes bug 24244; bugfix on
12423      0.2.4.1-alpha. This issue is also tracked as TROVE-2017-009
12424      and CVE-2017-8819.
12425
12426  o Major bugfixes (security, onion service v2, backport from 0.3.2.6-alpha):
12427    - Fix a use-after-free error that could crash v2 Tor onion services
12428      when they failed to open circuits while expiring introduction
12429      points. Fixes bug 24313; bugfix on 0.2.7.2-alpha. This issue is
12430      also tracked as TROVE-2017-013 and CVE-2017-8823.
12431
12432  o Major bugfixes (security, relay, backport from 0.3.2.6-alpha):
12433    - When running as a relay, make sure that we never build a path
12434      through ourselves, even in the case where we have somehow lost the
12435      version of our descriptor appearing in the consensus. Fixes part
12436      of bug 21534; bugfix on 0.2.0.1-alpha. This issue is also tracked
12437      as TROVE-2017-012 and CVE-2017-8822.
12438
12439  o Minor features (bridge, backport from 0.3.1.9):
12440    - Bridges now include notice in their descriptors that they are
12441      bridges, and notice of their distribution status, based on their
12442      publication settings. Implements ticket 18329. For more fine-
12443      grained control of how a bridge is distributed, upgrade to 0.3.2.x
12444      or later.
12445
12446  o Minor features (directory authority, backport from 0.3.2.6-alpha):
12447    - Add an IPv6 address for the "bastet" directory authority. Closes
12448      ticket 24394.
12449
12450  o Minor features (geoip):
12451    - Update geoip and geoip6 to the November 6 2017 Maxmind GeoLite2
12452      Country database.
12453
12454  o Minor features (security, windows, backport from 0.3.1.1-alpha):
12455    - Enable a couple of pieces of Windows hardening: one
12456      (HeapEnableTerminationOnCorruption) that has been on-by-default
12457      since Windows 8, and unavailable before Windows 7; and one
12458      (PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION) which we believe doesn't
12459      affect us, but shouldn't do any harm. Closes ticket 21953.
12460
12461  o Minor bugfix (relay address resolution, backport from 0.3.2.1-alpha):
12462    - Avoid unnecessary calls to directory_fetches_from_authorities() on
12463      relays, to prevent spurious address resolutions and descriptor
12464      rebuilds. This is a mitigation for bug 21789. Fixes bug 23470;
12465      bugfix on in 0.2.8.1-alpha.
12466
12467  o Minor bugfixes (compilation, backport from 0.3.2.1-alpha):
12468    - Fix unused variable warnings in donna's Curve25519 SSE2 code.
12469      Fixes bug 22895; bugfix on 0.2.7.2-alpha.
12470
12471  o Minor bugfixes (logging, relay shutdown, annoyance, backport from 0.3.2.2-alpha):
12472    - When a circuit is marked for close, do not attempt to package any
12473      cells for channels on that circuit. Previously, we would detect
12474      this condition lower in the call stack, when we noticed that the
12475      circuit had no attached channel, and log an annoying message.
12476      Fixes bug 8185; bugfix on 0.2.5.4-alpha.
12477
12478  o Minor bugfixes (relay, crash, backport from 0.3.2.4-alpha):
12479    - Avoid a crash when transitioning from client mode to bridge mode.
12480      Previously, we would launch the worker threads whenever our
12481      "public server" mode changed, but not when our "server" mode
12482      changed. Fixes bug 23693; bugfix on 0.2.6.3-alpha.
12483
12484  o Minor bugfixes (testing, backport from 0.3.1.6-rc):
12485    - Fix an undersized buffer in test-memwipe.c. Fixes bug 23291;
12486      bugfix on 0.2.7.2-alpha. Found and patched by Ties Stuij.
12487
12488
12489Changes in version 0.2.8.17 - 2017-12-01
12490  Tor 0.2.8.17 backports important security and stability bugfixes from
12491  later Tor releases. All Tor users should upgrade to this release, or
12492  to another of the releases coming out today.
12493
12494  Note: the Tor 0.2.8 series will no longer be supported after 1 Jan
12495  2018. If you need a release with long-term support, please upgrade with
12496  the 0.2.9 series. Otherwise, please upgrade to 0.3.1 or later.
12497
12498  o Major bugfixes (security, backport from 0.3.2.6-alpha):
12499    - Fix a denial of service bug where an attacker could use a
12500      malformed directory object to cause a Tor instance to pause while
12501      OpenSSL would try to read a passphrase from the terminal. (Tor
12502      instances run without a terminal, which is the case for most Tor
12503      packages, are not impacted.) Fixes bug 24246; bugfix on every
12504      version of Tor. Also tracked as TROVE-2017-011 and CVE-2017-8821.
12505      Found by OSS-Fuzz as testcase 6360145429790720.
12506    - When checking for replays in the INTRODUCE1 cell data for a
12507      (legacy) onion service, correctly detect replays in the RSA-
12508      encrypted part of the cell. We were previously checking for
12509      replays on the entire cell, but those can be circumvented due to
12510      the malleability of Tor's legacy hybrid encryption. This fix helps
12511      prevent a traffic confirmation attack. Fixes bug 24244; bugfix on
12512      0.2.4.1-alpha. This issue is also tracked as TROVE-2017-009
12513      and CVE-2017-8819.
12514
12515  o Major bugfixes (security, onion service v2, backport from 0.3.2.6-alpha):
12516    - Fix a use-after-free error that could crash v2 Tor onion services
12517      when they failed to open circuits while expiring introduction
12518      points. Fixes bug 24313; bugfix on 0.2.7.2-alpha. This issue is
12519      also tracked as TROVE-2017-013 and CVE-2017-8823.
12520
12521  o Major bugfixes (security, relay, backport from 0.3.2.6-alpha):
12522    - When running as a relay, make sure that we never build a path through
12523      ourselves, even in the case where we have somehow lost the version of
12524      our descriptor appearing in the consensus. Fixes part of bug 21534;
12525      bugfix on 0.2.0.1-alpha. This issue is also tracked as TROVE-2017-012
12526      and CVE-2017-8822.
12527
12528  o Minor features (bridge, backport from 0.3.1.9):
12529    - Bridges now include notice in their descriptors that they are
12530      bridges, and notice of their distribution status, based on their
12531      publication settings. Implements ticket 18329. For more fine-
12532      grained control of how a bridge is distributed, upgrade to 0.3.2.x
12533      or later.
12534
12535  o Minor features (directory authority, backport from 0.3.2.6-alpha):
12536    - Add an IPv6 address for the "bastet" directory authority. Closes
12537      ticket 24394.
12538
12539  o Minor features (geoip):
12540    - Update geoip and geoip6 to the November 6 2017 Maxmind GeoLite2
12541      Country database.
12542
12543  o Minor bugfixes (testing, backport from 0.3.1.6-rc):
12544    - Fix an undersized buffer in test-memwipe.c. Fixes bug 23291;
12545      bugfix on 0.2.7.2-alpha. Found and patched by Ties Stuij.
12546
12547
12548Changes in version 0.2.5.16 - 2017-12-01
12549  Tor 0.2.5.13 backports important security and stability bugfixes from
12550  later Tor releases. All Tor users should upgrade to this release, or
12551  to another of the releases coming out today.
12552
12553  Note: the Tor 0.2.5 series will no longer be supported after 1 May
12554  2018. If you need a release with long-term support, please upgrade to
12555  the 0.2.9 series. Otherwise, please upgrade to 0.3.1 or later.
12556
12557  o Major bugfixes (security, backport from 0.3.2.6-alpha):
12558    - Fix a denial of service bug where an attacker could use a
12559      malformed directory object to cause a Tor instance to pause while
12560      OpenSSL would try to read a passphrase from the terminal. (Tor
12561      instances run without a terminal, which is the case for most Tor
12562      packages, are not impacted.) Fixes bug 24246; bugfix on every
12563      version of Tor. Also tracked as TROVE-2017-011 and CVE-2017-8821.
12564      Found by OSS-Fuzz as testcase 6360145429790720.
12565    - When checking for replays in the INTRODUCE1 cell data for a
12566      (legacy) onion service, correctly detect replays in the RSA-
12567      encrypted part of the cell. We were previously checking for
12568      replays on the entire cell, but those can be circumvented due to
12569      the malleability of Tor's legacy hybrid encryption. This fix helps
12570      prevent a traffic confirmation attack. Fixes bug 24244; bugfix on
12571      0.2.4.1-alpha. This issue is also tracked as TROVE-2017-009
12572      and CVE-2017-8819.
12573
12574  o Major bugfixes (security, relay, backport from 0.3.2.6-alpha):
12575    - When running as a relay, make sure that we never build a path
12576      through ourselves, even in the case where we have somehow lost the
12577      version of our descriptor appearing in the consensus. Fixes part
12578      of bug 21534; bugfix on 0.2.0.1-alpha. This issue is also tracked
12579      as TROVE-2017-012 and CVE-2017-8822.
12580
12581  o Minor features (bridge, backport from 0.3.1.9):
12582    - Bridges now include notice in their descriptors that they are
12583      bridges, and notice of their distribution status, based on their
12584      publication settings. Implements ticket 18329. For more fine-
12585      grained control of how a bridge is distributed, upgrade to 0.3.2.x
12586      or later.
12587
12588  o Minor features (geoip):
12589    - Update geoip and geoip6 to the November 6 2017 Maxmind GeoLite2
12590      Country database.
12591
12592
12593Changes in version 0.3.2.5-alpha - 2017-11-22
12594  Tor 0.3.2.5-alpha is the fifth alpha release in the 0.3.2.x series. It
12595  fixes several stability and reliability bugs, including a fix for
12596  intermittent bootstrapping failures that some people have been seeing
12597  since the 0.3.0.x series.
12598
12599  Please test this alpha out -- many of these fixes will soon be
12600  backported to stable Tor versions if no additional bugs are found
12601  in them.
12602
12603  o Major bugfixes (bootstrapping):
12604    - Fetch descriptors aggressively whenever we lack enough to build
12605      circuits, regardless of how many descriptors we are missing.
12606      Previously, we would delay launching the fetch when we had fewer
12607      than 15 missing descriptors, even if some of those descriptors
12608      were blocking circuits from building. Fixes bug 23985; bugfix on
12609      0.1.1.11-alpha. The effects of this bug became worse in
12610      0.3.0.3-alpha, when we began treating missing descriptors from our
12611      primary guards as a reason to delay circuits.
12612    - Don't try fetching microdescriptors from relays that have failed
12613      to deliver them in the past. Fixes bug 23817; bugfix
12614      on 0.3.0.1-alpha.
12615
12616  o Minor features (directory authority):
12617    - Make the "Exit" flag assignment only depend on whether the exit
12618      policy allows connections to ports 80 and 443. Previously relays
12619      would get the Exit flag if they allowed connections to one of
12620      these ports and also port 6667. Resolves ticket 23637.
12621
12622  o Minor features (geoip):
12623    - Update geoip and geoip6 to the November 6 2017 Maxmind GeoLite2
12624      Country database.
12625
12626  o Minor features (linux seccomp2 sandbox):
12627    - Update the sandbox rules so that they should now work correctly
12628      with Glibc 2.26. Closes ticket 24315.
12629
12630  o Minor features (logging):
12631    - Downgrade a pair of log messages that could occur when an exit's
12632      resolver gave us an unusual (but not forbidden) response. Closes
12633      ticket 24097.
12634    - Improve the message we log when re-enabling circuit build timeouts
12635      after having received a consensus. Closes ticket 20963.
12636
12637  o Minor bugfixes (compilation):
12638    - Fix a memory leak warning in one of the libevent-related
12639      configuration tests that could occur when manually specifying
12640      -fsanitize=address. Fixes bug 24279; bugfix on 0.3.0.2-alpha.
12641      Found and patched by Alex Xu.
12642    - When detecting OpenSSL on Windows from our configure script, make
12643      sure to try linking with the ws2_32 library. Fixes bug 23783;
12644      bugfix on 0.3.2.2-alpha.
12645
12646  o Minor bugfixes (control port, linux seccomp2 sandbox):
12647    - Avoid a crash when attempting to use the seccomp2 sandbox together
12648      with the OwningControllerProcess feature. Fixes bug 24198; bugfix
12649      on 0.2.5.1-alpha.
12650
12651  o Minor bugfixes (control port, onion services):
12652    - Report "FAILED" instead of "UPLOAD_FAILED" "FAILED" for the
12653      HS_DESC event when a service is not able to upload a descriptor.
12654      Fixes bug 24230; bugfix on 0.2.7.1-alpha.
12655
12656  o Minor bugfixes (directory cache):
12657    - Recover better from empty or corrupt files in the consensus cache
12658      directory. Fixes bug 24099; bugfix on 0.3.1.1-alpha.
12659    - When a consensus diff calculation is only partially successful,
12660      only record the successful parts as having succeeded. Partial
12661      success can happen if (for example) one compression method fails
12662      but the others succeed. Previously we misrecorded all the
12663      calculations as having succeeded, which would later cause a
12664      nonfatal assertion failure. Fixes bug 24086; bugfix
12665      on 0.3.1.1-alpha.
12666
12667  o Minor bugfixes (logging):
12668    - Only log once if we notice that KIST support is gone. Fixes bug
12669      24158; bugfix on 0.3.2.1-alpha.
12670    - Suppress a log notice when relay descriptors arrive. We already
12671      have a bootstrap progress for this so no need to log notice
12672      everytime tor receives relay descriptors. Microdescriptors behave
12673      the same. Fixes bug 23861; bugfix on 0.2.8.2-alpha.
12674
12675  o Minor bugfixes (network layer):
12676    - When closing a connection via close_connection_immediately(), we
12677      mark it as "not blocked on bandwidth", to prevent later calls from
12678      trying to unblock it, and give it permission to read. This fixes a
12679      backtrace warning that can happen on relays under various
12680      circumstances. Fixes bug 24167; bugfix on 0.1.0.1-rc.
12681
12682  o Minor bugfixes (onion services):
12683    - The introduction circuit was being timed out too quickly while
12684      waiting for the rendezvous circuit to complete. Keep the intro
12685      circuit around longer instead of timing out and reopening new ones
12686      constantly. Fixes bug 23681; bugfix on 0.2.4.8-alpha.
12687    - Rename the consensus parameter "hsdir-interval" to "hsdir_interval"
12688      so it matches dir-spec.txt. Fixes bug 24262; bugfix
12689      on 0.3.1.1-alpha.
12690    - Silence a warning about failed v3 onion descriptor uploads that
12691      can happen naturally under certain edge cases. Fixes part of bug
12692      23662; bugfix on 0.3.2.1-alpha.
12693
12694  o Minor bugfixes (tests):
12695    - Fix a memory leak in one of the bridge-distribution test cases.
12696      Fixes bug 24345; bugfix on 0.3.2.3-alpha.
12697    - Fix a bug in our fuzzing mock replacement for crypto_pk_checksig(),
12698      to correctly handle cases where a caller gives it an RSA key of
12699      under 160 bits. (This is not actually a bug in Tor itself, but
12700      rather in our fuzzing code.) Fixes bug 24247; bugfix on
12701      0.3.0.3-alpha. Found by OSS-Fuzz as issue 4177.
12702
12703  o Documentation:
12704    - Add notes in man page regarding OS support for the various
12705      scheduler types. Attempt to use less jargon in the scheduler
12706      section. Closes ticket 24254.
12707
12708
12709Changes in version 0.3.2.4-alpha - 2017-11-08
12710  Tor 0.3.2.4-alpha is the fourth alpha release in the 0.3.2.x series.
12711  It fixes several stability and reliability bugs, especially including
12712  a major reliability issue that has been plaguing fast exit relays in
12713  recent months.
12714
12715  o Major bugfixes (exit relays, DNS):
12716    - Fix an issue causing DNS to fail on high-bandwidth exit nodes,
12717      making them nearly unusable. Fixes bugs 21394 and 18580; bugfix on
12718      0.1.2.2-alpha, which introduced eventdns. Thanks to Dhalgren for
12719      identifying and finding a workaround to this bug and to Moritz,
12720      Arthur Edelstein, and Roger for helping to track it down and
12721      analyze it.
12722
12723  o Major bugfixes (scheduler, channel):
12724    - Stop processing scheduled channels if they closed while flushing
12725      cells. This can happen if the write on the connection fails
12726      leading to the channel being closed while in the scheduler loop.
12727      Fixes bug 23751; bugfix on 0.3.2.1-alpha.
12728
12729  o Minor features (logging, scheduler):
12730    - Introduce a SCHED_BUG() function to log extra information about
12731      the scheduler state if we ever catch a bug in the scheduler.
12732      Closes ticket 23753.
12733
12734  o Minor features (removed deprecations):
12735    - The ClientDNSRejectInternalAddresses flag can once again be set in
12736      non-testing Tor networks, so long as they do not use the default
12737      directory authorities. This change also removes the deprecation of
12738      this flag from 0.2.9.2-alpha. Closes ticket 21031.
12739
12740  o Minor features (testing):
12741    - Our fuzzing tests now test the encrypted portions of v3 onion
12742      service descriptors. Implements more of 21509.
12743
12744  o Minor bugfixes (directory client):
12745    - On failure to download directory information, delay retry attempts
12746      by a random amount based on the "decorrelated jitter" algorithm.
12747      Our previous delay algorithm tended to produce extra-long delays
12748      too easily. Fixes bug 23816; bugfix on 0.2.9.1-alpha.
12749
12750  o Minor bugfixes (IPv6, v3 single onion services):
12751    - Remove buggy code for IPv6-only v3 single onion services, and
12752      reject attempts to configure them. This release supports IPv4,
12753      dual-stack, and IPv6-only v3 onion services; and IPv4 and dual-
12754      stack v3 single onion services. Fixes bug 23820; bugfix
12755      on 0.3.2.1-alpha.
12756
12757  o Minor bugfixes (logging, relay):
12758    - Give only a protocol warning when the ed25519 key is not
12759      consistent between the descriptor and microdescriptor of a relay.
12760      This can happen, for instance, if the relay has been flagged
12761      NoEdConsensus. Fixes bug 24025; bugfix on 0.3.2.1-alpha.
12762
12763  o Minor bugfixes (manpage, onion service):
12764    - Document that the HiddenServiceNumIntroductionPoints option is
12765      0-10 for v2 services and 0-20 for v3 services. Fixes bug 24115;
12766      bugfix on 0.3.2.1-alpha.
12767
12768  o Minor bugfixes (memory leaks):
12769    - Fix a minor memory leak at exit in the KIST scheduler. This bug
12770      should have no user-visible impact. Fixes bug 23774; bugfix
12771      on 0.3.2.1-alpha.
12772    - Fix a memory leak when decrypting a badly formatted v3 onion
12773      service descriptor. Fixes bug 24150; bugfix on 0.3.2.1-alpha.
12774      Found by OSS-Fuzz; this is OSS-Fuzz issue 3994.
12775
12776  o Minor bugfixes (onion services):
12777    - Cache some needed onion service client information instead of
12778      constantly computing it over and over again. Fixes bug 23623;
12779      bugfix on 0.3.2.1-alpha.
12780    - Properly retry HSv3 descriptor fetches when missing required
12781      directory information. Fixes bug 23762; bugfix on 0.3.2.1-alpha.
12782
12783  o Minor bugfixes (path selection):
12784    - When selecting relays by bandwidth, avoid a rounding error that
12785      could sometimes cause load to be imbalanced incorrectly.
12786      Previously, we would always round upwards; now, we round towards
12787      the nearest integer. This had the biggest effect when a relay's
12788      weight adjustments should have given it weight 0, but it got
12789      weight 1 instead. Fixes bug 23318; bugfix on 0.2.4.3-alpha.
12790    - When calculating the fraction of nodes that have descriptors, and
12791      all nodes in the network have zero bandwidths, count the number of
12792      nodes instead. Fixes bug 23318; bugfix on 0.2.4.10-alpha.
12793    - Actually log the total bandwidth in compute_weighted_bandwidths().
12794      Fixes bug 24170; bugfix on 0.2.4.3-alpha.
12795
12796  o Minor bugfixes (relay, crash):
12797    - Avoid a crash when transitioning from client mode to bridge mode.
12798      Previously, we would launch the worker threads whenever our
12799      "public server" mode changed, but not when our "server" mode
12800      changed. Fixes bug 23693; bugfix on 0.2.6.3-alpha.
12801
12802  o Minor bugfixes (testing):
12803    - Fix a spurious fuzzing-only use of an uninitialized value. Found
12804      by Brian Carpenter. Fixes bug 24082; bugfix on 0.3.0.3-alpha.
12805    - Test that IPv6-only clients can use microdescriptors when running
12806      "make test-network-all". Requires chutney master 61c28b9 or later.
12807      Closes ticket 24109.
12808
12809
12810Changes in version 0.3.2.3-alpha - 2017-10-27
12811  Tor 0.3.2.3-alpha is the third release in the 0.3.2 series. It fixes
12812  numerous small bugs in earlier versions of 0.3.2.x, and adds a new
12813  directory authority, Bastet.
12814
12815  o Directory authority changes:
12816    - Add "Bastet" as a ninth directory authority to the default list.
12817      Closes ticket 23910.
12818    - The directory authority "Longclaw" has changed its IP address.
12819      Closes ticket 23592.
12820
12821  o Minor features (bridge):
12822    - Bridge relays can now set the BridgeDistribution config option to
12823      add a "bridge-distribution-request" line to their bridge
12824      descriptor, which tells BridgeDB how they'd like their bridge
12825      address to be given out. (Note that as of Oct 2017, BridgeDB does
12826      not yet implement this feature.) As a side benefit, this feature
12827      provides a way to distinguish bridge descriptors from non-bridge
12828      descriptors. Implements tickets 18329.
12829
12830  o Minor features (client, entry guards):
12831    - Improve log messages when missing descriptors for primary guards.
12832      Resolves ticket 23670.
12833
12834  o Minor features (geoip):
12835    - Update geoip and geoip6 to the October 4 2017 Maxmind GeoLite2
12836      Country database.
12837
12838  o Minor bugfixes (bridge):
12839    - Overwrite the bridge address earlier in the process of retrieving
12840      its descriptor, to make sure we reach it on the configured
12841      address. Fixes bug 20532; bugfix on 0.2.0.10-alpha.
12842
12843  o Minor bugfixes (documentation):
12844    - Document better how to read gcov, and what our gcov postprocessing
12845      scripts do. Fixes bug 23739; bugfix on 0.2.9.1-alpha.
12846
12847  o Minor bugfixes (entry guards):
12848    - Tor now updates its guard state when it reads a consensus
12849      regardless of whether it's missing descriptors. That makes tor use
12850      its primary guards to fetch descriptors in some edge cases where
12851      it would previously have used fallback directories. Fixes bug
12852      23862; bugfix on 0.3.0.1-alpha.
12853
12854  o Minor bugfixes (hidden service client):
12855    - When handling multiple SOCKS request for the same .onion address,
12856      only fetch the service descriptor once.
12857    - When a descriptor fetch fails with a non-recoverable error, close
12858      all pending SOCKS requests for that .onion. Fixes bug 23653;
12859      bugfix on 0.3.2.1-alpha.
12860
12861  o Minor bugfixes (hidden service):
12862    - Always regenerate missing hidden service public key files. Prior
12863      to this, if the public key was deleted from disk, it wouldn't get
12864      recreated. Fixes bug 23748; bugfix on 0.3.2.2-alpha. Patch
12865      from "cathugger".
12866    - Make sure that we have a usable ed25519 key when the intro point
12867      relay supports ed25519 link authentication. Fixes bug 24002;
12868      bugfix on 0.3.2.1-alpha.
12869
12870  o Minor bugfixes (hidden service, v2):
12871    - When reloading configured hidden services, copy all information
12872      from the old service object. Previously, some data was omitted,
12873      causing delays in descriptor upload, and other bugs. Fixes bug
12874      23790; bugfix on 0.2.1.9-alpha.
12875
12876  o Minor bugfixes (memory safety, defensive programming):
12877    - Clear the target address when node_get_prim_orport() returns
12878      early. Fixes bug 23874; bugfix on 0.2.8.2-alpha.
12879
12880  o Minor bugfixes (relay):
12881    - Avoid a BUG warning when receiving a dubious CREATE cell while an
12882      option transition is in progress. Fixes bug 23952; bugfix
12883      on 0.3.2.1-alpha.
12884
12885  o Minor bugfixes (testing):
12886    - Adjust the GitLab CI configuration to more closely match that of
12887      Travis CI. Fixes bug 23757; bugfix on 0.3.2.2-alpha.
12888    - Prevent scripts/test/coverage from attempting to move gcov output
12889      to the root directory. Fixes bug 23741; bugfix on 0.2.5.1-alpha.
12890    - When running unit tests as root, skip a test that would fail
12891      because it expects a permissions error. This affects some
12892      continuous integration setups. Fixes bug 23758; bugfix
12893      on 0.3.2.2-alpha.
12894    - Stop unconditionally mirroring the tor repository in GitLab CI.
12895      This prevented developers from enabling GitLab CI on master. Fixes
12896      bug 23755; bugfix on 0.3.2.2-alpha.
12897    - Fix the hidden service v3 descriptor decoding fuzzing to use the
12898      latest decoding API correctly. Fixes bug 21509; bugfix
12899      on 0.3.2.1-alpha.
12900
12901  o Minor bugfixes (warnings):
12902    - When we get an HTTP request on a SOCKS port, tell the user about
12903      the new HTTPTunnelPort option. Previously, we would give a "Tor is
12904      not an HTTP Proxy" message, which stopped being true when
12905      HTTPTunnelPort was introduced. Fixes bug 23678; bugfix
12906      on 0.3.2.1-alpha.
12907
12908
12909Changes in version 0.2.5.15 - 2017-10-25
12910  Tor 0.2.5.15 backports a collection of bugfixes from later Tor release
12911  series. It also adds a new directory authority, Bastet.
12912
12913  Note: the Tor 0.2.5 series will no longer be supported after 1 May
12914  2018. If you need a release with long-term support, please upgrade to
12915  the 0.2.9 series. Otherwise, please upgrade to 0.3.1 or later.
12916
12917  o Directory authority changes:
12918    - Add "Bastet" as a ninth directory authority to the default list.
12919      Closes ticket 23910.
12920    - The directory authority "Longclaw" has changed its IP address.
12921      Closes ticket 23592.
12922
12923  o Major bugfixes (openbsd, denial-of-service, backport from 0.3.1.5-alpha):
12924    - Avoid an assertion failure bug affecting our implementation of
12925      inet_pton(AF_INET6) on certain OpenBSD systems whose strtol()
12926      handling of "0xx" differs from what we had expected. Fixes bug
12927      22789; bugfix on 0.2.3.8-alpha. Also tracked as TROVE-2017-007.
12928
12929  o Minor features (geoip):
12930    - Update geoip and geoip6 to the October 4 2017 Maxmind GeoLite2
12931      Country database.
12932
12933  o Minor bugfixes (defensive programming, undefined behavior, backport from 0.3.1.4-alpha):
12934    - Fix a memset() off the end of an array when packing cells. This
12935      bug should be harmless in practice, since the corrupted bytes are
12936      still in the same structure, and are always padding bytes,
12937      ignored, or immediately overwritten, depending on compiler
12938      behavior. Nevertheless, because the memset()'s purpose is to make
12939      sure that any other cell-handling bugs can't expose bytes to the
12940      network, we need to fix it. Fixes bug 22737; bugfix on
12941      0.2.4.11-alpha. Fixes CID 1401591.
12942
12943  o Build features (backport from 0.3.1.5-alpha):
12944    - Tor's repository now includes a Travis Continuous Integration (CI)
12945      configuration file (.travis.yml). This is meant to help new
12946      developers and contributors who fork Tor to a Github repository be
12947      better able to test their changes, and understand what we expect
12948      to pass. To use this new build feature, you must fork Tor to your
12949      Github account, then go into the "Integrations" menu in the
12950      repository settings for your fork and enable Travis, then push
12951      your changes. Closes ticket 22636.
12952
12953
12954Changes in version 0.2.8.16 - 2017-10-25
12955  Tor 0.2.8.16 backports a collection of bugfixes from later Tor release
12956  series, including a bugfix for a crash issue that had affected relays
12957  under memory pressure. It also adds a new directory authority, Bastet.
12958
12959  Note: the Tor 0.2.8 series will no longer be supported after 1 Jan
12960  2018. If you need a release with long-term support, please stick with
12961  the 0.2.9 series. Otherwise, please upgrade to 0.3.1 or later.
12962
12963  o Directory authority changes:
12964    - Add "Bastet" as a ninth directory authority to the default list.
12965      Closes ticket 23910.
12966    - The directory authority "Longclaw" has changed its IP address.
12967      Closes ticket 23592.
12968
12969  o Major bugfixes (relay, crash, assertion failure, backport from 0.3.2.2-alpha):
12970    - Fix a timing-based assertion failure that could occur when the
12971      circuit out-of-memory handler freed a connection's output buffer.
12972      Fixes bug 23690; bugfix on 0.2.6.1-alpha.
12973
12974  o Minor features (directory authorities, backport from 0.3.2.2-alpha):
12975    - Remove longclaw's IPv6 address, as it will soon change. Authority
12976      IPv6 addresses were originally added in 0.2.8.1-alpha. This leaves
12977      3/8 directory authorities with IPv6 addresses, but there are also
12978      52 fallback directory mirrors with IPv6 addresses. Resolves 19760.
12979
12980  o Minor features (geoip):
12981    - Update geoip and geoip6 to the October 4 2017 Maxmind GeoLite2
12982      Country database.
12983
12984
12985Changes in version 0.2.9.13 - 2017-10-25
12986  Tor 0.2.9.13 backports a collection of bugfixes from later Tor release
12987  series, including a bugfix for a crash issue that had affected relays
12988  under memory pressure. It also adds a new directory authority, Bastet.
12989
12990  o Directory authority changes:
12991    - Add "Bastet" as a ninth directory authority to the default list.
12992      Closes ticket 23910.
12993    - The directory authority "Longclaw" has changed its IP address.
12994      Closes ticket 23592.
12995
12996  o Major bugfixes (relay, crash, assertion failure, backport from 0.3.2.2-alpha):
12997    - Fix a timing-based assertion failure that could occur when the
12998      circuit out-of-memory handler freed a connection's output buffer.
12999      Fixes bug 23690; bugfix on 0.2.6.1-alpha.
13000
13001  o Minor features (directory authorities, backport from 0.3.2.2-alpha):
13002    - Remove longclaw's IPv6 address, as it will soon change. Authority
13003      IPv6 addresses were originally added in 0.2.8.1-alpha. This leaves
13004      3/8 directory authorities with IPv6 addresses, but there are also
13005      52 fallback directory mirrors with IPv6 addresses. Resolves 19760.
13006
13007  o Minor features (geoip):
13008    - Update geoip and geoip6 to the October 4 2017 Maxmind GeoLite2
13009      Country database.
13010
13011  o Minor bugfixes (directory authority, backport from 0.3.1.5-alpha):
13012    - When a directory authority rejects a descriptor or extrainfo with
13013      a given digest, mark that digest as undownloadable, so that we do
13014      not attempt to download it again over and over. We previously
13015      tried to avoid downloading such descriptors by other means, but we
13016      didn't notice if we accidentally downloaded one anyway. This
13017      behavior became problematic in 0.2.7.2-alpha, when authorities
13018      began pinning Ed25519 keys. Fixes bug 22349; bugfix
13019      on 0.2.1.19-alpha.
13020
13021  o Minor bugfixes (memory safety, backport from 0.3.2.3-alpha):
13022    - Clear the address when node_get_prim_orport() returns early.
13023      Fixes bug 23874; bugfix on 0.2.8.2-alpha.
13024
13025  o Minor bugfixes (Windows service, backport from 0.3.1.6-rc):
13026    - When running as a Windows service, set the ID of the main thread
13027      correctly. Failure to do so made us fail to send log messages to
13028      the controller in 0.2.1.16-rc, slowed down controller event
13029      delivery in 0.2.7.3-rc and later, and crash with an assertion
13030      failure in 0.3.1.1-alpha. Fixes bug 23081; bugfix on 0.2.1.6-alpha.
13031      Patch and diagnosis from "Vort".
13032
13033
13034Changes in version 0.3.0.12 - 2017-10-25
13035  Tor 0.3.0.12 backports a collection of bugfixes from later Tor release
13036  series, including a bugfix for a crash issue that had affected relays
13037  under memory pressure. It also adds a new directory authority, Bastet.
13038
13039  Note: the Tor 0.3.0 series will no longer be supported after 26 Jan
13040  2018. If you need a release with long-term support, please stick with
13041  the 0.2.9 series. Otherwise, please upgrade to 0.3.1 or later.
13042
13043  o Directory authority changes:
13044    - Add "Bastet" as a ninth directory authority to the default list.
13045      Closes ticket 23910.
13046    - The directory authority "Longclaw" has changed its IP address.
13047      Closes ticket 23592.
13048
13049  o Major bugfixes (relay, crash, assertion failure, backport from 0.3.2.2-alpha):
13050    - Fix a timing-based assertion failure that could occur when the
13051      circuit out-of-memory handler freed a connection's output buffer.
13052      Fixes bug 23690; bugfix on 0.2.6.1-alpha.
13053
13054  o Minor features (directory authorities, backport from 0.3.2.2-alpha):
13055    - Remove longclaw's IPv6 address, as it will soon change. Authority
13056      IPv6 addresses were originally added in 0.2.8.1-alpha. This leaves
13057      3/8 directory authorities with IPv6 addresses, but there are also
13058      52 fallback directory mirrors with IPv6 addresses. Resolves 19760.
13059
13060  o Minor features (geoip):
13061    - Update geoip and geoip6 to the October 4 2017 Maxmind GeoLite2
13062      Country database.
13063
13064  o Minor bugfixes (directory authority, backport from 0.3.1.5-alpha):
13065    - When a directory authority rejects a descriptor or extrainfo with
13066      a given digest, mark that digest as undownloadable, so that we do
13067      not attempt to download it again over and over. We previously
13068      tried to avoid downloading such descriptors by other means, but we
13069      didn't notice if we accidentally downloaded one anyway. This
13070      behavior became problematic in 0.2.7.2-alpha, when authorities
13071      began pinning Ed25519 keys. Fixes bug 22349; bugfix
13072      on 0.2.1.19-alpha.
13073
13074  o Minor bugfixes (hidden service, relay, backport from 0.3.2.2-alpha):
13075    - Avoid a possible double close of a circuit by the intro point on
13076      error of sending the INTRO_ESTABLISHED cell. Fixes bug 23610;
13077      bugfix on 0.3.0.1-alpha.
13078
13079  o Minor bugfixes (memory safety, backport from 0.3.2.3-alpha):
13080    - Clear the address when node_get_prim_orport() returns early.
13081      Fixes bug 23874; bugfix on 0.2.8.2-alpha.
13082
13083  o Minor bugfixes (Windows service, backport from 0.3.1.6-rc):
13084    - When running as a Windows service, set the ID of the main thread
13085      correctly. Failure to do so made us fail to send log messages to
13086      the controller in 0.2.1.16-rc, slowed down controller event
13087      delivery in 0.2.7.3-rc and later, and crash with an assertion
13088      failure in 0.3.1.1-alpha. Fixes bug 23081; bugfix on 0.2.1.6-alpha.
13089      Patch and diagnosis from "Vort".
13090
13091
13092Changes in version 0.3.1.8 - 2017-10-25
13093  Tor 0.3.1.8 is the second stable release in the 0.3.1 series.
13094  It includes several bugfixes, including a bugfix for a crash issue
13095  that had affected relays under memory pressure. It also adds
13096  a new directory authority, Bastet.
13097
13098  o Directory authority changes:
13099    - Add "Bastet" as a ninth directory authority to the default list.
13100      Closes ticket 23910.
13101    - The directory authority "Longclaw" has changed its IP address.
13102      Closes ticket 23592.
13103
13104  o Major bugfixes (relay, crash, assertion failure, backport from 0.3.2.2-alpha):
13105    - Fix a timing-based assertion failure that could occur when the
13106      circuit out-of-memory handler freed a connection's output buffer.
13107      Fixes bug 23690; bugfix on 0.2.6.1-alpha.
13108
13109  o Minor features (directory authorities, backport from 0.3.2.2-alpha):
13110    - Remove longclaw's IPv6 address, as it will soon change. Authority
13111      IPv6 addresses were originally added in 0.2.8.1-alpha. This leaves
13112      3/8 directory authorities with IPv6 addresses, but there are also
13113      52 fallback directory mirrors with IPv6 addresses. Resolves 19760.
13114
13115  o Minor features (geoip):
13116    - Update geoip and geoip6 to the October 4 2017 Maxmind GeoLite2
13117      Country database.
13118
13119  o Minor bugfixes (compilation, backport from 0.3.2.2-alpha):
13120    - Fix a compilation warning when building with zstd support on
13121      32-bit platforms. Fixes bug 23568; bugfix on 0.3.1.1-alpha. Found
13122      and fixed by Andreas Stieger.
13123
13124  o Minor bugfixes (compression, backport from 0.3.2.2-alpha):
13125    - Handle a pathological case when decompressing Zstandard data when
13126      the output buffer size is zero. Fixes bug 23551; bugfix
13127      on 0.3.1.1-alpha.
13128
13129  o Minor bugfixes (directory authority, backport from 0.3.2.1-alpha):
13130    - Remove the length limit on HTTP status lines that authorities can
13131      send in their replies. Fixes bug 23499; bugfix on 0.3.1.6-rc.
13132
13133  o Minor bugfixes (hidden service, relay, backport from 0.3.2.2-alpha):
13134    - Avoid a possible double close of a circuit by the intro point on
13135      error of sending the INTRO_ESTABLISHED cell. Fixes bug 23610;
13136      bugfix on 0.3.0.1-alpha.
13137
13138  o Minor bugfixes (memory safety, backport from 0.3.2.3-alpha):
13139    - Clear the address when node_get_prim_orport() returns early.
13140      Fixes bug 23874; bugfix on 0.2.8.2-alpha.
13141
13142  o Minor bugfixes (unit tests, backport from 0.3.2.2-alpha):
13143    - Fix additional channelpadding unit test failures by using mocked
13144      time instead of actual time for all tests. Fixes bug 23608; bugfix
13145      on 0.3.1.1-alpha.
13146
13147
13148Changes in version 0.3.2.2-alpha - 2017-09-29
13149  Tor 0.3.2.2-alpha is the second release in the 0.3.2 series. This
13150  release fixes several minor bugs in the new scheduler and next-
13151  generation onion services; both features were newly added in the 0.3.2
13152  series. Other fixes in this alpha include several fixes for non-fatal
13153  tracebacks which would appear in logs.
13154
13155  With the aim to stabilise the 0.3.2 series by 15 December 2017, this
13156  alpha does not contain any substantial new features. Minor features
13157  include better testing and logging.
13158
13159  The following comprises the complete list of changes included
13160  in 0.3.2.2-alpha:
13161
13162  o Major bugfixes (relay, crash, assertion failure):
13163    - Fix a timing-based assertion failure that could occur when the
13164      circuit out-of-memory handler freed a connection's output buffer.
13165      Fixes bug 23690; bugfix on 0.2.6.1-alpha.
13166
13167  o Major bugfixes (scheduler):
13168    - If a channel is put into the scheduler's pending list, then it
13169      starts closing, and then if the scheduler runs before it finishes
13170      closing, the scheduler will get stuck trying to flush its cells
13171      while the lower layers refuse to cooperate. Fix that race
13172      condition by giving the scheduler an escape method. Fixes bug
13173      23676; bugfix on 0.3.2.1-alpha.
13174
13175  o Minor features (build, compilation):
13176    - The "check-changes" feature is now part of the "make check" tests;
13177      we'll use it to try to prevent misformed changes files from
13178      accumulating. Closes ticket 23564.
13179    - Tor builds should now fail if there are any mismatches between the
13180      C type representing a configuration variable and the C type the
13181      data-driven parser uses to store a value there. Previously, we
13182      needed to check these by hand, which sometimes led to mistakes.
13183      Closes ticket 23643.
13184
13185  o Minor features (directory authorities):
13186    - Remove longclaw's IPv6 address, as it will soon change. Authority
13187      IPv6 addresses were originally added in 0.2.8.1-alpha. This leaves
13188      3/8 directory authorities with IPv6 addresses, but there are also
13189      52 fallback directory mirrors with IPv6 addresses. Resolves 19760.
13190
13191  o Minor features (hidden service, circuit, logging):
13192    - Improve logging of many callsite in the circuit subsystem to print
13193      the circuit identifier(s).
13194    - Log when we cleanup an intro point from a service so we know when
13195      and for what reason it happened. Closes ticket 23604.
13196
13197  o Minor features (logging):
13198    - Log more circuit information whenever we are about to try to
13199      package a relay cell on a circuit with a nonexistent n_chan.
13200      Attempt to diagnose ticket 8185.
13201    - Improve info-level log identification of particular circuits, to
13202      help with debugging. Closes ticket 23645.
13203
13204  o Minor features (relay):
13205    - When choosing which circuits can be expired as unused, consider
13206      circuits from clients even if those clients used regular CREATE
13207      cells to make them; and do not consider circuits from relays even
13208      if they were made with CREATE_FAST. Part of ticket 22805.
13209
13210  o Minor features (robustness):
13211    - Change several fatal assertions when flushing buffers into non-
13212      fatal assertions, to prevent any recurrence of 23690.
13213
13214  o Minor features (spec conformance, bridge, diagnostic):
13215    - When handling the USERADDR command on an ExtOrPort, warn when the
13216      transports provides a USERADDR with no port. In a future version,
13217      USERADDR commands of this format may be rejected. Detects problems
13218      related to ticket 23080.
13219
13220  o Minor features (testing):
13221    - Add a unit test to make sure that our own generated platform
13222      string will be accepted by directory authorities. Closes
13223      ticket 22109.
13224
13225  o Minor bugfixes (bootstrapping):
13226    - When warning about state file clock skew, report the correct
13227      direction for the detected skew. Fixes bug 23606; bugfix
13228      on 0.2.8.1-alpha.
13229    - Avoid an assertion failure when logging a state file clock skew
13230      very early in bootstrapping. Fixes bug 23607; bugfix
13231      on 0.3.2.1-alpha.
13232
13233  o Minor bugfixes (build, compilation):
13234    - Fix a compilation warning when building with zstd support on
13235      32-bit platforms. Fixes bug 23568; bugfix on 0.3.1.1-alpha. Found
13236      and fixed by Andreas Stieger.
13237    - When searching for OpenSSL, don't accept any OpenSSL library that
13238      lacks TLSv1_1_method(): Tor doesn't build with those versions.
13239      Additionally, look in /usr/local/opt/openssl, if it's present.
13240      These changes together repair the default build on OSX systems
13241      with Homebrew installed. Fixes bug 23602; bugfix on 0.2.7.2-alpha.
13242
13243  o Minor bugfixes (compression):
13244    - Handle a pathological case when decompressing Zstandard data when
13245      the output buffer size is zero. Fixes bug 23551; bugfix
13246      on 0.3.1.1-alpha.
13247
13248  o Minor bugfixes (documentation):
13249    - Fix manpage to not refer to the obsolete (and misspelled)
13250      UseEntryGuardsAsDirectoryGuards parameter in the description of
13251      NumDirectoryGuards. Fixes bug 23611; bugfix on 0.2.4.8-alpha.
13252
13253  o Minor bugfixes (hidden service v3):
13254    - Don't log an assertion failure when we can't find the right
13255      information to extend to an introduction point. In rare cases,
13256      this could happen, causing a warning, even though tor would
13257      recover gracefully. Fixes bug 23159; bugfix on 0.3.2.1-alpha.
13258    - Pad RENDEZVOUS cell up to the size of the legacy cell which is
13259      much bigger so the rendezvous point can't distinguish which hidden
13260      service protocol is being used. Fixes bug 23420; bugfix
13261      on 0.3.2.1-alpha.
13262
13263  o Minor bugfixes (hidden service, relay):
13264    - Avoid a possible double close of a circuit by the intro point on
13265      error of sending the INTRO_ESTABLISHED cell. Fixes bug 23610;
13266      bugfix on 0.3.0.1-alpha.
13267
13268  o Minor bugfixes (logging, relay shutdown, annoyance):
13269    - When a circuit is marked for close, do not attempt to package any
13270      cells for channels on that circuit. Previously, we would detect
13271      this condition lower in the call stack, when we noticed that the
13272      circuit had no attached channel, and log an annoying message.
13273      Fixes bug 8185; bugfix on 0.2.5.4-alpha.
13274
13275  o Minor bugfixes (scheduler):
13276    - When switching schedulers due to a consensus change, we didn't
13277      give the new scheduler a chance to react to the consensus. Fix
13278      that. Fixes bug 23537; bugfix on 0.3.2.1-alpha.
13279    - Make the KISTSchedRunInterval option a non negative value. With
13280      this, the way to disable KIST through the consensus is to set it
13281      to 0. Fixes bug 23539; bugfix on 0.3.2.1-alpha.
13282    - Only notice log the selected scheduler when we switch scheduler
13283      types. Fixes bug 23552; bugfix on 0.3.2.1-alpha.
13284    - Avoid a compilation warning on macOS in scheduler_ev_add() caused
13285      by a different tv_usec data type. Fixes bug 23575; bugfix
13286      on 0.3.2.1-alpha.
13287    - Make a hard exit if tor is unable to pick a scheduler which can
13288      happen if the user specifies a scheduler type that is not
13289      supported and not other types in Schedulers. Fixes bug 23581;
13290      bugfix on 0.3.2.1-alpha.
13291    - Properly initialize the scheduler last run time counter so it is
13292      not 0 at the first tick. Fixes bug 23696; bugfix on 0.3.2.1-alpha.
13293
13294  o Minor bugfixes (testing):
13295    - Capture and detect several "Result does not fit" warnings in unit
13296      tests on platforms with 32-bit time_t. Fixes bug 21800; bugfix
13297      on 0.2.9.3-alpha.
13298    - Fix additional channelpadding unit test failures by using mocked
13299      time instead of actual time for all tests. Fixes bug 23608; bugfix
13300      on 0.3.1.1-alpha.
13301    - The removal of some old scheduler options caused some tests to
13302      fail on BSD systems. Assume current behavior is correct and make
13303      the tests pass again. Fixes bug 23566; bugfix on 0.3.2.1-alpha.
13304
13305  o Code simplification and refactoring:
13306    - Remove various ways of testing circuits and connections for
13307      "clientness"; instead, favor channel_is_client(). Part of
13308      ticket 22805.
13309
13310  o Deprecated features:
13311    - The ReachableDirAddresses and ClientPreferIPv6DirPort options are
13312      now deprecated; they do not apply to relays, and they have had no
13313      effect on clients since 0.2.8.x. Closes ticket 19704.
13314
13315  o Documentation:
13316    - HiddenServiceVersion man page entry wasn't mentioning the now
13317      supported version 3. Fixes ticket 23580; bugfix on 0.3.2.1-alpha.
13318    - Clarify that the Address option is entirely about setting an
13319      advertised IPv4 address. Closes ticket 18891.
13320    - Clarify the manpage's use of the term "address" to clarify what
13321      kind of address is intended. Closes ticket 21405.
13322    - Document that onion service subdomains are allowed, and ignored.
13323      Closes ticket 18736.
13324
13325
13326Changes in version 0.3.2.1-alpha - 2017-09-18
13327  Tor 0.3.2.1-alpha is the first release in the 0.3.2.x series. It
13328  includes support for our next-generation ("v3") onion service
13329  protocol, and adds a new circuit scheduler for more responsive
13330  forwarding decisions from relays. There are also numerous other small
13331  features and bugfixes here.
13332
13333  Below are the changes since Tor 0.3.1.7.
13334
13335  o Major feature (scheduler, channel):
13336    - Tor now uses new schedulers to decide which circuits should
13337      deliver cells first, in order to improve congestion at relays. The
13338      first type is called "KIST" ("Kernel Informed Socket Transport"),
13339      and is only available on Linux-like systems: it uses feedback from
13340      the kernel to prevent the kernel's TCP buffers from growing too
13341      full. The second new scheduler type is called "KISTLite": it
13342      behaves the same as KIST, but runs on systems without kernel
13343      support for inspecting TCP implementation details. The old
13344      scheduler is still available, under the name "Vanilla". To change
13345      the default scheduler preference order, use the new "Schedulers"
13346      option. (The default preference order is "KIST,KISTLite,Vanilla".)
13347
13348      Matt Traudt implemented KIST, based on research by Rob Jansen,
13349      John Geddes, Christ Wacek, Micah Sherr, and Paul Syverson. For
13350      more information, see the design paper at
13351      http://www.robgjansen.com/publications/kist-sec2014.pdf and the
13352      followup implementation paper at https://arxiv.org/abs/1709.01044.
13353      Closes ticket 12541.
13354
13355  o Major features (next-generation onion services):
13356    - Tor now supports the next-generation onion services protocol for
13357      clients and services! As part of this release, the core of
13358      proposal 224 has been implemented and is available for
13359      experimentation and testing by our users. This newer version of
13360      onion services ("v3") features many improvements over the legacy
13361      system, including:
13362
13363      a) Better crypto (replaced SHA1/DH/RSA1024
13364      with SHA3/ed25519/curve25519)
13365
13366      b) Improved directory protocol, leaking much less information to
13367      directory servers.
13368
13369      c) Improved directory protocol, with smaller surface for
13370      targeted attacks.
13371
13372      d) Better onion address security against impersonation.
13373
13374      e) More extensible introduction/rendezvous protocol.
13375
13376      f) A cleaner and more modular codebase.
13377
13378      You can identify a next-generation onion address by its length:
13379      they are 56 characters long, as in
13380      "4acth47i6kxnvkewtm6q7ib2s3ufpo5sqbsnzjpbi7utijcltosqemad.onion".
13381
13382      In the future, we will release more options and features for v3
13383      onion services, but we first need a testing period, so that the
13384      current codebase matures and becomes more robust. Planned features
13385      include: offline keys, advanced client authorization, improved
13386      guard algorithms, and statistics. For full details, see
13387      proposal 224.
13388
13389      Legacy ("v2") onion services will still work for the foreseeable
13390      future, and will remain the default until this new codebase gets
13391      tested and hardened. Service operators who want to experiment with
13392      the new system can use the 'HiddenServiceVersion 3' torrc
13393      directive along with the regular onion service configuration
13394      options. We will publish a blog post about this new feature
13395      soon! Enjoy!
13396
13397  o Major bugfixes (usability, control port):
13398    - Report trusted clock skew indications as bootstrap errors, so
13399      controllers can more easily alert users when their clocks are
13400      wrong. Fixes bug 23506; bugfix on 0.1.2.6-alpha.
13401
13402  o Minor features (bug detection):
13403    - Log a warning message with a stack trace for any attempt to call
13404      get_options() during option validation. This pattern has caused
13405      subtle bugs in the past. Closes ticket 22281.
13406
13407  o Minor features (client):
13408    - You can now use Tor as a tunneled HTTP proxy: use the new
13409      HTTPTunnelPort option to open a port that accepts HTTP CONNECT
13410      requests. Closes ticket 22407.
13411    - Add an extra check to make sure that we always use the newer guard
13412      selection code for picking our guards. Closes ticket 22779.
13413    - When downloading (micro)descriptors, don't split the list into
13414      multiple requests unless we want at least 32 descriptors.
13415      Previously, we split at 4, not 32, which led to significant
13416      overhead in HTTP request size and degradation in compression
13417      performance. Closes ticket 23220.
13418
13419  o Minor features (command line):
13420    - Add a new commandline option, --key-expiration, which prints when
13421      the current signing key is going to expire. Implements ticket
13422      17639; patch by Isis Lovecruft.
13423
13424  o Minor features (control port):
13425    - If an application tries to use the control port as an HTTP proxy,
13426      respond with a meaningful "This is the Tor control port" message,
13427      and log the event. Closes ticket 1667. Patch from Ravi
13428      Chandra Padmala.
13429    - Provide better error message for GETINFO desc/(id|name) when not
13430      fetching router descriptors. Closes ticket 5847. Patch by
13431      Kevin Butler.
13432    - Add GETINFO "{desc,md}/download-enabled", to inform the controller
13433      whether Tor will try to download router descriptors and
13434      microdescriptors respectively. Closes ticket 22684.
13435    - Added new GETINFO targets "ip-to-country/{ipv4,ipv6}-available",
13436      so controllers can tell whether the geoip databases are loaded.
13437      Closes ticket 23237.
13438    - Adds a timestamp field to the CIRC_BW and STREAM_BW bandwidth
13439      events. Closes ticket 19254. Patch by "DonnchaC".
13440
13441  o Minor features (development support):
13442    - Developers can now generate a call-graph for Tor using the
13443      "calltool" python program, which post-processes object dumps. It
13444      should work okay on many Linux and OSX platforms, and might work
13445      elsewhere too. To run it, install calltool from
13446      https://gitweb.torproject.org/user/nickm/calltool.git and run
13447      "make callgraph". Closes ticket 19307.
13448
13449  o Minor features (ed25519):
13450    - Add validation function to checks for torsion components in
13451      ed25519 public keys, used by prop224 client-side code. Closes
13452      ticket 22006. Math help by Ian Goldberg.
13453
13454  o Minor features (exit relay, DNS):
13455    - Improve the clarity and safety of the log message from evdns when
13456      receiving an apparently spoofed DNS reply. Closes ticket 3056.
13457
13458  o Minor features (integration, hardening):
13459    - Add a new NoExec option to prevent Tor from running other
13460      programs. When this option is set to 1, Tor will never try to run
13461      another program, regardless of the settings of
13462      PortForwardingHelper, ClientTransportPlugin, or
13463      ServerTransportPlugin. Once NoExec is set, it cannot be disabled
13464      without restarting Tor. Closes ticket 22976.
13465
13466  o Minor features (logging):
13467    - Improve the warning message for specifying a relay by nickname.
13468      The previous message implied that nickname registration was still
13469      part of the Tor network design, which it isn't. Closes
13470      ticket 20488.
13471    - If the sandbox filter fails to load, suggest to the user that
13472      their kernel might not support seccomp2. Closes ticket 23090.
13473
13474  o Minor features (portability):
13475    - Check at configure time whether uint8_t is the same type as
13476      unsigned char. Lots of existing code already makes this
13477      assumption, and there could be strict aliasing issues if the
13478      assumption is violated. Closes ticket 22410.
13479
13480  o Minor features (relay, configuration):
13481    - Reject attempts to use relative file paths when RunAsDaemon is
13482      set. Previously, Tor would accept these, but the directory-
13483      changing step of RunAsDaemon would give strange and/or confusing
13484      results. Closes ticket 22731.
13485
13486  o Minor features (startup, safety):
13487    - When configured to write a PID file, Tor now exits if it is unable
13488      to do so. Previously, it would warn and continue. Closes
13489      ticket 20119.
13490
13491  o Minor features (static analysis):
13492    - The BUG() macro has been changed slightly so that Coverity no
13493      longer complains about dead code if the bug is impossible. Closes
13494      ticket 23054.
13495
13496  o Minor features (testing):
13497    - The default chutney network tests now include tests for the v3
13498      hidden service design. Make sure you have the latest version of
13499      chutney if you want to run these. Closes ticket 22437.
13500    - Add a unit test to verify that we can parse a hardcoded v2 hidden
13501      service descriptor. Closes ticket 15554.
13502
13503  o Minor bugfixes (certificate handling):
13504    - Fix a time handling bug in Tor certificates set to expire after
13505      the year 2106. Fixes bug 23055; bugfix on 0.3.0.1-alpha. Found by
13506      Coverity as CID 1415728.
13507
13508  o Minor bugfixes (client, usability):
13509    - Refrain from needlessly rejecting SOCKS5-with-hostnames and
13510      SOCKS4a requests that contain IP address strings, even when
13511      SafeSocks in enabled, as this prevents user from connecting to
13512      known IP addresses without relying on DNS for resolving. SafeSocks
13513      still rejects SOCKS connections that connect to IP addresses when
13514      those addresses are _not_ encoded as hostnames. Fixes bug 22461;
13515      bugfix on Tor 0.2.6.2-alpha.
13516
13517  o Minor bugfixes (code correctness):
13518    - Call htons() in extend_cell_format() for encoding a 16-bit value.
13519      Previously we used ntohs(), which happens to behave the same on
13520      all the platforms we support, but which isn't really correct.
13521      Fixes bug 23106; bugfix on 0.2.4.8-alpha.
13522    - For defense-in-depth, make the controller's write_escaped_data()
13523      function robust to extremely long inputs. Fixes bug 19281; bugfix
13524      on 0.1.1.1-alpha. Reported by Guido Vranken.
13525
13526  o Minor bugfixes (compilation):
13527    - Fix unused-variable warnings in donna's Curve25519 SSE2 code.
13528      Fixes bug 22895; bugfix on 0.2.7.2-alpha.
13529
13530  o Minor bugfixes (consensus expiry):
13531    - Check for adequate directory information correctly. Previously, Tor
13532      would reconsider whether it had sufficient directory information
13533      every 2 minutes. Fixes bug 23091; bugfix on 0.2.0.19-alpha.
13534
13535  o Minor bugfixes (directory protocol):
13536    - Directory servers now include a "Date:" http header for response
13537      codes other than 200. Clients starting with a skewed clock and a
13538      recent consensus were getting "304 Not modified" responses from
13539      directory authorities, so without the Date header, the client
13540      would never hear about a wrong clock. Fixes bug 23499; bugfix
13541      on 0.0.8rc1.
13542    - Make clients wait for 6 seconds before trying to download a
13543      consensus from an authority. Fixes bug 17750; bugfix
13544      on 0.2.8.1-alpha.
13545
13546  o Minor bugfixes (DoS-resistance):
13547    - If future code asks if there are any running bridges, without
13548      checking if bridges are enabled, log a BUG warning rather than
13549      crashing. Fixes bug 23524; bugfix on 0.3.0.1-alpha.
13550
13551  o Minor bugfixes (format strictness):
13552    - Restrict several data formats to decimal. Previously, the
13553      BuildTimeHistogram entries in the state file, the "bw=" entries in
13554      the bandwidth authority file, and the process IDs passed to the
13555      __OwningControllerProcess option could all be specified in hex or
13556      octal as well as in decimal. This was not an intentional feature.
13557      Fixes bug 22802; bugfixes on 0.2.2.1-alpha, 0.2.2.2-alpha,
13558      and 0.2.2.28-beta.
13559
13560  o Minor bugfixes (heartbeat):
13561    - If we fail to write a heartbeat message, schedule a retry for the
13562      minimum heartbeat interval number of seconds in the future. Fixes
13563      bug 19476; bugfix on 0.2.3.1-alpha.
13564
13565  o Minor bugfixes (linux seccomp2 sandbox, logging):
13566    - Fix some messages on unexpected errors from the seccomp2 library.
13567      Fixes bug 22750; bugfix on 0.2.5.1-alpha. Patch from "cypherpunks".
13568
13569  o Minor bugfixes (logging):
13570    - Remove duplicate log messages regarding opening non-local
13571      SocksPorts upon parsing config and opening listeners at startup.
13572      Fixes bug 4019; bugfix on 0.2.3.3-alpha.
13573    - Use a more comprehensible log message when telling the user
13574      they've excluded every running exit node. Fixes bug 7890; bugfix
13575      on 0.2.2.25-alpha.
13576    - When logging the number of descriptors we intend to download per
13577      directory request, do not log a number higher than then the number
13578      of descriptors we're fetching in total. Fixes bug 19648; bugfix
13579      on 0.1.1.8-alpha.
13580    - When warning about a directory owned by the wrong user, log the
13581      actual name of the user owning the directory. Previously, we'd log
13582      the name of the process owner twice. Fixes bug 23487; bugfix
13583      on 0.2.9.1-alpha.
13584    - The tor specification says hop counts are 1-based, so fix two log
13585      messages that mistakenly logged 0-based hop counts. Fixes bug
13586      18982; bugfix on 0.2.6.2-alpha and 0.2.4.5-alpha. Patch by teor.
13587      Credit to Xiaofan Li for reporting this issue.
13588
13589  o Minor bugfixes (portability):
13590    - Stop using the PATH_MAX variable, which is not defined on GNU
13591      Hurd. Fixes bug 23098; bugfix on 0.3.1.1-alpha.
13592
13593  o Minor bugfixes (relay):
13594    - When uploading our descriptor for the first time after startup,
13595      report the reason for uploading as "Tor just started" rather than
13596      leaving it blank. Fixes bug 22885; bugfix on 0.2.3.4-alpha.
13597    - Avoid unnecessary calls to directory_fetches_from_authorities() on
13598      relays, to prevent spurious address resolutions and descriptor
13599      rebuilds. This is a mitigation for bug 21789. Fixes bug 23470;
13600      bugfix on in 0.2.8.1-alpha.
13601
13602  o Minor bugfixes (tests):
13603    - Fix a broken unit test for the OutboundAddress option: the parsing
13604      function was never returning an error on failure. Fixes bug 23366;
13605      bugfix on 0.3.0.3-alpha.
13606    - Fix a signed-integer overflow in the unit tests for
13607      dir/download_status_random_backoff, which was untriggered until we
13608      fixed bug 17750. Fixes bug 22924; bugfix on 0.2.9.1-alpha.
13609
13610  o Minor bugfixes (usability, control port):
13611    - Stop making an unnecessary routerlist check in NETINFO clock skew
13612      detection; this was preventing clients from reporting NETINFO clock
13613      skew to controllers. Fixes bug 23532; bugfix on 0.2.4.4-alpha.
13614
13615  o Code simplification and refactoring:
13616    - Extract the code for handling newly-open channels into a separate
13617      function from the general code to handle channel state
13618      transitions. This change simplifies our callgraph, reducing the
13619      size of the largest strongly connected component by roughly a
13620      factor of two. Closes ticket 22608.
13621    - Remove dead code for largely unused statistics on the number of
13622      times we've attempted various public key operations. Fixes bug
13623      19871; bugfix on 0.1.2.4-alpha. Fix by Isis Lovecruft.
13624    - Remove several now-obsolete functions for asking about old
13625      variants directory authority status. Closes ticket 22311; patch
13626      from "huyvq".
13627    - Remove some of the code that once supported "Named" and "Unnamed"
13628      routers. Authorities no longer vote for these flags. Closes
13629      ticket 22215.
13630    - Rename the obsolete malleable hybrid_encrypt functions used in TAP
13631      and old hidden services, to indicate that they aren't suitable for
13632      new protocols or formats. Closes ticket 23026.
13633    - Replace our STRUCT_OFFSET() macro with offsetof(). Closes ticket
13634      22521. Patch from Neel Chauhan.
13635    - Split the enormous circuit_send_next_onion_skin() function into
13636      multiple subfunctions. Closes ticket 22804.
13637    - Split the portions of the buffer.c module that handle particular
13638      protocols into separate modules. Part of ticket 23149.
13639    - Use our test macros more consistently, to produce more useful
13640      error messages when our unit tests fail. Add coccinelle patches to
13641      allow us to re-check for test macro uses. Closes ticket 22497.
13642
13643  o Deprecated features:
13644    - Deprecate HTTPProxy/HTTPProxyAuthenticator config options. They
13645      only applies to direct unencrypted HTTP connections to your
13646      directory server, which your Tor probably isn't using. Closes
13647      ticket 20575.
13648
13649  o Documentation:
13650    - Clarify in the manual that "Sandbox 1" is only supported on Linux
13651      kernels. Closes ticket 22677.
13652    - Document all values of PublishServerDescriptor in the manpage.
13653      Closes ticket 15645.
13654    - Improve the documentation for the directory port part of the
13655      DirAuthority line. Closes ticket 20152.
13656    - Restore documentation for the authorities' "approved-routers"
13657      file. Closes ticket 21148.
13658
13659  o Removed features:
13660    - The AllowDotExit option has been removed as unsafe. It has been
13661      deprecated since 0.2.9.2-alpha. Closes ticket 23426.
13662    - The ClientDNSRejectInternalAddresses flag can no longer be set on
13663      non-testing networks. It has been deprecated since 0.2.9.2-alpha.
13664      Closes ticket 21031.
13665    - The controller API no longer includes an AUTHDIR_NEWDESCS event:
13666      nobody was using it any longer. Closes ticket 22377.
13667
13668
13669Changes in version 0.2.8.15 - 2017-09-18
13670  Tor 0.2.8.15 backports a collection of bugfixes from later
13671  Tor series.
13672
13673  Most significantly, it includes a fix for TROVE-2017-008, a
13674  security bug that affects hidden services running with the
13675  SafeLogging option disabled. For more information, see
13676  https://trac.torproject.org/projects/tor/ticket/23490
13677
13678  Note that Tor 0.2.8.x will no longer be supported after 1 Jan
13679  2018.  We suggest that you upgrade to the latest stable release if
13680  possible.  If you can't, we recommend that you upgrade at least to
13681  0.2.9, which will be supported until 2020.
13682
13683  o Major bugfixes (openbsd, denial-of-service, backport from 0.3.1.5-alpha):
13684    - Avoid an assertion failure bug affecting our implementation of
13685      inet_pton(AF_INET6) on certain OpenBSD systems whose strtol()
13686      handling of "0xx" differs from what we had expected. Fixes bug
13687      22789; bugfix on 0.2.3.8-alpha. Also tracked as TROVE-2017-007.
13688
13689  o Minor features:
13690    - Update geoip and geoip6 to the September 6 2017 Maxmind GeoLite2
13691      Country database.
13692
13693  o Minor bugfixes (compilation, mingw, backport from 0.3.1.1-alpha):
13694    - Backport a fix for an "unused variable" warning that appeared
13695      in some versions of mingw. Fixes bug 22838; bugfix on
13696      0.2.8.1-alpha.
13697
13698  o Minor bugfixes (defensive programming, undefined behavior, backport from 0.3.1.4-alpha):
13699    - Fix a memset() off the end of an array when packing cells. This
13700      bug should be harmless in practice, since the corrupted bytes are
13701      still in the same structure, and are always padding bytes,
13702      ignored, or immediately overwritten, depending on compiler
13703      behavior. Nevertheless, because the memset()'s purpose is to make
13704      sure that any other cell-handling bugs can't expose bytes to the
13705      network, we need to fix it. Fixes bug 22737; bugfix on
13706      0.2.4.11-alpha. Fixes CID 1401591.
13707
13708  o Build features (backport from 0.3.1.5-alpha):
13709    - Tor's repository now includes a Travis Continuous Integration (CI)
13710      configuration file (.travis.yml). This is meant to help new
13711      developers and contributors who fork Tor to a Github repository be
13712      better able to test their changes, and understand what we expect
13713      to pass. To use this new build feature, you must fork Tor to your
13714      Github account, then go into the "Integrations" menu in the
13715      repository settings for your fork and enable Travis, then push
13716      your changes. Closes ticket 22636.
13717
13718
13719Changes in version 0.2.9.12 - 2017-09-18
13720  Tor 0.2.9.12 backports a collection of bugfixes from later
13721  Tor series.
13722
13723  Most significantly, it includes a fix for TROVE-2017-008, a
13724  security bug that affects hidden services running with the
13725  SafeLogging option disabled. For more information, see
13726  https://trac.torproject.org/projects/tor/ticket/23490
13727
13728  o Major features (security, backport from 0.3.0.2-alpha):
13729    - Change the algorithm used to decide DNS TTLs on client and server
13730      side, to better resist DNS-based correlation attacks like the
13731      DefecTor attack of Greschbach, Pulls, Roberts, Winter, and
13732      Feamster. Now relays only return one of two possible DNS TTL
13733      values, and clients are willing to believe DNS TTL values up to 3
13734      hours long. Closes ticket 19769.
13735
13736  o Major bugfixes (crash, directory connections, backport from 0.3.0.5-rc):
13737    - Fix a rare crash when sending a begin cell on a circuit whose
13738      linked directory connection had already been closed. Fixes bug
13739      21576; bugfix on 0.2.9.3-alpha. Reported by Alec Muffett.
13740
13741  o Major bugfixes (DNS, backport from 0.3.0.2-alpha):
13742    - Fix a bug that prevented exit nodes from caching DNS records for
13743      more than 60 seconds. Fixes bug 19025; bugfix on 0.2.4.7-alpha.
13744
13745  o Major bugfixes (linux TPROXY support, backport from 0.3.1.1-alpha):
13746    - Fix a typo that had prevented TPROXY-based transparent proxying
13747      from working under Linux. Fixes bug 18100; bugfix on 0.2.6.3-alpha.
13748      Patch from "d4fq0fQAgoJ".
13749
13750  o Major bugfixes (openbsd, denial-of-service, backport from 0.3.1.5-alpha):
13751    - Avoid an assertion failure bug affecting our implementation of
13752      inet_pton(AF_INET6) on certain OpenBSD systems whose strtol()
13753      handling of "0xx" differs from what we had expected. Fixes bug
13754      22789; bugfix on 0.2.3.8-alpha. Also tracked as TROVE-2017-007.
13755
13756  o Minor features (code style, backport from 0.3.1.3-alpha):
13757    - Add "Falls through" comments to our codebase, in order to silence
13758      GCC 7's -Wimplicit-fallthrough warnings. Patch from Andreas
13759      Stieger. Closes ticket 22446.
13760
13761  o Minor features (geoip):
13762    - Update geoip and geoip6 to the September 6 2017 Maxmind GeoLite2
13763      Country database.
13764
13765  o Minor bugfixes (bandwidth accounting, backport from 0.3.1.1-alpha):
13766    - Roll over monthly accounting at the configured hour and minute,
13767      rather than always at 00:00. Fixes bug 22245; bugfix on 0.0.9rc1.
13768      Found by Andrey Karpov with PVS-Studio.
13769
13770  o Minor bugfixes (compilation, backport from 0.3.1.5-alpha):
13771    - Suppress -Wdouble-promotion warnings with clang 4.0. Fixes bug 22915;
13772      bugfix on 0.2.8.1-alpha.
13773    - Fix warnings when building with libscrypt and openssl scrypt support
13774      on Clang. Fixes bug 22916; bugfix on 0.2.7.2-alpha.
13775    - When building with certain versions the mingw C header files, avoid
13776      float-conversion warnings when calling the C functions isfinite(),
13777      isnan(), and signbit(). Fixes bug 22801; bugfix on 0.2.8.1-alpha.
13778
13779  o Minor bugfixes (compilation, backport from 0.3.1.7):
13780    - Avoid compiler warnings in the unit tests for running tor_sscanf()
13781      with wide string outputs. Fixes bug 15582; bugfix on 0.2.6.2-alpha.
13782
13783  o Minor bugfixes (compilation, mingw, backport from 0.3.1.1-alpha):
13784    - Backport a fix for an "unused variable" warning that appeared
13785      in some versions of mingw. Fixes bug 22838; bugfix on
13786      0.2.8.1-alpha.
13787
13788  o Minor bugfixes (controller, backport from 0.3.1.7):
13789    - Do not crash when receiving a HSPOST command with an empty body.
13790      Fixes part of bug 22644; bugfix on 0.2.7.1-alpha.
13791    - Do not crash when receiving a POSTDESCRIPTOR command with an
13792      empty body. Fixes part of bug 22644; bugfix on 0.2.0.1-alpha.
13793
13794  o Minor bugfixes (coverity build support, backport from 0.3.1.5-alpha):
13795    - Avoid Coverity build warnings related to our BUG() macro. By
13796      default, Coverity treats BUG() as the Linux kernel does: an
13797      instant abort(). We need to override that so our BUG() macro
13798      doesn't prevent Coverity from analyzing functions that use it.
13799      Fixes bug 23030; bugfix on 0.2.9.1-alpha.
13800
13801  o Minor bugfixes (defensive programming, undefined behavior, backport from 0.3.1.4-alpha):
13802    - Fix a memset() off the end of an array when packing cells. This
13803      bug should be harmless in practice, since the corrupted bytes are
13804      still in the same structure, and are always padding bytes,
13805      ignored, or immediately overwritten, depending on compiler
13806      behavior. Nevertheless, because the memset()'s purpose is to make
13807      sure that any other cell-handling bugs can't expose bytes to the
13808      network, we need to fix it. Fixes bug 22737; bugfix on
13809      0.2.4.11-alpha. Fixes CID 1401591.
13810
13811  o Minor bugfixes (file limits, osx, backport from 0.3.1.5-alpha):
13812    - When setting the maximum number of connections allowed by the OS,
13813      always allow some extra file descriptors for other files. Fixes
13814      bug 22797; bugfix on 0.2.0.10-alpha.
13815
13816  o Minor bugfixes (linux seccomp2 sandbox, backport from 0.3.1.5-alpha):
13817    - Avoid a sandbox failure when trying to re-bind to a socket and
13818      mark it as IPv6-only. Fixes bug 20247; bugfix on 0.2.5.1-alpha.
13819
13820  o Minor bugfixes (linux seccomp2 sandbox, backport from 0.3.1.4-alpha):
13821    - Permit the fchmod system call, to avoid crashing on startup when
13822      starting with the seccomp2 sandbox and an unexpected set of
13823      permissions on the data directory or its contents. Fixes bug
13824      22516; bugfix on 0.2.5.4-alpha.
13825
13826  o Minor bugfixes (relay, backport from 0.3.0.5-rc):
13827    - Avoid a double-marked-circuit warning that could happen when we
13828      receive DESTROY cells under heavy load. Fixes bug 20059; bugfix
13829      on 0.1.0.1-rc.
13830
13831  o Minor bugfixes (voting consistency, backport from 0.3.1.1-alpha):
13832    - Reject version numbers with non-numeric prefixes (such as +, -, or
13833      whitespace). Disallowing whitespace prevents differential version
13834      parsing between POSIX-based and Windows platforms. Fixes bug 21507
13835      and part of 21508; bugfix on 0.0.8pre1.
13836
13837  o Build features (backport from 0.3.1.5-alpha):
13838    - Tor's repository now includes a Travis Continuous Integration (CI)
13839      configuration file (.travis.yml). This is meant to help new
13840      developers and contributors who fork Tor to a Github repository be
13841      better able to test their changes, and understand what we expect
13842      to pass. To use this new build feature, you must fork Tor to your
13843      Github account, then go into the "Integrations" menu in the
13844      repository settings for your fork and enable Travis, then push
13845      your changes. Closes ticket 22636.
13846
13847
13848Changes in version 0.3.0.11 - 2017-09-18
13849  Tor 0.3.0.11 backports a collection of bugfixes from Tor the 0.3.1
13850  series.
13851
13852  Most significantly, it includes a fix for TROVE-2017-008, a
13853  security bug that affects hidden services running with the
13854  SafeLogging option disabled. For more information, see
13855  https://trac.torproject.org/projects/tor/ticket/23490
13856
13857  o Minor features (code style, backport from 0.3.1.7):
13858    - Add "Falls through" comments to our codebase, in order to silence
13859      GCC 7's -Wimplicit-fallthrough warnings. Patch from Andreas
13860      Stieger. Closes ticket 22446.
13861
13862  o Minor features:
13863    - Update geoip and geoip6 to the September 6 2017 Maxmind GeoLite2
13864      Country database.
13865
13866  o Minor bugfixes (compilation, backport from 0.3.1.7):
13867    - Avoid compiler warnings in the unit tests for calling tor_sscanf()
13868      with wide string outputs. Fixes bug 15582; bugfix on 0.2.6.2-alpha.
13869
13870  o Minor bugfixes (controller, backport from 0.3.1.7):
13871    - Do not crash when receiving a HSPOST command with an empty body.
13872      Fixes part of bug 22644; bugfix on 0.2.7.1-alpha.
13873    - Do not crash when receiving a POSTDESCRIPTOR command with an empty
13874      body. Fixes part of bug 22644; bugfix on 0.2.0.1-alpha.
13875
13876  o Minor bugfixes (file limits, osx, backport from 0.3.1.5-alpha):
13877    - When setting the maximum number of connections allowed by the OS,
13878      always allow some extra file descriptors for other files. Fixes
13879      bug 22797; bugfix on 0.2.0.10-alpha.
13880
13881  o Minor bugfixes (logging, relay, backport from 0.3.1.6-rc):
13882    - Remove a forgotten debugging message when an introduction point
13883      successfully establishes a hidden service prop224 circuit with
13884      a client.
13885    - Change three other log_warn() for an introduction point to
13886      protocol warnings, because they can be failure from the network
13887      and are not relevant to the operator. Fixes bug 23078; bugfix on
13888      0.3.0.1-alpha and 0.3.0.2-alpha.
13889
13890
13891Changes in version 0.3.1.7 - 2017-09-18
13892  Tor 0.3.1.7 is the first stable release in the 0.3.1 series.
13893
13894  With the 0.3.1 series, Tor now serves and downloads directory
13895  information in more compact formats, to save on bandwidth overhead. It
13896  also contains a new padding system to resist netflow-based traffic
13897  analysis, and experimental support for building parts of Tor in Rust
13898  (though no parts of Tor are in Rust yet). There are also numerous
13899  small features, bugfixes on earlier release series, and groundwork for
13900  the hidden services revamp of 0.3.2.
13901
13902  This release also includes a fix for TROVE-2017-008, a security bug
13903  that affects hidden services running with the SafeLogging option
13904  disabled. For more information, see
13905  https://trac.torproject.org/projects/tor/ticket/23490
13906
13907  Per our stable release policy, we plan to support each stable release
13908  series for at least the next nine months, or for three months after
13909  the first stable release of the next series: whichever is longer. If
13910  you need a release with long-term support, we recommend that you stay
13911  with the 0.2.9 series.
13912
13913  Below is a list of the changes since 0.3.1.6-rc. For a list of all
13914  changes since 0.3.0, see the ReleaseNotes file.
13915
13916  o Major bugfixes (security, hidden services, loggging):
13917    - Fix a bug where we could log uninitialized stack when a certain
13918      hidden service error occurred while SafeLogging was disabled.
13919      Fixes bug #23490; bugfix on 0.2.7.2-alpha. This is also tracked as
13920      TROVE-2017-008 and CVE-2017-0380.
13921
13922  o Minor features (defensive programming):
13923    - Create a pair of consensus parameters, nf_pad_tor2web and
13924      nf_pad_single_onion, to disable netflow padding in the consensus
13925      for non-anonymous connections in case the overhead is high. Closes
13926      ticket 17857.
13927
13928  o Minor features (diagnostic):
13929    - Add a stack trace to the bug warnings that can be logged when
13930      trying to send an outgoing relay cell with n_chan == 0. Diagnostic
13931      attempt for bug 23105.
13932
13933  o Minor features (geoip):
13934    - Update geoip and geoip6 to the September 6 2017 Maxmind GeoLite2
13935      Country database.
13936
13937  o Minor bugfixes (compilation):
13938    - Avoid compiler warnings in the unit tests for calling tor_sscanf()
13939      with wide string outputs. Fixes bug 15582; bugfix on 0.2.6.2-alpha.
13940
13941  o Minor bugfixes (controller):
13942    - Do not crash when receiving a HSPOST command with an empty body.
13943      Fixes part of bug 22644; bugfix on 0.2.7.1-alpha.
13944    - Do not crash when receiving a POSTDESCRIPTOR command with an empty
13945      body. Fixes part of bug 22644; bugfix on 0.2.0.1-alpha.
13946
13947  o Minor bugfixes (relay):
13948    - Inform the geoip and rephist modules about all requests, even on
13949      relays that are only fetching microdescriptors. Fixes a bug
13950      related to 21585; bugfix on 0.3.0.1-alpha.
13951
13952  o Minor bugfixes (unit tests):
13953    - Fix a channelpadding unit test failure on slow systems by using
13954      mocked time instead of actual time. Fixes bug 23077; bugfix
13955      on 0.3.1.1-alpha.
13956
13957
13958Changes in version 0.3.1.6-rc - 2017-09-05
13959  Tor 0.3.1.6-rc fixes a few small bugs and annoyances in the 0.3.1
13960  release series, including a bug that produced weird behavior on
13961  Windows directory caches.
13962
13963  This is the first release candidate in the Tor 0.3.1 series. If we
13964  find no new bugs or regressions here, the first stable 0.3.1 release
13965  will be nearly identical to it.
13966
13967  o Major bugfixes (windows, directory cache):
13968    - On Windows, do not try to delete cached consensus documents and
13969      diffs before they are unmapped from memory--Windows won't allow
13970      that. Instead, allow the consensus cache directory to grow larger,
13971      to hold files that might need to stay around longer. Fixes bug
13972      22752; bugfix on 0.3.1.1-alpha.
13973
13974  o Minor features (directory authority):
13975    - Improve the message that authorities report to relays that present
13976      RSA/Ed25519 keypairs that conflict with previously pinned keys.
13977      Closes ticket 22348.
13978
13979  o Minor features (geoip):
13980    - Update geoip and geoip6 to the August 3 2017 Maxmind GeoLite2
13981      Country database.
13982
13983  o Minor features (testing):
13984    - Add more tests for compression backend initialization. Closes
13985      ticket 22286.
13986
13987  o Minor bugfixes (directory cache):
13988    - Fix a memory leak when recovering space in the consensus cache.
13989      Fixes bug 23139; bugfix on 0.3.1.1-alpha.
13990
13991  o Minor bugfixes (hidden service):
13992    - Increase the number of circuits that a service is allowed to
13993      open over a specific period of time. The value was lower than it
13994      should be (8 vs 12) in the normal case of 3 introduction points.
13995      Fixes bug 22159; bugfix on 0.3.0.5-rc.
13996    - Fix a BUG warning during HSv3 descriptor decoding that could be
13997      cause by a specially crafted descriptor. Fixes bug 23233; bugfix
13998      on 0.3.0.1-alpha. Bug found by "haxxpop".
13999    - Rate-limit the log messages if we exceed the maximum number of
14000      allowed intro circuits. Fixes bug 22159; bugfix on 0.3.1.1-alpha.
14001
14002  o Minor bugfixes (logging, relay):
14003    - Remove a forgotten debugging message when an introduction point
14004      successfully establishes a hidden service prop224 circuit with
14005      a client.
14006    - Change three other log_warn() for an introduction point to
14007      protocol warnings, because they can be failure from the network
14008      and are not relevant to the operator. Fixes bug 23078; bugfix on
14009      0.3.0.1-alpha and 0.3.0.2-alpha.
14010
14011  o Minor bugfixes (relay):
14012    - When a relay is not running as a directory cache, it will no
14013      longer generate compressed consensuses and consensus diff
14014      information. Previously, this was a waste of disk and CPU. Fixes
14015      bug 23275; bugfix on 0.3.1.1-alpha.
14016
14017  o Minor bugfixes (robustness, error handling):
14018    - Improve our handling of the cases where OpenSSL encounters a
14019      memory error while encoding keys and certificates. We haven't
14020      observed these errors in the wild, but if they do happen, we now
14021      detect and respond better. Fixes bug 19418; bugfix on all versions
14022      of Tor. Reported by Guido Vranken.
14023
14024  o Minor bugfixes (stability):
14025    - Avoid crashing on a double-free when unable to load or process an
14026      included file. Fixes bug 23155; bugfix on 0.3.1.1-alpha. Found
14027      with the clang static analyzer.
14028
14029  o Minor bugfixes (testing):
14030    - Fix an undersized buffer in test-memwipe.c. Fixes bug 23291;
14031      bugfix on 0.2.7.2-alpha. Found and patched by Ties Stuij.
14032    - Port the hs_ntor handshake test to work correctly with recent
14033      versions of the pysha3 module. Fixes bug 23071; bugfix
14034      on 0.3.1.1-alpha.
14035
14036  o Minor bugfixes (Windows service):
14037    - When running as a Windows service, set the ID of the main thread
14038      correctly. Failure to do so made us fail to send log messages to
14039      the controller in 0.2.1.16-rc, slowed down controller event
14040      delivery in 0.2.7.3-rc and later, and crash with an assertion
14041      failure in 0.3.1.1-alpha. Fixes bug 23081; bugfix on 0.2.1.6-alpha.
14042      Patch and diagnosis from "Vort".
14043
14044
14045Changes in version 0.3.0.10 - 2017-08-02
14046   Tor 0.3.0.10 backports a collection of small-to-medium bugfixes
14047   from the current Tor alpha series. OpenBSD users and TPROXY users
14048   should upgrade; others are probably okay sticking with 0.3.0.9.
14049
14050  o Major features (build system, continuous integration, backport from 0.3.1.5-alpha):
14051    - Tor's repository now includes a Travis Continuous Integration (CI)
14052      configuration file (.travis.yml). This is meant to help new
14053      developers and contributors who fork Tor to a Github repository be
14054      better able to test their changes, and understand what we expect
14055      to pass. To use this new build feature, you must fork Tor to your
14056      Github account, then go into the "Integrations" menu in the
14057      repository settings for your fork and enable Travis, then push
14058      your changes. Closes ticket 22636.
14059
14060  o Major bugfixes (linux TPROXY support, backport from 0.3.1.1-alpha):
14061    - Fix a typo that had prevented TPROXY-based transparent proxying
14062      from working under Linux. Fixes bug 18100; bugfix on 0.2.6.3-alpha.
14063      Patch from "d4fq0fQAgoJ".
14064
14065  o Major bugfixes (openbsd, denial-of-service, backport from 0.3.1.5-alpha):
14066    - Avoid an assertion failure bug affecting our implementation of
14067      inet_pton(AF_INET6) on certain OpenBSD systems whose strtol()
14068      handling of "0xbar" differs from what we had expected. Fixes bug
14069      22789; bugfix on 0.2.3.8-alpha. Also tracked as TROVE-2017-007.
14070
14071  o Minor features (backport from 0.3.1.5-alpha):
14072    - Update geoip and geoip6 to the July 4 2017 Maxmind GeoLite2
14073      Country database.
14074
14075  o Minor bugfixes (bandwidth accounting, backport from 0.3.1.2-alpha):
14076    - Roll over monthly accounting at the configured hour and minute,
14077      rather than always at 00:00. Fixes bug 22245; bugfix on 0.0.9rc1.
14078      Found by Andrey Karpov with PVS-Studio.
14079
14080  o Minor bugfixes (compilation warnings, backport from 0.3.1.5-alpha):
14081    - Suppress -Wdouble-promotion warnings with clang 4.0. Fixes bug 22915;
14082      bugfix on 0.2.8.1-alpha.
14083    - Fix warnings when building with libscrypt and openssl scrypt
14084      support on Clang. Fixes bug 22916; bugfix on 0.2.7.2-alpha.
14085    - When building with certain versions of the mingw C header files,
14086      avoid float-conversion warnings when calling the C functions
14087      isfinite(), isnan(), and signbit(). Fixes bug 22801; bugfix
14088      on 0.2.8.1-alpha.
14089
14090  o Minor bugfixes (compilation, mingw, backport from 0.3.1.1-alpha):
14091    - Backport a fix for an "unused variable" warning that appeared
14092      in some versions of mingw. Fixes bug 22838; bugfix on
14093      0.2.8.1-alpha.
14094
14095  o Minor bugfixes (coverity build support, backport from 0.3.1.5-alpha):
14096    - Avoid Coverity build warnings related to our BUG() macro. By
14097      default, Coverity treats BUG() as the Linux kernel does: an
14098      instant abort(). We need to override that so our BUG() macro
14099      doesn't prevent Coverity from analyzing functions that use it.
14100      Fixes bug 23030; bugfix on 0.2.9.1-alpha.
14101
14102  o Minor bugfixes (directory authority, backport from 0.3.1.1-alpha):
14103    - When rejecting a router descriptor for running an obsolete version
14104      of Tor without ntor support, warn about the obsolete tor version,
14105      not the missing ntor key. Fixes bug 20270; bugfix on 0.2.9.3-alpha.
14106
14107  o Minor bugfixes (linux seccomp2 sandbox, backport from 0.3.1.5-alpha):
14108    - Avoid a sandbox failure when trying to re-bind to a socket and
14109      mark it as IPv6-only. Fixes bug 20247; bugfix on 0.2.5.1-alpha.
14110
14111  o Minor bugfixes (unit tests, backport from 0.3.1.5-alpha)
14112    - Fix a memory leak in the link-handshake/certs_ok_ed25519 test.
14113      Fixes bug 22803; bugfix on 0.3.0.1-alpha.
14114
14115
14116Changes in version 0.3.1.5-alpha - 2017-08-01
14117  Tor 0.3.1.5-alpha improves the performance of consensus diff
14118  calculation, fixes a crash bug on older versions of OpenBSD, and fixes
14119  several other bugs. If no serious bugs are found in this version, the
14120  next version will be a release candidate.
14121
14122  This release also marks the end of support for the Tor 0.2.4.x,
14123  0.2.6.x, and 0.2.7.x release series. Those releases will receive no
14124  further bug or security fixes. Anyone still running or distributing
14125  one of those versions should upgrade.
14126
14127  o Major features (build system, continuous integration):
14128    - Tor's repository now includes a Travis Continuous Integration (CI)
14129      configuration file (.travis.yml). This is meant to help new
14130      developers and contributors who fork Tor to a Github repository be
14131      better able to test their changes, and understand what we expect
14132      to pass. To use this new build feature, you must fork Tor to your
14133      Github account, then go into the "Integrations" menu in the
14134      repository settings for your fork and enable Travis, then push
14135      your changes. Closes ticket 22636.
14136
14137  o Major bugfixes (openbsd, denial-of-service):
14138    - Avoid an assertion failure bug affecting our implementation of
14139      inet_pton(AF_INET6) on certain OpenBSD systems whose strtol()
14140      handling of "0xbar" differs from what we had expected. Fixes bug
14141      22789; bugfix on 0.2.3.8-alpha. Also tracked as TROVE-2017-007.
14142
14143  o Major bugfixes (relay, performance):
14144    - Perform circuit handshake operations at a higher priority than we
14145      use for consensus diff creation and compression. This should
14146      prevent circuits from starving when a relay or bridge receives a
14147      new consensus, especially on lower-powered machines. Fixes bug
14148      22883; bugfix on 0.3.1.1-alpha.
14149
14150  o Minor features (bridge authority):
14151    - Add "fingerprint" lines to the networkstatus-bridges file produced
14152      by bridge authorities. Closes ticket 22207.
14153
14154  o Minor features (directory cache, consensus diff):
14155    - Add a new MaxConsensusAgeForDiffs option to allow directory cache
14156      operators with low-resource environments to adjust the number of
14157      consensuses they'll store and generate diffs from. Most cache
14158      operators should leave it unchanged. Helps to work around
14159      bug 22883.
14160
14161  o Minor features (geoip):
14162    - Update geoip and geoip6 to the July 4 2017 Maxmind GeoLite2
14163      Country database.
14164
14165  o Minor features (relay, performance):
14166    - Always start relays with at least two worker threads, to prevent
14167      priority inversion on slow tasks. Part of the fix for bug 22883.
14168    - Allow background work to be queued with different priorities, so
14169      that a big pile of slow low-priority jobs will not starve out
14170      higher priority jobs. This lays the groundwork for a fix for
14171      bug 22883.
14172
14173  o Minor bugfixes (build system, rust):
14174    - Fix a problem where Rust toolchains were not being found when
14175      building without --enable-cargo-online-mode, due to setting the
14176      $HOME environment variable instead of $CARGO_HOME. Fixes bug
14177      22830; bugfix on 0.3.1.1-alpha. Fix by Chelsea Komlo.
14178
14179  o Minor bugfixes (compatibility, zstd):
14180    - Write zstd epilogues correctly when the epilogue requires
14181      reallocation of the output buffer, even with zstd 1.3.0.
14182      (Previously, we worked on 1.2.0 and failed with 1.3.0). Fixes bug
14183      22927; bugfix on 0.3.1.1-alpha.
14184
14185  o Minor bugfixes (compilation warnings):
14186    - Suppress -Wdouble-promotion warnings with clang 4.0. Fixes bug
14187      22915; bugfix on 0.2.8.1-alpha.
14188    - Fix warnings when building with libscrypt and openssl scrypt
14189      support on Clang. Fixes bug 22916; bugfix on 0.2.7.2-alpha.
14190    - Compile correctly when both openssl 1.1.0 and libscrypt are
14191      detected. Previously this would cause an error. Fixes bug 22892;
14192      bugfix on 0.3.1.1-alpha.
14193    - When building with certain versions of the mingw C header files,
14194      avoid float-conversion warnings when calling the C functions
14195      isfinite(), isnan(), and signbit(). Fixes bug 22801; bugfix
14196      on 0.2.8.1-alpha.
14197
14198  o Minor bugfixes (coverity build support):
14199    - Avoid Coverity build warnings related to our BUG() macro. By
14200      default, Coverity treats BUG() as the Linux kernel does: an
14201      instant abort(). We need to override that so our BUG() macro
14202      doesn't prevent Coverity from analyzing functions that use it.
14203      Fixes bug 23030; bugfix on 0.2.9.1-alpha.
14204
14205  o Minor bugfixes (directory authority):
14206    - When a directory authority rejects a descriptor or extrainfo with
14207      a given digest, mark that digest as undownloadable, so that we do
14208      not attempt to download it again over and over. We previously
14209      tried to avoid downloading such descriptors by other means, but we
14210      didn't notice if we accidentally downloaded one anyway. This
14211      behavior became problematic in 0.2.7.2-alpha, when authorities
14212      began pinning Ed25519 keys. Fixes bug 22349; bugfix
14213      on 0.2.1.19-alpha.
14214
14215  o Minor bugfixes (error reporting, windows):
14216    - When formatting Windows error messages, use the English format to
14217      avoid codepage issues. Fixes bug 22520; bugfix on 0.1.2.8-alpha.
14218      Patch from "Vort".
14219
14220  o Minor bugfixes (file limits, osx):
14221    - When setting the maximum number of connections allowed by the OS,
14222      always allow some extra file descriptors for other files. Fixes
14223      bug 22797; bugfix on 0.2.0.10-alpha.
14224
14225  o Minor bugfixes (linux seccomp2 sandbox):
14226    - Avoid a sandbox failure when trying to re-bind to a socket and
14227      mark it as IPv6-only. Fixes bug 20247; bugfix on 0.2.5.1-alpha.
14228
14229  o Minor bugfixes (memory leaks):
14230    - Fix a small memory leak when validating a configuration that uses
14231      two or more AF_UNIX sockets for the same port type. Fixes bug
14232      23053; bugfix on 0.2.6.3-alpha. This is CID 1415725.
14233
14234  o Minor bugfixes (unit tests):
14235    - test_consdiff_base64cmp would fail on OS X because while OS X
14236      follows the standard of (less than zero/zero/greater than zero),
14237      it doesn't follow the convention of (-1/0/+1). Make the test
14238      comply with the standard. Fixes bug 22870; bugfix on 0.3.1.1-alpha.
14239    - Fix a memory leak in the link-handshake/certs_ok_ed25519 test.
14240      Fixes bug 22803; bugfix on 0.3.0.1-alpha.
14241
14242
14243Changes in version 0.3.1.4-alpha - 2017-06-29
14244  Tor 0.3.1.4-alpha fixes a path selection bug that would allow a client
14245  to use a guard that was in the same network family as a chosen exit
14246  relay. This is a security regression; all clients running earlier
14247  versions of 0.3.0.x or 0.3.1.x should upgrade to 0.3.0.9
14248  or 0.3.1.4-alpha.
14249
14250  This release also fixes several other bugs introduced in 0.3.0.x
14251  and 0.3.1.x, including others that can affect bandwidth usage
14252  and correctness.
14253
14254  o New dependencies:
14255    - To build with zstd and lzma support, Tor now requires the
14256      pkg-config tool at build time. (This requirement was new in
14257      0.3.1.1-alpha, but was not noted at the time. Noting it here to
14258      close ticket 22623.)
14259
14260  o Major bugfixes (path selection, security):
14261    - When choosing which guard to use for a circuit, avoid the exit's
14262      family along with the exit itself. Previously, the new guard
14263      selection logic avoided the exit, but did not consider its family.
14264      Fixes bug 22753; bugfix on 0.3.0.1-alpha. Tracked as TROVE-2017-
14265      006 and CVE-2017-0377.
14266
14267  o Major bugfixes (compression, zstd):
14268    - Correctly detect a full buffer when decompressing a large zstd-
14269      compressed input. Previously, we would sometimes treat a full
14270      buffer as an error. Fixes bug 22628; bugfix on 0.3.1.1-alpha.
14271
14272  o Major bugfixes (directory protocol):
14273    - Ensure that we send "304 Not modified" as HTTP status code when a
14274      client is attempting to fetch a consensus or consensus diff, and
14275      the best one we can send them is one they already have. Fixes bug
14276      22702; bugfix on 0.3.1.1-alpha.
14277
14278  o Major bugfixes (entry guards):
14279    - When starting with an old consensus, do not add new entry guards
14280      unless the consensus is "reasonably live" (under 1 day old). Fixes
14281      one root cause of bug 22400; bugfix on 0.3.0.1-alpha.
14282
14283  o Minor features (bug mitigation, diagnostics, logging):
14284    - Avoid an assertion failure, and log a better error message, when
14285      unable to remove a file from the consensus cache on Windows.
14286      Attempts to mitigate and diagnose bug 22752.
14287
14288  o Minor features (geoip):
14289    - Update geoip and geoip6 to the June 8 2017 Maxmind GeoLite2
14290      Country database.
14291
14292  o Minor bugfixes (compression):
14293    - When compressing or decompressing a buffer, check for a failure to
14294      create a compression object. Fixes bug 22626; bugfix
14295      on 0.3.1.1-alpha.
14296    - When decompressing a buffer, check for extra data after the end of
14297      the compressed data. Fixes bug 22629; bugfix on 0.3.1.1-alpha.
14298    - When decompressing an object received over an anonymous directory
14299      connection, if we have already decompressed it using an acceptable
14300      compression method, do not reject it for looking like an
14301      unacceptable compression method. Fixes part of bug 22670; bugfix
14302      on 0.3.1.1-alpha.
14303    - When serving directory votes compressed with zlib, do not claim to
14304      have compressed them with zstd. Fixes bug 22669; bugfix
14305      on 0.3.1.1-alpha.
14306    - When spooling compressed data to an output buffer, don't try to
14307      spool more data when there is no more data to spool and we are not
14308      trying to flush the input. Previously, we would sometimes launch
14309      compression requests with nothing to do, which interferes with our
14310      22672 checks. Fixes bug 22719; bugfix on 0.2.0.16-alpha.
14311
14312  o Minor bugfixes (defensive programming):
14313    - Detect and break out of infinite loops in our compression code. We
14314      don't think that any such loops exist now, but it's best to be
14315      safe. Closes ticket 22672.
14316    - Fix a memset() off the end of an array when packing cells. This
14317      bug should be harmless in practice, since the corrupted bytes are
14318      still in the same structure, and are always padding bytes,
14319      ignored, or immediately overwritten, depending on compiler
14320      behavior. Nevertheless, because the memset()'s purpose is to make
14321      sure that any other cell-handling bugs can't expose bytes to the
14322      network, we need to fix it. Fixes bug 22737; bugfix on
14323      0.2.4.11-alpha. Fixes CID 1401591.
14324
14325  o Minor bugfixes (linux seccomp2 sandbox):
14326    - Permit the fchmod system call, to avoid crashing on startup when
14327      starting with the seccomp2 sandbox and an unexpected set of
14328      permissions on the data directory or its contents. Fixes bug
14329      22516; bugfix on 0.2.5.4-alpha.
14330    - Fix a crash in the LZMA module, when the sandbox was enabled, and
14331      liblzma would allocate more than 16 MB of memory. We solve this by
14332      bumping the mprotect() limit in the sandbox module from 16 MB to
14333      20 MB. Fixes bug 22751; bugfix on 0.3.1.1-alpha.
14334
14335  o Minor bugfixes (logging):
14336    - When decompressing, do not warn if we fail to decompress using a
14337      compression method that we merely guessed. Fixes part of bug
14338      22670; bugfix on 0.1.1.14-alpha.
14339    - When decompressing, treat mismatch between content-encoding and
14340      actual compression type as a protocol warning. Fixes part of bug
14341      22670; bugfix on 0.1.1.9-alpha.
14342    - Downgrade "assigned_to_cpuworker failed" message to info-level
14343      severity. In every case that can reach it, either a better warning
14344      has already been logged, or no warning is warranted. Fixes bug
14345      22356; bugfix on 0.2.6.3-alpha.
14346    - Demote a warn that was caused by libevent delays to info if
14347      netflow padding is less than 4.5 seconds late, or to notice
14348      if it is more (4.5 seconds is the amount of time that a netflow
14349      record might be emitted after, if we chose the maximum timeout).
14350      Fixes bug 22212; bugfix on 0.3.1.1-alpha.
14351
14352  o Minor bugfixes (process behavior):
14353    - When exiting because of an error, always exit with a nonzero exit
14354      status. Previously, we would fail to report an error in our exit
14355      status in cases related to __OwningControllerProcess failure,
14356      lockfile contention, and Ed25519 key initialization. Fixes bug
14357      22720; bugfix on versions 0.2.1.6-alpha, 0.2.2.28-beta, and
14358      0.2.7.2-alpha respectively. Reported by "f55jwk4f"; patch
14359      from "huyvq".
14360
14361  o Documentation:
14362    - Add a manpage description for the key-pinning-journal file. Closes
14363      ticket 22347.
14364    - Correctly note that bandwidth accounting values are stored in the
14365      state file, and the bw_accounting file is now obsolete. Closes
14366      ticket 16082.
14367    - Document more of the files in the Tor data directory, including
14368      cached-extrainfo, secret_onion_key{,_ntor}.old, hidserv-stats,
14369      approved-routers, sr-random, and diff-cache. Found while fixing
14370      ticket 22347.
14371
14372
14373Changes in version 0.3.0.9 - 2017-06-29
14374  Tor 0.3.0.9 fixes a path selection bug that would allow a client
14375  to use a guard that was in the same network family as a chosen exit
14376  relay. This is a security regression; all clients running earlier
14377  versions of 0.3.0.x or 0.3.1.x should upgrade to 0.3.0.9 or
14378  0.3.1.4-alpha.
14379
14380  This release also backports several other bugfixes from the 0.3.1.x
14381  series.
14382
14383  o Major bugfixes (path selection, security, backport from 0.3.1.4-alpha):
14384    - When choosing which guard to use for a circuit, avoid the exit's
14385      family along with the exit itself. Previously, the new guard
14386      selection logic avoided the exit, but did not consider its family.
14387      Fixes bug 22753; bugfix on 0.3.0.1-alpha. Tracked as TROVE-2017-
14388      006 and CVE-2017-0377.
14389
14390  o Major bugfixes (entry guards, backport from 0.3.1.1-alpha):
14391    - Don't block bootstrapping when a primary bridge is offline and we
14392      can't get its descriptor. Fixes bug 22325; fixes one case of bug
14393      21969; bugfix on 0.3.0.3-alpha.
14394
14395  o Major bugfixes (entry guards, backport from 0.3.1.4-alpha):
14396    - When starting with an old consensus, do not add new entry guards
14397      unless the consensus is "reasonably live" (under 1 day old). Fixes
14398      one root cause of bug 22400; bugfix on 0.3.0.1-alpha.
14399
14400  o Minor features (geoip):
14401    - Update geoip and geoip6 to the June 8 2017 Maxmind GeoLite2
14402      Country database.
14403
14404  o Minor bugfixes (voting consistency, backport from 0.3.1.1-alpha):
14405    - Reject version numbers with non-numeric prefixes (such as +, -, or
14406      whitespace). Disallowing whitespace prevents differential version
14407      parsing between POSIX-based and Windows platforms. Fixes bug 21507
14408      and part of 21508; bugfix on 0.0.8pre1.
14409
14410  o Minor bugfixes (linux seccomp2 sandbox, backport from 0.3.1.4-alpha):
14411    - Permit the fchmod system call, to avoid crashing on startup when
14412      starting with the seccomp2 sandbox and an unexpected set of
14413      permissions on the data directory or its contents. Fixes bug
14414      22516; bugfix on 0.2.5.4-alpha.
14415
14416  o Minor bugfixes (defensive programming, backport from 0.3.1.4-alpha):
14417    - Fix a memset() off the end of an array when packing cells. This
14418      bug should be harmless in practice, since the corrupted bytes are
14419      still in the same structure, and are always padding bytes,
14420      ignored, or immediately overwritten, depending on compiler
14421      behavior. Nevertheless, because the memset()'s purpose is to make
14422      sure that any other cell-handling bugs can't expose bytes to the
14423      network, we need to fix it. Fixes bug 22737; bugfix on
14424      0.2.4.11-alpha. Fixes CID 1401591.
14425
14426
14427Changes in version 0.3.1.3-alpha - 2017-06-08
14428  Tor 0.3.1.3-alpha fixes a pair of bugs that would allow an attacker to
14429  remotely crash a hidden service with an assertion failure. Anyone
14430  running a hidden service should upgrade to this version, or to some
14431  other version with fixes for TROVE-2017-004 and TROVE-2017-005.
14432
14433  Tor 0.3.1.3-alpha also includes fixes for several key management bugs
14434  that sometimes made relays unreliable, as well as several other
14435  bugfixes described below.
14436
14437  o Major bugfixes (hidden service, relay, security):
14438    - Fix a remotely triggerable assertion failure when a hidden service
14439      handles a malformed BEGIN cell. Fixes bug 22493, tracked as
14440      TROVE-2017-004 and as CVE-2017-0375; bugfix on 0.3.0.1-alpha.
14441    - Fix a remotely triggerable assertion failure caused by receiving a
14442      BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
14443      22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
14444      on 0.2.2.1-alpha.
14445
14446  o Major bugfixes (relay, link handshake):
14447    - When performing the v3 link handshake on a TLS connection, report
14448      that we have the x509 certificate that we actually used on that
14449      connection, even if we have changed certificates since that
14450      connection was first opened. Previously, we would claim to have
14451      used our most recent x509 link certificate, which would sometimes
14452      make the link handshake fail. Fixes one case of bug 22460; bugfix
14453      on 0.2.3.6-alpha.
14454
14455  o Major bugfixes (relays, key management):
14456    - Regenerate link and authentication certificates whenever the key
14457      that signs them changes; also, regenerate link certificates
14458      whenever the signed key changes. Previously, these processes were
14459      only weakly coupled, and we relays could (for minutes to hours)
14460      wind up with an inconsistent set of keys and certificates, which
14461      other relays would not accept. Fixes two cases of bug 22460;
14462      bugfix on 0.3.0.1-alpha.
14463    - When sending an Ed25519 signing->link certificate in a CERTS cell,
14464      send the certificate that matches the x509 certificate that we
14465      used on the TLS connection. Previously, there was a race condition
14466      if the TLS context rotated after we began the TLS handshake but
14467      before we sent the CERTS cell. Fixes a case of bug 22460; bugfix
14468      on 0.3.0.1-alpha.
14469
14470  o Major bugfixes (torrc, crash):
14471    - Fix a crash bug when using %include in torrc. Fixes bug 22417;
14472      bugfix on 0.3.1.1-alpha. Patch by Daniel Pinto.
14473
14474  o Minor features (code style):
14475    - Add "Falls through" comments to our codebase, in order to silence
14476      GCC 7's -Wimplicit-fallthrough warnings. Patch from Andreas
14477      Stieger. Closes ticket 22446.
14478
14479  o Minor features (diagnostic):
14480    - Add logging messages to try to diagnose a rare bug that seems to
14481      generate RSA->Ed25519 cross-certificates dated in the 1970s. We
14482      think this is happening because of incorrect system clocks, but
14483      we'd like to know for certain. Diagnostic for bug 22466.
14484
14485  o Minor bugfixes (correctness):
14486    - Avoid undefined behavior when parsing IPv6 entries from the geoip6
14487      file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
14488
14489  o Minor bugfixes (directory protocol):
14490    - Check for libzstd >= 1.1, because older versions lack the
14491      necessary streaming API. Fixes bug 22413; bugfix on 0.3.1.1-alpha.
14492
14493  o Minor bugfixes (link handshake):
14494    - Lower the lifetime of the RSA->Ed25519 cross-certificate to six
14495      months, and regenerate it when it is within one month of expiring.
14496      Previously, we had generated this certificate at startup with a
14497      ten-year lifetime, but that could lead to weird behavior when Tor
14498      was started with a grossly inaccurate clock. Mitigates bug 22466;
14499      mitigation on 0.3.0.1-alpha.
14500
14501  o Minor bugfixes (storage directories):
14502    - Always check for underflows in the cached storage directory usage.
14503      If the usage does underflow, re-calculate it. Also, avoid a
14504      separate underflow when the usage is not known. Fixes bug 22424;
14505      bugfix on 0.3.1.1-alpha.
14506
14507  o Minor bugfixes (unit tests):
14508    - The unit tests now pass on systems where localhost is misconfigured
14509      to some IPv4 address other than 127.0.0.1. Fixes bug 6298; bugfix
14510      on 0.0.9pre2.
14511
14512  o Documentation:
14513    - Clarify the manpage for the (deprecated) torify script. Closes
14514      ticket 6892.
14515
14516Changes in version 0.3.0.8 - 2017-06-08
14517  Tor 0.3.0.8 fixes a pair of bugs that would allow an attacker to
14518  remotely crash a hidden service with an assertion failure. Anyone
14519  running a hidden service should upgrade to this version, or to some
14520  other version with fixes for TROVE-2017-004 and TROVE-2017-005.
14521
14522  Tor 0.3.0.8 also includes fixes for several key management bugs
14523  that sometimes made relays unreliable, as well as several other
14524  bugfixes described below.
14525
14526  o Major bugfixes (hidden service, relay, security, backport
14527    from 0.3.1.3-alpha):
14528    - Fix a remotely triggerable assertion failure when a hidden service
14529      handles a malformed BEGIN cell. Fixes bug 22493, tracked as
14530      TROVE-2017-004 and as CVE-2017-0375; bugfix on 0.3.0.1-alpha.
14531    - Fix a remotely triggerable assertion failure caused by receiving a
14532      BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
14533      22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
14534      on 0.2.2.1-alpha.
14535
14536  o Major bugfixes (relay, link handshake, backport from 0.3.1.3-alpha):
14537    - When performing the v3 link handshake on a TLS connection, report
14538      that we have the x509 certificate that we actually used on that
14539      connection, even if we have changed certificates since that
14540      connection was first opened. Previously, we would claim to have
14541      used our most recent x509 link certificate, which would sometimes
14542      make the link handshake fail. Fixes one case of bug 22460; bugfix
14543      on 0.2.3.6-alpha.
14544
14545  o Major bugfixes (relays, key management, backport from 0.3.1.3-alpha):
14546    - Regenerate link and authentication certificates whenever the key
14547      that signs them changes; also, regenerate link certificates
14548      whenever the signed key changes. Previously, these processes were
14549      only weakly coupled, and we relays could (for minutes to hours)
14550      wind up with an inconsistent set of keys and certificates, which
14551      other relays would not accept. Fixes two cases of bug 22460;
14552      bugfix on 0.3.0.1-alpha.
14553    - When sending an Ed25519 signing->link certificate in a CERTS cell,
14554      send the certificate that matches the x509 certificate that we
14555      used on the TLS connection. Previously, there was a race condition
14556      if the TLS context rotated after we began the TLS handshake but
14557      before we sent the CERTS cell. Fixes a case of bug 22460; bugfix
14558      on 0.3.0.1-alpha.
14559
14560  o Major bugfixes (hidden service v3, backport from 0.3.1.1-alpha):
14561    - Stop rejecting v3 hidden service descriptors because their size
14562      did not match an old padding rule. Fixes bug 22447; bugfix on
14563      0.3.0.1-alpha.
14564
14565  o Minor features (fallback directory list, backport from 0.3.1.3-alpha):
14566    - Replace the 177 fallbacks originally introduced in Tor 0.2.9.8 in
14567      December 2016 (of which ~126 were still functional) with a list of
14568      151 fallbacks (32 new, 119 unchanged, 58 removed) generated in May
14569      2017. Resolves ticket 21564.
14570
14571  o Minor bugfixes (configuration, backport from 0.3.1.1-alpha):
14572    - Do not crash when starting with LearnCircuitBuildTimeout 0. Fixes
14573      bug 22252; bugfix on 0.2.9.3-alpha.
14574
14575  o Minor bugfixes (correctness, backport from 0.3.1.3-alpha):
14576    - Avoid undefined behavior when parsing IPv6 entries from the geoip6
14577      file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
14578
14579  o Minor bugfixes (link handshake, backport from 0.3.1.3-alpha):
14580    - Lower the lifetime of the RSA->Ed25519 cross-certificate to six
14581      months, and regenerate it when it is within one month of expiring.
14582      Previously, we had generated this certificate at startup with a
14583      ten-year lifetime, but that could lead to weird behavior when Tor
14584      was started with a grossly inaccurate clock. Mitigates bug 22466;
14585      mitigation on 0.3.0.1-alpha.
14586
14587  o Minor bugfixes (memory leak, directory authority, backport from
14588    0.3.1.2-alpha):
14589    - When directory authorities reject a router descriptor due to
14590      keypinning, free the router descriptor rather than leaking the
14591      memory. Fixes bug 22370; bugfix on 0.2.7.2-alpha.
14592
14593
14594Changes in version 0.2.9.11 - 2017-06-08
14595  Tor 0.2.9.11 backports a fix for a bug that would allow an attacker to
14596  remotely crash a hidden service with an assertion failure. Anyone
14597  running a hidden service should upgrade to this version, or to some
14598  other version with fixes for TROVE-2017-005. (Versions before 0.3.0
14599  are not affected by TROVE-2017-004.)
14600
14601  Tor 0.2.9.11 also backports fixes for several key management bugs
14602  that sometimes made relays unreliable, as well as several other
14603  bugfixes described below.
14604
14605  o Major bugfixes (hidden service, relay, security, backport
14606    from 0.3.1.3-alpha):
14607    - Fix a remotely triggerable assertion failure caused by receiving a
14608      BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
14609      22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
14610      on 0.2.2.1-alpha.
14611
14612  o Major bugfixes (relay, link handshake, backport from 0.3.1.3-alpha):
14613    - When performing the v3 link handshake on a TLS connection, report
14614      that we have the x509 certificate that we actually used on that
14615      connection, even if we have changed certificates since that
14616      connection was first opened. Previously, we would claim to have
14617      used our most recent x509 link certificate, which would sometimes
14618      make the link handshake fail. Fixes one case of bug 22460; bugfix
14619      on 0.2.3.6-alpha.
14620
14621  o Minor features (fallback directory list, backport from 0.3.1.3-alpha):
14622    - Replace the 177 fallbacks originally introduced in Tor 0.2.9.8 in
14623      December 2016 (of which ~126 were still functional) with a list of
14624      151 fallbacks (32 new, 119 unchanged, 58 removed) generated in May
14625      2017. Resolves ticket 21564.
14626
14627  o Minor features (future-proofing, backport from 0.3.0.7):
14628    - Tor no longer refuses to download microdescriptors or descriptors if
14629      they are listed as "published in the future".  This change will
14630      eventually allow us to stop listing meaningful "published" dates
14631      in microdescriptor consensuses, and thereby allow us to reduce the
14632      resources required to download consensus diffs by over 50%.
14633      Implements part of ticket 21642; implements part of proposal 275.
14634
14635  o Minor features (directory authorities, backport from 0.3.0.4-rc)
14636    - Directory authorities now reject relays running versions
14637      0.2.9.1-alpha through 0.2.9.4-alpha, because those relays
14638      suffer from bug 20499 and don't keep their consensus cache
14639      up-to-date. Resolves ticket 20509.
14640
14641  o Minor features (geoip):
14642    - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
14643      Country database.
14644
14645  o Minor bugfixes (control port, backport from 0.3.0.6):
14646    - The GETINFO extra-info/digest/<digest> command was broken because
14647      of a wrong base16 decode return value check, introduced when
14648      refactoring that API. Fixes bug 22034; bugfix on 0.2.9.1-alpha.
14649
14650  o Minor bugfixes (correctness, backport from 0.3.1.3-alpha):
14651    - Avoid undefined behavior when parsing IPv6 entries from the geoip6
14652      file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
14653
14654  o Minor bugfixes (Linux seccomp2 sandbox, backport from 0.3.0.7):
14655    - The getpid() system call is now permitted under the Linux seccomp2
14656      sandbox, to avoid crashing with versions of OpenSSL (and other
14657      libraries) that attempt to learn the process's PID by using the
14658      syscall rather than the VDSO code. Fixes bug 21943; bugfix
14659      on 0.2.5.1-alpha.
14660
14661  o Minor bugfixes (memory leak, directory authority, backport
14662    from 0.3.1.2-alpha):
14663    - When directory authorities reject a router descriptor due to
14664      keypinning, free the router descriptor rather than leaking the
14665      memory. Fixes bug 22370; bugfix on 0.2.7.2-alpha.
14666
14667Changes in version 0.2.8.14 - 2017-06-08
14668  Tor 0.2.7.8 backports a fix for a bug that would allow an attacker to
14669  remotely crash a hidden service with an assertion failure. Anyone
14670  running a hidden service should upgrade to this version, or to some
14671  other version with fixes for TROVE-2017-005.  (Versions before 0.3.0
14672  are not affected by TROVE-2017-004.)
14673
14674  o Major bugfixes (hidden service, relay, security):
14675    - Fix a remotely triggerable assertion failure caused by receiving a
14676      BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
14677      22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
14678      on 0.2.2.1-alpha.
14679
14680  o Minor features (geoip):
14681    - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
14682      Country database.
14683
14684  o Minor features (fallback directory list, backport from 0.3.1.3-alpha):
14685    - Replace the 177 fallbacks originally introduced in Tor 0.2.9.8 in
14686      December 2016 (of which ~126 were still functional) with a list of
14687      151 fallbacks (32 new, 119 unchanged, 58 removed) generated in May
14688      2017. Resolves ticket 21564.
14689
14690  o Minor bugfixes (correctness):
14691    - Avoid undefined behavior when parsing IPv6 entries from the geoip6
14692      file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
14693
14694Changes in version 0.2.7.8 - 2017-06-08
14695  Tor 0.2.7.8 backports a fix for a bug that would allow an attacker to
14696  remotely crash a hidden service with an assertion failure. Anyone
14697  running a hidden service should upgrade to this version, or to some
14698  other version with fixes for TROVE-2017-005.  (Versions before 0.3.0
14699  are not affected by TROVE-2017-004.)
14700
14701  o Major bugfixes (hidden service, relay, security):
14702    - Fix a remotely triggerable assertion failure caused by receiving a
14703      BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
14704      22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
14705      on 0.2.2.1-alpha.
14706
14707  o Minor features (geoip):
14708    - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
14709      Country database.
14710
14711  o Minor bugfixes (correctness):
14712    - Avoid undefined behavior when parsing IPv6 entries from the geoip6
14713      file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
14714
14715
14716Changes in version 0.2.6.12 - 2017-06-08
14717  Tor 0.2.6.12 backports a fix for a bug that would allow an attacker to
14718  remotely crash a hidden service with an assertion failure. Anyone
14719  running a hidden service should upgrade to this version, or to some
14720  other version with fixes for TROVE-2017-005.  (Versions before 0.3.0
14721  are not affected by TROVE-2017-004.)
14722
14723  o Major bugfixes (hidden service, relay, security):
14724    - Fix a remotely triggerable assertion failure caused by receiving a
14725      BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
14726      22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
14727      on 0.2.2.1-alpha.
14728
14729  o Minor features (geoip):
14730    - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
14731      Country database.
14732
14733  o Minor bugfixes (correctness):
14734    - Avoid undefined behavior when parsing IPv6 entries from the geoip6
14735      file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
14736
14737Changes in version 0.2.5.14 - 2017-06-08
14738  Tor 0.2.5.14 backports a fix for a bug that would allow an attacker to
14739  remotely crash a hidden service with an assertion failure. Anyone
14740  running a hidden service should upgrade to this version, or to some
14741  other version with fixes for TROVE-2017-005.  (Versions before 0.3.0
14742  are not affected by TROVE-2017-004.)
14743
14744  o Major bugfixes (hidden service, relay, security):
14745    - Fix a remotely triggerable assertion failure caused by receiving a
14746      BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
14747      22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
14748      on 0.2.2.1-alpha.
14749
14750  o Minor features (geoip):
14751    - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
14752      Country database.
14753
14754  o Minor bugfixes (correctness):
14755    - Avoid undefined behavior when parsing IPv6 entries from the geoip6
14756      file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
14757
14758Changes in version 0.2.4.29 - 2017-06-08
14759  Tor 0.2.4.29 backports a fix for a bug that would allow an attacker to
14760  remotely crash a hidden service with an assertion failure. Anyone
14761  running a hidden service should upgrade to this version, or to some
14762  other version with fixes for TROVE-2017-005.  (Versions before 0.3.0
14763  are not affected by TROVE-2017-004.)
14764
14765  o Major bugfixes (hidden service, relay, security):
14766    - Fix a remotely triggerable assertion failure caused by receiving a
14767      BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
14768      22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
14769      on 0.2.2.1-alpha.
14770
14771  o Minor features (geoip):
14772    - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
14773      Country database.
14774
14775  o Minor bugfixes (correctness):
14776    - Avoid undefined behavior when parsing IPv6 entries from the geoip6
14777      file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
14778
14779
14780Changes in version 0.3.1.2-alpha - 2017-05-26
14781  Tor 0.3.1.2-alpha is the second release in the 0.3.1.x series. It
14782  fixes a few bugs found while testing 0.3.1.1-alpha, including a
14783  memory corruption bug that affected relay stability.
14784
14785  o Major bugfixes (crash, relay):
14786    - Fix a memory-corruption bug in relays that set MyFamily.
14787      Previously, they would double-free MyFamily elements when making
14788      the next descriptor or when changing their configuration. Fixes
14789      bug 22368; bugfix on 0.3.1.1-alpha.
14790
14791  o Minor bugfixes (logging):
14792    - Log a better message when a directory authority replies to an
14793      upload with an unexpected status code. Fixes bug 11121; bugfix
14794      on 0.1.0.1-rc.
14795
14796  o Minor bugfixes (memory leak, directory authority):
14797    - When directory authorities reject a router descriptor due to
14798      keypinning, free the router descriptor rather than leaking the
14799      memory. Fixes bug 22370; bugfix on 0.2.7.2-alpha.
14800
14801
14802Changes in version 0.3.1.1-alpha - 2017-05-22
14803  Tor 0.3.1.1-alpha is the first release in the 0.3.1.x series. It
14804  reduces the bandwidth usage for Tor's directory protocol, adds some
14805  basic padding to resist netflow-based traffic analysis and to serve as
14806  the basis of other padding in the future, and adds rust support to the
14807  build system.
14808
14809  It also contains numerous other small features and improvements to
14810  security, correctness, and performance.
14811
14812  Below are the changes since 0.3.0.7.
14813
14814  o Major features (directory protocol):
14815    - Tor relays and authorities can now serve clients an abbreviated
14816      version of the consensus document, containing only the changes
14817      since an older consensus document that the client holds. Clients
14818      now request these documents when available. When both client and
14819      server use this new protocol, they will use far less bandwidth (up
14820      to 94% less) to keep the client's consensus up-to-date. Implements
14821      proposal 140; closes ticket 13339. Based on work by Daniel Martí.
14822    - Tor can now compress directory traffic with lzma or with zstd
14823      compression algorithms, which can deliver better bandwidth
14824      performance. Because lzma is computationally expensive, it's only
14825      used for documents that can be compressed once and served many
14826      times. Support for these algorithms requires that tor is built
14827      with the libzstd and/or liblzma libraries available. Implements
14828      proposal 278; closes ticket 21662.
14829    - Relays now perform the more expensive compression operations, and
14830      consensus diff generation, in worker threads. This separation
14831      avoids delaying the main thread when a new consensus arrives.
14832
14833  o Major features (experimental):
14834    - Tor can now build modules written in Rust. To turn this on, pass
14835      the "--enable-rust" flag to the configure script. It's not time to
14836      get excited yet: currently, there is no actual Rust functionality
14837      beyond some simple glue code, and a notice at startup to tell you
14838      that Rust is running. Still, we hope that programmers and
14839      packagers will try building Tor with Rust support, so that we can
14840      find issues and solve portability problems. Closes ticket 22106.
14841
14842  o Major features (traffic analysis resistance):
14843    - Connections between clients and relays now send a padding cell in
14844      each direction every 1.5 to 9.5 seconds (tunable via consensus
14845      parameters). This padding will not resist specialized
14846      eavesdroppers, but it should be enough to make many ISPs' routine
14847      network flow logging less useful in traffic analysis against
14848      Tor users.
14849
14850      Padding is negotiated using Tor's link protocol, so both relays
14851      and clients must upgrade for this to take effect. Clients may
14852      still send padding despite the relay's version by setting
14853      ConnectionPadding 1 in torrc, and may disable padding by setting
14854      ConnectionPadding 0 in torrc. Padding may be minimized for mobile
14855      users with the torrc option ReducedConnectionPadding. Implements
14856      Proposal 251 and Section 2 of Proposal 254; closes ticket 16861.
14857    - Relays will publish 24 hour totals of padding and non-padding cell
14858      counts to their extra-info descriptors, unless PaddingStatistics 0
14859      is set in torrc. These 24 hour totals are also rounded to
14860      multiples of 10000.
14861
14862  o Major bugfixes (connection usage):
14863    - We use NETINFO cells to try to determine if both relays involved
14864      in a connection will agree on the canonical status of that
14865      connection. We prefer the connections where this is the case for
14866      extend cells, and try to close connections where relays disagree
14867      on their canonical status early. Also, we now prefer the oldest
14868      valid connection for extend cells. These two changes should reduce
14869      the number of long-term connections that are kept open between
14870      relays. Fixes bug 17604; bugfix on 0.2.5.5-alpha.
14871    - Relays now log hourly statistics (look for
14872      "channel_check_for_duplicates" lines) on the total number of
14873      connections to other relays. If the number of connections per
14874      relay is unexpectedly large, this log message is at notice level.
14875      Otherwise it is at info.
14876
14877  o Major bugfixes (entry guards):
14878    - Don't block bootstrapping when a primary bridge is offline and we
14879      can't get its descriptor. Fixes bug 22325; fixes one case of bug
14880      21969; bugfix on 0.3.0.3-alpha.
14881
14882  o Major bugfixes (linux TPROXY support):
14883    - Fix a typo that had prevented TPROXY-based transparent proxying
14884      from working under Linux. Fixes bug 18100; bugfix on 0.2.6.3-alpha.
14885      Patch from "d4fq0fQAgoJ".
14886
14887  o Minor features (security, windows):
14888    - Enable a couple of pieces of Windows hardening: one
14889      (HeapEnableTerminationOnCorruption) that has been on-by-default
14890      since Windows 8, and unavailable before Windows 7; and one
14891      (PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION) which we believe doesn't
14892      affect us, but shouldn't do any harm. Closes ticket 21953.
14893
14894  o Minor features (config options):
14895    - Allow "%include" directives in torrc configuration files. These
14896      directives import the settings from other files, or from all the
14897      files in a directory. Closes ticket 1922. Code by Daniel Pinto.
14898    - Make SAVECONF return an error when overwriting a torrc that has
14899      includes. Using SAVECONF with the FORCE option will allow it to
14900      overwrite torrc even if includes are used. Related to ticket 1922.
14901    - Add "GETINFO config-can-saveconf" to tell controllers if SAVECONF
14902      will work without the FORCE option. Related to ticket 1922.
14903
14904  o Minor features (controller):
14905    - Warn the first time that a controller requests data in the long-
14906      deprecated 'GETINFO network-status' format. Closes ticket 21703.
14907
14908  o Minor features (defaults):
14909    - The default value for UseCreateFast is now 0: clients which
14910      haven't yet received a consensus document will now use a proper
14911      ntor handshake to talk to their directory servers whenever they
14912      can. Closes ticket 21407.
14913    - Onion key rotation and expiry intervals are now defined as a
14914      network consensus parameter, per proposal 274. The default
14915      lifetime of an onion key is increased from 7 to 28 days. Old onion
14916      keys will expire after 7 days by default. This change will make
14917      consensus diffs much smaller, and save significant bandwidth.
14918      Closes ticket 21641.
14919
14920  o Minor features (fallback directory list):
14921    - Update the fallback directory mirror whitelist and blacklist based
14922      on operator emails. Closes task 21121.
14923    - Replace the 177 fallbacks originally introduced in Tor 0.2.9.8 in
14924      December 2016 (of which ~126 were still functional) with a list of
14925      151 fallbacks (32 new, 119 unchanged, 58 removed) generated in May
14926      2017. Resolves ticket 21564.
14927
14928  o Minor features (hidden services, logging):
14929    - Log a message when a hidden service descriptor has fewer
14930      introduction points than specified in
14931      HiddenServiceNumIntroductionPoints. Closes tickets 21598.
14932    - Log a message when a hidden service reaches its introduction point
14933      circuit limit, and when that limit is reset. Follow up to ticket
14934      21594; closes ticket 21622.
14935    - Warn user if multiple entries in EntryNodes and at least one
14936      HiddenService are used together. Pinning EntryNodes along with a
14937      hidden service can be possibly harmful; for instance see ticket
14938      14917 or 21155. Closes ticket 21155.
14939
14940  o Minor features (linux seccomp2 sandbox):
14941    - We now have a document storage backend compatible with the Linux
14942      seccomp2 sandbox. This backend is used for consensus documents and
14943      diffs between them; in the long term, we'd like to use it for
14944      unparseable directory material too. Closes ticket 21645
14945    - Increase the maximum allowed size passed to mprotect(PROT_WRITE)
14946      from 1MB to 16MB. This was necessary with the glibc allocator in
14947      order to allow worker threads to allocate more memory -- which in
14948      turn is necessary because of our new use of worker threads for
14949      compression. Closes ticket 22096.
14950
14951  o Minor features (logging):
14952    - Log files are no longer created world-readable by default.
14953      (Previously, most distributors would store the logs in a non-
14954      world-readable location to prevent inappropriate access. This
14955      change is an extra precaution.) Closes ticket 21729; patch
14956      from toralf.
14957
14958  o Minor features (performance):
14959    - Our Keccak (SHA-3) implementation now accesses memory more
14960      efficiently, especially on little-endian systems. Closes
14961      ticket 21737.
14962    - Add an O(1) implementation of channel_find_by_global_id(), to
14963      speed some controller functions.
14964
14965  o Minor features (relay, configuration):
14966    - The MyFamily option may now be repeated as many times as desired,
14967      for relays that want to configure large families. Closes ticket
14968      4998; patch by Daniel Pinto.
14969
14970  o Minor features (safety):
14971    - Add an explicit check to extrainfo_parse_entry_from_string() for
14972      NULL inputs. We don't believe this can actually happen, but it may
14973      help silence a warning from the Clang analyzer. Closes
14974      ticket 21496.
14975
14976  o Minor features (testing):
14977    - Add a "--disable-memory-sentinels" feature to help with fuzzing.
14978      When Tor is compiled with this option, we disable a number of
14979      redundant memory-safety failsafes that are intended to stop bugs
14980      from becoming security issues. This makes it easier to hunt for
14981      bugs that would be security issues without the failsafes turned
14982      on. Closes ticket 21439.
14983    - Add a general event-tracing instrumentation support to Tor. This
14984      subsystem will enable developers and researchers to add fine-
14985      grained instrumentation to their Tor instances, for use when
14986      examining Tor network performance issues. There are no trace
14987      events yet, and event-tracing is off by default unless enabled at
14988      compile time. Implements ticket 13802.
14989    - Improve our version parsing tests: add tests for typical version
14990      components, add tests for invalid versions, including numeric
14991      range and non-numeric prefixes. Unit tests 21278, 21450, and
14992      21507. Partially implements 21470.
14993
14994  o Minor bugfixes (bandwidth accounting):
14995    - Roll over monthly accounting at the configured hour and minute,
14996      rather than always at 00:00. Fixes bug 22245; bugfix on 0.0.9rc1.
14997      Found by Andrey Karpov with PVS-Studio.
14998
14999  o Minor bugfixes (code correctness):
15000    - Accurately identify client connections by their lack of peer
15001      authentication. This means that we bail out earlier if asked to
15002      extend to a client. Follow-up to 21407. Fixes bug 21406; bugfix
15003      on 0.2.4.23.
15004
15005  o Minor bugfixes (configuration):
15006    - Do not crash when starting with LearnCircuitBuildTimeout 0. Fixes
15007      bug 22252; bugfix on 0.2.9.3-alpha.
15008
15009  o Minor bugfixes (connection lifespan):
15010    - Allow more control over how long TLS connections are kept open:
15011      unify CircuitIdleTimeout and PredictedPortsRelevanceTime into a
15012      single option called CircuitsAvailableTimeout. Also, allow the
15013      consensus to control the default values for both this preference
15014      and the lifespan of relay-to-relay connections. Fixes bug 17592;
15015      bugfix on 0.2.5.5-alpha.
15016    - Increase the initial circuit build timeout testing frequency, to
15017      help ensure that ReducedConnectionPadding clients finish learning
15018      a timeout before their orconn would expire. The initial testing
15019      rate was set back in the days of TAP and before the Tor Browser
15020      updater, when we had to be much more careful about new clients
15021      making lots of circuits. With this change, a circuit build timeout
15022      is learned in about 15-20 minutes, instead of 100-120 minutes.
15023
15024  o Minor bugfixes (controller):
15025    - GETINFO onions/current and onions/detached no longer respond with
15026      551 on empty lists. Fixes bug 21329; bugfix on 0.2.7.1-alpha.
15027    - Trigger HS descriptor events on the control port when the client
15028      fails to pick a hidden service directory for a hidden service.
15029      This can happen if all the hidden service directories are in
15030      ExcludeNodes, or they have all been queried within the last 15
15031      minutes. Fixes bug 22042; bugfix on 0.2.5.2-alpha.
15032
15033  o Minor bugfixes (directory authority):
15034    - When rejecting a router descriptor for running an obsolete version
15035      of Tor without ntor support, warn about the obsolete tor version,
15036      not the missing ntor key. Fixes bug 20270; bugfix on 0.2.9.3-alpha.
15037    - Prevent the shared randomness subsystem from asserting when
15038      initialized by a bridge authority with an incomplete configuration
15039      file. Fixes bug 21586; bugfix on 0.2.9.8.
15040
15041  o Minor bugfixes (exit-side DNS):
15042    - Fix an untriggerable assertion that checked the output of a
15043      libevent DNS error, so that the assertion actually behaves as
15044      expected. Fixes bug 22244; bugfix on 0.2.0.20-rc. Found by Andrey
15045      Karpov using PVS-Studio.
15046
15047  o Minor bugfixes (fallback directories):
15048    - Make the usage example in updateFallbackDirs.py actually work, and
15049      explain what it does. Fixes bug 22270; bugfix on 0.3.0.3-alpha.
15050    - Decrease the guard flag average required to be a fallback. This
15051      allows us to keep relays that have their guard flag removed when
15052      they restart. Fixes bug 20913; bugfix on 0.2.8.1-alpha.
15053    - Decrease the minimum number of fallbacks to 100. Fixes bug 20913;
15054      bugfix on 0.2.8.1-alpha.
15055    - Make sure fallback directory mirrors have the same address, port,
15056      and relay identity key for at least 30 days before they are
15057      selected. Fixes bug 20913; bugfix on 0.2.8.1-alpha.
15058
15059  o Minor bugfixes (hidden services):
15060    - Stop printing a cryptic warning when a hidden service gets a
15061      request to connect to a virtual port that it hasn't configured.
15062      Fixes bug 16706; bugfix on 0.2.6.3-alpha.
15063    - Simplify hidden service descriptor creation by using an existing
15064      flag to check if an introduction point is established. Fixes bug
15065      21599; bugfix on 0.2.7.2-alpha.
15066
15067  o Minor bugfixes (memory leak):
15068    - Fix a small memory leak at exit from the backtrace handler code.
15069      Fixes bug 21788; bugfix on 0.2.5.2-alpha. Patch from Daniel Pinto.
15070
15071  o Minor bugfixes (protocol, logging):
15072    - Downgrade a log statement about unexpected relay cells from "bug"
15073      to "protocol warning", because there is at least one use case
15074      where it can be triggered by a buggy tor implementation. Fixes bug
15075      21293; bugfix on 0.1.1.14-alpha.
15076
15077  o Minor bugfixes (testing):
15078    - Use unbuffered I/O for utility functions around the
15079      process_handle_t type. This fixes unit test failures reported on
15080      OpenBSD and FreeBSD. Fixes bug 21654; bugfix on 0.2.3.1-alpha.
15081    - Make display of captured unit test log messages consistent. Fixes
15082      bug 21510; bugfix on 0.2.9.3-alpha.
15083    - Make test-network.sh always call chutney's test-network.sh.
15084      Previously, this only worked on systems which had bash installed,
15085      due to some bash-specific code in the script. Fixes bug 19699;
15086      bugfix on 0.3.0.4-rc. Follow-up to ticket 21581.
15087
15088  o Minor bugfixes (voting consistency):
15089    - Reject version numbers with non-numeric prefixes (such as +, -, or
15090      whitespace). Disallowing whitespace prevents differential version
15091      parsing between POSIX-based and Windows platforms. Fixes bug 21507
15092      and part of 21508; bugfix on 0.0.8pre1.
15093
15094  o Minor bugfixes (windows, relay):
15095    - Resolve "Failure from drain_fd: No error" warnings on Windows
15096      relays. Fixes bug 21540; bugfix on 0.2.6.3-alpha.
15097
15098  o Code simplification and refactoring:
15099    - Break up the 630-line function connection_dir_client_reached_eof()
15100      into a dozen smaller functions. This change should help
15101      maintainability and readability of the client directory code.
15102    - Isolate our use of the openssl headers so that they are only
15103      included from our crypto wrapper modules, and from tests that
15104      examine those modules' internals. Closes ticket 21841.
15105    - Simplify our API to launch directory requests, making it more
15106      extensible and less error-prone. Now it's easier to add extra
15107      headers to directory requests. Closes ticket 21646.
15108    - Our base64 decoding functions no longer overestimate the output
15109      space that they need when parsing unpadded inputs. Closes
15110      ticket 17868.
15111    - Remove unused "ROUTER_ADDED_NOTIFY_GENERATOR" internal value.
15112      Resolves ticket 22213.
15113    - The logic that directory caches use to spool request to clients,
15114      serving them one part at a time so as not to allocate too much
15115      memory, has been refactored for consistency. Previously there was
15116      a separate spooling implementation per type of spoolable data. Now
15117      there is one common spooling implementation, with extensible data
15118      types. Closes ticket 21651.
15119    - Tor's compression module now supports multiple backends. Part of
15120      the implementation for proposal 278; closes ticket 21663.
15121
15122  o Documentation:
15123    - Clarify the behavior of the KeepAliveIsolateSOCKSAuth sub-option.
15124      Closes ticket 21873.
15125    - Correct documentation about the default DataDirectory value.
15126      Closes ticket 21151.
15127    - Document the default behavior of NumEntryGuards and
15128      NumDirectoryGuards correctly. Fixes bug 21715; bugfix
15129      on 0.3.0.1-alpha.
15130    - Document key=value pluggable transport arguments for Bridge lines
15131      in torrc. Fixes bug 20341; bugfix on 0.2.5.1-alpha.
15132    - Note that bandwidth-limiting options don't affect TCP headers or
15133      DNS. Closes ticket 17170.
15134
15135  o Removed features (configuration options, all in ticket 22060):
15136    - These configuration options are now marked Obsolete, and no longer
15137      have any effect: AllowInvalidNodes, AllowSingleHopCircuits,
15138      AllowSingleHopExits, ExcludeSingleHopRelays, FastFirstHopPK,
15139      TLSECGroup, WarnUnsafeSocks. They were first marked as deprecated
15140      in 0.2.9.2-alpha and have now been removed. The previous default
15141      behavior is now always chosen; the previous (less secure) non-
15142      default behavior is now unavailable.
15143    - CloseHSClientCircuitsImmediatelyOnTimeout and
15144      CloseHSServiceRendCircuitsImmediatelyOnTimeout were deprecated in
15145      0.2.9.2-alpha and now have been removed. HS circuits never close
15146      on circuit build timeout; they have a longer timeout period.
15147    - {Control,DNS,Dir,Socks,Trans,NATD,OR}ListenAddress were deprecated
15148      in 0.2.9.2-alpha and now have been removed. Use the ORPort option
15149      (and others) to configure listen-only and advertise-only addresses.
15150
15151  o Removed features (tools):
15152    - We've removed the tor-checkkey tool from src/tools. Long ago, we
15153      used it to help people detect RSA keys that were generated by
15154      versions of Debian affected by CVE-2008-0166. But those keys have
15155      been out of circulation for ages, and this tool is no longer
15156      required. Closes ticket 21842.
15157
15158
15159Changes in version 0.3.0.7 - 2017-05-15
15160  Tor 0.3.0.7 fixes a medium-severity security bug in earlier versions
15161  of Tor 0.3.0.x, where an attacker could cause a Tor relay process
15162  to exit. Relays running earlier versions of Tor 0.3.0.x should upgrade;
15163  clients are not affected.
15164
15165  o Major bugfixes (hidden service directory, security):
15166    - Fix an assertion failure in the hidden service directory code, which
15167      could be used by an attacker to remotely cause a Tor relay process to
15168      exit. Relays running earlier versions of Tor 0.3.0.x should upgrade.
15169      should upgrade. This security issue is tracked as TROVE-2017-002.
15170      Fixes bug 22246; bugfix on 0.3.0.1-alpha.
15171
15172  o Minor features:
15173    - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
15174      Country database.
15175
15176  o Minor features (future-proofing):
15177    - Tor no longer refuses to download microdescriptors or descriptors
15178      if they are listed as "published in the future". This change will
15179      eventually allow us to stop listing meaningful "published" dates
15180      in microdescriptor consensuses, and thereby allow us to reduce the
15181      resources required to download consensus diffs by over 50%.
15182      Implements part of ticket 21642; implements part of proposal 275.
15183
15184  o Minor bugfixes (Linux seccomp2 sandbox):
15185    - The getpid() system call is now permitted under the Linux seccomp2
15186      sandbox, to avoid crashing with versions of OpenSSL (and other
15187      libraries) that attempt to learn the process's PID by using the
15188      syscall rather than the VDSO code. Fixes bug 21943; bugfix
15189      on 0.2.5.1-alpha.
15190
15191
15192Changes in version 0.3.0.6 - 2017-04-26
15193  Tor 0.3.0.6 is the first stable release of the Tor 0.3.0 series.
15194
15195  With the 0.3.0 series, clients and relays now use Ed25519 keys to
15196  authenticate their link connections to relays, rather than the old
15197  RSA1024 keys that they used before. (Circuit crypto has been
15198  Curve25519-authenticated since 0.2.4.8-alpha.) We have also replaced
15199  the guard selection and replacement algorithm to behave more robustly
15200  in the presence of unreliable networks, and to resist guard-
15201  capture attacks.
15202
15203  This series also includes numerous other small features and bugfixes,
15204  along with more groundwork for the upcoming hidden-services revamp.
15205
15206  Per our stable release policy, we plan to support the Tor 0.3.0
15207  release series for at least the next nine months, or for three months
15208  after the first stable release of the 0.3.1 series: whichever is
15209  longer. If you need a release with long-term support, we recommend
15210  that you stay with the 0.2.9 series.
15211
15212  Below are the changes since 0.3.0.5-rc. For a list of all changes
15213  since 0.2.9, see the ReleaseNotes file.
15214
15215  o Minor features (geoip):
15216    - Update geoip and geoip6 to the April 4 2017 Maxmind GeoLite2
15217      Country database.
15218
15219  o Minor bugfixes (control port):
15220    - The GETINFO extra-info/digest/<digest> command was broken because
15221      of a wrong base16 decode return value check, introduced when
15222      refactoring that API. Fixes bug 22034; bugfix on 0.2.9.1-alpha.
15223
15224  o Minor bugfixes (crash prevention):
15225    - Fix a (currently untriggerable, but potentially dangerous) crash
15226      bug when base32-encoding inputs whose sizes are not a multiple of
15227      5. Fixes bug 21894; bugfix on 0.2.9.1-alpha.
15228
15229
15230Changes in version 0.3.0.5-rc - 2017-04-05
15231  Tor 0.3.0.5-rc fixes a few remaining bugs, large and small, in the
15232  0.3.0 release series.
15233
15234  This is the second release candidate in the Tor 0.3.0 series, and has
15235  much fewer changes than the first. If we find no new bugs or
15236  regressions here, the first stable 0.3.0 release will be nearly
15237  identical to it.
15238
15239  o Major bugfixes (crash, directory connections):
15240    - Fix a rare crash when sending a begin cell on a circuit whose
15241      linked directory connection had already been closed. Fixes bug
15242      21576; bugfix on 0.2.9.3-alpha. Reported by Alec Muffett.
15243
15244  o Major bugfixes (guard selection):
15245    - Fix a guard selection bug where Tor would refuse to bootstrap in
15246      some cases if the user swapped a bridge for another bridge in
15247      their configuration file. Fixes bug 21771; bugfix on 0.3.0.1-alpha.
15248      Reported by "torvlnt33r".
15249
15250  o Minor features (geoip):
15251    - Update geoip and geoip6 to the March 7 2017 Maxmind GeoLite2
15252      Country database.
15253
15254  o Minor bugfix (compilation):
15255    - Fix a warning when compiling hs_service.c. Previously, it had no
15256      exported symbols when compiled for libor.a, resulting in a
15257      compilation warning from clang. Fixes bug 21825; bugfix
15258      on 0.3.0.1-alpha.
15259
15260  o Minor bugfixes (hidden services):
15261    - Make hidden services check for failed intro point connections,
15262      even when they have exceeded their intro point creation limit.
15263      Fixes bug 21596; bugfix on 0.2.7.2-alpha. Reported by Alec Muffett.
15264    - Make hidden services with 8 to 10 introduction points check for
15265      failed circuits immediately after startup. Previously, they would
15266      wait for 5 minutes before performing their first checks. Fixes bug
15267      21594; bugfix on 0.2.3.9-alpha. Reported by Alec Muffett.
15268
15269  o Minor bugfixes (memory leaks):
15270    - Fix a memory leak when using GETCONF on a port option. Fixes bug
15271      21682; bugfix on 0.3.0.3-alpha.
15272
15273  o Minor bugfixes (relay):
15274    - Avoid a double-marked-circuit warning that could happen when we
15275      receive DESTROY cells under heavy load. Fixes bug 20059; bugfix
15276      on 0.1.0.1-rc.
15277
15278  o Minor bugfixes (tests):
15279    - Run the entry_guard_parse_from_state_full() test with the time set
15280      to a specific date. (The guard state that this test was parsing
15281      contained guards that had expired since the test was first
15282      written.) Fixes bug 21799; bugfix on 0.3.0.1-alpha.
15283
15284  o Documentation:
15285    - Update the description of the directory server options in the
15286      manual page, to clarify that a relay no longer needs to set
15287      DirPort in order to be a directory cache. Closes ticket 21720.
15288
15289
15290
15291Changes in version 0.2.8.13 - 2017-03-03
15292  Tor 0.2.8.13 backports a security fix from later Tor
15293  releases.  Anybody running Tor 0.2.8.12 or earlier should upgrade to this
15294  this release, if for some reason they cannot upgrade to a later
15295  release series, and if they build Tor with the --enable-expensive-hardening
15296  option.
15297
15298  Note that support for Tor 0.2.8.x is ending next year: we will not issue
15299  any fixes for the Tor 0.2.8.x series after 1 Jan 2018.  If you need
15300  a Tor release series with longer-term support, we recommend Tor 0.2.9.x.
15301
15302  o Major bugfixes (parsing, backported from 0.3.0.4-rc):
15303    - Fix an integer underflow bug when comparing malformed Tor
15304      versions. This bug could crash Tor when built with
15305      --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
15306      0.2.9.8, which were built with -ftrapv by default. In other cases
15307      it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
15308      on 0.0.8pre1. Found by OSS-Fuzz.
15309
15310  o Minor features (geoip):
15311    - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
15312      Country database.
15313
15314
15315Changes in version 0.2.7.7 - 2017-03-03
15316  Tor 0.2.7.7 backports a number of security fixes from later Tor
15317  releases.  Anybody running Tor 0.2.7.6 or earlier should upgrade to
15318  this release, if for some reason they cannot upgrade to a later
15319  release series.
15320
15321  Note that support for Tor 0.2.7.x is ending this year: we will not issue
15322  any fixes for the Tor 0.2.7.x series after 1 August 2017.  If you need
15323  a Tor release series with longer-term support, we recommend Tor 0.2.9.x.
15324
15325  o Directory authority changes (backport from 0.2.8.5-rc):
15326    - Urras is no longer a directory authority. Closes ticket 19271.
15327
15328  o Directory authority changes (backport from 0.2.9.2-alpha):
15329    - The "Tonga" bridge authority has been retired; the new bridge
15330      authority is "Bifroest". Closes tickets 19728 and 19690.
15331
15332  o Directory authority key updates (backport from 0.2.8.1-alpha):
15333    - Update the V3 identity key for the dannenberg directory authority:
15334      it was changed on 18 November 2015. Closes task 17906. Patch
15335      by "teor".
15336
15337  o Major bugfixes (parsing, security, backport from 0.2.9.8):
15338    - Fix a bug in parsing that could cause clients to read a single
15339      byte past the end of an allocated region. This bug could be used
15340      to cause hardened clients (built with --enable-expensive-hardening)
15341      to crash if they tried to visit a hostile hidden service. Non-
15342      hardened clients are only affected depending on the details of
15343      their platform's memory allocator. Fixes bug 21018; bugfix on
15344      0.2.0.8-alpha. Found by using libFuzzer. Also tracked as TROVE-
15345      2016-12-002 and as CVE-2016-1254.
15346
15347  o Major bugfixes (security, client, DNS proxy, backport from 0.2.8.3-alpha):
15348    - Stop a crash that could occur when a client running with DNSPort
15349      received a query with multiple address types, and the first
15350      address type was not supported. Found and fixed by Scott Dial.
15351      Fixes bug 18710; bugfix on 0.2.5.4-alpha.
15352    - Prevent a class of security bugs caused by treating the contents
15353      of a buffer chunk as if they were a NUL-terminated string. At
15354      least one such bug seems to be present in all currently used
15355      versions of Tor, and would allow an attacker to remotely crash
15356      most Tor instances, especially those compiled with extra compiler
15357      hardening. With this defense in place, such bugs can't crash Tor,
15358      though we should still fix them as they occur. Closes ticket
15359      20384 (TROVE-2016-10-001).
15360
15361  o Major bugfixes (security, pointers, backport from 0.2.8.2-alpha):
15362    - Avoid a difficult-to-trigger heap corruption attack when extending
15363      a smartlist to contain over 16GB of pointers. Fixes bug 18162;
15364      bugfix on 0.1.1.11-alpha, which fixed a related bug incompletely.
15365      Reported by Guido Vranken.
15366
15367  o Major bugfixes (dns proxy mode, crash, backport from 0.2.8.2-alpha):
15368    - Avoid crashing when running as a DNS proxy. Fixes bug 16248;
15369      bugfix on 0.2.0.1-alpha. Patch from "cypherpunks".
15370
15371  o Major bugfixes (key management, backport from 0.2.8.3-alpha):
15372    - If OpenSSL fails to generate an RSA key, do not retain a dangling
15373      pointer to the previous (uninitialized) key value. The impact here
15374      should be limited to a difficult-to-trigger crash, if OpenSSL is
15375      running an engine that makes key generation failures possible, or
15376      if OpenSSL runs out of memory. Fixes bug 19152; bugfix on
15377      0.2.1.10-alpha. Found by Yuan Jochen Kang, Suman Jana, and
15378      Baishakhi Ray.
15379
15380  o Major bugfixes (parsing, backported from 0.3.0.4-rc):
15381    - Fix an integer underflow bug when comparing malformed Tor
15382      versions. This bug could crash Tor when built with
15383      --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
15384      0.2.9.8, which were built with -ftrapv by default. In other cases
15385      it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
15386      on 0.0.8pre1. Found by OSS-Fuzz.
15387
15388  o Minor features (security, memory erasure, backport from 0.2.8.1-alpha):
15389    - Make memwipe() do nothing when passed a NULL pointer or buffer of
15390      zero size. Check size argument to memwipe() for underflow. Fixes
15391      bug 18089; bugfix on 0.2.3.25 and 0.2.4.6-alpha. Reported by "gk",
15392      patch by "teor".
15393
15394  o Minor features (bug-resistance, backport from 0.2.8.2-alpha):
15395    - Make Tor survive errors involving connections without a
15396      corresponding event object. Previously we'd fail with an
15397      assertion; now we produce a log message. Related to bug 16248.
15398
15399  o Minor features (geoip):
15400    - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
15401      Country database.
15402
15403
15404Changes in version 0.2.6.11 - 2017-03-03
15405  Tor 0.2.6.11 backports a number of security fixes from later Tor
15406  releases.  Anybody running Tor 0.2.6.10 or earlier should upgrade to
15407  this release, if for some reason they cannot upgrade to a later
15408  release series.
15409
15410  Note that support for Tor 0.2.6.x is ending this year: we will not issue
15411  any fixes for the Tor 0.2.6.x series after 1 August 2017.  If you need
15412  a Tor release series with longer-term support, we recommend Tor 0.2.9.x.
15413
15414  o Directory authority changes (backport from 0.2.8.5-rc):
15415    - Urras is no longer a directory authority. Closes ticket 19271.
15416
15417  o Directory authority changes (backport from 0.2.9.2-alpha):
15418    - The "Tonga" bridge authority has been retired; the new bridge
15419      authority is "Bifroest". Closes tickets 19728 and 19690.
15420
15421  o Directory authority key updates (backport from 0.2.8.1-alpha):
15422    - Update the V3 identity key for the dannenberg directory authority:
15423      it was changed on 18 November 2015. Closes task 17906. Patch
15424      by "teor".
15425
15426  o Major features (security fixes, backport from 0.2.9.4-alpha):
15427    - Prevent a class of security bugs caused by treating the contents
15428      of a buffer chunk as if they were a NUL-terminated string. At
15429      least one such bug seems to be present in all currently used
15430      versions of Tor, and would allow an attacker to remotely crash
15431      most Tor instances, especially those compiled with extra compiler
15432      hardening. With this defense in place, such bugs can't crash Tor,
15433      though we should still fix them as they occur. Closes ticket
15434      20384 (TROVE-2016-10-001).
15435
15436  o Major bugfixes (parsing, security, backport from 0.2.9.8):
15437    - Fix a bug in parsing that could cause clients to read a single
15438      byte past the end of an allocated region. This bug could be used
15439      to cause hardened clients (built with --enable-expensive-hardening)
15440      to crash if they tried to visit a hostile hidden service. Non-
15441      hardened clients are only affected depending on the details of
15442      their platform's memory allocator. Fixes bug 21018; bugfix on
15443      0.2.0.8-alpha. Found by using libFuzzer. Also tracked as TROVE-
15444      2016-12-002 and as CVE-2016-1254.
15445
15446  o Major bugfixes (security, client, DNS proxy, backport from 0.2.8.3-alpha):
15447    - Stop a crash that could occur when a client running with DNSPort
15448      received a query with multiple address types, and the first
15449      address type was not supported. Found and fixed by Scott Dial.
15450      Fixes bug 18710; bugfix on 0.2.5.4-alpha.
15451
15452  o Major bugfixes (security, correctness, backport from 0.2.7.4-rc):
15453    - Fix an error that could cause us to read 4 bytes before the
15454      beginning of an openssl string. This bug could be used to cause
15455      Tor to crash on systems with unusual malloc implementations, or
15456      systems with unusual hardening installed. Fixes bug 17404; bugfix
15457      on 0.2.3.6-alpha.
15458
15459  o Major bugfixes (security, pointers, backport from 0.2.8.2-alpha):
15460    - Avoid a difficult-to-trigger heap corruption attack when extending
15461      a smartlist to contain over 16GB of pointers. Fixes bug 18162;
15462      bugfix on 0.1.1.11-alpha, which fixed a related bug incompletely.
15463      Reported by Guido Vranken.
15464
15465  o Major bugfixes (dns proxy mode, crash, backport from 0.2.8.2-alpha):
15466    - Avoid crashing when running as a DNS proxy. Fixes bug 16248;
15467      bugfix on 0.2.0.1-alpha. Patch from "cypherpunks".
15468
15469  o Major bugfixes (guard selection, backport from 0.2.7.6):
15470    - Actually look at the Guard flag when selecting a new directory
15471      guard. When we implemented the directory guard design, we
15472      accidentally started treating all relays as if they have the Guard
15473      flag during guard selection, leading to weaker anonymity and worse
15474      performance. Fixes bug 17772; bugfix on 0.2.4.8-alpha. Discovered
15475      by Mohsen Imani.
15476
15477  o Major bugfixes (key management, backport from 0.2.8.3-alpha):
15478    - If OpenSSL fails to generate an RSA key, do not retain a dangling
15479      pointer to the previous (uninitialized) key value. The impact here
15480      should be limited to a difficult-to-trigger crash, if OpenSSL is
15481      running an engine that makes key generation failures possible, or
15482      if OpenSSL runs out of memory. Fixes bug 19152; bugfix on
15483      0.2.1.10-alpha. Found by Yuan Jochen Kang, Suman Jana, and
15484      Baishakhi Ray.
15485
15486  o Major bugfixes (parsing, backported from 0.3.0.4-rc):
15487    - Fix an integer underflow bug when comparing malformed Tor
15488      versions. This bug could crash Tor when built with
15489      --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
15490      0.2.9.8, which were built with -ftrapv by default. In other cases
15491      it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
15492      on 0.0.8pre1. Found by OSS-Fuzz.
15493
15494  o Minor features (security, memory erasure, backport from 0.2.8.1-alpha):
15495    - Make memwipe() do nothing when passed a NULL pointer or buffer of
15496      zero size. Check size argument to memwipe() for underflow. Fixes
15497      bug 18089; bugfix on 0.2.3.25 and 0.2.4.6-alpha. Reported by "gk",
15498      patch by "teor".
15499
15500  o Minor features (bug-resistance, backport from 0.2.8.2-alpha):
15501    - Make Tor survive errors involving connections without a
15502      corresponding event object. Previously we'd fail with an
15503      assertion; now we produce a log message. Related to bug 16248.
15504
15505  o Minor features (geoip):
15506    - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
15507      Country database.
15508
15509  o Minor bugfixes (compilation, backport from 0.2.7.6):
15510    - Fix a compilation warning with Clang 3.6: Do not check the
15511      presence of an address which can never be NULL. Fixes bug 17781.
15512
15513
15514Changes in version 0.2.5.13 - 2017-03-03
15515  Tor 0.2.5.13 backports a number of security fixes from later Tor
15516  releases.  Anybody running Tor 0.2.5.13 or earlier should upgrade to
15517  this release, if for some reason they cannot upgrade to a later
15518  release series.
15519
15520  Note that support for Tor 0.2.5.x is ending next year: we will not issue
15521  any fixes for the Tor 0.2.5.x series after 1 May 2018.  If you need
15522  a Tor release series with longer-term support, we recommend Tor 0.2.9.x.
15523
15524  o Directory authority changes (backport from 0.2.8.5-rc):
15525    - Urras is no longer a directory authority. Closes ticket 19271.
15526
15527  o Directory authority changes (backport from 0.2.9.2-alpha):
15528    - The "Tonga" bridge authority has been retired; the new bridge
15529      authority is "Bifroest". Closes tickets 19728 and 19690.
15530
15531  o Directory authority key updates (backport from 0.2.8.1-alpha):
15532    - Update the V3 identity key for the dannenberg directory authority:
15533      it was changed on 18 November 2015. Closes task 17906. Patch
15534      by "teor".
15535
15536  o Major features (security fixes, backport from 0.2.9.4-alpha):
15537    - Prevent a class of security bugs caused by treating the contents
15538      of a buffer chunk as if they were a NUL-terminated string. At
15539      least one such bug seems to be present in all currently used
15540      versions of Tor, and would allow an attacker to remotely crash
15541      most Tor instances, especially those compiled with extra compiler
15542      hardening. With this defense in place, such bugs can't crash Tor,
15543      though we should still fix them as they occur. Closes ticket
15544      20384 (TROVE-2016-10-001).
15545
15546  o Major bugfixes (parsing, security, backport from 0.2.9.8):
15547    - Fix a bug in parsing that could cause clients to read a single
15548      byte past the end of an allocated region. This bug could be used
15549      to cause hardened clients (built with --enable-expensive-hardening)
15550      to crash if they tried to visit a hostile hidden service. Non-
15551      hardened clients are only affected depending on the details of
15552      their platform's memory allocator. Fixes bug 21018; bugfix on
15553      0.2.0.8-alpha. Found by using libFuzzer. Also tracked as TROVE-
15554      2016-12-002 and as CVE-2016-1254.
15555
15556  o Major bugfixes (security, client, DNS proxy, backport from 0.2.8.3-alpha):
15557    - Stop a crash that could occur when a client running with DNSPort
15558      received a query with multiple address types, and the first
15559      address type was not supported. Found and fixed by Scott Dial.
15560      Fixes bug 18710; bugfix on 0.2.5.4-alpha.
15561
15562  o Major bugfixes (security, correctness, backport from 0.2.7.4-rc):
15563    - Fix an error that could cause us to read 4 bytes before the
15564      beginning of an openssl string. This bug could be used to cause
15565      Tor to crash on systems with unusual malloc implementations, or
15566      systems with unusual hardening installed. Fixes bug 17404; bugfix
15567      on 0.2.3.6-alpha.
15568
15569  o Major bugfixes (security, pointers, backport from 0.2.8.2-alpha):
15570    - Avoid a difficult-to-trigger heap corruption attack when extending
15571      a smartlist to contain over 16GB of pointers. Fixes bug 18162;
15572      bugfix on 0.1.1.11-alpha, which fixed a related bug incompletely.
15573      Reported by Guido Vranken.
15574
15575  o Major bugfixes (dns proxy mode, crash, backport from 0.2.8.2-alpha):
15576    - Avoid crashing when running as a DNS proxy. Fixes bug 16248;
15577      bugfix on 0.2.0.1-alpha. Patch from "cypherpunks".
15578
15579  o Major bugfixes (guard selection, backport from 0.2.7.6):
15580    - Actually look at the Guard flag when selecting a new directory
15581      guard. When we implemented the directory guard design, we
15582      accidentally started treating all relays as if they have the Guard
15583      flag during guard selection, leading to weaker anonymity and worse
15584      performance. Fixes bug 17772; bugfix on 0.2.4.8-alpha. Discovered
15585      by Mohsen Imani.
15586
15587  o Major bugfixes (key management, backport from 0.2.8.3-alpha):
15588    - If OpenSSL fails to generate an RSA key, do not retain a dangling
15589      pointer to the previous (uninitialized) key value. The impact here
15590      should be limited to a difficult-to-trigger crash, if OpenSSL is
15591      running an engine that makes key generation failures possible, or
15592      if OpenSSL runs out of memory. Fixes bug 19152; bugfix on
15593      0.2.1.10-alpha. Found by Yuan Jochen Kang, Suman Jana, and
15594      Baishakhi Ray.
15595
15596  o Major bugfixes (parsing, backported from 0.3.0.4-rc):
15597    - Fix an integer underflow bug when comparing malformed Tor
15598      versions. This bug could crash Tor when built with
15599      --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
15600      0.2.9.8, which were built with -ftrapv by default. In other cases
15601      it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
15602      on 0.0.8pre1. Found by OSS-Fuzz.
15603
15604  o Minor features (security, memory erasure, backport from 0.2.8.1-alpha):
15605    - Make memwipe() do nothing when passed a NULL pointer or buffer of
15606      zero size. Check size argument to memwipe() for underflow. Fixes
15607      bug 18089; bugfix on 0.2.3.25 and 0.2.4.6-alpha. Reported by "gk",
15608      patch by "teor".
15609
15610  o Minor features (bug-resistance, backport from 0.2.8.2-alpha):
15611    - Make Tor survive errors involving connections without a
15612      corresponding event object. Previously we'd fail with an
15613      assertion; now we produce a log message. Related to bug 16248.
15614
15615  o Minor features (geoip):
15616    - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
15617      Country database.
15618
15619  o Minor bugfixes (compilation, backport from 0.2.7.6):
15620    - Fix a compilation warning with Clang 3.6: Do not check the
15621      presence of an address which can never be NULL. Fixes bug 17781.
15622
15623  o Minor bugfixes (crypto error-handling, backport from 0.2.7.2-alpha):
15624    - Check for failures from crypto_early_init, and refuse to continue.
15625      A previous typo meant that we could keep going with an
15626      uninitialized crypto library, and would have OpenSSL initialize
15627      its own PRNG. Fixes bug 16360; bugfix on 0.2.5.2-alpha, introduced
15628      when implementing ticket 4900. Patch by "teor".
15629
15630  o Minor bugfixes (hidden service, backport from 0.2.7.1-alpha):
15631    - Fix an out-of-bounds read when parsing invalid INTRODUCE2 cells on
15632      a client authorized hidden service. Fixes bug 15823; bugfix
15633      on 0.2.1.6-alpha.
15634
15635
15636Changes in version 0.2.4.28 - 2017-03-03
15637  Tor 0.2.4.28 backports a number of security fixes from later Tor
15638  releases.  Anybody running Tor 0.2.4.27 or earlier should upgrade to
15639  this release, if for some reason they cannot upgrade to a later
15640  release series.
15641
15642  Note that support for Tor 0.2.4.x is ending soon: we will not issue
15643  any fixes for the Tor 0.2.4.x series after 1 August 2017.  If you need
15644  a Tor release series with long-term support, we recommend Tor 0.2.9.x.
15645
15646  o Directory authority changes (backport from 0.2.8.5-rc):
15647    - Urras is no longer a directory authority. Closes ticket 19271.
15648
15649  o Directory authority changes (backport from 0.2.9.2-alpha):
15650    - The "Tonga" bridge authority has been retired; the new bridge
15651      authority is "Bifroest". Closes tickets 19728 and 19690.
15652
15653  o Directory authority key updates (backport from 0.2.8.1-alpha):
15654    - Update the V3 identity key for the dannenberg directory authority:
15655      it was changed on 18 November 2015. Closes task 17906. Patch
15656      by "teor".
15657
15658  o Major features (security fixes, backport from 0.2.9.4-alpha):
15659    - Prevent a class of security bugs caused by treating the contents
15660      of a buffer chunk as if they were a NUL-terminated string. At
15661      least one such bug seems to be present in all currently used
15662      versions of Tor, and would allow an attacker to remotely crash
15663      most Tor instances, especially those compiled with extra compiler
15664      hardening. With this defense in place, such bugs can't crash Tor,
15665      though we should still fix them as they occur. Closes ticket
15666      20384 (TROVE-2016-10-001).
15667
15668  o Major bugfixes (parsing, security, backport from 0.2.9.8):
15669    - Fix a bug in parsing that could cause clients to read a single
15670      byte past the end of an allocated region. This bug could be used
15671      to cause hardened clients (built with --enable-expensive-hardening)
15672      to crash if they tried to visit a hostile hidden service. Non-
15673      hardened clients are only affected depending on the details of
15674      their platform's memory allocator. Fixes bug 21018; bugfix on
15675      0.2.0.8-alpha. Found by using libFuzzer. Also tracked as TROVE-
15676      2016-12-002 and as CVE-2016-1254.
15677
15678  o Major bugfixes (security, correctness, backport from 0.2.7.4-rc):
15679    - Fix an error that could cause us to read 4 bytes before the
15680      beginning of an openssl string. This bug could be used to cause
15681      Tor to crash on systems with unusual malloc implementations, or
15682      systems with unusual hardening installed. Fixes bug 17404; bugfix
15683      on 0.2.3.6-alpha.
15684
15685  o Major bugfixes (security, pointers, backport from 0.2.8.2-alpha):
15686    - Avoid a difficult-to-trigger heap corruption attack when extending
15687      a smartlist to contain over 16GB of pointers. Fixes bug 18162;
15688      bugfix on 0.1.1.11-alpha, which fixed a related bug incompletely.
15689      Reported by Guido Vranken.
15690
15691  o Major bugfixes (dns proxy mode, crash, backport from 0.2.8.2-alpha):
15692    - Avoid crashing when running as a DNS proxy. Fixes bug 16248;
15693      bugfix on 0.2.0.1-alpha. Patch from "cypherpunks".
15694
15695  o Major bugfixes (guard selection, backport from 0.2.7.6):
15696    - Actually look at the Guard flag when selecting a new directory
15697      guard. When we implemented the directory guard design, we
15698      accidentally started treating all relays as if they have the Guard
15699      flag during guard selection, leading to weaker anonymity and worse
15700      performance. Fixes bug 17772; bugfix on 0.2.4.8-alpha. Discovered
15701      by Mohsen Imani.
15702
15703  o Major bugfixes (key management, backport from 0.2.8.3-alpha):
15704    - If OpenSSL fails to generate an RSA key, do not retain a dangling
15705      pointer to the previous (uninitialized) key value. The impact here
15706      should be limited to a difficult-to-trigger crash, if OpenSSL is
15707      running an engine that makes key generation failures possible, or
15708      if OpenSSL runs out of memory. Fixes bug 19152; bugfix on
15709      0.2.1.10-alpha. Found by Yuan Jochen Kang, Suman Jana, and
15710      Baishakhi Ray.
15711
15712  o Major bugfixes (parsing, backported from 0.3.0.4-rc):
15713    - Fix an integer underflow bug when comparing malformed Tor
15714      versions. This bug could crash Tor when built with
15715      --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
15716      0.2.9.8, which were built with -ftrapv by default. In other cases
15717      it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
15718      on 0.0.8pre1. Found by OSS-Fuzz.
15719
15720  o Minor features (security, memory erasure, backport from 0.2.8.1-alpha):
15721    - Make memwipe() do nothing when passed a NULL pointer or buffer of
15722      zero size. Check size argument to memwipe() for underflow. Fixes
15723      bug 18089; bugfix on 0.2.3.25 and 0.2.4.6-alpha. Reported by "gk",
15724      patch by "teor".
15725
15726  o Minor features (bug-resistance, backport from 0.2.8.2-alpha):
15727    - Make Tor survive errors involving connections without a
15728      corresponding event object. Previously we'd fail with an
15729      assertion; now we produce a log message. Related to bug 16248.
15730
15731  o Minor features (DoS-resistance, backport from 0.2.7.1-alpha):
15732    - Make it harder for attackers to overload hidden services with
15733      introductions, by blocking multiple introduction requests on the
15734      same circuit. Resolves ticket 15515.
15735
15736  o Minor features (geoip):
15737    - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
15738      Country database.
15739
15740  o Minor bugfixes (compilation, backport from 0.2.7.6):
15741    - Fix a compilation warning with Clang 3.6: Do not check the
15742      presence of an address which can never be NULL. Fixes bug 17781.
15743
15744  o Minor bugfixes (hidden service, backport from 0.2.7.1-alpha):
15745    - Fix an out-of-bounds read when parsing invalid INTRODUCE2 cells on
15746      a client authorized hidden service. Fixes bug 15823; bugfix
15747      on 0.2.1.6-alpha.
15748
15749
15750Changes in version 0.3.0.4-rc - 2017-03-01
15751  Tor 0.3.0.4-rc fixes some remaining bugs, large and small, in the
15752  0.3.0 release series, and introduces a few reliability features to
15753  keep them from coming back.
15754
15755  This is the first release candidate in the Tor 0.3.0 series. If we
15756  find no new bugs or regressions here, the first stable 0.3.0 release
15757  will be nearly identical to it.
15758
15759  o Major bugfixes (bridges):
15760    - When the same bridge is configured multiple times with the same
15761      identity, but at different address:port combinations, treat those
15762      bridge instances as separate guards. This fix restores the ability
15763      of clients to configure the same bridge with multiple pluggable
15764      transports. Fixes bug 21027; bugfix on 0.3.0.1-alpha.
15765
15766  o Major bugfixes (hidden service directory v3):
15767    - Stop crashing on a failed v3 hidden service descriptor lookup
15768      failure. Fixes bug 21471; bugfixes on 0.3.0.1-alpha.
15769
15770  o Major bugfixes (parsing):
15771    - When parsing a malformed content-length field from an HTTP
15772      message, do not read off the end of the buffer. This bug was a
15773      potential remote denial-of-service attack against Tor clients and
15774      relays. A workaround was released in October 2016, to prevent this
15775      bug from crashing Tor. This is a fix for the underlying issue,
15776      which should no longer matter (if you applied the earlier patch).
15777      Fixes bug 20894; bugfix on 0.2.0.16-alpha. Bug found by fuzzing
15778      using AFL (http://lcamtuf.coredump.cx/afl/).
15779    - Fix an integer underflow bug when comparing malformed Tor
15780      versions. This bug could crash Tor when built with
15781      --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
15782      0.2.9.8, which were built with -ftrapv by default. In other cases
15783      it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
15784      on 0.0.8pre1. Found by OSS-Fuzz.
15785
15786  o Minor feature (protocol versioning):
15787    - Add new protocol version for proposal 224. HSIntro now advertises
15788      version "3-4" and HSDir version "1-2". Fixes ticket 20656.
15789
15790  o Minor features (directory authorities):
15791    - Directory authorities now reject descriptors that claim to be
15792      malformed versions of Tor. Helps prevent exploitation of
15793      bug 21278.
15794    - Reject version numbers with components that exceed INT32_MAX.
15795      Otherwise 32-bit and 64-bit platforms would behave inconsistently.
15796      Fixes bug 21450; bugfix on 0.0.8pre1.
15797    - Directory authorities now reject relays running versions
15798      0.2.9.1-alpha through 0.2.9.4-alpha, because those relays
15799      suffer from bug 20499 and don't keep their consensus cache
15800      up-to-date. Resolves ticket 20509.
15801
15802  o Minor features (geoip):
15803    - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
15804      Country database.
15805
15806  o Minor features (reliability, crash):
15807    - Try better to detect problems in buffers where they might grow (or
15808      think they have grown) over 2 GB in size. Diagnostic for
15809      bug 21369.
15810
15811  o Minor features (testing):
15812    - During 'make test-network-all', if tor logs any warnings, ask
15813      chutney to output them. Requires a recent version of chutney with
15814      the 21572 patch. Implements 21570.
15815
15816  o Minor bugfixes (certificate expiration time):
15817    - Avoid using link certificates that don't become valid till some
15818      time in the future. Fixes bug 21420; bugfix on 0.2.4.11-alpha
15819
15820  o Minor bugfixes (code correctness):
15821    - Repair a couple of (unreachable or harmless) cases of the risky
15822      comparison-by-subtraction pattern that caused bug 21278.
15823    - Remove a redundant check for the UseEntryGuards option from the
15824      options_transition_affects_guards() function. Fixes bug 21492;
15825      bugfix on 0.3.0.1-alpha.
15826
15827  o Minor bugfixes (directory mirrors):
15828    - Allow relays to use directory mirrors without a DirPort: these
15829      relays need to be contacted over their ORPorts using a begindir
15830      connection. Fixes one case of bug 20711; bugfix on 0.2.8.2-alpha.
15831    - Clarify the message logged when a remote relay is unexpectedly
15832      missing an ORPort or DirPort: users were confusing this with a
15833      local port. Fixes another case of bug 20711; bugfix
15834      on 0.2.8.2-alpha.
15835
15836  o Minor bugfixes (guards):
15837    - Don't warn about a missing guard state on timeout-measurement
15838      circuits: they aren't supposed to be using guards. Fixes an
15839      instance of bug 21007; bugfix on 0.3.0.1-alpha.
15840    - Silence a BUG() warning when attempting to use a guard whose
15841      descriptor we don't know, and make this scenario less likely to
15842      happen. Fixes bug 21415; bugfix on 0.3.0.1-alpha.
15843
15844  o Minor bugfixes (hidden service):
15845    - Pass correct buffer length when encoding legacy ESTABLISH_INTRO
15846      cells. Previously, we were using sizeof() on a pointer, instead of
15847      the real destination buffer. Fortunately, that value was only used
15848      to double-check that there was enough room--which was already
15849      enforced elsewhere. Fixes bug 21553; bugfix on 0.3.0.1-alpha.
15850
15851  o Minor bugfixes (testing):
15852    - Fix Raspbian build issues related to missing socket errno in
15853      test_util.c. Fixes bug 21116; bugfix on 0.2.8.2. Patch
15854      by "hein".
15855    - Rename "make fuzz" to "make test-fuzz-corpora", since it doesn't
15856      actually fuzz anything. Fixes bug 21447; bugfix on 0.3.0.3-alpha.
15857    - Use bash in src/test/test-network.sh. This ensures we reliably
15858      call chutney's newer tools/test-network.sh when available. Fixes
15859      bug 21562; bugfix on 0.2.9.1-alpha.
15860
15861  o Documentation:
15862    - Small fixes to the fuzzing documentation. Closes ticket 21472.
15863
15864
15865Changes in version 0.2.9.10 - 2017-03-01
15866  Tor 0.2.9.10 backports a security fix from later Tor release.  It also
15867  includes fixes for some major issues affecting directory authorities,
15868  LibreSSL compatibility, and IPv6 correctness.
15869
15870  The Tor 0.2.9.x release series is now marked as a long-term-support
15871  series.  We intend to backport security fixes to 0.2.9.x until at
15872  least January of 2020.
15873
15874  o Major bugfixes (directory authority, 0.3.0.3-alpha):
15875    - During voting, when marking a relay as a probable sybil, do not
15876      clear its BadExit flag: sybils can still be bad in other ways
15877      too. (We still clear the other flags.) Fixes bug 21108; bugfix
15878      on 0.2.0.13-alpha.
15879
15880  o Major bugfixes (IPv6 Exits, backport from 0.3.0.3-alpha):
15881    - Stop rejecting all IPv6 traffic on Exits whose exit policy rejects
15882      any IPv6 addresses. Instead, only reject a port over IPv6 if the
15883      exit policy rejects that port on more than an IPv6 /16 of
15884      addresses. This bug was made worse by 17027 in 0.2.8.1-alpha,
15885      which rejected a relay's own IPv6 address by default. Fixes bug
15886      21357; bugfix on commit 004f3f4e53 in 0.2.4.7-alpha.
15887
15888  o Major bugfixes (parsing, also in 0.3.0.4-rc):
15889    - Fix an integer underflow bug when comparing malformed Tor
15890      versions. This bug could crash Tor when built with
15891      --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
15892      0.2.9.8, which were built with -ftrapv by default. In other cases
15893      it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
15894      on 0.0.8pre1. Found by OSS-Fuzz.
15895
15896  o Minor features (directory authorities, also in 0.3.0.4-rc):
15897    - Directory authorities now reject descriptors that claim to be
15898      malformed versions of Tor. Helps prevent exploitation of
15899      bug 21278.
15900    - Reject version numbers with components that exceed INT32_MAX.
15901      Otherwise 32-bit and 64-bit platforms would behave inconsistently.
15902      Fixes bug 21450; bugfix on 0.0.8pre1.
15903
15904  o Minor features (geoip):
15905    - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
15906      Country database.
15907
15908  o Minor features (portability, compilation, backport from 0.3.0.3-alpha):
15909    - Autoconf now checks to determine if OpenSSL structures are opaque,
15910      instead of explicitly checking for OpenSSL version numbers. Part
15911      of ticket 21359.
15912    - Support building with recent LibreSSL code that uses opaque
15913      structures. Closes ticket 21359.
15914
15915  o Minor bugfixes (code correctness, also in 0.3.0.4-rc):
15916    - Repair a couple of (unreachable or harmless) cases of the risky
15917      comparison-by-subtraction pattern that caused bug 21278.
15918
15919  o Minor bugfixes (tor-resolve, backport from 0.3.0.3-alpha):
15920    - The tor-resolve command line tool now rejects hostnames over 255
15921      characters in length. Previously, it would silently truncate them,
15922      which could lead to bugs. Fixes bug 21280; bugfix on 0.0.9pre5.
15923      Patch by "junglefowl".
15924
15925
15926Changes in version 0.3.0.3-alpha - 2017-02-03
15927  Tor 0.3.0.3-alpha fixes a few significant bugs introduced over the
15928  0.3.0.x development series, including some that could cause
15929  authorities to behave badly. There is also a fix for a longstanding
15930  bug that could prevent IPv6 exits from working. Tor 0.3.0.3-alpha also
15931  includes some smaller features and bugfixes.
15932
15933  The Tor 0.3.0.x release series is now in patch-freeze: no additional
15934  features will be considered for inclusion in 0.3.0.x. We suspect that
15935  some bugs will probably remain, however, and we encourage people to
15936  test this release.
15937
15938  o Major bugfixes (directory authority):
15939    - During voting, when marking a relay as a probable sybil, do not
15940      clear its BadExit flag: sybils can still be bad in other ways
15941      too. (We still clear the other flags.) Fixes bug 21108; bugfix
15942      on 0.2.0.13-alpha.
15943    - When deciding whether we have just found a router to be reachable,
15944      do not penalize it for not having performed an Ed25519 link
15945      handshake if it does not claim to support an Ed25519 handshake.
15946      Previously, we would treat such relays as non-running. Fixes bug
15947      21107; bugfix on 0.3.0.1-alpha.
15948
15949  o Major bugfixes (entry guards):
15950    - Stop trying to build circuits through entry guards for which we
15951      have no descriptor. Also, stop crashing in the case that we *do*
15952      accidentally try to build a circuit in such a state. Fixes bug
15953      21242; bugfix on 0.3.0.1-alpha.
15954
15955  o Major bugfixes (IPv6 Exits):
15956    - Stop rejecting all IPv6 traffic on Exits whose exit policy rejects
15957      any IPv6 addresses. Instead, only reject a port over IPv6 if the
15958      exit policy rejects that port on more than an IPv6 /16 of
15959      addresses. This bug was made worse by 17027 in 0.2.8.1-alpha,
15960      which rejected a relay's own IPv6 address by default. Fixes bug
15961      21357; bugfix on commit 004f3f4e53 in 0.2.4.7-alpha.
15962
15963  o Minor feature (client):
15964    - Enable IPv6 traffic on the SocksPort by default. To disable this,
15965      a user will have to specify "NoIPv6Traffic". Closes ticket 21269.
15966
15967  o Minor feature (fallback scripts):
15968    - Add a check_existing mode to updateFallbackDirs.py, which checks
15969      if fallbacks in the hard-coded list are working. Closes ticket
15970      20174. Patch by haxxpop.
15971
15972  o Minor features (ciphersuite selection):
15973    - Clients now advertise a list of ciphersuites closer to the ones
15974      preferred by Firefox. Closes part of ticket 15426.
15975    - Allow relays to accept a wider range of ciphersuites, including
15976      chacha20-poly1305 and AES-CCM. Closes the other part of 15426.
15977
15978  o Minor features (controller, configuration):
15979    - Each of the *Port options, such as SocksPort, ORPort, ControlPort,
15980      and so on, now comes with a __*Port variant that will not be saved
15981      to the torrc file by the controller's SAVECONF command. This
15982      change allows TorBrowser to set up a single-use domain socket for
15983      each time it launches Tor. Closes ticket 20956.
15984    - The GETCONF command can now query options that may only be
15985      meaningful in context-sensitive lists. This allows the controller
15986      to query the mixed SocksPort/__SocksPort style options introduced
15987      in feature 20956. Implements ticket 21300.
15988
15989  o Minor features (portability, compilation):
15990    - Autoconf now checks to determine if OpenSSL structures are opaque,
15991      instead of explicitly checking for OpenSSL version numbers. Part
15992      of ticket 21359.
15993    - Support building with recent LibreSSL code that uses opaque
15994      structures. Closes ticket 21359.
15995
15996  o Minor features (relay):
15997    - We now allow separation of exit and relay traffic to different
15998      source IP addresses, using the OutboundBindAddressExit and
15999      OutboundBindAddressOR options respectively. Closes ticket 17975.
16000      Written by Michael Sonntag.
16001
16002  o Minor bugfix (logging):
16003    - Don't recommend the use of Tor2web in non-anonymous mode.
16004      Recommending Tor2web is a bad idea because the client loses all
16005      anonymity. Tor2web should only be used in specific cases by users
16006      who *know* and understand the issues. Fixes bug 21294; bugfix
16007      on 0.2.9.3-alpha.
16008
16009  o Minor bugfixes (client):
16010    - Always recover from failures in extend_info_from_node(), in an
16011      attempt to prevent any recurrence of bug 21242. Fixes bug 21372;
16012      bugfix on 0.2.3.1-alpha.
16013
16014  o Minor bugfixes (client, entry guards):
16015    - Fix a bug warning (with backtrace) when we fail a channel that
16016      circuits to fallback directories on it. Fixes bug 21128; bugfix
16017      on 0.3.0.1-alpha.
16018    - Fix a spurious bug warning (with backtrace) when removing an
16019      expired entry guard. Fixes bug 21129; bugfix on 0.3.0.1-alpha.
16020    - Fix a bug of the new guard algorithm where tor could stall for up
16021      to 10 minutes before retrying a guard after a long period of no
16022      network. Fixes bug 21052; bugfix on 0.3.0.1-alpha.
16023    - Do not try to build circuits until we have descriptors for our
16024      primary entry guards. Related to fix for bug 21242.
16025
16026  o Minor bugfixes (configure, autoconf):
16027    - Rename the configure option --enable-expensive-hardening to
16028      --enable-fragile-hardening. Expensive hardening makes the tor
16029      daemon abort when some kinds of issues are detected. Thus, it
16030      makes tor more at risk of remote crashes but safer against RCE or
16031      heartbleed bug category. We now try to explain this issue in a
16032      message from the configure script. Fixes bug 21290; bugfix
16033      on 0.2.5.4-alpha.
16034
16035  o Minor bugfixes (controller):
16036    - Restore the (deprecated) DROPGUARDS controller command. Fixes bug
16037      20824; bugfix on 0.3.0.1-alpha.
16038
16039  o Minor bugfixes (hidden service):
16040    - Clean up the code for expiring intro points with no associated
16041      circuits. It was causing, rarely, a service with some expiring
16042      introduction points to not open enough additional introduction
16043      points. Fixes part of bug 21302; bugfix on 0.2.7.2-alpha.
16044    - Stop setting the torrc option HiddenServiceStatistics to "0" just
16045      because we're not a bridge or relay. Instead, we preserve whatever
16046      value the user set (or didn't set). Fixes bug 21150; bugfix
16047      on 0.2.6.2-alpha.
16048    - Resolve two possible underflows which could lead to creating and
16049      closing a lot of introduction point circuits in a non-stop loop.
16050      Fixes bug 21302; bugfix on 0.2.7.2-alpha.
16051
16052  o Minor bugfixes (portability):
16053    - Use "OpenBSD" compiler macro instead of "OPENBSD" or "__OpenBSD__".
16054      It is supported by OpenBSD itself, and also by most OpenBSD
16055      variants (such as Bitrig). Fixes bug 20980; bugfix
16056      on 0.1.2.1-alpha.
16057    - When mapping a file of length greater than SIZE_MAX, do not
16058      silently truncate its contents. This issue could occur on 32 bit
16059      systems with large file support and files which are larger than 4
16060      GB. Fixes bug 21134; bugfix on 0.3.0.1-alpha.
16061
16062  o Minor bugfixes (tor-resolve):
16063    - The tor-resolve command line tool now rejects hostnames over 255
16064      characters in length. Previously, it would silently truncate them,
16065      which could lead to bugs. Fixes bug 21280; bugfix on 0.0.9pre5.
16066      Patch by "junglefowl".
16067
16068  o Minor bugfixes (Windows services):
16069    - Be sure to initialize the monotonic time subsystem before using
16070      it, even when running as an NT service. Fixes bug 21356; bugfix
16071      on 0.2.9.1-alpha.
16072
16073
16074Changes in version 0.3.0.2-alpha - 2017-01-23
16075  Tor 0.3.0.2-alpha fixes a denial-of-service bug where an attacker could
16076  cause relays and clients to crash, even if they were not built with
16077  the --enable-expensive-hardening option. This bug affects all 0.2.9.x
16078  versions, and also affects 0.3.0.1-alpha: all relays running an affected
16079  version should upgrade.
16080
16081  Tor 0.3.0.2-alpha also improves how exit relays and clients handle DNS
16082  time-to-live values, makes directory authorities enforce the 1-to-1
16083  mapping of relay RSA identity keys to ED25519 identity keys, fixes a
16084  client-side onion service reachability bug, does better at selecting
16085  the set of fallback directories, and more.
16086
16087  o Major bugfixes (security, also in 0.2.9.9):
16088    - Downgrade the "-ftrapv" option from "always on" to "only on when
16089      --enable-expensive-hardening is provided."  This hardening option, like
16090      others, can turn survivable bugs into crashes--and having it on by
16091      default made a (relatively harmless) integer overflow bug into a
16092      denial-of-service bug. Fixes bug 21278 (TROVE-2017-001); bugfix on
16093      0.2.9.1-alpha.
16094
16095  o Major features (security):
16096    - Change the algorithm used to decide DNS TTLs on client and server
16097      side, to better resist DNS-based correlation attacks like the
16098      DefecTor attack of Greschbach, Pulls, Roberts, Winter, and
16099      Feamster. Now relays only return one of two possible DNS TTL
16100      values, and clients are willing to believe DNS TTL values up to 3
16101      hours long. Closes ticket 19769.
16102
16103  o Major features (directory authority, security):
16104    - The default for AuthDirPinKeys is now 1: directory authorities
16105      will reject relays where the RSA identity key matches a previously
16106      seen value, but the Ed25519 key has changed. Closes ticket 18319.
16107
16108  o Major bugfixes (client, guard, crash):
16109    - In circuit_get_global_origin_list(), return the actual list of
16110      origin circuits. The previous version of this code returned the
16111      list of all the circuits, and could have caused strange bugs,
16112      including possible crashes. Fixes bug 21118; bugfix
16113      on 0.3.0.1-alpha.
16114
16115  o Major bugfixes (client, onion service, also in 0.2.9.9):
16116    - Fix a client-side onion service reachability bug, where multiple
16117      socks requests to an onion service (or a single slow request)
16118      could cause us to mistakenly mark some of the service's
16119      introduction points as failed, and we cache that failure so
16120      eventually we run out and can't reach the service. Also resolves a
16121      mysterious "Remote server sent bogus reason code 65021" log
16122      warning. The bug was introduced in ticket 17218, where we tried to
16123      remember the circuit end reason as a uint16_t, which mangled
16124      negative values. Partially fixes bug 21056 and fixes bug 20307;
16125      bugfix on 0.2.8.1-alpha.
16126
16127  o Major bugfixes (DNS):
16128    - Fix a bug that prevented exit nodes from caching DNS records for
16129      more than 60 seconds. Fixes bug 19025; bugfix on 0.2.4.7-alpha.
16130
16131  o Minor features (controller):
16132    - Add "GETINFO sr/current" and "GETINFO sr/previous" keys, to expose
16133      shared-random values to the controller. Closes ticket 19925.
16134
16135  o Minor features (entry guards):
16136    - Add UseEntryGuards to TEST_OPTIONS_DEFAULT_VALUES in order to not
16137      break regression tests.
16138    - Require UseEntryGuards when UseBridges is set, in order to make
16139      sure bridges aren't bypassed. Resolves ticket 20502.
16140
16141  o Minor features (fallback directories):
16142    - Select 200 fallback directories for each release. Closes
16143      ticket 20881.
16144    - Allow 3 fallback relays per operator, which is safe now that we
16145      are choosing 200 fallback relays. Closes ticket 20912.
16146    - Exclude relays affected by bug 20499 from the fallback list.
16147      Exclude relays from the fallback list if they are running versions
16148      known to be affected by bug 20499, or if in our tests they deliver
16149      a stale consensus (i.e. one that expired more than 24 hours ago).
16150      Closes ticket 20539.
16151    - Reduce the minimum fallback bandwidth to 1 MByte/s. Part of
16152      ticket 18828.
16153    - Require fallback directories to have the same address and port for
16154      7 days (now that we have enough relays with this stability).
16155      Relays whose OnionOO stability timer is reset on restart by bug
16156      18050 should upgrade to Tor 0.2.8.7 or later, which has a fix for
16157      this issue. Closes ticket 20880; maintains short-term fix
16158      in 0.2.8.2-alpha.
16159    - Require fallbacks to have flags for 90% of the time (weighted
16160      decaying average), rather than 95%. This allows at least 73% of
16161      clients to bootstrap in the first 5 seconds without contacting an
16162      authority. Part of ticket 18828.
16163    - Annotate updateFallbackDirs.py with the bandwidth and consensus
16164      weight for each candidate fallback. Closes ticket 20878.
16165    - Make it easier to change the output sort order of fallbacks.
16166      Closes ticket 20822.
16167    - Display the relay fingerprint when downloading consensuses from
16168      fallbacks. Closes ticket 20908.
16169
16170  o Minor features (geoip, also in 0.2.9.9):
16171    - Update geoip and geoip6 to the January 4 2017 Maxmind GeoLite2
16172      Country database.
16173
16174  o Minor features (next-gen onion service directories):
16175    - Remove the "EnableOnionServicesV3" consensus parameter that we
16176      introduced in 0.3.0.1-alpha: relays are now always willing to act
16177      as v3 onion service directories. Resolves ticket 19899.
16178
16179  o Minor features (linting):
16180    - Enhance the changes file linter to warn on Tor versions that are
16181      prefixed with "tor-". Closes ticket 21096.
16182
16183  o Minor features (logging):
16184    - In several places, describe unset ed25519 keys as "<unset>",
16185      rather than the scary "AAAAAAAA...AAA". Closes ticket 21037.
16186
16187  o Minor bugfix (control protocol):
16188    - The reply to a "GETINFO config/names" request via the control
16189      protocol now spells the type "Dependent" correctly. This is a
16190      breaking change in the control protocol. (The field seems to be
16191      ignored by the most common known controllers.) Fixes bug 18146;
16192      bugfix on 0.1.1.4-alpha.
16193
16194  o Minor bugfixes (bug resilience):
16195    - Fix an unreachable size_t overflow in base64_decode(). Fixes bug
16196      19222; bugfix on 0.2.0.9-alpha. Found by Guido Vranken; fixed by
16197      Hans Jerry Illikainen.
16198
16199  o Minor bugfixes (build):
16200    - Replace obsolete Autoconf macros with their modern equivalent and
16201      prevent similar issues in the future. Fixes bug 20990; bugfix
16202      on 0.1.0.1-rc.
16203
16204  o Minor bugfixes (client, guards):
16205    - Fix bug where Tor would think that there are circuits waiting for
16206      better guards even though those circuits have been freed. Fixes
16207      bug 21142; bugfix on 0.3.0.1-alpha.
16208
16209  o Minor bugfixes (config):
16210    - Don't assert on startup when trying to get the options list and
16211      LearnCircuitBuildTimeout is set to 0: we are currently parsing the
16212      options so of course they aren't ready yet. Fixes bug 21062;
16213      bugfix on 0.2.9.3-alpha.
16214
16215  o Minor bugfixes (controller):
16216    - Make the GETINFO interface for inquiring about entry guards
16217      support the new guards backend. Fixes bug 20823; bugfix
16218      on 0.3.0.1-alpha.
16219
16220  o Minor bugfixes (dead code):
16221    - Remove a redundant check for PidFile changes at runtime in
16222      options_transition_allowed(): this check is already performed
16223      regardless of whether the sandbox is active. Fixes bug 21123;
16224      bugfix on 0.2.5.4-alpha.
16225
16226  o Minor bugfixes (documentation):
16227    - Update the tor manual page to document every option that can not
16228      be changed while tor is running. Fixes bug 21122.
16229
16230  o Minor bugfixes (fallback directories):
16231    - Stop failing when a relay has no uptime data in
16232      updateFallbackDirs.py. Fixes bug 20945; bugfix on 0.2.8.1-alpha.
16233    - Avoid checking fallback candidates' DirPorts if they are down in
16234      OnionOO. When a relay operator has multiple relays, this
16235      prioritizes relays that are up over relays that are down. Fixes
16236      bug 20926; bugfix on 0.2.8.3-alpha.
16237    - Stop failing when OUTPUT_COMMENTS is True in updateFallbackDirs.py.
16238      Fixes bug 20877; bugfix on 0.2.8.3-alpha.
16239
16240  o Minor bugfixes (guards, bootstrapping):
16241    - When connecting to a directory guard during bootstrap, do not mark
16242      the guard as successful until we receive a good-looking directory
16243      response from it. Fixes bug 20974; bugfix on 0.3.0.1-alpha.
16244
16245  o Minor bugfixes (onion services):
16246    - Fix the config reload pruning of old vs new services so it
16247      actually works when both ephemeral and non-ephemeral services are
16248      configured. Fixes bug 21054; bugfix on 0.3.0.1-alpha.
16249    - Allow the number of introduction points to be as low as 0, rather
16250      than as low as 3. Fixes bug 21033; bugfix on 0.2.7.2-alpha.
16251
16252  o Minor bugfixes (IPv6):
16253    - Make IPv6-using clients try harder to find an IPv6 directory
16254      server. Fixes bug 20999; bugfix on 0.2.8.2-alpha.
16255    - When IPv6 addresses have not been downloaded yet (microdesc
16256      consensus documents don't list relay IPv6 addresses), use hard-
16257      coded addresses for authorities, fallbacks, and configured
16258      bridges. Now IPv6-only clients can use microdescriptors. Fixes bug
16259      20996; bugfix on b167e82 from 19608 in 0.2.8.5-alpha.
16260
16261  o Minor bugfixes (memory leaks):
16262    - Fix a memory leak when configuring hidden services. Fixes bug
16263      20987; bugfix on 0.3.0.1-alpha.
16264
16265  o Minor bugfixes (portability, also in 0.2.9.9):
16266    - Avoid crashing when Tor is built using headers that contain
16267      CLOCK_MONOTONIC_COARSE, but then tries to run on an older kernel
16268      without CLOCK_MONOTONIC_COARSE. Fixes bug 21035; bugfix
16269      on 0.2.9.1-alpha.
16270    - Fix Libevent detection on platforms without Libevent 1 headers
16271      installed. Fixes bug 21051; bugfix on 0.2.9.1-alpha.
16272
16273  o Minor bugfixes (relay):
16274    - Honor DataDirectoryGroupReadable when tor is a relay. Previously,
16275      initializing the keys would reset the DataDirectory to 0700
16276      instead of 0750 even if DataDirectoryGroupReadable was set to 1.
16277      Fixes bug 19953; bugfix on 0.0.2pre16. Patch by "redfish".
16278
16279  o Minor bugfixes (testing):
16280    - Remove undefined behavior from the backtrace generator by removing
16281      its signal handler. Fixes bug 21026; bugfix on 0.2.5.2-alpha.
16282
16283  o Minor bugfixes (unit tests):
16284    - Allow the unit tests to pass even when DNS lookups of bogus
16285      addresses do not fail as expected. Fixes bug 20862 and 20863;
16286      bugfix on unit tests introduced in 0.2.8.1-alpha
16287      through 0.2.9.4-alpha.
16288
16289  o Code simplification and refactoring:
16290    - Refactor code to manipulate global_origin_circuit_list into
16291      separate functions. Closes ticket 20921.
16292
16293  o Documentation (formatting):
16294    - Clean up formatting of tor.1 man page and HTML doc, where <pre>
16295      blocks were incorrectly appearing. Closes ticket 20885.
16296
16297  o Documentation (man page):
16298    - Clarify many options in tor.1 and add some min/max values for
16299      HiddenService options. Closes ticket 21058.
16300
16301
16302Changes in version 0.2.9.9 - 2017-01-23
16303  Tor 0.2.9.9 fixes a denial-of-service bug where an attacker could
16304  cause relays and clients to crash, even if they were not built with
16305  the --enable-expensive-hardening option. This bug affects all 0.2.9.x
16306  versions, and also affects 0.3.0.1-alpha: all relays running an affected
16307  version should upgrade.
16308
16309  This release also resolves a client-side onion service reachability
16310  bug, and resolves a pair of small portability issues.
16311
16312  o Major bugfixes (security):
16313    - Downgrade the "-ftrapv" option from "always on" to "only on when
16314      --enable-expensive-hardening is provided." This hardening option,
16315      like others, can turn survivable bugs into crashes -- and having
16316      it on by default made a (relatively harmless) integer overflow bug
16317      into a denial-of-service bug. Fixes bug 21278 (TROVE-2017-001);
16318      bugfix on 0.2.9.1-alpha.
16319
16320  o Major bugfixes (client, onion service):
16321    - Fix a client-side onion service reachability bug, where multiple
16322      socks requests to an onion service (or a single slow request)
16323      could cause us to mistakenly mark some of the service's
16324      introduction points as failed, and we cache that failure so
16325      eventually we run out and can't reach the service. Also resolves a
16326      mysterious "Remote server sent bogus reason code 65021" log
16327      warning. The bug was introduced in ticket 17218, where we tried to
16328      remember the circuit end reason as a uint16_t, which mangled
16329      negative values. Partially fixes bug 21056 and fixes bug 20307;
16330      bugfix on 0.2.8.1-alpha.
16331
16332  o Minor features (geoip):
16333    - Update geoip and geoip6 to the January 4 2017 Maxmind GeoLite2
16334      Country database.
16335
16336  o Minor bugfixes (portability):
16337    - Avoid crashing when Tor is built using headers that contain
16338      CLOCK_MONOTONIC_COARSE, but then tries to run on an older kernel
16339      without CLOCK_MONOTONIC_COARSE. Fixes bug 21035; bugfix
16340      on 0.2.9.1-alpha.
16341    - Fix Libevent detection on platforms without Libevent 1 headers
16342      installed. Fixes bug 21051; bugfix on 0.2.9.1-alpha.
16343
16344
16345Changes in version 0.3.0.1-alpha - 2016-12-19
16346  Tor 0.3.0.1-alpha is the first alpha release in the 0.3.0 development
16347  series. It strengthens Tor's link and circuit handshakes by
16348  identifying relays by their Ed25519 keys, improves the algorithm that
16349  clients use to choose and maintain their list of guards, and includes
16350  additional backend support for the next-generation hidden service
16351  design. It also contains numerous other small features and
16352  improvements to security, correctness, and performance.
16353
16354  Below are the changes since 0.2.9.8.
16355
16356  o Major features (guard selection algorithm):
16357    - Tor's guard selection algorithm has been redesigned from the
16358      ground up, to better support unreliable networks and restrictive
16359      sets of entry nodes, and to better resist guard-capture attacks by
16360      hostile local networks. Implements proposal 271; closes
16361      ticket 19877.
16362
16363  o Major features (next-generation hidden services):
16364    - Relays can now handle v3 ESTABLISH_INTRO cells as specified by
16365      prop224 aka "Next Generation Hidden Services". Service and clients
16366      don't use this functionality yet. Closes ticket 19043. Based on
16367      initial code by Alec Heifetz.
16368    - Relays now support the HSDir version 3 protocol, so that they can
16369      can store and serve v3 descriptors. This is part of the next-
16370      generation onion service work detailed in proposal 224. Closes
16371      ticket 17238.
16372
16373  o Major features (protocol, ed25519 identity keys):
16374    - Relays now use Ed25519 to prove their Ed25519 identities and to
16375      one another, and to clients. This algorithm is faster and more
16376      secure than the RSA-based handshake we've been doing until now.
16377      Implements the second big part of proposal 220; Closes
16378      ticket 15055.
16379    - Clients now support including Ed25519 identity keys in the EXTEND2
16380      cells they generate. By default, this is controlled by a consensus
16381      parameter, currently disabled. You can turn this feature on for
16382      testing by setting ExtendByEd25519ID in your configuration. This
16383      might make your traffic appear different than the traffic
16384      generated by other users, however. Implements part of ticket
16385      15056; part of proposal 220.
16386    - Relays now understand requests to extend to other relays by their
16387      Ed25519 identity keys. When an Ed25519 identity key is included in
16388      an EXTEND2 cell, the relay will only extend the circuit if the
16389      other relay can prove ownership of that identity. Implements part
16390      of ticket 15056; part of proposal 220.
16391
16392  o Major bugfixes (scheduler):
16393    - Actually compare circuit policies in ewma_cmp_cmux(). This bug
16394      caused the channel scheduler to behave more or less randomly,
16395      rather than preferring channels with higher-priority circuits.
16396      Fixes bug 20459; bugfix on 0.2.6.2-alpha.
16397
16398  o Minor features (controller):
16399    - When HSFETCH arguments cannot be parsed, say "Invalid argument"
16400      rather than "unrecognized." Closes ticket 20389; patch from
16401      Ivan Markin.
16402
16403  o Minor features (diagnostic, directory client):
16404    - Warn when we find an unexpected inconsistency in directory
16405      download status objects. Prevents some negative consequences of
16406      bug 20593.
16407
16408  o Minor features (directory authority):
16409    - Add a new authority-only AuthDirTestEd25519LinkKeys option (on by
16410      default) to control whether authorities should try to probe relays
16411      by their Ed25519 link keys. This option will go away in a few
16412      releases--unless we encounter major trouble in our ed25519 link
16413      protocol rollout, in which case it will serve as a safety option.
16414
16415  o Minor features (directory cache):
16416    - Relays and bridges will now refuse to serve the consensus they
16417      have if they know it is too old for a client to use. Closes
16418      ticket 20511.
16419
16420  o Minor features (ed25519 link handshake):
16421    - Advertise support for the ed25519 link handshake using the
16422      subprotocol-versions mechanism, so that clients can tell which
16423      relays can identity themselves by Ed25519 ID. Closes ticket 20552.
16424
16425  o Minor features (fingerprinting resistance, authentication):
16426    - Extend the length of RSA keys used for TLS link authentication to
16427      2048 bits. (These weren't used for forward secrecy; for forward
16428      secrecy, we used P256.) Closes ticket 13752.
16429
16430  o Minor features (infrastructure):
16431    - Implement smartlist_add_strdup() function. Replaces the use of
16432      smartlist_add(sl, tor_strdup(str)). Closes ticket 20048.
16433
16434  o Minor bugfixes (client):
16435    - When clients that use bridges start up with a cached consensus on
16436      disk, they were ignoring it and downloading a new one. Now they
16437      use the cached one. Fixes bug 20269; bugfix on 0.2.3.12-alpha.
16438
16439  o Minor bugfixes (configuration):
16440    - Accept non-space whitespace characters after the severity level in
16441      the `Log` option. Fixes bug 19965; bugfix on 0.2.1.1-alpha.
16442    - Support "TByte" and "TBytes" units in options given in bytes.
16443      "TB", "terabyte(s)", "TBit(s)" and "terabit(s)" were already
16444      supported. Fixes bug 20622; bugfix on 0.2.0.14-alpha.
16445
16446  o Minor bugfixes (consensus weight):
16447    - Add new consensus method that initializes bw weights to 1 instead
16448      of 0. This prevents a zero weight from making it all the way to
16449      the end (happens in small testing networks) and causing an error.
16450      Fixes bug 14881; bugfix on 0.2.2.17-alpha.
16451
16452  o Minor bugfixes (descriptors):
16453    - Correctly recognise downloaded full descriptors as valid, even
16454      when using microdescriptors as circuits. This affects clients with
16455      FetchUselessDescriptors set, and may affect directory authorities.
16456      Fixes bug 20839; bugfix on 0.2.3.2-alpha.
16457
16458  o Minor bugfixes (directory system):
16459    - Download all consensus flavors, descriptors, and authority
16460      certificates when FetchUselessDescriptors is set, regardless of
16461      whether tor is a directory cache or not. Fixes bug 20667; bugfix
16462      on all recent tor versions.
16463    - Bridges and relays now use microdescriptors (like clients do)
16464      rather than old-style router descriptors. Now bridges will blend
16465      in with clients in terms of the circuits they build. Fixes bug
16466      6769; bugfix on 0.2.3.2-alpha.
16467
16468  o Minor bugfixes (ed25519 certificates):
16469    - Correctly interpret ed25519 certificates that would expire some
16470      time after 19 Jan 2038. Fixes bug 20027; bugfix on 0.2.7.2-alpha.
16471
16472  o Minor bugfixes (hidden services):
16473    - Stop ignoring misconfigured hidden services. Instead, refuse to
16474      start tor until the misconfigurations have been corrected. Fixes
16475      bug 20559; bugfix on multiple commits in 0.2.7.1-alpha
16476      and earlier.
16477
16478  o Minor bugfixes (memory leak at exit):
16479    - Fix a small harmless memory leak at exit of the previously unused
16480      RSA->Ed identity cross-certificate. Fixes bug 17779; bugfix
16481      on 0.2.7.2-alpha.
16482
16483  o Minor bugfixes (util):
16484    - When finishing writing a file to disk, if we were about to replace
16485      the file with the temporary file created before and we fail to
16486      replace it, remove the temporary file so it doesn't stay on disk.
16487      Fixes bug 20646; bugfix on 0.2.0.7-alpha. Patch by fk.
16488
16489  o Minor bugfixes (Windows):
16490    - Check for getpagesize before using it to mmap files. This fixes
16491      compilation in some MinGW environments. Fixes bug 20530; bugfix on
16492      0.1.2.1-alpha. Reported by "ice".
16493
16494  o Code simplification and refactoring:
16495    - Abolish all global guard context in entrynodes.c; replace with new
16496      guard_selection_t structure as preparation for proposal 271.
16497      Closes ticket 19858.
16498    - Introduce rend_service_is_ephemeral() that tells if given onion
16499      service is ephemeral. Replace unclear NULL-checkings for service
16500      directory with this function. Closes ticket 20526.
16501    - Extract magic numbers in circuituse.c into defined variables.
16502    - Refactor circuit_is_available_for_use to remove unnecessary check.
16503    - Refactor circuit_predict_and_launch_new for readability and
16504      testability. Closes ticket 18873.
16505    - Refactor large if statement in purpose_needs_anonymity to use
16506      switch statement instead. Closes part of ticket 20077.
16507    - Refactor the hashing API to return negative values for errors, as
16508      is done as throughout the codebase. Closes ticket 20717.
16509    - Remove data structures that were used to index or_connection
16510      objects by their RSA identity digests. These structures are fully
16511      redundant with the similar structures used in the
16512      channel abstraction.
16513    - Remove duplicate code in the channel_write_*cell() functions.
16514      Closes ticket 13827; patch from Pingl.
16515    - Remove redundant behavior of is_sensitive_dir_purpose, refactor to
16516      use only purpose_needs_anonymity. Closes part of ticket 20077.
16517    - The code to generate and parse EXTEND and EXTEND2 cells has been
16518      replaced with code automatically generated by the
16519      "trunnel" utility.
16520
16521  o Documentation:
16522    - Include the "TBits" unit in Tor's man page. Fixes part of bug
16523      20622; bugfix on 0.2.5.1-alpha.
16524    - Change '1' to 'weight_scale' in consensus bw weights calculation
16525      comments, as that is reality. Closes ticket 20273. Patch
16526      from pastly.
16527    - Correct the value for AuthDirGuardBWGuarantee in the manpage, from
16528      250 KBytes to 2 MBytes. Fixes bug 20435; bugfix
16529      on 0.2.5.6-alpha.
16530    - Stop the man page from incorrectly stating that HiddenServiceDir
16531      must already exist. Fixes 20486.
16532    - Clarify that when ClientRejectInternalAddresses is enabled (which
16533      is the default), multicast DNS hostnames for machines on the local
16534      network (of the form *.local) are also rejected. Closes
16535      ticket 17070.
16536
16537  o Removed features:
16538    - The AuthDirMaxServersPerAuthAddr option no longer exists: The same
16539      limit for relays running on a single IP applies to authority IP
16540      addresses as well as to non-authority IP addresses. Closes
16541      ticket 20960.
16542    - The UseDirectoryGuards torrc option no longer exists: all users
16543      that use entry guards will also use directory guards. Related to
16544      proposal 271; implements part of ticket 20831.
16545
16546  o Testing:
16547    - New unit tests for tor_htonll(). Closes ticket 19563. Patch
16548      from "overcaffeinated".
16549    - Perform the coding style checks when running the tests and fail
16550      when coding style violations are found. Closes ticket 5500.
16551    - Add tests for networkstatus_compute_bw_weights_v10.
16552    - Add unit tests circuit_predict_and_launch_new.
16553    - Extract dummy_origin_circuit_new so it can be used by other
16554      test functions.
16555
16556
16557Changes in version 0.2.8.12 - 2016-12-19
16558  Tor 0.2.8.12 backports a fix for a medium-severity issue (bug 21018
16559  below) where Tor clients could crash when attempting to visit a
16560  hostile hidden service. Clients are recommended to upgrade as packages
16561  become available for their systems.
16562
16563  It also includes an updated list of fallback directories, backported
16564  from 0.2.9.
16565
16566  Now that the Tor 0.2.9 series is stable, only major bugfixes will be
16567  backported to 0.2.8 in the future.
16568
16569  o Major bugfixes (parsing, security, backported from 0.2.9.8):
16570    - Fix a bug in parsing that could cause clients to read a single
16571      byte past the end of an allocated region. This bug could be used
16572      to cause hardened clients (built with --enable-expensive-hardening)
16573      to crash if they tried to visit a hostile hidden service. Non-
16574      hardened clients are only affected depending on the details of
16575      their platform's memory allocator. Fixes bug 21018; bugfix on
16576      0.2.0.8-alpha. Found by using libFuzzer. Also tracked as TROVE-
16577      2016-12-002 and as CVE-2016-1254.
16578
16579  o Minor features (fallback directory list, backported from 0.2.9.8):
16580    - Replace the 81 remaining fallbacks of the 100 originally
16581      introduced in Tor 0.2.8.3-alpha in March 2016, with a list of 177
16582      fallbacks (123 new, 54 existing, 27 removed) generated in December
16583      2016. Resolves ticket 20170.
16584
16585  o Minor features (geoip, backported from 0.2.9.7-rc):
16586    - Update geoip and geoip6 to the December 7 2016 Maxmind GeoLite2
16587      Country database.
16588
16589
16590Changes in version 0.2.9.8 - 2016-12-19
16591  Tor 0.2.9.8 is the first stable release of the Tor 0.2.9 series.
16592
16593  The Tor 0.2.9 series makes mandatory a number of security features
16594  that were formerly optional. It includes support for a new shared-
16595  randomness protocol that will form the basis for next generation
16596  hidden services, includes a single-hop hidden service mode for
16597  optimizing .onion services that don't actually want to be hidden,
16598  tries harder not to overload the directory authorities with excessive
16599  downloads, and supports a better protocol versioning scheme for
16600  improved compatibility with other implementations of the Tor protocol.
16601
16602  And of course, there are numerous other bugfixes and improvements.
16603
16604  This release also includes a fix for a medium-severity issue (bug
16605  21018 below) where Tor clients could crash when attempting to visit a
16606  hostile hidden service. Clients are recommended to upgrade as packages
16607  become available for their systems.
16608
16609  Below are the changes since 0.2.9.7-rc. For a list of all changes
16610  since 0.2.8, see the ReleaseNotes file.
16611
16612  o Major bugfixes (parsing, security):
16613    - Fix a bug in parsing that could cause clients to read a single
16614      byte past the end of an allocated region. This bug could be used
16615      to cause hardened clients (built with --enable-expensive-hardening)
16616      to crash if they tried to visit a hostile hidden service. Non-
16617      hardened clients are only affected depending on the details of
16618      their platform's memory allocator. Fixes bug 21018; bugfix on
16619      0.2.0.8-alpha. Found by using libFuzzer. Also tracked as TROVE-
16620      2016-12-002 and as CVE-2016-1254.
16621
16622  o Minor features (fallback directory list):
16623    - Replace the 81 remaining fallbacks of the 100 originally
16624      introduced in Tor 0.2.8.3-alpha in March 2016, with a list of 177
16625      fallbacks (123 new, 54 existing, 27 removed) generated in December
16626      2016. Resolves ticket 20170.
16627
16628
16629Changes in version 0.2.9.7-rc - 2016-12-12
16630  Tor 0.2.9.7-rc fixes a few small bugs remaining in Tor 0.2.9.6-rc,
16631  including a few that had prevented tests from passing on
16632  some platforms.
16633
16634  o Minor features (geoip):
16635    - Update geoip and geoip6 to the December 7 2016 Maxmind GeoLite2
16636      Country database.
16637
16638  o Minor bugfix (build):
16639    - The current Git revision when building from a local repository is
16640      now detected correctly when using git worktrees. Fixes bug 20492;
16641      bugfix on 0.2.3.9-alpha.
16642
16643  o Minor bugfixes (directory authority):
16644    - When computing old Tor protocol line version in protover, we were
16645      looking at 0.2.7.5 twice instead of a specific case for
16646      0.2.9.1-alpha. Fixes bug 20810; bugfix on 0.2.9.4-alpha.
16647
16648  o Minor bugfixes (download scheduling):
16649    - Resolve a "bug" warning when considering a download schedule whose
16650      delay had approached INT_MAX. Fixes 20875; bugfix on 0.2.9.5-alpha.
16651
16652  o Minor bugfixes (logging):
16653    - Downgrade a harmless log message about the
16654      pending_entry_connections list from "warn" to "info". Mitigates
16655      bug 19926.
16656
16657  o Minor bugfixes (memory leak):
16658    - Fix a small memory leak when receiving AF_UNIX connections on a
16659      SocksPort. Fixes bug 20716; bugfix on 0.2.6.3-alpha.
16660    - When moving a signed descriptor object from a source to an
16661      existing destination, free the allocated memory inside that
16662      destination object. Fixes bug 20715; bugfix on 0.2.8.3-alpha.
16663
16664  o Minor bugfixes (memory leak, use-after-free, linux seccomp2 sandbox):
16665    - Fix a memory leak and use-after-free error when removing entries
16666      from the sandbox's getaddrinfo() cache. Fixes bug 20710; bugfix on
16667      0.2.5.5-alpha. Patch from "cypherpunks".
16668
16669  o Minor bugfixes (portability):
16670    - Use the correct spelling of MAC_OS_X_VERSION_10_12 on configure.ac
16671      Fixes bug 20935; bugfix on 0.2.9.6-rc.
16672
16673  o Minor bugfixes (unit tests):
16674    - Stop expecting NetBSD unit tests to report success for ipfw. Part
16675      of a fix for bug 19960; bugfix on 0.2.9.5-alpha.
16676    - Fix tolerances in unit tests for monotonic time comparisons
16677      between nanoseconds and microseconds. Previously, we accepted a 10
16678      us difference only, which is not realistic on every platform's
16679      clock_gettime(). Fixes bug 19974; bugfix on 0.2.9.1-alpha.
16680    - Remove a double-free in the single onion service unit test. Stop
16681      ignoring a return value. Make future changes less error-prone.
16682      Fixes bug 20864; bugfix on 0.2.9.6-rc.
16683
16684
16685Changes in version 0.2.8.11 - 2016-12-08
16686  Tor 0.2.8.11 backports fixes for additional portability issues that
16687  could prevent Tor from building correctly on OSX Sierra, or with
16688  OpenSSL 1.1. Affected users should upgrade; others can safely stay
16689  with 0.2.8.10.
16690
16691  o Minor bugfixes (portability):
16692    - Avoid compilation errors when building on OSX Sierra. Sierra began
16693      to support the getentropy() and clock_gettime() APIs, but created
16694      a few problems in doing so. Tor 0.2.9 has a more thorough set of
16695      workarounds; in 0.2.8, we are just using the /dev/urandom and mach
16696      monotonic time interfaces. Fixes bug 20865. Bugfix
16697      on 0.2.8.1-alpha.
16698
16699  o Minor bugfixes (portability, backport from 0.2.9.5-alpha):
16700    - Fix compilation with OpenSSL 1.1 and less commonly-used CPU
16701      architectures. Closes ticket 20588.
16702
16703
16704Changes in version 0.2.8.10 - 2016-12-02
16705  Tor 0.2.8.10 backports a fix for a bug that would sometimes make clients
16706  unusable after they left standby mode. It also backports fixes for
16707  a few portability issues and a small but problematic memory leak.
16708
16709  o Major bugfixes (client reliability, backport from 0.2.9.5-alpha):
16710    - When Tor leaves standby because of a new application request, open
16711      circuits as needed to serve that request. Previously, we would
16712      potentially wait a very long time. Fixes part of bug 19969; bugfix
16713      on 0.2.8.1-alpha.
16714
16715  o Major bugfixes (client performance, backport from 0.2.9.5-alpha):
16716    - Clients now respond to new application stream requests immediately
16717      when they arrive, rather than waiting up to one second before
16718      starting to handle them. Fixes part of bug 19969; bugfix
16719      on 0.2.8.1-alpha.
16720
16721  o Minor bugfixes (portability, backport from 0.2.9.6-rc):
16722    - Work around a bug in the OSX 10.12 SDK that would prevent us from
16723      successfully targeting earlier versions of OSX. Resolves
16724      ticket 20235.
16725
16726  o Minor bugfixes (portability, backport from 0.2.9.5-alpha):
16727    - Fix implicit conversion warnings under OpenSSL 1.1. Fixes bug
16728      20551; bugfix on 0.2.1.1-alpha.
16729
16730  o Minor bugfixes (relay, backport from 0.2.9.5-alpha):
16731    - Work around a memory leak in OpenSSL 1.1 when encoding public
16732      keys. Fixes bug 20553; bugfix on 0.0.2pre8.
16733
16734  o Minor features (geoip):
16735    - Update geoip and geoip6 to the November 3 2016 Maxmind GeoLite2
16736      Country database.
16737
16738Changes in version 0.2.9.6-rc - 2016-12-02
16739  Tor 0.2.9.6-rc fixes a few remaining bugs found in the previous alpha
16740  version. We hope that it will be ready to become stable soon, and we
16741  encourage everyone to test this release. If no showstopper bugs are
16742  found here, the next 0.2.9 release will be stable.
16743
16744  o Major bugfixes (relay, resolver, logging):
16745    - For relays that don't know their own address, avoid attempting a
16746      local hostname resolve for each descriptor we download. This
16747      will cut down on the number of "Success: chose address 'x.x.x.x'"
16748      log lines, and also avoid confusing clock jumps if the resolver
16749      is slow. Fixes bugs 20423 and 20610; bugfix on 0.2.8.1-alpha.
16750
16751  o Minor bugfixes (client, fascistfirewall):
16752    - Avoid spurious warnings when ReachableAddresses or FascistFirewall
16753      is set. Fixes bug 20306; bugfix on 0.2.8.2-alpha.
16754
16755  o Minor bugfixes (hidden services):
16756    - Stop ignoring the anonymity status of saved keys for hidden
16757      services and single onion services when first starting tor.
16758      Instead, refuse to start tor if any hidden service key has been
16759      used in a different hidden service anonymity mode. Fixes bug
16760      20638; bugfix on 17178 in 0.2.9.3-alpha; reported by ahf.
16761
16762  o Minor bugfixes (portability):
16763    - Work around a bug in the OSX 10.12 SDK that would prevent us from
16764      successfully targeting earlier versions of OSX. Resolves
16765      ticket 20235.
16766    - Run correctly when built on Windows build environments that
16767      require _vcsprintf(). Fixes bug 20560; bugfix on 0.2.2.11-alpha.
16768
16769  o Minor bugfixes (single onion services, Tor2web):
16770    - Stop complaining about long-term one-hop circuits deliberately
16771      created by single onion services and Tor2web. These log messages
16772      are intended to diagnose issue 8387, which relates to circuits
16773      hanging around forever for no reason. Fixes bug 20613; bugfix on
16774      0.2.9.1-alpha. Reported by "pastly".
16775
16776  o Minor bugfixes (unit tests):
16777    - Stop spurious failures in the local interface address discovery
16778      unit tests. Fixes bug 20634; bugfix on 0.2.8.1-alpha; patch by
16779      Neel Chauhan.
16780
16781  o Documentation:
16782    - Correct the minimum bandwidth value in torrc.sample, and queue a
16783      corresponding change for torrc.minimal. Closes ticket 20085.
16784
16785
16786Changes in version 0.2.9.5-alpha - 2016-11-08
16787  Tor 0.2.9.5-alpha fixes numerous bugs discovered in the previous alpha
16788  version. We believe one or two probably remain, and we encourage
16789  everyone to test this release.
16790
16791  o Major bugfixes (client performance):
16792    - Clients now respond to new application stream requests immediately
16793      when they arrive, rather than waiting up to one second before
16794      starting to handle them. Fixes part of bug 19969; bugfix
16795      on 0.2.8.1-alpha.
16796
16797  o Major bugfixes (client reliability):
16798    - When Tor leaves standby because of a new application request, open
16799      circuits as needed to serve that request. Previously, we would
16800      potentially wait a very long time. Fixes part of bug 19969; bugfix
16801      on 0.2.8.1-alpha.
16802
16803  o Major bugfixes (download scheduling):
16804    - When using an exponential backoff schedule, do not give up on
16805      downloading just because we have failed a bunch of times. Since
16806      each delay is longer than the last, retrying indefinitely won't
16807      hurt. Fixes bug 20536; bugfix on 0.2.9.1-alpha.
16808    - If a consensus expires while we are waiting for certificates to
16809      download, stop waiting for certificates.
16810    - If we stop waiting for certificates less than a minute after we
16811      started downloading them, do not consider the certificate download
16812      failure a separate failure. Fixes bug 20533; bugfix
16813      on 0.2.0.9-alpha.
16814    - Remove the maximum delay on exponential-backoff scheduling. Since
16815      we now allow an infinite number of failures (see ticket 20536), we
16816      must now allow the time to grow longer on each failure. Fixes part
16817      of bug 20534; bugfix on 0.2.9.1-alpha.
16818    - Make our initial download delays closer to those from 0.2.8. Fixes
16819      another part of bug 20534; bugfix on 0.2.9.1-alpha.
16820    - When determining when to download a directory object, handle times
16821      after 2038 if the operating system supports them. (Someday this
16822      will be important!) Fixes bug 20587; bugfix on 0.2.8.1-alpha.
16823    - When using exponential backoff in test networks, use a lower
16824      exponent, so the delays do not vary as much. This helps test
16825      networks bootstrap consistently. Fixes bug 20597; bugfix on 20499.
16826
16827  o Minor features (geoip):
16828    - Update geoip and geoip6 to the November 3 2016 Maxmind GeoLite2
16829      Country database.
16830
16831  o Minor bugfixes (client directory scheduling):
16832    - Treat "relay too busy to answer request" as a failed request and a
16833      reason to back off on our retry frequency. This is safe now that
16834      exponential backoffs retry indefinitely, and avoids a bug where we
16835      would reset our download schedule erroneously. Fixes bug 20593;
16836      bugfix on 0.2.9.1-alpha.
16837
16838  o Minor bugfixes (client, logging):
16839    - Remove a BUG warning in circuit_pick_extend_handshake(). Instead,
16840      assume all nodes support EXTEND2. Use ntor whenever a key is
16841      available. Fixes bug 20472; bugfix on 0.2.9.3-alpha.
16842    - On DNSPort, stop logging a BUG warning on a failed hostname
16843      lookup. Fixes bug 19869; bugfix on 0.2.9.1-alpha.
16844
16845  o Minor bugfixes (hidden services):
16846    - When configuring hidden services, check every hidden service
16847      directory's permissions. Previously, we only checked the last
16848      hidden service. Fixes bug 20529; bugfix the work to fix 13942
16849      in 0.2.6.2-alpha.
16850
16851  o Minor bugfixes (portability):
16852    - Fix compilation with OpenSSL 1.1 and less commonly-used CPU
16853      architectures. Closes ticket 20588.
16854    - Use ECDHE ciphers instead of ECDH in tortls tests. LibreSSL has
16855      removed the ECDH ciphers which caused the tests to fail on
16856      platforms which use it. Fixes bug 20460; bugfix on 0.2.8.1-alpha.
16857    - Fix implicit conversion warnings under OpenSSL 1.1. Fixes bug
16858      20551; bugfix on 0.2.1.1-alpha.
16859
16860  o Minor bugfixes (relay bootstrap):
16861    - Ensure relays don't make multiple connections during bootstrap.
16862      Fixes bug 20591; bugfix on 0.2.8.1-alpha.
16863
16864  o Minor bugfixes (relay):
16865    - Work around a memory leak in OpenSSL 1.1 when encoding public
16866      keys. Fixes bug 20553; bugfix on 0.0.2pre8.
16867    - Avoid a small memory leak when informing worker threads about
16868      rotated onion keys. Fixes bug 20401; bugfix on 0.2.6.3-alpha.
16869    - Do not try to parallelize workers more than 16x without the user
16870      explicitly configuring us to do so, even if we do detect more than
16871      16 CPU cores. Fixes bug 19968; bugfix on 0.2.3.1-alpha.
16872
16873  o Minor bugfixes (single onion services):
16874    - Start correctly when creating a single onion service in a
16875      directory that did not previously exist. Fixes bug 20484; bugfix
16876      on 0.2.9.3-alpha.
16877
16878  o Minor bugfixes (testing):
16879    - Avoid a unit test failure on systems with over 16 detectable CPU
16880      cores. Fixes bug 19968; bugfix on 0.2.3.1-alpha.
16881
16882  o Documentation:
16883    - Clarify that setting HiddenServiceNonAnonymousMode requires you to
16884      also set "SOCKSPort 0". Fixes bug 20487; bugfix on 0.2.9.3-alpha.
16885    - Module-level documentation for several more modules. Closes
16886      tickets 19287 and 19290.
16887
16888
16889Changes in version 0.2.8.9 - 2016-10-17
16890  Tor 0.2.8.9 backports a fix for a security hole in previous versions
16891  of Tor that would allow a remote attacker to crash a Tor client,
16892  hidden service, relay, or authority. All Tor users should upgrade to
16893  this version, or to 0.2.9.4-alpha. Patches will be released for older
16894  versions of Tor.
16895
16896  o Major features (security fixes, also in 0.2.9.4-alpha):
16897    - Prevent a class of security bugs caused by treating the contents
16898      of a buffer chunk as if they were a NUL-terminated string. At
16899      least one such bug seems to be present in all currently used
16900      versions of Tor, and would allow an attacker to remotely crash
16901      most Tor instances, especially those compiled with extra compiler
16902      hardening. With this defense in place, such bugs can't crash Tor,
16903      though we should still fix them as they occur. Closes ticket
16904      20384 (TROVE-2016-10-001).
16905
16906  o Minor features (geoip):
16907    - Update geoip and geoip6 to the October 4 2016 Maxmind GeoLite2
16908      Country database.
16909
16910
16911Changes in version 0.2.9.4-alpha - 2016-10-17
16912  Tor 0.2.9.4-alpha fixes a security hole in previous versions of Tor
16913  that would allow a remote attacker to crash a Tor client, hidden
16914  service, relay, or authority. All Tor users should upgrade to this
16915  version, or to 0.2.8.9. Patches will be released for older versions
16916  of Tor.
16917
16918  Tor 0.2.9.4-alpha also adds numerous small features and fix-ups to
16919  previous versions of Tor, including the implementation of a feature to
16920  future- proof the Tor ecosystem against protocol changes, some bug
16921  fixes necessary for Tor Browser to use unix domain sockets correctly,
16922  and several portability improvements. We anticipate that this will be
16923  the last alpha in the Tor 0.2.9 series, and that the next release will
16924  be a release candidate.
16925
16926  o Major features (security fixes):
16927    - Prevent a class of security bugs caused by treating the contents
16928      of a buffer chunk as if they were a NUL-terminated string. At
16929      least one such bug seems to be present in all currently used
16930      versions of Tor, and would allow an attacker to remotely crash
16931      most Tor instances, especially those compiled with extra compiler
16932      hardening. With this defense in place, such bugs can't crash Tor,
16933      though we should still fix them as they occur. Closes ticket
16934      20384 (TROVE-2016-10-001).
16935
16936  o Major features (subprotocol versions):
16937    - Tor directory authorities now vote on a set of recommended
16938      subprotocol versions, and on a set of required subprotocol
16939      versions. Clients and relays that lack support for a _required_
16940      subprotocol version will not start; those that lack support for a
16941      _recommended_ subprotocol version will warn the user to upgrade.
16942      Closes ticket 19958; implements part of proposal 264.
16943    - Tor now uses "subprotocol versions" to indicate compatibility.
16944      Previously, versions of Tor looked at the declared Tor version of
16945      a relay to tell whether they could use a given feature. Now, they
16946      should be able to rely on its declared subprotocol versions. This
16947      change allows compatible implementations of the Tor protocol(s) to
16948      exist without pretending to be 100% bug-compatible with particular
16949      releases of Tor itself. Closes ticket 19958; implements part of
16950      proposal 264.
16951
16952  o Minor feature (fallback directories):
16953    - Remove broken fallbacks from the hard-coded fallback directory
16954      list. Closes ticket 20190; patch by teor.
16955
16956  o Minor features (client, directory):
16957    - Since authorities now omit all routers that lack the Running and
16958      Valid flags, we assume that any relay listed in the consensus must
16959      have those flags. Closes ticket 20001; implements part of
16960      proposal 272.
16961
16962  o Minor features (compilation, portability):
16963    - Compile correctly on MacOS 10.12 (aka "Sierra"). Closes
16964      ticket 20241.
16965
16966  o Minor features (development tools, etags):
16967    - Teach the "make tags" Makefile target how to correctly find
16968      "MOCK_IMPL" function definitions. Patch from nherring; closes
16969      ticket 16869.
16970
16971  o Minor features (geoip):
16972    - Update geoip and geoip6 to the October 4 2016 Maxmind GeoLite2
16973      Country database.
16974
16975  o Minor features (unix domain sockets):
16976    - When configuring a unix domain socket for a SocksPort,
16977      ControlPort, or Hidden service, you can now wrap the address in
16978      quotes, using C-style escapes inside the quotes. This allows unix
16979      domain socket paths to contain spaces.
16980
16981  o Minor features (virtual addresses):
16982    - Increase the maximum number of bits for the IPv6 virtual network
16983      prefix from 16 to 104. In this way, the condition for address
16984      allocation is less restrictive. Closes ticket 20151; feature
16985      on 0.2.4.7-alpha.
16986
16987  o Minor bugfixes (address discovery):
16988    - Stop reordering IP addresses returned by the OS. This makes it
16989      more likely that Tor will guess the same relay IP address every
16990      time. Fixes issue 20163; bugfix on 0.2.7.1-alpha, ticket 17027.
16991      Reported by René Mayrhofer, patch by "cypherpunks".
16992
16993  o Minor bugfixes (client, unix domain sockets):
16994    - Disable IsolateClientAddr when using AF_UNIX backed SocksPorts as
16995      the client address is meaningless. Fixes bug 20261; bugfix
16996      on 0.2.6.3-alpha.
16997
16998  o Minor bugfixes (compilation, OpenBSD):
16999    - Detect Libevent2 functions correctly on systems that provide
17000      libevent2, but where libevent1 is linked with -levent. Fixes bug
17001      19904; bugfix on 0.2.2.24-alpha. Patch from Rubiate.
17002
17003  o Minor bugfixes (configuration):
17004    - When parsing quoted configuration values from the torrc file,
17005      handle windows line endings correctly. Fixes bug 19167; bugfix on
17006      0.2.0.16-alpha. Patch from "Pingl".
17007
17008  o Minor bugfixes (getpass):
17009    - Defensively fix a non-triggerable heap corruption at do_getpass()
17010      to protect ourselves from mistakes in the future. Fixes bug
17011      19223; bugfix on 0.2.7.3-rc. Bug found by Guido Vranken, patch
17012      by nherring.
17013
17014  o Minor bugfixes (hidden service):
17015    - Allow hidden services to run on IPv6 addresses even when the
17016      IPv6Exit option is not set. Fixes bug 18357; bugfix
17017      on 0.2.4.7-alpha.
17018
17019  o Documentation:
17020    - Add module-level internal documentation for 36 C files that
17021      previously didn't have a high-level overview. Closes ticket #20385.
17022
17023  o Required libraries:
17024    - When building with OpenSSL, Tor now requires version 1.0.1 or
17025      later. OpenSSL 1.0.0 and earlier are no longer supported by the
17026      OpenSSL team, and should not be used. Closes ticket 20303.
17027
17028
17029Changes in version 0.2.9.3-alpha - 2016-09-23
17030  Tor 0.2.9.3-alpha adds improved support for entities that want to make
17031  high-performance services available through the Tor .onion mechanism
17032  without themselves receiving anonymity as they host those services. It
17033  also tries harder to ensure that all steps on a circuit are using the
17034  strongest crypto possible, strengthens some TLS properties, and
17035  resolves several bugs -- including a pair of crash bugs from the 0.2.8
17036  series. Anybody running an earlier version of 0.2.9.x should upgrade.
17037
17038  o Major bugfixes (crash, also in 0.2.8.8):
17039    - Fix a complicated crash bug that could affect Tor clients
17040      configured to use bridges when replacing a networkstatus consensus
17041      in which one of their bridges was mentioned. OpenBSD users saw
17042      more crashes here, but all platforms were potentially affected.
17043      Fixes bug 20103; bugfix on 0.2.8.2-alpha.
17044
17045  o Major bugfixes (relay, OOM handler, also in 0.2.8.8):
17046    - Fix a timing-dependent assertion failure that could occur when we
17047      tried to flush from a circuit after having freed its cells because
17048      of an out-of-memory condition. Fixes bug 20203; bugfix on
17049      0.2.8.1-alpha. Thanks to "cypherpunks" for help diagnosing
17050      this one.
17051
17052  o Major features (circuit building, security):
17053    - Authorities, relays and clients now require ntor keys in all
17054      descriptors, for all hops (except for rare hidden service protocol
17055      cases), for all circuits, and for all other roles. Part of
17056      ticket 19163.
17057    - Tor authorities, relays, and clients only use ntor, except for
17058      rare cases in the hidden service protocol. Part of ticket 19163.
17059
17060  o Major features (single-hop "hidden" services):
17061    - Add experimental HiddenServiceSingleHopMode and
17062      HiddenServiceNonAnonymousMode options. When both are set to 1,
17063      every hidden service on a Tor instance becomes a non-anonymous
17064      Single Onion Service. Single Onions make one-hop (direct)
17065      connections to their introduction and rendezvous points. One-hop
17066      circuits make Single Onion servers easily locatable, but clients
17067      remain location-anonymous. This is compatible with the existing
17068      hidden service implementation, and works on the current tor
17069      network without any changes to older relays or clients. Implements
17070      proposal 260, completes ticket 17178. Patch by teor and asn.
17071
17072  o Major features (resource management):
17073    - Tor can now notice it is about to run out of sockets, and
17074      preemptively close connections of lower priority. (This feature is
17075      off by default for now, since the current prioritizing method is
17076      yet not mature enough. You can enable it by setting
17077      "DisableOOSCheck 0", but watch out: it might close some sockets
17078      you would rather have it keep.) Closes ticket 18640.
17079
17080  o Major bugfixes (circuit building):
17081    - Hidden service client-to-intro-point and service-to-rendezvous-
17082      point circuits use the TAP key supplied by the protocol, to avoid
17083      epistemic attacks. Fixes bug 19163; bugfix on 0.2.4.18-rc.
17084
17085  o Major bugfixes (compilation, OpenBSD):
17086    - Fix a Libevent-detection bug in our autoconf script that would
17087      prevent Tor from linking successfully on OpenBSD. Patch from
17088      rubiate. Fixes bug 19902; bugfix on 0.2.9.1-alpha.
17089
17090  o Major bugfixes (hidden services):
17091    - Clients now require hidden services to include the TAP keys for
17092      their intro points in the hidden service descriptor. This prevents
17093      an inadvertent upgrade to ntor, which a malicious hidden service
17094      could use to distinguish clients by consensus version. Fixes bug
17095      20012; bugfix on 0.2.4.8-alpha. Patch by teor.
17096
17097  o Minor features (security, TLS):
17098    - Servers no longer support clients that without AES ciphersuites.
17099      (3DES is no longer considered an acceptable cipher.) We believe
17100      that no such Tor clients currently exist, since Tor has required
17101      OpenSSL 0.9.7 or later since 2009. Closes ticket 19998.
17102
17103  o Minor feature (fallback directories):
17104    - Remove 8 fallbacks that are no longer suitable, leaving 81 of the
17105      100 fallbacks originally introduced in Tor 0.2.8.2-alpha in March
17106      2016. Closes ticket 20190; patch by teor.
17107
17108  o Minor features (geoip, also in 0.2.8.8):
17109    - Update geoip and geoip6 to the September 6 2016 Maxmind GeoLite2
17110      Country database.
17111
17112  o Minor feature (port flags):
17113    - Add new flags to the *Port options to finer control over which
17114      requests are allowed. The flags are NoDNSRequest, NoOnionTraffic,
17115      and the synthetic flag OnionTrafficOnly, which is equivalent to
17116      NoDNSRequest, NoIPv4Traffic, and NoIPv6Traffic. Closes enhancement
17117      18693; patch by "teor".
17118
17119  o Minor features (directory authority):
17120    - After voting, if the authorities decide that a relay is not
17121      "Valid", they no longer include it in the consensus at all. Closes
17122      ticket 20002; implements part of proposal 272.
17123
17124  o Minor features (testing):
17125    - Disable memory protections on OpenBSD when performing our unit
17126      tests for memwipe(). The test deliberately invokes undefined
17127      behavior, and the OpenBSD protections interfere with this. Patch
17128      from "rubiate". Closes ticket 20066.
17129
17130  o Minor features (testing, ipv6):
17131    - Add the single-onion and single-onion-ipv6 chutney targets to
17132      "make test-network-all". This requires a recent chutney version
17133      with the single onion network flavours (git c72a652 or later).
17134      Closes ticket 20072; patch by teor.
17135    - Add the hs-ipv6 chutney target to make test-network-all's IPv6
17136      tests. Remove bridges+hs, as it's somewhat redundant. This
17137      requires a recent chutney version that supports IPv6 clients,
17138      relays, and authorities. Closes ticket 20069; patch by teor.
17139
17140  o Minor features (Tor2web):
17141    - Make Tor2web clients respect ReachableAddresses. This feature was
17142      inadvertently enabled in 0.2.8.6, then removed by bugfix 19973 on
17143      0.2.8.7. Implements feature 20034. Patch by teor.
17144
17145  o Minor features (unit tests):
17146    - We've done significant work to make the unit tests run faster.
17147    - Our link-handshake unit tests now check that when invalid
17148      handshakes fail, they fail with the error messages we expected.
17149    - Our unit testing code that captures log messages no longer
17150      prevents them from being written out if the user asked for them
17151      (by passing --debug or --info or or --notice --warn to the "test"
17152      binary). This change prevents us from missing unexpected log
17153      messages simply because we were looking for others. Related to
17154      ticket 19999.
17155    - The unit tests now log all warning messages with the "BUG" flag.
17156      Previously, they only logged errors by default. This change will
17157      help us make our testing code more correct, and make sure that we
17158      only hit this code when we mean to. In the meantime, however,
17159      there will be more warnings in the unit test logs than before.
17160      This is preparatory work for ticket 19999.
17161    - The unit tests now treat any failure of a "tor_assert_nonfatal()"
17162      assertion as a test failure.
17163
17164  o Minor bug fixes (circuits):
17165    - Use the CircuitBuildTimeout option whenever
17166      LearnCircuitBuildTimeout is disabled. Previously, we would respect
17167      the option when a user disabled it, but not when it was disabled
17168      because some other option was set. Fixes bug 20073; bugfix on
17169      0.2.4.12-alpha. Patch by teor.
17170
17171  o Minor bugfixes (allocation):
17172    - Change how we allocate memory for large chunks on buffers, to
17173      avoid a (currently impossible) integer overflow, and to waste less
17174      space when allocating unusually large chunks. Fixes bug 20081;
17175      bugfix on 0.2.0.16-alpha. Issue identified by Guido Vranken.
17176    - Always include orconfig.h before including any other C headers.
17177      Sometimes, it includes macros that affect the behavior of the
17178      standard headers. Fixes bug 19767; bugfix on 0.2.9.1-alpha (the
17179      first version to use AC_USE_SYSTEM_EXTENSIONS).
17180    - Fix a syntax error in the IF_BUG_ONCE__() macro in non-GCC-
17181      compatible compilers. Fixes bug 20141; bugfix on 0.2.9.1-alpha.
17182      Patch from Gisle Vanem.
17183    - Stop trying to build with Clang 4.0's -Wthread-safety warnings.
17184      They apparently require a set of annotations that we aren't
17185      currently using, and they create false positives in our pthreads
17186      wrappers. Fixes bug 20110; bugfix on 0.2.9.1-alpha.
17187
17188  o Minor bugfixes (directory authority):
17189    - Die with a more useful error when the operator forgets to place
17190      the authority_signing_key file into the keys directory. This
17191      avoids an uninformative assert & traceback about having an invalid
17192      key. Fixes bug 20065; bugfix on 0.2.0.1-alpha.
17193    - When allowing private addresses, mark Exits that only exit to
17194      private locations as such. Fixes bug 20064; bugfix
17195      on 0.2.2.9-alpha.
17196
17197  o Minor bugfixes (documentation):
17198    - Document the default PathsNeededToBuildCircuits value that's used
17199      by clients when the directory authorities don't set
17200      min_paths_for_circs_pct. Fixes bug 20117; bugfix on 02c320916e02
17201      in 0.2.4.10-alpha. Patch by teor, reported by Jesse V.
17202    - Fix manual for the User option: it takes a username, not a UID.
17203      Fixes bug 19122; bugfix on 0.0.2pre16 (the first version to have
17204      a manpage!).
17205
17206  o Minor bugfixes (hidden services):
17207    - Stop logging intro point details to the client log on certain
17208      error conditions. Fixed as part of bug 20012; bugfix on
17209      0.2.4.8-alpha. Patch by teor.
17210
17211  o Minor bugfixes (IPv6, testing):
17212    - Check for IPv6 correctly on Linux when running test networks.
17213      Fixes bug 19905; bugfix on 0.2.7.3-rc; patch by teor.
17214
17215  o Minor bugfixes (Linux seccomp2 sandbox):
17216    - Add permission to run the sched_yield() and sigaltstack() system
17217      calls, in order to support versions of Tor compiled with asan or
17218      ubsan code that use these calls. Now "sandbox 1" and
17219      "--enable-expensive-hardening" should be compatible on more
17220      systems. Fixes bug 20063; bugfix on 0.2.5.1-alpha.
17221
17222  o Minor bugfixes (logging):
17223    - When logging a message from the BUG() macro, be explicit about
17224      what we were asserting. Previously we were confusing what we were
17225      asserting with what the bug was. Fixes bug 20093; bugfix
17226      on 0.2.9.1-alpha.
17227    - When we are unable to remove the bw_accounting file, do not warn
17228      if the reason we couldn't remove it was that it didn't exist.
17229      Fixes bug 19964; bugfix on 0.2.5.4-alpha. Patch from 'pastly'.
17230
17231  o Minor bugfixes (option parsing):
17232    - Count unix sockets when counting client listeners (SOCKS, Trans,
17233      NATD, and DNS). This has no user-visible behaviour changes: these
17234      options are set once, and never read. Required for correct
17235      behaviour in ticket 17178. Fixes bug 19677; bugfix on
17236      0.2.6.3-alpha. Patch by teor.
17237
17238  o Minor bugfixes (options):
17239    - Check the consistency of UseEntryGuards and EntryNodes more
17240      reliably. Fixes bug 20074; bugfix on 0.2.4.12-alpha. Patch
17241      by teor.
17242    - Stop changing the configured value of UseEntryGuards on
17243      authorities and Tor2web clients. Fixes bug 20074; bugfix on
17244      commits 51fc6799 in 0.1.1.16-rc and acda1735 in 0.2.4.3-alpha.
17245      Patch by teor.
17246
17247  o Minor bugfixes (Tor2web):
17248    - Prevent Tor2web clients running hidden services, these services
17249      are not anonymous due to the one-hop client paths. Fixes bug
17250      19678. Patch by teor.
17251
17252  o Minor bugfixes (unit tests):
17253    - Fix a shared-random unit test that was failing on big endian
17254      architectures due to internal representation of a integer copied
17255      to a buffer. The test is changed to take a full 32 bytes of data
17256      and use the output of a python script that make the COMMIT and
17257      REVEAL calculation according to the spec. Fixes bug 19977; bugfix
17258      on 0.2.9.1-alpha.
17259    - The tor_tls_server_info_callback unit test no longer crashes when
17260      debug-level logging is turned on. Fixes bug 20041; bugfix
17261      on 0.2.8.1-alpha.
17262
17263
17264Changes in version 0.2.8.8 - 2016-09-23
17265  Tor 0.2.8.8 fixes two crash bugs present in previous versions of the
17266  0.2.8.x series. Relays running 0.2.8.x should upgrade, as should users
17267  who select public relays as their bridges.
17268
17269  o Major bugfixes (crash):
17270    - Fix a complicated crash bug that could affect Tor clients
17271      configured to use bridges when replacing a networkstatus consensus
17272      in which one of their bridges was mentioned. OpenBSD users saw
17273      more crashes here, but all platforms were potentially affected.
17274      Fixes bug 20103; bugfix on 0.2.8.2-alpha.
17275
17276  o Major bugfixes (relay, OOM handler):
17277    - Fix a timing-dependent assertion failure that could occur when we
17278      tried to flush from a circuit after having freed its cells because
17279      of an out-of-memory condition. Fixes bug 20203; bugfix on
17280      0.2.8.1-alpha. Thanks to "cypherpunks" for help diagnosing
17281      this one.
17282
17283  o Minor feature (fallback directories):
17284    - Remove 8 fallbacks that are no longer suitable, leaving 81 of the
17285      100 fallbacks originally introduced in Tor 0.2.8.2-alpha in March
17286      2016. Closes ticket 20190; patch by teor.
17287
17288  o Minor features (geoip):
17289    - Update geoip and geoip6 to the September 6 2016 Maxmind GeoLite2
17290      Country database.
17291
17292
17293Changes in version 0.2.9.2-alpha - 2016-08-24
17294  Tor 0.2.9.2-alpha continues development of the 0.2.9 series with
17295  several new features and bugfixes. It also includes an important
17296  authority update and an important bugfix from 0.2.8.7. Everyone who
17297  sets the ReachableAddresses option, and all bridges, are strongly
17298  encouraged to upgrade to 0.2.8.7, or to 0.2.9.2-alpha.
17299
17300  o Directory authority changes (also in 0.2.8.7):
17301    - The "Tonga" bridge authority has been retired; the new bridge
17302      authority is "Bifroest". Closes tickets 19728 and 19690.
17303
17304  o Major bugfixes (client, security, also in 0.2.8.7):
17305    - Only use the ReachableAddresses option to restrict the first hop
17306      in a path. In earlier versions of 0.2.8.x, it would apply to
17307      every hop in the path, with a possible degradation in anonymity
17308      for anyone using an uncommon ReachableAddress setting. Fixes bug
17309      19973; bugfix on 0.2.8.2-alpha.
17310
17311  o Major features (user interface):
17312    - Tor now supports the ability to declare options deprecated, so
17313      that we can recommend that people stop using them. Previously,
17314      this was done in an ad-hoc way. Closes ticket 19820.
17315
17316  o Major bugfixes (directory downloads):
17317    - Avoid resetting download status for consensuses hourly, since we
17318      already have another, smarter retry mechanism. Fixes bug 8625;
17319      bugfix on 0.2.0.9-alpha.
17320
17321  o Minor features (config):
17322    - Warn users when descriptor and port addresses are inconsistent.
17323      Mitigates bug 13953; patch by teor.
17324
17325  o Minor features (geoip):
17326    - Update geoip and geoip6 to the August 2 2016 Maxmind GeoLite2
17327      Country database.
17328
17329  o Minor features (user interface):
17330    - There is a new --list-deprecated-options command-line option to
17331      list all of the deprecated options. Implemented as part of
17332      ticket 19820.
17333
17334  o Minor bugfixes (code style):
17335    - Fix an integer signedness conversion issue in the case conversion
17336      tables. Fixes bug 19168; bugfix on 0.2.1.11-alpha.
17337
17338  o Minor bugfixes (compilation):
17339    - Build correctly on versions of libevent2 without support for
17340      evutil_secure_rng_add_bytes(). Fixes bug 19904; bugfix
17341      on 0.2.5.4-alpha.
17342    - Fix a compilation warning on GCC versions before 4.6. Our
17343      ENABLE_GCC_WARNING macro used the word "warning" as an argument,
17344      when it is also required as an argument to the compiler pragma.
17345      Fixes bug 19901; bugfix on 0.2.9.1-alpha.
17346
17347  o Minor bugfixes (compilation, also in 0.2.8.7):
17348    - Remove an inappropriate "inline" in tortls.c that was causing
17349      warnings on older versions of GCC. Fixes bug 19903; bugfix
17350      on 0.2.8.1-alpha.
17351
17352  o Minor bugfixes (fallback directories, also in 0.2.8.7):
17353    - Avoid logging a NULL string pointer when loading fallback
17354      directory information. Fixes bug 19947; bugfix on 0.2.4.7-alpha
17355      and 0.2.8.1-alpha. Report and patch by "rubiate".
17356
17357  o Minor bugfixes (logging):
17358    - Log a more accurate message when we fail to dump a microdescriptor.
17359      Fixes bug 17758; bugfix on 0.2.2.8-alpha. Patch from Daniel Pinto.
17360
17361  o Minor bugfixes (memory leak):
17362    - Fix a series of slow memory leaks related to parsing torrc files
17363      and options. Fixes bug 19466; bugfix on 0.2.1.6-alpha.
17364
17365  o Deprecated features:
17366    - A number of DNS-cache-related sub-options for client ports are now
17367      deprecated for security reasons, and may be removed in a future
17368      version of Tor. (We believe that client-side DNS caching is a bad
17369      idea for anonymity, and you should not turn it on.) The options
17370      are: CacheDNS, CacheIPv4DNS, CacheIPv6DNS, UseDNSCache,
17371      UseIPv4Cache, and UseIPv6Cache.
17372    - A number of options are deprecated for security reasons, and may
17373      be removed in a future version of Tor. The options are:
17374      AllowDotExit, AllowInvalidNodes, AllowSingleHopCircuits,
17375      AllowSingleHopExits, ClientDNSRejectInternalAddresses,
17376      CloseHSClientCircuitsImmediatelyOnTimeout,
17377      CloseHSServiceRendCircuitsImmediatelyOnTimeout,
17378      ExcludeSingleHopRelays, FastFirstHopPK, TLSECGroup,
17379      UseNTorHandshake, and WarnUnsafeSocks.
17380    - The *ListenAddress options are now deprecated as unnecessary: the
17381      corresponding *Port options should be used instead. These options
17382      may someday be removed. The affected options are:
17383      ControlListenAddress, DNSListenAddress, DirListenAddress,
17384      NATDListenAddress, ORListenAddress, SocksListenAddress,
17385      and TransListenAddress.
17386
17387  o Documentation:
17388    - Correct the IPv6 syntax in our documentation for the
17389      VirtualAddrNetworkIPv6 torrc option. Closes ticket 19743.
17390
17391  o Removed code:
17392    - We no longer include the (dead, deprecated) bufferevent code in
17393      Tor. Closes ticket 19450. Based on a patch from U+039b.
17394
17395
17396Changes in version 0.2.8.7 - 2016-08-24
17397  Tor 0.2.8.7 fixes an important bug related to the ReachableAddresses
17398  option in 0.2.8.6, and replaces a retiring bridge authority. Everyone
17399  who sets the ReachableAddresses option, and all bridges, are strongly
17400  encouraged to upgrade.
17401
17402  o Directory authority changes:
17403    - The "Tonga" bridge authority has been retired; the new bridge
17404      authority is "Bifroest". Closes tickets 19728 and 19690.
17405
17406  o Major bugfixes (client, security):
17407    - Only use the ReachableAddresses option to restrict the first hop
17408      in a path. In earlier versions of 0.2.8.x, it would apply to
17409      every hop in the path, with a possible degradation in anonymity
17410      for anyone using an uncommon ReachableAddress setting. Fixes bug
17411      19973; bugfix on 0.2.8.2-alpha.
17412
17413  o Minor features (geoip):
17414    - Update geoip and geoip6 to the August 2 2016 Maxmind GeoLite2
17415      Country database.
17416
17417  o Minor bugfixes (compilation):
17418    - Remove an inappropriate "inline" in tortls.c that was causing
17419      warnings on older versions of GCC. Fixes bug 19903; bugfix
17420      on 0.2.8.1-alpha.
17421
17422  o Minor bugfixes (fallback directories):
17423    - Avoid logging a NULL string pointer when loading fallback
17424      directory information. Fixes bug 19947; bugfix on 0.2.4.7-alpha
17425      and 0.2.8.1-alpha. Report and patch by "rubiate".
17426
17427
17428Changes in version 0.2.9.1-alpha - 2016-08-08
17429  Tor 0.2.9.1-alpha is the first alpha release in the 0.2.9 development
17430  series. It improves our support for hardened builds and compiler
17431  warnings, deploys some critical infrastructure for improvements to
17432  hidden services, includes a new timing backend that we hope to use for
17433  better support for traffic padding, makes it easier for programmers to
17434  log unexpected events, and contains other small improvements to
17435  security, correctness, and performance.
17436
17437  Below are the changes since 0.2.8.6.
17438
17439  o New system requirements:
17440    - Tor now requires Libevent version 2.0.10-stable or later. Older
17441      versions of Libevent have less efficient backends for several
17442      platforms, and lack the DNS code that we use for our server-side
17443      DNS support. This implements ticket 19554.
17444    - Tor now requires zlib version 1.2 or later, for security,
17445      efficiency, and (eventually) gzip support. (Back when we started,
17446      zlib 1.1 and zlib 1.0 were still found in the wild. 1.2 was
17447      released in 2003. We recommend the latest version.)
17448
17449  o Major features (build, hardening):
17450    - Tor now builds with -ftrapv by default on compilers that support
17451      it. This option detects signed integer overflow (which C forbids),
17452      and turns it into a hard-failure. We do not apply this option to
17453      code that needs to run in constant time to avoid side-channels;
17454      instead, we use -fwrapv in that code. Closes ticket 17983.
17455    - When --enable-expensive-hardening is selected, stop applying the
17456      clang/gcc sanitizers to code that needs to run in constant time.
17457      Although we are aware of no introduced side-channels, we are not
17458      able to prove that there are none. Related to ticket 17983.
17459
17460  o Major features (compilation):
17461    - Our big list of extra GCC warnings is now enabled by default when
17462      building with GCC (or with anything like Clang that claims to be
17463      GCC-compatible). To make all warnings into fatal compilation
17464      errors, pass --enable-fatal-warnings to configure. Closes
17465      ticket 19044.
17466    - Use the Autoconf macro AC_USE_SYSTEM_EXTENSIONS to automatically
17467      turn on C and POSIX extensions. (Previously, we attempted to do
17468      this on an ad hoc basis.) Closes ticket 19139.
17469
17470  o Major features (directory authorities, hidden services):
17471    - Directory authorities can now perform the shared randomness
17472      protocol specified by proposal 250. Using this protocol, directory
17473      authorities generate a global fresh random value every day. In the
17474      future, this value will be used by hidden services to select
17475      HSDirs. This release implements the directory authority feature;
17476      the hidden service side will be implemented in the future as part
17477      of proposal 224. Resolves ticket 16943; implements proposal 250.
17478
17479  o Major features (downloading, random exponential backoff):
17480    - When we fail to download an object from a directory service, wait
17481      for an (exponentially increasing) randomized amount of time before
17482      retrying, rather than a fixed interval as we did before. This
17483      prevents a group of Tor instances from becoming too synchronized,
17484      or a single Tor instance from becoming too predictable, in its
17485      download schedule. Closes ticket 15942.
17486
17487  o Major bugfixes (exit policies):
17488    - Avoid disclosing exit outbound bind addresses, configured port
17489      bind addresses, and local interface addresses in relay descriptors
17490      by default under ExitPolicyRejectPrivate. Instead, only reject
17491      these (otherwise unlisted) addresses if
17492      ExitPolicyRejectLocalInterfaces is set. Fixes bug 18456; bugfix on
17493      0.2.7.2-alpha. Patch by teor.
17494
17495  o Major bugfixes (hidden service client):
17496    - Allow Tor clients with appropriate controllers to work with
17497      FetchHidServDescriptors set to 0. Previously, this option also
17498      disabled descriptor cache lookup, thus breaking hidden services
17499      entirely. Fixes bug 18704; bugfix on 0.2.0.20-rc. Patch by "twim".
17500
17501  o Minor features (build, hardening):
17502    - Detect and work around a libclang_rt problem that would prevent
17503      clang from finding __mulodi4() on some 32-bit platforms, and thus
17504      keep -ftrapv from linking on those systems. Closes ticket 19079.
17505    - When building on a system without runtime support for the runtime
17506      hardening options, try to log a useful warning at configuration
17507      time, rather than an incomprehensible warning at link time. If
17508      expensive hardening was requested, this warning becomes an error.
17509      Closes ticket 18895.
17510
17511  o Minor features (code safety):
17512    - In our integer-parsing functions, ensure that maxiumum value we
17513      give is no smaller than the minimum value. Closes ticket 19063;
17514      patch from U+039b.
17515
17516  o Minor features (controller):
17517    - Implement new GETINFO queries for all downloads that use
17518      download_status_t to schedule retries. This allows controllers to
17519      examine the schedule for pending downloads. Closes ticket 19323.
17520    - Allow controllers to configure basic client authorization on
17521      hidden services when they create them with the ADD_ONION control
17522      command. Implements ticket 15588. Patch by "special".
17523    - Fire a STATUS_SERVER controller event whenever the hibernation
17524      status changes between "awake"/"soft"/"hard". Closes ticket 18685.
17525
17526  o Minor features (directory authority):
17527    - Directory authorities now only give the Guard flag to a relay if
17528      they are also giving it the Stable flag. This change allows us to
17529      simplify path selection for clients. It should have minimal effect
17530      in practice, since >99% of Guards already have the Stable flag.
17531      Implements ticket 18624.
17532    - Directory authorities now write their v3-status-votes file out to
17533      disk earlier in the consensus process, so we have a record of the
17534      votes even if we abort the consensus process. Resolves
17535      ticket 19036.
17536
17537  o Minor features (hidden service):
17538    - Stop being so strict about the payload length of "rendezvous1"
17539      cells. We used to be locked in to the "TAP" handshake length, and
17540      now we can handle better handshakes like "ntor". Resolves
17541      ticket 18998.
17542
17543  o Minor features (infrastructure, time):
17544    - Tor now uses the operating system's monotonic timers (where
17545      available) for internal fine-grained timing. Previously we would
17546      look at the system clock, and then attempt to compensate for the
17547      clock running backwards. Closes ticket 18908.
17548    - Tor now includes an improved timer backend, so that we can
17549      efficiently support tens or hundreds of thousands of concurrent
17550      timers, as will be needed for some of our planned anti-traffic-
17551      analysis work. This code is based on William Ahern's "timeout.c"
17552      project, which implements a "tickless hierarchical timing wheel".
17553      Closes ticket 18365.
17554
17555  o Minor features (logging):
17556    - Provide a more useful warning message when configured with an
17557      invalid Nickname. Closes ticket 18300; patch from "icanhasaccount".
17558    - When dumping unparseable router descriptors, optionally store them
17559      in separate files, named by digest, up to a configurable size
17560      limit. You can change the size limit by setting the
17561      MaxUnparseableDescSizeToLog option, and disable this feature by
17562      setting that option to 0. Closes ticket 18322.
17563    - Add a set of macros to check nonfatal assertions, for internal
17564      use. Migrating more of our checks to these should help us avoid
17565      needless crash bugs. Closes ticket 18613.
17566
17567  o Minor features (performance):
17568    - Change the "optimistic data" extension from "off by default" to
17569      "on by default". The default was ordinarily overridden by a
17570      consensus option, but when clients were bootstrapping for the
17571      first time, they would not have a consensus to get the option
17572      from. Changing this default saves a round-trip during startup.
17573      Closes ticket 18815.
17574
17575  o Minor features (relay, usability):
17576    - When the directory authorities refuse a bad relay's descriptor,
17577      encourage the relay operator to contact us. Many relay operators
17578      won't notice this line in their logs, but it's a win if even a few
17579      learn why we don't like what their relay was doing. Resolves
17580      ticket 18760.
17581
17582  o Minor features (testing):
17583    - Let backtrace tests work correctly under AddressSanitizer. Fixes
17584      part of bug 18934; bugfix on 0.2.5.2-alpha.
17585    - Move the test-network.sh script to chutney, and modify tor's test-
17586      network.sh to call the (newer) chutney version when available.
17587      Resolves ticket 19116. Patch by teor.
17588    - Use the lcov convention for marking lines as unreachable, so that
17589      we don't count them when we're generating test coverage data.
17590      Update our coverage tools to understand this convention. Closes
17591      ticket 16792.
17592
17593  o Minor bugfixes (bootstrap):
17594    - Remember the directory we fetched the consensus or previous
17595      certificates from, and use it to fetch future authority
17596      certificates. This change improves bootstrapping performance.
17597      Fixes bug 18963; bugfix on 0.2.8.1-alpha.
17598
17599  o Minor bugfixes (build):
17600    - The test-stem and test-network makefile targets now depend only on
17601      the tor binary that they are testing. Previously, they depended on
17602      "make all". Fixes bug 18240; bugfix on 0.2.8.2-alpha. Based on a
17603      patch from "cypherpunks".
17604
17605  o Minor bugfixes (circuits):
17606    - Make sure extend_info_from_router() is only called on servers.
17607      Fixes bug 19639; bugfix on 0.2.8.1-alpha.
17608
17609  o Minor bugfixes (compilation):
17610    - When building with Clang, use a full set of GCC warnings.
17611      (Previously, we included only a subset, because of the way we
17612      detected them.) Fixes bug 19216; bugfix on 0.2.0.1-alpha.
17613
17614  o Minor bugfixes (directory authority):
17615    - Authorities now sort the "package" lines in their votes, for ease
17616      of debugging. (They are already sorted in consensus documents.)
17617      Fixes bug 18840; bugfix on 0.2.6.3-alpha.
17618    - When parsing a detached signature, make sure we use the length of
17619      the digest algorithm instead of an hardcoded DIGEST256_LEN in
17620      order to avoid comparing bytes out-of-bounds with a smaller digest
17621      length such as SHA1. Fixes bug 19066; bugfix on 0.2.2.6-alpha.
17622
17623  o Minor bugfixes (documentation):
17624    - Document the --passphrase-fd option in the tor manpage. Fixes bug
17625      19504; bugfix on 0.2.7.3-rc.
17626    - Fix the description of the --passphrase-fd option in the
17627      tor-gencert manpage. The option is used to pass the number of a
17628      file descriptor to read the passphrase from, not to read the file
17629      descriptor from. Fixes bug 19505; bugfix on 0.2.0.20-alpha.
17630
17631  o Minor bugfixes (ephemeral hidden service):
17632    - When deleting an ephemeral hidden service, close its intro points
17633      even if they are not completely open. Fixes bug 18604; bugfix
17634      on 0.2.7.1-alpha.
17635
17636  o Minor bugfixes (guard selection):
17637    - Use a single entry guard even if the NumEntryGuards consensus
17638      parameter is not provided. Fixes bug 17688; bugfix
17639      on 0.2.5.6-alpha.
17640    - Don't mark guards as unreachable if connection_connect() fails.
17641      That function fails for local reasons, so it shouldn't reveal
17642      anything about the status of the guard. Fixes bug 14334; bugfix
17643      on 0.2.3.10-alpha.
17644
17645  o Minor bugfixes (hidden service client):
17646    - Increase the minimum number of internal circuits we preemptively
17647      build from 2 to 3, so a circuit is available when a client
17648      connects to another onion service. Fixes bug 13239; bugfix
17649      on 0.1.0.1-rc.
17650
17651  o Minor bugfixes (logging):
17652    - When logging a directory ownership mismatch, log the owning
17653      username correctly. Fixes bug 19578; bugfix on 0.2.2.29-beta.
17654
17655  o Minor bugfixes (memory leaks):
17656    - Fix a small, uncommon memory leak that could occur when reading a
17657      truncated ed25519 key file. Fixes bug 18956; bugfix
17658      on 0.2.6.1-alpha.
17659
17660  o Minor bugfixes (testing):
17661    - Allow clients to retry HSDirs much faster in test networks. Fixes
17662      bug 19702; bugfix on 0.2.7.1-alpha. Patch by teor.
17663    - Disable ASAN's detection of segmentation faults while running
17664      test_bt.sh, so that we can make sure that our own backtrace
17665      generation code works. Fixes another aspect of bug 18934; bugfix
17666      on 0.2.5.2-alpha. Patch from "cypherpunks".
17667    - Fix the test-network-all target on out-of-tree builds by using the
17668      correct path to the test driver script. Fixes bug 19421; bugfix
17669      on 0.2.7.3-rc.
17670
17671  o Minor bugfixes (time):
17672    - Improve overflow checks in tv_udiff and tv_mdiff. Fixes bug 19483;
17673      bugfix on all released tor versions.
17674    - When computing the difference between two times in milliseconds,
17675      we now round to the nearest millisecond correctly. Previously, we
17676      could sometimes round in the wrong direction. Fixes bug 19428;
17677      bugfix on 0.2.2.2-alpha.
17678
17679  o Minor bugfixes (user interface):
17680    - Display a more accurate number of suppressed messages in the log
17681      rate-limiter. Previously, there was a potential integer overflow
17682      in the counter. Now, if the number of messages hits a maximum, the
17683      rate-limiter doesn't count any further. Fixes bug 19435; bugfix
17684      on 0.2.4.11-alpha.
17685    - Fix a typo in the passphrase prompt for the ed25519 identity key.
17686      Fixes bug 19503; bugfix on 0.2.7.2-alpha.
17687
17688  o Code simplification and refactoring:
17689    - Remove redundant declarations of the MIN macro. Closes
17690      ticket 18889.
17691    - Rename tor_dup_addr() to tor_addr_to_str_dup() to avoid confusion.
17692      Closes ticket 18462; patch from "icanhasaccount".
17693    - Split the 600-line directory_handle_command_get function into
17694      separate functions for different URL types. Closes ticket 16698.
17695
17696  o Documentation:
17697    - Fix spelling of "--enable-tor2web-mode" in the manpage. Closes
17698      ticket 19153. Patch from "U+039b".
17699
17700  o Removed features:
17701    - Remove support for "GET /tor/bytes.txt" DirPort request, and
17702      "GETINFO dir-usage" controller request, which were only available
17703      via a compile-time option in Tor anyway. Feature was added in
17704      0.2.2.1-alpha. Resolves ticket 19035.
17705    - There is no longer a compile-time option to disable support for
17706      TransPort. (If you don't want TransPort; just don't use it.) Patch
17707      from "U+039b". Closes ticket 19449.
17708
17709  o Testing:
17710    - Run more workqueue tests as part of "make check". These had
17711      previously been implemented, but you needed to know special
17712      command-line options to enable them.
17713    - We now have unit tests for our code to reject zlib "compression
17714      bombs". (Fortunately, the code works fine.)
17715
17716
17717Changes in version 0.2.8.6 - 2016-08-02
17718
17719  Tor 0.2.8.6 is the first stable version of the Tor 0.2.8 series.
17720
17721  The Tor 0.2.8 series improves client bootstrapping performance,
17722  completes the authority-side implementation of improved identity
17723  keys for relays, and includes numerous bugfixes and performance
17724  improvements throughout the program. This release continues to
17725  improve the coverage of Tor's test suite.  For a full list of
17726  changes since Tor 0.2.7, see the ReleaseNotes file.
17727
17728  Changes since 0.2.8.5-rc:
17729
17730  o Minor features (geoip):
17731    - Update geoip and geoip6 to the July 6 2016 Maxmind GeoLite2
17732      Country database.
17733
17734  o Minor bugfixes (compilation):
17735    - Fix a compilation warning in the unit tests on systems where char
17736      is signed. Fixes bug 19682; bugfix on 0.2.8.1-alpha.
17737
17738  o Minor bugfixes (fallback directories):
17739    - Remove 1 fallback that was on the hardcoded list, then opted-out,
17740      leaving 89 of the 100 fallbacks originally introduced in Tor
17741      0.2.8.2-alpha in March 2016. Closes ticket 19782; patch by teor.
17742
17743  o Minor bugfixes (Linux seccomp2 sandbox):
17744    - Allow more syscalls when running with "Sandbox 1" enabled:
17745      sysinfo, getsockopt(SO_SNDBUF), and setsockopt(SO_SNDBUFFORCE). On
17746      some systems, these are required for Tor to start. Fixes bug
17747      18397; bugfix on 0.2.5.1-alpha. Patch from Daniel Pinto.
17748    - Allow IPPROTO_UDP datagram sockets when running with "Sandbox 1",
17749      so that get_interface_address6_via_udp_socket_hack() can work.
17750      Fixes bug 19660; bugfix on 0.2.5.1-alpha.
17751
17752
17753Changes in version 0.2.8.5-rc - 2016-07-07
17754  Tor 0.2.8.5-rc is the second release candidate in the Tor 0.2.8
17755  series. If we find no new bugs or regressions here, the first stable
17756  0.2.8 release will be identical to it. It has a few small bugfixes
17757  against previous versions.
17758
17759  o Directory authority changes:
17760    - Urras is no longer a directory authority. Closes ticket 19271.
17761
17762  o Major bugfixes (heartbeat):
17763    - Fix a regression that would crash Tor when the periodic
17764      "heartbeat" log messages were disabled. Fixes bug 19454; bugfix on
17765      0.2.8.1-alpha. Reported by "kubaku".
17766
17767  o Minor features (build):
17768    - Tor now again builds with the recent OpenSSL 1.1 development
17769      branch (tested against 1.1.0-pre6-dev). Closes ticket 19499.
17770    - When building manual pages, set the timezone to "UTC", so that the
17771      output is reproducible. Fixes bug 19558; bugfix on 0.2.2.9-alpha.
17772      Patch from intrigeri.
17773
17774  o Minor bugfixes (fallback directory selection):
17775    - Avoid errors during fallback selection if there are no eligible
17776      fallbacks. Fixes bug 19480; bugfix on 0.2.8.3-alpha. Patch
17777      by teor.
17778
17779  o Minor bugfixes (IPv6, microdescriptors):
17780    - Don't check node addresses when we only have a routerstatus. This
17781      allows IPv6-only clients to bootstrap by fetching microdescriptors
17782      from fallback directory mirrors. (The microdescriptor consensus
17783      has no IPv6 addresses in it.) Fixes bug 19608; bugfix
17784      on 0.2.8.2-alpha.
17785
17786  o Minor bugfixes (logging):
17787    - Reduce pointlessly verbose log messages when directory servers
17788      can't be found. Fixes bug 18849; bugfix on 0.2.8.3-alpha and
17789      0.2.8.1-alpha. Patch by teor.
17790    - When a fallback directory changes its fingerprint from the hard-
17791      coded fingerprint, log a less severe, more explanatory log
17792      message. Fixes bug 18812; bugfix on 0.2.8.1-alpha. Patch by teor.
17793
17794  o Minor bugfixes (Linux seccomp2 sandboxing):
17795    - Allow statistics to be written to disk when "Sandbox 1" is
17796      enabled. Fixes bugs 19556 and 19957; bugfix on 0.2.5.1-alpha and
17797      0.2.6.1-alpha respectively.
17798
17799  o Minor bugfixes (user interface):
17800    - Remove a warning message "Service [scrubbed] not found after
17801      descriptor upload". This message appears when one uses HSPOST
17802      control command to upload a service descriptor. Since there is
17803      only a descriptor and no service, showing this message is
17804      pointless and confusing. Fixes bug 19464; bugfix on 0.2.7.2-alpha.
17805
17806  o Fallback directory list:
17807    - Add a comment to the generated fallback directory list that
17808      explains how to comment out unsuitable fallbacks in a way that's
17809      compatible with the stem fallback parser.
17810    - Update fallback whitelist and blacklist based on relay operator
17811      emails. Blacklist unsuitable (non-working, over-volatile)
17812      fallbacks. Resolves ticket 19071. Patch by teor.
17813    - Remove 10 unsuitable fallbacks, leaving 90 of the 100 fallbacks
17814      originally introduced in Tor 0.2.8.2-alpha in March 2016. Closes
17815      ticket 19071; patch by teor.
17816
17817
17818Changes in version 0.2.8.4-rc - 2016-06-15
17819  Tor 0.2.8.4-rc is the first release candidate in the Tor 0.2.8 series.
17820  If we find no new bugs or regressions here, the first stable 0.2.8
17821  release will be identical to it. It has a few small bugfixes against
17822  previous versions.
17823
17824  o Major bugfixes (user interface):
17825    - Correctly give a warning in the cases where a relay is specified
17826      by nickname, and one such relay is found, but it is not officially
17827      Named. Fixes bug 19203; bugfix on 0.2.3.1-alpha.
17828
17829  o Minor features (build):
17830    - Tor now builds once again with the recent OpenSSL 1.1 development
17831      branch (tested against 1.1.0-pre5 and 1.1.0-pre6-dev).
17832
17833  o Minor features (geoip):
17834    - Update geoip and geoip6 to the June 7 2016 Maxmind GeoLite2
17835      Country database.
17836
17837  o Minor bugfixes (compilation):
17838    - Cause the unit tests to compile correctly on mingw64 versions that
17839      lack sscanf. Fixes bug 19213; bugfix on 0.2.7.1-alpha.
17840
17841  o Minor bugfixes (downloading):
17842    - Predict more correctly whether we'll be downloading over HTTP when
17843      we determine the maximum length of a URL. This should avoid a
17844      "BUG" warning about the Squid HTTP proxy and its URL limits. Fixes
17845      bug 19191.
17846
17847
17848Changes in version 0.2.8.3-alpha - 2016-05-26
17849  Tor 0.2.8.3-alpha resolves several bugs, most of them introduced over
17850  the course of the 0.2.8 development cycle. It improves the behavior of
17851  directory clients, fixes several crash bugs, fixes a gap in compiler
17852  hardening, and allows the full integration test suite to run on
17853  more platforms.
17854
17855  o Major bugfixes (security, client, DNS proxy):
17856    - Stop a crash that could occur when a client running with DNSPort
17857      received a query with multiple address types, and the first
17858      address type was not supported. Found and fixed by Scott Dial.
17859      Fixes bug 18710; bugfix on 0.2.5.4-alpha.
17860
17861  o Major bugfixes (security, compilation):
17862    - Correctly detect compiler flags on systems where _FORTIFY_SOURCE
17863      is predefined. Previously, our use of -D_FORTIFY_SOURCE would
17864      cause a compiler warning, thereby making other checks fail, and
17865      needlessly disabling compiler-hardening support. Fixes one case of
17866      bug 18841; bugfix on 0.2.3.17-beta. Patch from "trudokal".
17867
17868  o Major bugfixes (security, directory authorities):
17869    - Fix a crash and out-of-bounds write during authority voting, when
17870      the list of relays includes duplicate ed25519 identity keys. Fixes
17871      bug 19032; bugfix on 0.2.8.2-alpha.
17872
17873  o Major bugfixes (client, bootstrapping):
17874    - Check if bootstrap consensus downloads are still needed when the
17875      linked connection attaches. This prevents tor making unnecessary
17876      begindir-style connections, which are the only directory
17877      connections tor clients make since the fix for 18483 was merged.
17878    - Fix some edge cases where consensus download connections may not
17879      have been closed, even though they were not needed. Related to fix
17880      for 18809.
17881    - Make relays retry consensus downloads the correct number of times,
17882      rather than the more aggressive client retry count. Fixes part of
17883      ticket 18809.
17884    - Stop downloading consensuses when we have a consensus, even if we
17885      don't have all the certificates for it yet. Fixes bug 18809;
17886      bugfix on 0.2.8.1-alpha. Patches by arma and teor.
17887
17888  o Major bugfixes (directory mirrors):
17889    - Decide whether to advertise begindir support in the the same way
17890      we decide whether to advertise our DirPort. Allowing these
17891      decisions to become out-of-sync led to surprising behavior like
17892      advertising begindir support when hibernation made us not
17893      advertise a DirPort. Resolves bug 18616; bugfix on 0.2.8.1-alpha.
17894      Patch by teor.
17895
17896  o Major bugfixes (IPv6 bridges, client):
17897    - Actually use IPv6 addresses when selecting directory addresses for
17898      IPv6 bridges. Fixes bug 18921; bugfix on 0.2.8.1-alpha. Patch
17899      by "teor".
17900
17901  o Major bugfixes (key management):
17902    - If OpenSSL fails to generate an RSA key, do not retain a dangling
17903      pointer to the previous (uninitialized) key value. The impact here
17904      should be limited to a difficult-to-trigger crash, if OpenSSL is
17905      running an engine that makes key generation failures possible, or
17906      if OpenSSL runs out of memory. Fixes bug 19152; bugfix on
17907      0.2.1.10-alpha. Found by Yuan Jochen Kang, Suman Jana, and
17908      Baishakhi Ray.
17909
17910  o Major bugfixes (testing):
17911    - Fix a bug that would block 'make test-network-all' on systems where
17912      IPv6 packets were lost. Fixes bug 19008; bugfix on 0.2.7.3-rc.
17913    - Avoid "WSANOTINITIALISED" warnings in the unit tests. Fixes bug 18668;
17914      bugfix on 0.2.8.1-alpha.
17915
17916  o Minor features (clients):
17917    - Make clients, onion services, and bridge relays always use an
17918      encrypted begindir connection for directory requests. Resolves
17919      ticket 18483. Patch by "teor".
17920
17921  o Minor features (fallback directory mirrors):
17922    - Give each fallback the same weight for client selection; restrict
17923      fallbacks to one per operator; report fallback directory detail
17924      changes when rebuilding list; add new fallback directory mirrors
17925      to the whitelist; and many other minor simplifications and fixes.
17926      Closes tasks 17905, 18749, bug 18689, and fixes part of bug 18812 on
17927      0.2.8.1-alpha; patch by "teor".
17928    - Replace the 21 fallbacks generated in January 2016 and included in
17929      Tor 0.2.8.1-alpha, with a list of 100 fallbacks generated in March
17930      2016. Closes task 17158; patch by "teor".
17931
17932  o Minor features (geoip):
17933    - Update geoip and geoip6 to the May 4 2016 Maxmind GeoLite2
17934      Country database.
17935
17936  o Minor bugfixes (assert, portability):
17937    - Fix an assertion failure in memarea.c on systems where "long" is
17938      shorter than the size of a pointer. Fixes bug 18716; bugfix
17939      on 0.2.1.1-alpha.
17940
17941  o Minor bugfixes (bootstrap):
17942    - Consistently use the consensus download schedule for authority
17943      certificates. Fixes bug 18816; bugfix on 0.2.4.13-alpha.
17944
17945  o Minor bugfixes (build):
17946    - Remove a pair of redundant AM_CONDITIONAL declarations from
17947      configure.ac. Fixes one final case of bug 17744; bugfix
17948      on 0.2.8.2-alpha.
17949    - Resolve warnings when building on systems that are concerned with
17950      signed char. Fixes bug 18728; bugfix on 0.2.7.2-alpha
17951      and 0.2.6.1-alpha.
17952    - When libscrypt.h is found, but no libscrypt library can be linked,
17953      treat libscrypt as absent. Fixes bug 19161; bugfix
17954      on 0.2.6.1-alpha.
17955
17956  o Minor bugfixes (client):
17957    - Turn all TestingClientBootstrap* into non-testing torrc options.
17958      This changes simply renames them by removing "Testing" in front of
17959      them and they do not require TestingTorNetwork to be enabled
17960      anymore. Fixes bug 18481; bugfix on 0.2.8.1-alpha.
17961    - Make directory node selection more reliable, mainly for IPv6-only
17962      clients and clients with few reachable addresses. Fixes bug 18929;
17963      bugfix on 0.2.8.1-alpha. Patch by "teor".
17964
17965  o Minor bugfixes (controller, microdescriptors):
17966    - Make GETINFO dir/status-vote/current/consensus conform to the
17967      control specification by returning "551 Could not open cached
17968      consensus..." when not caching consensuses. Fixes bug 18920;
17969      bugfix on 0.2.2.6-alpha.
17970
17971  o Minor bugfixes (crypto, portability):
17972    - The SHA3 and SHAKE routines now produce the correct output on Big
17973      Endian systems. No code calls either algorithm yet, so this is
17974      primarily a build fix. Fixes bug 18943; bugfix on 0.2.8.1-alpha.
17975    - Tor now builds again with the recent OpenSSL 1.1 development
17976      branch (tested against 1.1.0-pre4 and 1.1.0-pre5-dev). Closes
17977      ticket 18286.
17978
17979  o Minor bugfixes (directories):
17980    - When fetching extrainfo documents, compare their SHA256 digests
17981      and Ed25519 signing key certificates with the routerinfo that led
17982      us to fetch them, rather than with the most recent routerinfo.
17983      Otherwise we generate many spurious warnings about mismatches.
17984      Fixes bug 17150; bugfix on 0.2.7.2-alpha.
17985
17986  o Minor bugfixes (logging):
17987    - When we can't generate a signing key because OfflineMasterKey is
17988      set, do not imply that we should have been able to load it. Fixes
17989      bug 18133; bugfix on 0.2.7.2-alpha.
17990    - Stop periodic_event_dispatch() from blasting twelve lines per
17991      second at loglevel debug. Fixes bug 18729; fix on 0.2.8.1-alpha.
17992    - When rejecting a misformed INTRODUCE2 cell, only log at
17993      PROTOCOL_WARN severity. Fixes bug 18761; bugfix on 0.2.8.2-alpha.
17994
17995  o Minor bugfixes (pluggable transports):
17996    - Avoid reporting a spurious error when we decide that we don't need
17997      to terminate a pluggable transport because it has already exited.
17998      Fixes bug 18686; bugfix on 0.2.5.5-alpha.
17999
18000  o Minor bugfixes (pointer arithmetic):
18001    - Fix a bug in memarea_alloc() that could have resulted in remote
18002      heap write access, if Tor had ever passed an unchecked size to
18003      memarea_alloc(). Fortunately, all the sizes we pass to
18004      memarea_alloc() are pre-checked to be less than 128 kilobytes.
18005      Fixes bug 19150; bugfix on 0.2.1.1-alpha. Bug found by
18006      Guido Vranken.
18007
18008  o Minor bugfixes (relays):
18009    - Consider more config options when relays decide whether to
18010      regenerate their descriptor. Fixes more of bug 12538; bugfix
18011      on 0.2.8.1-alpha.
18012    - Resolve some edge cases where we might launch an ORPort
18013      reachability check even when DisableNetwork is set. Noticed while
18014      fixing bug 18616; bugfix on 0.2.3.9-alpha.
18015
18016  o Minor bugfixes (statistics):
18017    - We now include consensus downloads via IPv6 in our directory-
18018      request statistics. Fixes bug 18460; bugfix on 0.2.3.14-alpha.
18019
18020  o Minor bugfixes (testing):
18021    - Allow directories in small networks to bootstrap by skipping
18022      DirPort checks when the consensus has no exits. Fixes bug 19003;
18023      bugfix on 0.2.8.1-alpha. Patch by teor.
18024    - Fix a small memory leak that would occur when the
18025      TestingEnableCellStatsEvent option was turned on. Fixes bug 18673;
18026      bugfix on 0.2.5.2-alpha.
18027
18028  o Minor bugfixes (time handling):
18029    - When correcting a corrupt 'struct tm' value, fill in the tm_wday
18030      field. Otherwise, our unit tests crash on Windows. Fixes bug
18031      18977; bugfix on 0.2.2.25-alpha.
18032
18033  o Documentation:
18034    - Document the contents of the 'datadir/keys' subdirectory in the
18035      manual page. Closes ticket 17621.
18036    - Stop recommending use of nicknames to identify relays in our
18037      MapAddress documentation. Closes ticket 18312.
18038
18039
18040Changes in version 0.2.8.2-alpha - 2016-03-28
18041  Tor 0.2.8.2-alpha is the second alpha in its series. It fixes numerous
18042  bugs in earlier versions of Tor, including some that prevented
18043  authorities using Tor 0.2.7.x from running correctly. IPv6 and
18044  directory support should also be much improved.
18045
18046  o New system requirements:
18047    - Tor no longer supports versions of OpenSSL with a broken
18048      implementation of counter mode. (This bug was present in OpenSSL
18049      1.0.0, and was fixed in OpenSSL 1.0.0a.) Tor still detects, but no
18050      longer runs with, these versions.
18051    - Tor no longer attempts to support platforms where the "time_t"
18052      type is unsigned. (To the best of our knowledge, only OpenVMS does
18053      this, and Tor has never actually built on OpenVMS.) Closes
18054      ticket 18184.
18055    - Tor now uses Autoconf version 2.63 or later, and Automake 1.11 or
18056      later (released in 2008 and 2009 respectively). If you are
18057      building Tor from the git repository instead of from the source
18058      distribution, and your tools are older than this, you will need to
18059      upgrade. Closes ticket 17732.
18060
18061  o Major bugfixes (security, pointers):
18062    - Avoid a difficult-to-trigger heap corruption attack when extending
18063      a smartlist to contain over 16GB of pointers. Fixes bug 18162;
18064      bugfix on 0.1.1.11-alpha, which fixed a related bug incompletely.
18065      Reported by Guido Vranken.
18066
18067  o Major bugfixes (bridges, pluggable transports):
18068    - Modify the check for OR connections to private addresses. Allow
18069      bridges on private addresses, including pluggable transports that
18070      ignore the (potentially private) address in the bridge line. Fixes
18071      bug 18517; bugfix on 0.2.8.1-alpha. Reported by gk, patch by teor.
18072
18073  o Major bugfixes (compilation):
18074    - Repair hardened builds under the clang compiler. Previously, our
18075      use of _FORTIFY_SOURCE would conflict with clang's address
18076      sanitizer. Fixes bug 14821; bugfix on 0.2.5.4-alpha.
18077
18078  o Major bugfixes (crash on shutdown):
18079    - Correctly handle detaching circuits from muxes when shutting down.
18080      Fixes bug 18116; bugfix on 0.2.8.1-alpha.
18081    - Fix an assert-on-exit bug related to counting memory usage in
18082      rephist.c. Fixes bug 18651; bugfix on 0.2.8.1-alpha.
18083
18084  o Major bugfixes (crash on startup):
18085    - Fix a segfault during startup: If a Unix domain socket was
18086      configured as listener (such as a ControlSocket or a SocksPort
18087      "unix:" socket), and tor was started as root but not configured to
18088      switch to another user, tor would segfault while trying to string
18089      compare a NULL value. Fixes bug 18261; bugfix on 0.2.8.1-alpha.
18090      Patch by weasel.
18091
18092  o Major bugfixes (dns proxy mode, crash):
18093    - Avoid crashing when running as a DNS proxy. Fixes bug 16248;
18094      bugfix on 0.2.0.1-alpha. Patch from "cypherpunks".
18095
18096  o Major bugfixes (relays, bridge clients):
18097    - Ensure relays always allow IPv4 OR and Dir connections. Ensure
18098      bridge clients use the address configured in the bridge line.
18099      Fixes bug 18348; bugfix on 0.2.8.1-alpha. Reported by sysrqb,
18100      patch by teor.
18101
18102  o Major bugfixes (voting):
18103    - Actually enable support for authorities to match routers by their
18104      Ed25519 identities. Previously, the code had been written, but
18105      some debugging code that had accidentally been left in the
18106      codebase made it stay turned off. Fixes bug 17702; bugfix
18107      on 0.2.7.2-alpha.
18108    - When collating votes by Ed25519 identities, authorities now
18109      include a "NoEdConsensus" flag if the ed25519 value (or lack
18110      thereof) for a server does not reflect the majority consensus.
18111      Related to bug 17668; bugfix on 0.2.7.2-alpha.
18112    - When generating a vote with keypinning disabled, never include two
18113      entries for the same ed25519 identity. This bug was causing
18114      authorities to generate votes that they could not parse when a
18115      router violated key pinning by changing its RSA identity but
18116      keeping its Ed25519 identity. Fixes bug 17668; fixes part of bug
18117      18318. Bugfix on 0.2.7.2-alpha.
18118
18119  o Minor features (security, win32):
18120    - Set SO_EXCLUSIVEADDRUSE on Win32 to avoid a local port-stealing
18121      attack. Fixes bug 18123; bugfix on all tor versions. Patch
18122      by teor.
18123
18124  o Minor features (bug-resistance):
18125    - Make Tor survive errors involving connections without a
18126      corresponding event object. Previously we'd fail with an
18127      assertion; now we produce a log message. Related to bug 16248.
18128
18129  o Minor features (build):
18130    - Detect systems with FreeBSD-derived kernels (such as GNU/kFreeBSD)
18131      as having possible IPFW support. Closes ticket 18448. Patch from
18132      Steven Chamberlain.
18133
18134  o Minor features (code hardening):
18135    - Use tor_snprintf() and tor_vsnprintf() even in external and low-
18136      level code, to harden against accidental failures to NUL-
18137      terminate. Part of ticket 17852. Patch from jsturgix. Found
18138      with Flawfinder.
18139
18140  o Minor features (crypto):
18141    - Validate the hard-coded Diffie-Hellman parameters and ensure that
18142      p is a safe prime, and g is a suitable generator. Closes
18143      ticket 18221.
18144
18145  o Minor features (geoip):
18146    - Update geoip and geoip6 to the March 3 2016 Maxmind GeoLite2
18147      Country database.
18148
18149  o Minor features (hidden service directory):
18150    - Streamline relay-side hsdir handling: when relays consider whether
18151      to accept an uploaded hidden service descriptor, they no longer
18152      check whether they are one of the relays in the network that is
18153      "supposed" to handle that descriptor. Implements ticket 18332.
18154
18155  o Minor features (IPv6):
18156    - Add ClientPreferIPv6DirPort, which is set to 0 by default. If set
18157      to 1, tor prefers IPv6 directory addresses.
18158    - Add ClientUseIPv4, which is set to 1 by default. If set to 0, tor
18159      avoids using IPv4 for client OR and directory connections.
18160    - Try harder to obey the IP version restrictions "ClientUseIPv4 0",
18161      "ClientUseIPv6 0", "ClientPreferIPv6ORPort", and
18162      "ClientPreferIPv6DirPort". Closes ticket 17840; patch by teor.
18163
18164  o Minor features (linux seccomp2 sandbox):
18165    - Reject attempts to change our Address with "Sandbox 1" enabled.
18166      Changing Address with Sandbox turned on would never actually work,
18167      but previously it would fail in strange and confusing ways. Found
18168      while fixing 18548.
18169
18170  o Minor features (robustness):
18171    - Exit immediately with an error message if the code attempts to use
18172      Libevent without having initialized it. This should resolve some
18173      frequently-made mistakes in our unit tests. Closes ticket 18241.
18174
18175  o Minor features (unix domain sockets):
18176    - Add a new per-socket option, RelaxDirModeCheck, to allow creating
18177      Unix domain sockets without checking the permissions on the parent
18178      directory. (Tor checks permissions by default because some
18179      operating systems only check permissions on the parent directory.
18180      However, some operating systems do look at permissions on the
18181      socket, and tor's default check is unneeded.) Closes ticket 18458.
18182      Patch by weasel.
18183
18184  o Minor bugfixes (exit policies, security):
18185    - Refresh an exit relay's exit policy when interface addresses
18186      change. Previously, tor only refreshed the exit policy when the
18187      configured external address changed. Fixes bug 18208; bugfix on
18188      0.2.7.3-rc. Patch by teor.
18189
18190  o Minor bugfixes (security, hidden services):
18191    - Prevent hidden services connecting to client-supplied rendezvous
18192      addresses that are reserved as internal or multicast. Fixes bug
18193      8976; bugfix on 0.2.3.21-rc. Patch by dgoulet and teor.
18194
18195  o Minor bugfixes (build):
18196    - Do not link the unit tests against both the testing and non-
18197      testing versions of the static libraries. Fixes bug 18490; bugfix
18198      on 0.2.7.1-alpha.
18199    - Avoid spurious failures from configure files related to calling
18200      exit(0) in TOR_SEARCH_LIBRARY. Fixes bug 18626; bugfix on
18201      0.2.0.1-alpha. Patch from "cypherpunks".
18202    - Silence spurious clang-scan warnings in the ed25519_donna code by
18203      explicitly initializing some objects. Fixes bug 18384; bugfix on
18204      0.2.7.2-alpha. Patch by teor.
18205
18206  o Minor bugfixes (client, bootstrap):
18207    - Count receipt of new microdescriptors as progress towards
18208      bootstrapping. Previously, with EntryNodes set, Tor might not
18209      successfully repopulate the guard set on bootstrapping. Fixes bug
18210      16825; bugfix on 0.2.3.1-alpha.
18211
18212  o Minor bugfixes (code correctness):
18213    - Update to the latest version of Trunnel, which tries harder to
18214      avoid generating code that can invoke memcpy(p,NULL,0). Bug found
18215      by clang address sanitizer. Fixes bug 18373; bugfix
18216      on 0.2.7.2-alpha.
18217
18218  o Minor bugfixes (configuration):
18219    - Fix a tiny memory leak when parsing a port configuration ending in
18220      ":auto". Fixes bug 18374; bugfix on 0.2.3.3-alpha.
18221
18222  o Minor bugfixes (containers):
18223    - If we somehow attempt to construct a heap with more than
18224      1073741822 elements, avoid an integer overflow when maintaining
18225      the heap property. Fixes bug 18296; bugfix on 0.1.2.1-alpha.
18226
18227  o Minor bugfixes (correctness):
18228    - Fix a bad memory handling bug that would occur if we had queued a
18229      cell on a channel's incoming queue. Fortunately, we can't actually
18230      queue a cell like that as our code is constructed today, but it's
18231      best to avoid this kind of error, even if there isn't any code
18232      that triggers it today. Fixes bug 18570; bugfix on 0.2.4.4-alpha.
18233
18234  o Minor bugfixes (directory):
18235    - When generating a URL for a directory server on an IPv6 address,
18236      wrap the IPv6 address in square brackets. Fixes bug 18051; bugfix
18237      on 0.2.3.9-alpha. Patch from Malek.
18238
18239  o Minor bugfixes (fallback directory mirrors):
18240    - When requesting extrainfo descriptors from a trusted directory
18241      server, check whether it is an authority or a fallback directory
18242      which supports extrainfo descriptors. Fixes bug 18489; bugfix on
18243      0.2.4.7-alpha. Reported by atagar, patch by teor.
18244
18245  o Minor bugfixes (hidden service, client):
18246    - Handle the case where the user makes several fast consecutive
18247      requests to the same .onion address. Previously, the first six
18248      requests would each trigger a descriptor fetch, each picking a
18249      directory (there are 6 overall) and the seventh one would fail
18250      because no directories were left, thereby triggering a close on
18251      all current directory connections asking for the hidden service.
18252      The solution here is to not close the connections if we have
18253      pending directory fetches. Fixes bug 15937; bugfix
18254      on 0.2.7.1-alpha.
18255
18256  o Minor bugfixes (hidden service, control port):
18257    - Add the onion address to the HS_DESC event for the UPLOADED action
18258      both on success or failure. It was previously hardcoded with
18259      UNKNOWN. Fixes bug 16023; bugfix on 0.2.7.2-alpha.
18260
18261  o Minor bugfixes (hidden service, directory):
18262    - Bridges now refuse "rendezvous2" (hidden service descriptor)
18263      publish attempts. Suggested by ticket 18332.
18264
18265  o Minor bugfixes (linux seccomp2 sandbox):
18266    - Allow the setrlimit syscall, and the prlimit and prlimit64
18267      syscalls, which some libc implementations use under the hood.
18268      Fixes bug 15221; bugfix on 0.2.5.1-alpha.
18269    - Avoid a 10-second delay when starting as a client with "Sandbox 1"
18270      enabled and no DNS resolvers configured. This should help TAILS
18271      start up faster. Fixes bug 18548; bugfix on 0.2.5.1-alpha.
18272    - Fix the sandbox's interoperability with unix domain sockets under
18273      setuid. Fixes bug 18253; bugfix on 0.2.8.1-alpha.
18274
18275  o Minor bugfixes (logging):
18276    - When logging information about an unparsable networkstatus vote or
18277      consensus, do not say "vote" when we mean consensus. Fixes bug
18278      18368; bugfix on 0.2.0.8-alpha.
18279    - Scrub service name in "unrecognized service ID" log messages.
18280      Fixes bug 18600; bugfix on 0.2.4.11-alpha.
18281    - Downgrade logs and backtraces about IP versions to info-level.
18282      Only log backtraces once each time tor runs. Assists in diagnosing
18283      bug 18351; bugfix on 0.2.8.1-alpha. Reported by sysrqb and
18284      Christian, patch by teor.
18285
18286  o Minor bugfixes (memory safety):
18287    - Avoid freeing an uninitialized pointer when opening a socket fails
18288      in get_interface_addresses_ioctl(). Fixes bug 18454; bugfix on
18289      0.2.3.11-alpha. Reported by toralf and "cypherpunks", patch
18290      by teor.
18291    - Correctly duplicate addresses in get_interface_address6_list().
18292      Fixes bug 18454; bugfix on 0.2.8.1-alpha. Reported by toralf,
18293      patch by "cypherpunks".
18294    - Fix a memory leak in tor-gencert. Fixes part of bug 18672; bugfix
18295      on 0.2.0.1-alpha.
18296    - Fix a memory leak in "tor --list-fingerprint". Fixes part of bug
18297      18672; bugfix on 0.2.5.1-alpha.
18298
18299  o Minor bugfixes (private directory):
18300    - Prevent a race condition when creating private directories. Fixes
18301      part of bug 17852; bugfix on 0.0.2pre13. Part of ticket 17852.
18302      Patch from jsturgix. Found with Flawfinder.
18303
18304  o Minor bugfixes (test networks, IPv6):
18305    - Allow internal IPv6 addresses in descriptors in test networks.
18306      Fixes bug 17153; bugfix on 0.2.3.16-alpha. Patch by teor, reported
18307      by karsten.
18308
18309  o Minor bugfixes (testing):
18310    - We no longer disable assertions in the unit tests when coverage is
18311      enabled. Instead, we require you to say --disable-asserts-in-tests
18312      to the configure script if you need assertions disabled in the
18313      unit tests (for example, if you want to perform branch coverage).
18314      Fixes bug 18242; bugfix on 0.2.7.1-alpha.
18315
18316  o Minor bugfixes (time parsing):
18317    - Avoid overflow in tor_timegm when parsing dates in and after 2038
18318      on platforms with 32-bit time_t. Fixes bug 18479; bugfix on
18319      0.0.2pre14. Patch by teor.
18320
18321  o Minor bugfixes (tor-gencert):
18322    - Correctly handle the case where an authority operator enters a
18323      passphrase but sends an EOF before sending a newline. Fixes bug
18324      17443; bugfix on 0.2.0.20-rc. Found by junglefowl.
18325
18326  o Code simplification and refactoring:
18327    - Quote all the string interpolations in configure.ac -- even those
18328      which we are pretty sure can't contain spaces. Closes ticket
18329      17744. Patch from zerosion.
18330    - Remove specialized code for non-inplace AES_CTR. 99% of our AES is
18331      inplace, so there's no need to have a separate implementation for
18332      the non-inplace code. Closes ticket 18258. Patch from Malek.
18333    - Simplify return types for some crypto functions that can't
18334      actually fail. Patch from Hassan Alsibyani. Closes ticket 18259.
18335
18336  o Documentation:
18337    - Change build messages to refer to "Fedora" instead of "Fedora
18338      Core", and "dnf" instead of "yum". Closes tickets 18459 and 18426.
18339      Patches from "icanhasaccount" and "cypherpunks".
18340
18341  o Removed features:
18342    - We no longer maintain an internal freelist in memarea.c.
18343      Allocators should be good enough to make this code unnecessary,
18344      and it's doubtful that it ever had any performance benefit.
18345
18346  o Testing:
18347    - Fix several warnings from clang's address sanitizer produced in
18348      the unit tests.
18349    - Treat backtrace test failures as expected on FreeBSD until we
18350      solve bug 17808. Closes ticket 18204.
18351
18352
18353Changes in version 0.2.8.1-alpha - 2016-02-04
18354  Tor 0.2.8.1-alpha is the first alpha release in its series. It
18355  includes numerous small features and bugfixes against previous Tor
18356  versions, and numerous small infrastructure improvements. The most
18357  notable features are a set of improvements to the directory subsystem.
18358
18359  o Major features (security, Linux):
18360    - When Tor starts as root on Linux and is told to switch user ID, it
18361      can now retain the capability to bind to low ports. By default,
18362      Tor will do this only when it's switching user ID and some low
18363      ports have been configured. You can change this behavior with the
18364      new option KeepBindCapabilities. Closes ticket 8195.
18365
18366  o Major features (directory system):
18367    - When bootstrapping multiple consensus downloads at a time, use the
18368      first one that starts downloading, and close the rest. This
18369      reduces failures when authorities or fallback directories are slow
18370      or down. Together with the code for feature 15775, this feature
18371      should reduces failures due to fallback churn. Implements ticket
18372      4483. Patch by "teor". Implements IPv4 portions of proposal 210 by
18373      "mikeperry" and "teor".
18374    - Include a trial list of 21 default fallback directories, generated
18375      in January 2016, based on an opt-in survey of suitable relays.
18376      Doing this should make clients bootstrap more quickly and reliably,
18377      and reduce the load on the directory authorities. Closes ticket
18378      15775. Patch by "teor".
18379      Candidates identified using an OnionOO script by "weasel", "teor",
18380      "gsathya", and "karsten".
18381    - Previously only relays that explicitly opened a directory port
18382      (DirPort) accepted directory requests from clients. Now all
18383      relays, with and without a DirPort, accept and serve tunneled
18384      directory requests that they receive through their ORPort. You can
18385      disable this behavior using the new DirCache option. Closes
18386      ticket 12538.
18387
18388  o Major key updates:
18389    - Update the V3 identity key for the dannenberg directory authority:
18390      it was changed on 18 November 2015. Closes task 17906. Patch
18391      by "teor".
18392
18393  o Minor features (security, clock):
18394    - Warn when the system clock appears to move back in time (when the
18395      state file was last written in the future). Tor doesn't know that
18396      consensuses have expired if the clock is in the past. Patch by
18397      "teor". Implements ticket 17188.
18398
18399  o Minor features (security, exit policies):
18400    - ExitPolicyRejectPrivate now rejects more private addresses by
18401      default. Specifically, it now rejects the relay's outbound bind
18402      addresses (if configured), and the relay's configured port
18403      addresses (such as ORPort and DirPort). Fixes bug 17027; bugfix on
18404      0.2.0.11-alpha. Patch by "teor".
18405
18406  o Minor features (security, memory erasure):
18407    - Set the unused entries in a smartlist to NULL. This helped catch
18408      a (harmless) bug, and shouldn't affect performance too much.
18409      Implements ticket 17026.
18410    - Use SecureMemoryWipe() function to securely clean memory on
18411      Windows. Previously we'd use OpenSSL's OPENSSL_cleanse() function.
18412      Implements feature 17986.
18413    - Use explicit_bzero or memset_s when present. Previously, we'd use
18414      OpenSSL's OPENSSL_cleanse() function. Closes ticket 7419; patches
18415      from <logan@hackers.mu> and <selven@hackers.mu>.
18416    - Make memwipe() do nothing when passed a NULL pointer or buffer of
18417      zero size. Check size argument to memwipe() for underflow. Fixes
18418      bug 18089; bugfix on 0.2.3.25 and 0.2.4.6-alpha. Reported by "gk",
18419      patch by "teor".
18420
18421  o Minor features (security, RNG):
18422    - Adjust Tor's use of OpenSSL's RNG APIs so that they absolutely,
18423      positively are not allowed to fail. Previously we depended on
18424      internal details of OpenSSL's behavior. Closes ticket 17686.
18425    - Never use the system entropy output directly for anything besides
18426      seeding the PRNG. When we want to generate important keys, instead
18427      of using system entropy directly, we now hash it with the PRNG
18428      stream. This may help resist certain attacks based on broken OS
18429      entropy implementations. Closes part of ticket 17694.
18430    - Use modern system calls (like getentropy() or getrandom()) to
18431      generate strong entropy on platforms that have them. Closes
18432      ticket 13696.
18433
18434  o Minor features (accounting):
18435    - Added two modes to the AccountingRule option: One for limiting
18436      only the number of bytes sent ("AccountingRule out"), and one for
18437      limiting only the number of bytes received ("AccountingRule in").
18438      Closes ticket 15989; patch from "unixninja92".
18439
18440  o Minor features (build):
18441    - Since our build process now uses "make distcheck", we no longer
18442      force "make dist" to depend on "make check". Closes ticket 17893;
18443      patch from "cypherpunks."
18444    - Tor now builds successfully with the recent OpenSSL 1.1
18445      development branch, and with the latest LibreSSL. Closes tickets
18446      17549, 17921, and 17984.
18447
18448  o Minor features (controller):
18449    - Adds the FallbackDir entries to 'GETINFO config/defaults'. Closes
18450      tickets 16774 and 17817. Patch by George Tankersley.
18451    - New 'GETINFO hs/service/desc/id/' command to retrieve a hidden
18452      service descriptor from a service's local hidden service
18453      descriptor cache. Closes ticket 14846.
18454    - Add 'GETINFO exit-policy/reject-private/[default,relay]', so
18455      controllers can examine the the reject rules added by
18456      ExitPolicyRejectPrivate. This makes it easier for stem to display
18457      exit policies.
18458
18459  o Minor features (crypto):
18460    - Add SHA512 support to crypto.c. Closes ticket 17663; patch from
18461      George Tankersley.
18462    - Add SHA3 and SHAKE support to crypto.c. Closes ticket 17783.
18463    - When allocating a digest state object, allocate no more space than
18464      we actually need. Previously, we would allocate as much space as
18465      the state for the largest algorithm would need. This change saves
18466      up to 672 bytes per circuit. Closes ticket 17796.
18467    - Improve performance when hashing non-multiple of 8 sized buffers,
18468      based on Andrew Moon's public domain SipHash-2-4 implementation.
18469      Fixes bug 17544; bugfix on 0.2.5.3-alpha.
18470
18471  o Minor features (directory downloads):
18472    - Wait for busy authorities and fallback directories to become non-
18473      busy when bootstrapping. (A similar change was made in 6c443e987d
18474      for directory caches chosen from the consensus.) Closes ticket
18475      17864; patch by "teor".
18476    - Add UseDefaultFallbackDirs, which enables any hard-coded fallback
18477      directory mirrors. The default is 1; set it to 0 to disable
18478      fallbacks. Implements ticket 17576. Patch by "teor".
18479
18480  o Minor features (geoip):
18481    - Update geoip and geoip6 to the January 5 2016 Maxmind GeoLite2
18482      Country database.
18483
18484  o Minor features (IPv6):
18485    - Add an argument 'ipv6=address:orport' to the DirAuthority and
18486      FallbackDir torrc options, to specify an IPv6 address for an
18487      authority or fallback directory. Add hard-coded ipv6 addresses for
18488      directory authorities that have them. Closes ticket 17327; patch
18489      from Nick Mathewson and "teor".
18490    - Add address policy assume_action support for IPv6 addresses.
18491    - Limit IPv6 mask bits to 128.
18492    - Warn when comparing against an AF_UNSPEC address in a policy, it's
18493      almost always a bug. Closes ticket 17863; patch by "teor".
18494    - Allow users to configure directory authorities and fallback
18495      directory servers with IPv6 addresses and ORPorts. Resolves
18496      ticket 6027.
18497    - routerset_parse now accepts IPv6 literal addresses. Fixes bug
18498      17060; bugfix on 0.2.1.3-alpha. Patch by "teor".
18499    - Make tor_ersatz_socketpair work on IPv6-only systems. Fixes bug
18500      17638; bugfix on 0.0.2pre8. Patch by "teor".
18501
18502  o Minor features (logging):
18503    - When logging to syslog, allow a tag to be added to the syslog
18504      identity (the string prepended to every log message). The tag can
18505      be configured with SyslogIdentityTag and defaults to none. Setting
18506      it to "foo" will cause logs to be tagged as "Tor-foo". Closes
18507      ticket 17194.
18508
18509  o Minor features (portability):
18510    - Use timingsafe_memcmp() where available. Closes ticket 17944;
18511      patch from <logan@hackers.mu>.
18512
18513  o Minor features (relay, address discovery):
18514    - Add a family argument to get_interface_addresses_raw() and
18515      subfunctions to make network interface address interogation more
18516      efficient. Now Tor can specifically ask for IPv4, IPv6 or both
18517      types of interfaces from the operating system. Resolves
18518      ticket 17950.
18519    - When get_interface_address6_list(.,AF_UNSPEC,.) is called and
18520      fails to enumerate interface addresses using the platform-specific
18521      API, have it rely on the UDP socket fallback technique to try and
18522      find out what IP addresses (both IPv4 and IPv6) our machine has.
18523      Resolves ticket 17951.
18524
18525  o Minor features (replay cache):
18526    - The replay cache now uses SHA256 instead of SHA1. Implements
18527      feature 8961. Patch by "teor", issue reported by "rransom".
18528
18529  o Minor features (unix file permissions):
18530    - Defer creation of Unix sockets until after setuid. This avoids
18531      needing CAP_CHOWN and CAP_FOWNER when using systemd's
18532      CapabilityBoundingSet, or chown and fowner when using SELinux.
18533      Implements part of ticket 17562. Patch from Jamie Nguyen.
18534    - If any directory created by Tor is marked as group readable, the
18535      filesystem group is allowed to be either the default GID or the
18536      root user. Allowing root to read the DataDirectory prevents the
18537      need for CAP_READ_SEARCH when using systemd's
18538      CapabilityBoundingSet, or dac_read_search when using SELinux.
18539      Implements part of ticket 17562. Patch from Jamie Nguyen.
18540    - Introduce a new DataDirectoryGroupReadable option. If it is set to
18541      1, the DataDirectory will be made readable by the default GID.
18542      Implements part of ticket 17562. Patch from Jamie Nguyen.
18543
18544  o Minor bugfixes (accounting):
18545    - The max bandwidth when using 'AccountRule sum' is now correctly
18546      logged. Fixes bug 18024; bugfix on 0.2.6.1-alpha. Patch
18547      from "unixninja92".
18548
18549  o Minor bugfixes (code correctness):
18550    - When closing an entry connection, generate a warning if we should
18551      have sent an end cell for it but we haven't. Fixes bug 17876;
18552      bugfix on 0.2.3.2-alpha.
18553    - Assert that allocated memory held by the reputation code is freed
18554      according to its internal counters. Fixes bug 17753; bugfix
18555      on 0.1.1.1-alpha.
18556    - Assert when the TLS contexts fail to initialize. Fixes bug 17683;
18557      bugfix on 0.0.6.
18558
18559  o Minor bugfixes (compilation):
18560    - Mark all object files that include micro-revision.i as depending
18561      on it, so as to make parallel builds more reliable. Fixes bug
18562      17826; bugfix on 0.2.5.1-alpha.
18563    - Don't try to use the pthread_condattr_setclock() function unless
18564      it actually exists. Fixes compilation on NetBSD-6.x. Fixes bug
18565      17819; bugfix on 0.2.6.3-alpha.
18566    - Fix backtrace compilation on FreeBSD. Fixes bug 17827; bugfix
18567      on 0.2.5.2-alpha.
18568    - Fix compilation of sandbox.c with musl-libc. Fixes bug 17347;
18569      bugfix on 0.2.5.1-alpha. Patch from 'jamestk'.
18570    - Fix search for libevent libraries on OpenBSD (and other systems
18571      that install libevent 1 and libevent 2 in parallel). Fixes bug
18572      16651; bugfix on 0.1.0.7-rc. Patch from "rubiate".
18573    - Isolate environment variables meant for tests from the rest of the
18574      build system. Fixes bug 17818; bugfix on 0.2.7.3-rc.
18575    - Replace usage of 'INLINE' with 'inline'. Fixes bug 17804; bugfix
18576      on 0.0.2pre8.
18577    - Remove config.log only from make distclean, not from make clean.
18578      Fixes bug 17924; bugfix on 0.2.4.1-alpha.
18579
18580  o Minor bugfixes (crypto):
18581    - Check the return value of HMAC() and assert on failure. Fixes bug
18582      17658; bugfix on 0.2.3.6-alpha. Patch by "teor".
18583
18584  o Minor bugfixes (fallback directories):
18585    - Mark fallbacks as "too busy" when they return a 503 response,
18586      rather than just marking authorities. Fixes bug 17572; bugfix on
18587      0.2.4.7-alpha. Patch by "teor".
18588
18589  o Minor bugfixes (IPv6):
18590    - Update the limits in max_dl_per_request for IPv6 address length.
18591      Fixes bug 17573; bugfix on 0.2.1.5-alpha.
18592
18593  o Minor bugfixes (linux seccomp2 sandbox):
18594    - Fix a crash when using offline master ed25519 keys with the Linux
18595      seccomp2 sandbox enabled. Fixes bug 17675; bugfix on 0.2.7.3-rc.
18596
18597  o Minor bugfixes (logging):
18598    - In log messages that include a function name, use __FUNCTION__
18599      instead of __PRETTY_FUNCTION__. In GCC, these are synonymous, but
18600      with clang __PRETTY_FUNCTION__ has extra information we don't
18601      need. Fixes bug 16563; bugfix on 0.0.2pre8. Fix by Tom van
18602      der Woerdt.
18603    - Remove needless quotes from a log message about unparseable
18604      addresses. Fixes bug 17843; bugfix on 0.2.3.3-alpha.
18605
18606  o Minor bugfixes (portability):
18607    - Remove an #endif from configure.ac so that we correctly detect the
18608      presence of in6_addr.s6_addr32. Fixes bug 17923; bugfix
18609      on 0.2.0.13-alpha.
18610
18611  o Minor bugfixes (relays):
18612    - Check that both the ORPort and DirPort (if present) are reachable
18613      before publishing a relay descriptor. Otherwise, relays publish a
18614      descriptor with DirPort 0 when the DirPort reachability test takes
18615      longer than the ORPort reachability test. Fixes bug 18050; bugfix
18616      on 0.1.0.1-rc. Reported by "starlight", patch by "teor".
18617
18618  o Minor bugfixes (relays, hidden services):
18619    - Refuse connection requests to private OR addresses unless
18620      ExtendAllowPrivateAddresses is set. Previously, tor would connect,
18621      then refuse to send any cells to a private address. Fixes bugs
18622      17674 and 8976; bugfix on 0.2.3.21-rc. Patch by "teor".
18623
18624  o Minor bugfixes (safe logging):
18625    - When logging a malformed hostname received through socks4, scrub
18626      it if SafeLogging says we should. Fixes bug 17419; bugfix
18627      on 0.1.1.16-rc.
18628
18629  o Minor bugfixes (statistics code):
18630    - Consistently check for overflow in round_*_to_next_multiple_of
18631      functions, and add unit tests with additional and maximal values.
18632      Fixes part of bug 13192; bugfix on 0.2.2.1-alpha.
18633    - Handle edge cases in the laplace functions: avoid division by
18634      zero, avoid taking the log of zero, and silence clang type
18635      conversion warnings using round and trunc. Add unit tests for edge
18636      cases with maximal values. Fixes part of bug 13192; bugfix
18637      on 0.2.6.2-alpha.
18638
18639  o Minor bugfixes (testing):
18640    - The test for log_heartbeat was incorrectly failing in timezones
18641      with non-integer offsets. Instead of comparing the end of the time
18642      string against a constant, compare it to the output of
18643      format_local_iso_time when given the correct input. Fixes bug
18644      18039; bugfix on 0.2.5.4-alpha.
18645    - Make unit tests pass on IPv6-only systems, and systems without
18646      localhost addresses (like some FreeBSD jails). Fixes bug 17632;
18647      bugfix on 0.2.7.3-rc. Patch by "teor".
18648    - Fix a memory leak in the ntor test. Fixes bug 17778; bugfix
18649      on 0.2.4.8-alpha.
18650    - Check the full results of SHA256 and SHA512 digests in the unit
18651      tests. Bugfix on 0.2.2.4-alpha. Patch by "teor".
18652
18653  o Code simplification and refactoring:
18654    - Move logging of redundant policy entries in
18655      policies_parse_exit_policy_internal into its own function. Closes
18656      ticket 17608; patch from "juce".
18657    - Extract the more complicated parts of circuit_mark_for_close()
18658      into a new function that we run periodically before circuits are
18659      freed. This change removes more than half of the functions
18660      currently in the "blob". Closes ticket 17218.
18661    - Clean up a little duplicated code in
18662      crypto_expand_key_material_TAP(). Closes ticket 17587; patch
18663      from "pfrankw".
18664    - Decouple the list of streams waiting to be attached to circuits
18665      from the overall connection list. This change makes it possible to
18666      attach streams quickly while simplifying Tor's callgraph and
18667      avoiding O(N) scans of the entire connection list. Closes
18668      ticket 17590.
18669    - When a direct directory request fails immediately on launch,
18670      instead of relaunching that request from inside the code that
18671      launches it, instead mark the connection for teardown. This change
18672      simplifies Tor's callback and prevents the directory-request
18673      launching code from invoking itself recursively. Closes
18674      ticket 17589
18675    - Remove code for configuring OpenSSL dynamic locks; OpenSSL doesn't
18676      use them. Closes ticket 17926.
18677
18678  o Documentation:
18679    - Add a description of the correct use of the '--keygen' command-
18680      line option. Closes ticket 17583; based on text by 's7r'.
18681    - Document the minimum HeartbeatPeriod value. Closes ticket 15638.
18682    - Explain actual minima for BandwidthRate. Closes ticket 16382.
18683    - Fix a minor formatting typo in the manpage. Closes ticket 17791.
18684    - Mention torspec URL in the manpage and point the reader to it
18685      whenever we mention a document that belongs in torspce. Fixes
18686      issue 17392.
18687
18688  o Removed features:
18689    - Remove client-side support for connecting to Tor relays running
18690      versions of Tor before 0.2.3.6-alpha. These relays didn't support
18691      the v3 TLS handshake protocol, and are no longer allowed on the
18692      Tor network. Implements the client side of ticket 11150. Based on
18693      patches by Tom van der Woerdt.
18694
18695  o Testing:
18696    - Add unit tests to check for common RNG failure modes, such as
18697      returning all zeroes, identical values, or incrementing values
18698      (OpenSSL's rand_predictable feature). Patch by "teor".
18699    - Log more information when the backtrace tests fail. Closes ticket
18700      17892. Patch from "cypherpunks."
18701    - Always test both ed25519 backends, so that we can be sure that our
18702      batch-open replacement code works. Part of ticket 16794.
18703    - Cover dns_resolve_impl() in dns.c with unit tests. Implements a
18704      portion of ticket 16831.
18705    - More unit tests for compat_libevent.c, procmon.c, tortls.c,
18706      util_format.c, directory.c, and options_validate.c. Closes tickets
18707      17075, 17082, 17084, 17003, and 17076 respectively. Patches from
18708      Ola Bini.
18709    - Unit tests for directory_handle_command_get. Closes ticket 17004.
18710      Patch from Reinaldo de Souza Jr.
18711
18712
18713Changes in version 0.2.7.6 - 2015-12-10
18714  Tor version 0.2.7.6 fixes a major bug in entry guard selection, as
18715  well as a minor bug in hidden service reliability.
18716
18717  o Major bugfixes (guard selection):
18718    - Actually look at the Guard flag when selecting a new directory
18719      guard. When we implemented the directory guard design, we
18720      accidentally started treating all relays as if they have the Guard
18721      flag during guard selection, leading to weaker anonymity and worse
18722      performance. Fixes bug 17772; bugfix on 0.2.4.8-alpha. Discovered
18723      by Mohsen Imani.
18724
18725  o Minor features (geoip):
18726    - Update geoip and geoip6 to the December 1 2015 Maxmind GeoLite2
18727      Country database.
18728
18729  o Minor bugfixes (compilation):
18730    - When checking for net/pfvar.h, include netinet/in.h if possible.
18731      This fixes transparent proxy detection on OpenBSD. Fixes bug
18732      17551; bugfix on 0.1.2.1-alpha. Patch from "rubiate".
18733    - Fix a compilation warning with Clang 3.6: Do not check the
18734      presence of an address which can never be NULL. Fixes bug 17781.
18735
18736  o Minor bugfixes (correctness):
18737    - When displaying an IPv6 exit policy, include the mask bits
18738      correctly even when the number is greater than 31. Fixes bug
18739      16056; bugfix on 0.2.4.7-alpha. Patch from "gturner".
18740    - The wrong list was used when looking up expired intro points in a
18741      rend service object, causing what we think could be reachability
18742      issues for hidden services, and triggering a BUG log. Fixes bug
18743      16702; bugfix on 0.2.7.2-alpha.
18744    - Fix undefined behavior in the tor_cert_checksig function. Fixes
18745      bug 17722; bugfix on 0.2.7.2-alpha.
18746
18747
18748Changes in version 0.2.7.5 - 2015-11-20
18749  The Tor 0.2.7 release series is dedicated to the memory of Tor user
18750  and privacy advocate Caspar Bowden (1961-2015). Caspar worked
18751  tirelessly to advocate human rights regardless of national borders,
18752  and oppose the encroachments of mass surveillance. He opposed national
18753  exceptionalism, he brought clarity to legal and policy debates, he
18754  understood and predicted the impact of mass surveillance on the world,
18755  and he laid the groundwork for resisting it. While serving on the Tor
18756  Project's board of directors, he brought us his uncompromising focus
18757  on technical excellence in the service of humankind. Caspar was an
18758  inimitable force for good and a wonderful friend. He was kind,
18759  humorous, generous, gallant, and believed we should protect one
18760  another without exception. We honor him here for his ideals, his
18761  efforts, and his accomplishments. Please honor his memory with works
18762  that would make him proud.
18763
18764  Tor 0.2.7.5 is the first stable release in the Tor 0.2.7 series.
18765
18766  The 0.2.7 series adds a more secure identity key type for relays,
18767  improves cryptography performance, resolves several longstanding
18768  hidden-service performance issues, improves controller support for
18769  hidden services, and includes small bugfixes and performance
18770  improvements throughout the program. This release series also includes
18771  more tests than before, and significant simplifications to which parts
18772  of Tor invoke which others.
18773
18774  (This release contains no code changes since 0.2.7.4-rc.)
18775
18776
18777Changes in version 0.2.7.4-rc - 2015-10-21
18778  Tor 0.2.7.4-rc is the second release candidate in the 0.2.7 series. It
18779  fixes some important memory leaks, and a scary-looking (but mostly
18780  harmless in practice) invalid-read bug. It also has a few small
18781  bugfixes, notably fixes for compilation and portability on different
18782  platforms. If no further significant bounds are found, the next
18783  release will the the official stable release.
18784
18785  o Major bugfixes (security, correctness):
18786    - Fix an error that could cause us to read 4 bytes before the
18787      beginning of an openssl string. This bug could be used to cause
18788      Tor to crash on systems with unusual malloc implementations, or
18789      systems with unusual hardening installed. Fixes bug 17404; bugfix
18790      on 0.2.3.6-alpha.
18791
18792  o Major bugfixes (correctness):
18793    - Fix a use-after-free bug in validate_intro_point_failure(). Fixes
18794      bug 17401; bugfix on 0.2.7.3-rc.
18795
18796  o Major bugfixes (memory leaks):
18797    - Fix a memory leak in ed25519 batch signature checking. Fixes bug
18798      17398; bugfix on 0.2.6.1-alpha.
18799    - Fix a memory leak in rend_cache_failure_entry_free(). Fixes bug
18800      17402; bugfix on 0.2.7.3-rc.
18801    - Fix a memory leak when reading an expired signing key from disk.
18802      Fixes bug 17403; bugfix on 0.2.7.2-rc.
18803
18804  o Minor features (geoIP):
18805    - Update geoip and geoip6 to the October 9 2015 Maxmind GeoLite2
18806      Country database.
18807
18808  o Minor bugfixes (compilation):
18809    - Repair compilation with the most recent (unreleased, alpha)
18810      vesions of OpenSSL 1.1. Fixes part of ticket 17237.
18811    - Fix an integer overflow warning in test_crypto_slow.c. Fixes bug
18812      17251; bugfix on 0.2.7.2-alpha.
18813    - Fix compilation of sandbox.c with musl-libc. Fixes bug 17347;
18814      bugfix on 0.2.5.1-alpha. Patch from 'jamestk'.
18815
18816  o Minor bugfixes (portability):
18817    - Use libexecinfo on FreeBSD to enable backtrace support. Fixes
18818      part of bug 17151; bugfix on 0.2.5.2-alpha. Patch from
18819      Marcin Cieślak.
18820
18821  o Minor bugfixes (sandbox):
18822    - Add the "hidserv-stats" filename to our sandbox filter for the
18823      HiddenServiceStatistics option to work properly. Fixes bug 17354;
18824      bugfix on 0.2.6.2-alpha. Patch from David Goulet.
18825
18826  o Minor bugfixes (testing):
18827    - Add unit tests for get_interface_address* failure cases. Fixes bug
18828      17173; bugfix on 0.2.7.3-rc. Patch by fk/teor.
18829    - Fix breakage when running 'make check' with BSD make. Fixes bug
18830      17154; bugfix on 0.2.7.3-rc. Patch by Marcin Cieślak.
18831    - Make the get_ifaddrs_* unit tests more tolerant of different
18832      network configurations. (Don't assume every test box has an IPv4
18833      address, and don't assume every test box has a non-localhost
18834      address.) Fixes bug 17255; bugfix on 0.2.7.3-rc. Patch by "teor".
18835    - Skip backtrace tests when backtrace support is not compiled in.
18836      Fixes part of bug 17151; bugfix on 0.2.7.1-alpha. Patch from
18837      Marcin Cieślak.
18838
18839  o Documentation:
18840    - Fix capitalization of SOCKS in sample torrc. Closes ticket 15609.
18841    - Note that HiddenServicePorts can take a unix domain socket. Closes
18842      ticket 17364.
18843
18844
18845Changes in version 0.2.7.3-rc - 2015-09-25
18846  Tor 0.2.7.3-rc is the first release candidate in the 0.2.7 series. It
18847  contains numerous usability fixes for Ed25519 keys, safeguards against
18848  several misconfiguration problems, significant simplifications to
18849  Tor's callgraph, and numerous bugfixes and small features.
18850
18851  This is the most tested release of Tor to date. The unit tests cover
18852  39.40% of the code, and the integration tests (accessible with "make
18853  test-full-online", requiring stem and chutney and a network
18854  connection) raise the coverage to 64.49%.
18855
18856  o Major features (security, hidden services):
18857    - Hidden services, if using the EntryNodes option, are required to
18858      use more than one EntryNode, in order to avoid a guard discovery
18859      attack. (This would only affect people who had configured hidden
18860      services and manually specified the EntryNodes option with a
18861      single entry-node. The impact was that it would be easy to
18862      remotely identify the guard node used by such a hidden service.
18863      See ticket for more information.) Fixes ticket 14917.
18864
18865  o Major features (Ed25519 keys, keypinning):
18866    - The key-pinning option on directory authorities is now advisory-
18867      only by default. In a future version, or when the AuthDirPinKeys
18868      option is set, pins are enforced again. Disabling key-pinning
18869      seemed like a good idea so that we can survive the fallout of any
18870      usability problems associated with Ed25519 keys. Closes
18871      ticket 17135.
18872
18873  o Major features (Ed25519 performance):
18874    - Improve the speed of Ed25519 operations and Curve25519 keypair
18875      generation when built targeting 32 bit x86 platforms with SSE2
18876      available. Implements ticket 16535.
18877    - Improve the runtime speed of Ed25519 signature verification by
18878      using Ed25519-donna's batch verification support. Implements
18879      ticket 16533.
18880
18881  o Major features (performance testing):
18882    - The test-network.sh script now supports performance testing.
18883      Requires corresponding chutney performance testing changes. Patch
18884      by "teor". Closes ticket 14175.
18885
18886  o Major features (relay, Ed25519):
18887    - Significant usability improvements for Ed25519 key management. Log
18888      messages are better, and the code can recover from far more
18889      failure conditions. Thanks to "s7r" for reporting and diagnosing
18890      so many of these!
18891    - Add a new OfflineMasterKey option to tell Tor never to try loading
18892      or generating a secret Ed25519 identity key. You can use this in
18893      combination with tor --keygen to manage offline and/or encrypted
18894      Ed25519 keys. Implements ticket 16944.
18895    - Add a --newpass option to allow changing or removing the
18896      passphrase of an encrypted key with tor --keygen. Implements part
18897      of ticket 16769.
18898    - On receiving a HUP signal, check to see whether the Ed25519
18899      signing key has changed, and reload it if so. Closes ticket 16790.
18900
18901  o Major bugfixes (relay, Ed25519):
18902    - Avoid crashing on 'tor --keygen'. Fixes bug 16679; bugfix on
18903      0.2.7.2-alpha. Reported by "s7r".
18904    - Improve handling of expired signing keys with offline master keys.
18905      Fixes bug 16685; bugfix on 0.2.7.2-alpha. Reported by "s7r".
18906
18907  o Minor features (client-side privacy):
18908    - New KeepAliveIsolateSOCKSAuth option to indefinitely extend circuit
18909      lifespan when IsolateSOCKSAuth and streams with SOCKS
18910      authentication are attached to the circuit. This allows
18911      applications like TorBrowser to manage circuit lifetime on their
18912      own. Implements feature 15482.
18913    - When logging malformed hostnames from SOCKS5 requests, respect
18914      SafeLogging configuration. Fixes bug 16891; bugfix on 0.1.1.16-rc.
18915
18916  o Minor features (compilation):
18917    - Give a warning as early as possible when trying to build with an
18918      unsupported OpenSSL version. Closes ticket 16901.
18919    - Fail during configure if we're trying to build against an OpenSSL
18920      built without ECC support. Fixes bug 17109, bugfix on 0.2.7.1-alpha
18921      which started requiring ECC.
18922
18923  o Minor features (geoip):
18924    - Update geoip and geoip6 to the September 3 2015 Maxmind GeoLite2
18925      Country database.
18926
18927  o Minor features (hidden services):
18928    - Relays need to have the Fast flag to get the HSDir flag. As this
18929      is being written, we'll go from 2745 HSDirs down to 2342, a ~14%
18930      drop. This change should make some attacks against the hidden
18931      service directory system harder. Fixes ticket 15963.
18932    - Turn on hidden service statistics collection by setting the torrc
18933      option HiddenServiceStatistics to "1" by default. (This keeps
18934      track only of the fraction of traffic used by hidden services, and
18935      the total number of hidden services in existence.) Closes
18936      ticket 15254.
18937    - Client now uses an introduction point failure cache to know when
18938      to fetch or keep a descriptor in their cache. Previously, failures
18939      were recorded implicitly, but not explicitly remembered. Closes
18940      ticket 16389.
18941
18942  o Minor features (testing, authorities, documentation):
18943    - New TestingDirAuthVote{Exit,Guard,HSDir}IsStrict flags to
18944      explicitly manage consensus flags in testing networks. Patch by
18945      "robgjansen", modified by "teor". Implements part of ticket 14882.
18946
18947  o Minor bugfixes (security, exit policies):
18948    - ExitPolicyRejectPrivate now also rejects the relay's published
18949      IPv6 address (if any), and any publicly routable IPv4 or IPv6
18950      addresses on any local interfaces. ticket 17027. Patch by "teor".
18951      Fixes bug 17027; bugfix on 0.2.0.11-alpha.
18952
18953  o Minor bug fixes (torrc exit policies):
18954    - In torrc, "accept6 *" and "reject6 *" ExitPolicy lines now only
18955      produce IPv6 wildcard addresses. Previously they would produce
18956      both IPv4 and IPv6 wildcard addresses. Patch by "teor". Fixes part
18957      of bug 16069; bugfix on 0.2.4.7-alpha.
18958    - When parsing torrc ExitPolicies, we now warn for a number of cases
18959      where the user's intent is likely to differ from Tor's actual
18960      behavior. These include: using an IPv4 address with an accept6 or
18961      reject6 line; using "private" on an accept6 or reject6 line; and
18962      including any ExitPolicy lines after accept *:* or reject *:*.
18963      Related to ticket 16069.
18964    - When parsing torrc ExitPolicies, we now issue an info-level
18965      message when expanding an "accept/reject *" line to include both
18966      IPv4 and IPv6 wildcard addresses. Related to ticket 16069.
18967    - In each instance above, usage advice is provided to avoid the
18968      message. Resolves ticket 16069. Patch by "teor". Fixes part of bug
18969      16069; bugfix on 0.2.4.7-alpha.
18970
18971  o Minor bugfixes (authority):
18972    - Don't assign "HSDir" to a router if it isn't Valid and Running.
18973      Fixes bug 16524; bugfix on 0.2.7.2-alpha.
18974    - Downgrade log messages about Ed25519 key issues if they are in old
18975      cached router descriptors. Fixes part of bug 16286; bugfix
18976      on 0.2.7.2-alpha.
18977    - When we find an Ed25519 key issue in a cached descriptor, stop
18978      saying the descriptor was just "uploaded". Fixes another part of
18979      bug 16286; bugfix on 0.2.7.2-alpha.
18980
18981  o Minor bugfixes (control port):
18982    - Repair a warning and a spurious result when getting the maximum
18983      number of file descriptors from the controller. Fixes bug 16697;
18984      bugfix on 0.2.7.2-alpha.
18985
18986  o Minor bugfixes (correctness):
18987    - When calling channel_free_list(), avoid calling smartlist_remove()
18988      while inside a FOREACH loop. This partially reverts commit
18989      17356fe7fd96af where the correct SMARTLIST_DEL_CURRENT was
18990      incorrectly removed. Fixes bug 16924; bugfix on 0.2.4.4-alpha.
18991
18992  o Minor bugfixes (documentation):
18993    - Advise users on how to configure separate IPv4 and IPv6 exit
18994      policies in the manpage and sample torrcs. Related to ticket 16069.
18995    - Fix the usage message of tor-resolve(1) so that it no longer lists
18996      the removed -F option. Fixes bug 16913; bugfix on 0.2.2.28-beta.
18997    - Fix an error in the manual page and comments for
18998      TestingDirAuthVoteHSDir[IsStrict], which suggested that a HSDir
18999      required "ORPort connectivity". While this is true, it is in no
19000      way unique to the HSDir flag. Of all the flags, only HSDirs need a
19001      DirPort configured in order for the authorities to assign that
19002      particular flag. Patch by "teor". Fixed as part of 14882; bugfix
19003      on 0.2.6.3-alpha.
19004
19005  o Minor bugfixes (Ed25519):
19006    - Fix a memory leak when reading router descriptors with expired
19007      Ed25519 certificates. Fixes bug 16539; bugfix on 0.2.7.2-alpha.
19008
19009  o Minor bugfixes (linux seccomp2 sandbox):
19010    - Allow bridge authorities to run correctly under the seccomp2
19011      sandbox. Fixes bug 16964; bugfix on 0.2.5.1-alpha.
19012    - Allow routers with ed25519 keys to run correctly under the
19013      seccomp2 sandbox. Fixes bug 16965; bugfix on 0.2.7.2-alpha.
19014
19015  o Minor bugfixes (open file limit):
19016    - Fix set_max_file_descriptors() to set by default the max open file
19017      limit to the current limit when setrlimit() fails. Fixes bug
19018      16274; bugfix on 0.2.0.10-alpha. Patch by dgoulet.
19019
19020  o Minor bugfixes (portability):
19021    - Try harder to normalize the exit status of the Tor process to the
19022      standard-provided range. Fixes bug 16975; bugfix on every version
19023      of Tor ever.
19024    - Check correctly for Windows socket errors in the workqueue
19025      backend. Fixes bug 16741; bugfix on 0.2.6.3-alpha.
19026    - Fix the behavior of crypto_rand_time_range() when told to consider
19027      times before 1970. (These times were possible when running in a
19028      simulated network environment where time()'s output starts at
19029      zero.) Fixes bug 16980; bugfix on 0.2.7.1-alpha.
19030    - Restore correct operation of TLS client-cipher detection on
19031      OpenSSL 1.1. Fixes bug 14047; bugfix on 0.2.7.2-alpha.
19032
19033  o Minor bugfixes (relay):
19034    - Ensure that worker threads actually exit when a fatal error or
19035      shutdown is indicated. This fix doesn't currently affect the
19036      behavior of Tor, because Tor workers never indicates fatal error
19037      or shutdown except in the unit tests. Fixes bug 16868; bugfix
19038      on 0.2.6.3-alpha.
19039    - Unblock threads before releasing the work queue mutex to ensure
19040      predictable scheduling behavior. Fixes bug 16644; bugfix
19041      on 0.2.6.3-alpha.
19042
19043  o Code simplification and refactoring:
19044    - Change the function that's called when we need to retry all
19045      downloads so that it only reschedules the downloads to happen
19046      immediately, rather than launching them all at once itself. This
19047      further simplifies Tor's callgraph.
19048    - Move some format-parsing functions out of crypto.c and
19049      crypto_curve25519.c into crypto_format.c and/or util_format.c.
19050    - Move the client-only parts of init_keys() into a separate
19051      function. Closes ticket 16763.
19052    - Simplify the microdesc_free() implementation so that it no longer
19053      appears (to code analysis tools) to potentially invoke a huge
19054      suite of other microdesc functions.
19055    - Simply the control graph further by deferring the inner body of
19056      directory_all_unreachable() into a callback. Closes ticket 16762.
19057    - Treat the loss of an owning controller as equivalent to a SIGTERM
19058      signal. This removes a tiny amount of duplicated code, and
19059      simplifies our callgraph. Closes ticket 16788.
19060    - When generating an event to send to the controller, we no longer
19061      put the event over the network immediately. Instead, we queue
19062      these events, and use a Libevent callback to deliver them. This
19063      change simplifies Tor's callgraph by reducing the number of
19064      functions from which all other Tor functions are reachable. Closes
19065      ticket 16695.
19066    - Wrap Windows-only C files inside '#ifdef _WIN32' so that tools
19067      that try to scan or compile every file on Unix won't decide that
19068      they are broken.
19069    - Remove the unused "nulterminate" argument from buf_pullup().
19070
19071  o Documentation:
19072    - Recommend a 40 GB example AccountingMax in torrc.sample rather
19073      than a 4 GB max. Closes ticket 16742.
19074    - Include the TUNING document in our source tarball. It is referred
19075      to in the ChangeLog and an error message. Fixes bug 16929; bugfix
19076      on 0.2.6.1-alpha.
19077
19078  o Removed code:
19079    - The internal pure-C tor-fw-helper tool is now removed from the Tor
19080      distribution, in favor of the pure-Go clone available from
19081      https://gitweb.torproject.org/tor-fw-helper.git/ . The libraries
19082      used by the C tor-fw-helper are not, in our opinion, very
19083      confidence- inspiring in their secure-programming techniques.
19084      Closes ticket 13338.
19085    - Remove the code that would try to aggressively flush controller
19086      connections while writing to them. This code was introduced in
19087      0.1.2.7-alpha, in order to keep output buffers from exceeding
19088      their limits. But there is no longer a maximum output buffer size,
19089      and flushing data in this way caused some undesirable recursions
19090      in our call graph. Closes ticket 16480.
19091
19092  o Testing:
19093    - Make "bridges+hs" the default test network. This tests almost all
19094      tor functionality during make test-network, while allowing tests
19095      to succeed on non-IPv6 systems. Requires chutney commit 396da92 in
19096      test-network-bridges-hs. Closes tickets 16945 (tor) and 16946
19097      (chutney). Patches by "teor".
19098    - Autodetect CHUTNEY_PATH if the chutney and Tor sources are side-
19099      by-side in the same parent directory. Closes ticket 16903. Patch
19100      by "teor".
19101    - Use environment variables rather than autoconf substitutions to
19102      send variables from the build system to the test scripts. This
19103      change should be easier to maintain, and cause 'make distcheck' to
19104      work better than before. Fixes bug 17148.
19105    - Add a new set of callgraph analysis scripts that use clang to
19106      produce a list of which Tor functions are reachable from which
19107      other Tor functions. We're planning to use these to help simplify
19108      our code structure by identifying illogical dependencies.
19109    - Add new 'test-full' and 'test-full-online' targets to run all
19110      tests, including integration tests with stem and chutney.
19111    - Make the test-workqueue test work on Windows by initializing the
19112      network before we begin.
19113    - New make target (make test-network-all) to run multiple applicable
19114      chutney test cases. Patch from Teor; closes 16953.
19115    - Unit test dns_resolve(), dns_clip_ttl() and dns_get_expiry_ttl()
19116      functions in dns.c. Implements a portion of ticket 16831.
19117    - When building Tor with testing coverage enabled, run Chutney tests
19118      (if any) using the 'tor-cov' coverage binary.
19119    - When running test-network or test-stem, check for the absence of
19120      stem/chutney before doing any build operations.
19121
19122
19123Changes in version 0.2.7.2-alpha - 2015-07-27
19124  This, the second alpha in the Tor 0.2.7 series, has a number of new
19125  features, including a way to manually pick the number of introduction
19126  points for hidden services, and the much stronger Ed25519 signing key
19127  algorithm for regular Tor relays (including support for encrypted
19128  offline identity keys in the new algorithm).
19129
19130  Support for Ed25519 on relays is currently limited to signing router
19131  descriptors; later alphas in this series will extend Ed25519 key
19132  support to more parts of the Tor protocol.
19133
19134  o Major features (Ed25519 identity keys, Proposal 220):
19135    - All relays now maintain a stronger identity key, using the Ed25519
19136      elliptic curve signature format. This master key is designed so
19137      that it can be kept offline. Relays also generate an online
19138      signing key, and a set of other Ed25519 keys and certificates.
19139      These are all automatically regenerated and rotated as needed.
19140      Implements part of ticket 12498.
19141    - Directory authorities now vote on Ed25519 identity keys along with
19142      RSA1024 keys. Implements part of ticket 12498.
19143    - Directory authorities track which Ed25519 identity keys have been
19144      used with which RSA1024 identity keys, and do not allow them to
19145      vary freely. Implements part of ticket 12498.
19146    - Microdescriptors now include Ed25519 identity keys. Implements
19147      part of ticket 12498.
19148    - Add support for offline encrypted Ed25519 master keys. To use this
19149      feature on your tor relay, run "tor --keygen" to make a new master
19150      key (or to make a new signing key if you already have a master
19151      key). Closes ticket 13642.
19152
19153  o Major features (Hidden services):
19154    - Add the torrc option HiddenServiceNumIntroductionPoints, to
19155      specify a fixed number of introduction points. Its maximum value
19156      is 10 and default is 3. Using this option can increase a hidden
19157      service's reliability under load, at the cost of making it more
19158      visible that the hidden service is facing extra load. Closes
19159      ticket 4862.
19160    - Remove the adaptive algorithm for choosing the number of
19161      introduction points, which used to change the number of
19162      introduction points (poorly) depending on the number of
19163      connections the HS sees. Closes ticket 4862.
19164
19165  o Major features (onion key cross-certification):
19166    - Relay descriptors now include signatures of their own identity
19167      keys, made using the TAP and ntor onion keys. These signatures
19168      allow relays to prove ownership of their own onion keys. Because
19169      of this change, microdescriptors will no longer need to include
19170      RSA identity keys. Implements proposal 228; closes ticket 12499.
19171
19172  o Major features (performance):
19173    - Improve the runtime speed of Ed25519 operations by using the
19174      public-domain Ed25519-donna by Andrew M. ("floodyberry").
19175      Implements ticket 16467.
19176    - Improve the runtime speed of the ntor handshake by using an
19177      optimized curve25519 basepoint scalarmult implementation from the
19178      public-domain Ed25519-donna by Andrew M. ("floodyberry"), based on
19179      ideas by Adam Langley. Implements ticket 9663.
19180
19181  o Major bugfixes (client-side privacy, also in 0.2.6.9):
19182    - Properly separate out each SOCKSPort when applying stream
19183      isolation. The error occurred because each port's session group
19184      was being overwritten by a default value when the listener
19185      connection was initialized. Fixes bug 16247; bugfix on
19186      0.2.6.3-alpha. Patch by "jojelino".
19187
19188  o Major bugfixes (hidden service clients, stability, also in 0.2.6.10):
19189    - Stop refusing to store updated hidden service descriptors on a
19190      client. This reverts commit 9407040c59218 (which indeed fixed bug
19191      14219, but introduced a major hidden service reachability
19192      regression detailed in bug 16381). This is a temporary fix since
19193      we can live with the minor issue in bug 14219 (it just results in
19194      some load on the network) but the regression of 16381 is too much
19195      of a setback. First-round fix for bug 16381; bugfix
19196      on 0.2.6.3-alpha.
19197
19198  o Major bugfixes (hidden services):
19199    - When cannibalizing a circuit for an introduction point, always
19200      extend to the chosen exit node (creating a 4 hop circuit).
19201      Previously Tor would use the current circuit exit node, which
19202      changed the original choice of introduction point, and could cause
19203      the hidden service to skip excluded introduction points or
19204      reconnect to a skipped introduction point. Fixes bug 16260; bugfix
19205      on 0.1.0.1-rc.
19206
19207  o Major bugfixes (open file limit):
19208    - The open file limit wasn't checked before calling
19209      tor_accept_socket_nonblocking(), which would make Tor exceed the
19210      limit. Now, before opening a new socket, Tor validates the open
19211      file limit just before, and if the max has been reached, return an
19212      error. Fixes bug 16288; bugfix on 0.1.1.1-alpha.
19213
19214  o Major bugfixes (stability, also in 0.2.6.10):
19215    - Stop crashing with an assertion failure when parsing certain kinds
19216      of malformed or truncated microdescriptors. Fixes bug 16400;
19217      bugfix on 0.2.6.1-alpha. Found by "torkeln"; fix based on a patch
19218      by "cypherpunks_backup".
19219    - Stop random client-side assertion failures that could occur when
19220      connecting to a busy hidden service, or connecting to a hidden
19221      service while a NEWNYM is in progress. Fixes bug 16013; bugfix
19222      on 0.1.0.1-rc.
19223
19224  o Minor features (directory authorities, security, also in 0.2.6.9):
19225    - The HSDir flag given by authorities now requires the Stable flag.
19226      For the current network, this results in going from 2887 to 2806
19227      HSDirs. Also, it makes it harder for an attacker to launch a sybil
19228      attack by raising the effort for a relay to become Stable to
19229      require at the very least 7 days, while maintaining the 96 hours
19230      uptime requirement for HSDir. Implements ticket 8243.
19231
19232  o Minor features (client):
19233    - Relax the validation of hostnames in SOCKS5 requests, allowing the
19234      character '_' to appear, in order to cope with domains observed in
19235      the wild that are serving non-RFC compliant records. Resolves
19236      ticket 16430.
19237    - Relax the validation done to hostnames in SOCKS5 requests, and
19238      allow a single trailing '.' to cope with clients that pass FQDNs
19239      using that syntax to explicitly indicate that the domain name is
19240      fully-qualified. Fixes bug 16674; bugfix on 0.2.6.2-alpha.
19241    - Add GroupWritable and WorldWritable options to unix-socket based
19242      SocksPort and ControlPort options. These options apply to a single
19243      socket, and override {Control,Socks}SocketsGroupWritable. Closes
19244      ticket 15220.
19245
19246  o Minor features (control protocol):
19247    - Support network-liveness GETINFO key and NETWORK_LIVENESS event in
19248      the control protocol. Resolves ticket 15358.
19249
19250  o Minor features (directory authorities):
19251    - Directory authorities no longer vote against the "Fast", "Stable",
19252      and "HSDir" flags just because they were going to vote against
19253      "Running": if the consensus turns out to be that the router was
19254      running, then the authority's vote should count. Patch from Peter
19255      Retzlaff; closes issue 8712.
19256
19257  o Minor features (geoip, also in 0.2.6.10):
19258    - Update geoip to the June 3 2015 Maxmind GeoLite2 Country database.
19259    - Update geoip6 to the June 3 2015 Maxmind GeoLite2 Country database.
19260
19261  o Minor features (hidden services):
19262    - Add the new options "HiddenServiceMaxStreams" and
19263      "HiddenServiceMaxStreamsCloseCircuit" to allow hidden services to
19264      limit the maximum number of simultaneous streams per circuit, and
19265      optionally tear down the circuit when the limit is exceeded. Part
19266      of ticket 16052.
19267
19268  o Minor features (portability):
19269    - Use C99 variadic macros when the compiler is not GCC. This avoids
19270      failing compilations on MSVC, and fixes a log-file-based race
19271      condition in our old workarounds. Original patch from Gisle Vanem.
19272
19273  o Minor bugfixes (compilation, also in 0.2.6.9):
19274    - Build with --enable-systemd correctly when libsystemd is
19275      installed, but systemd is not. Fixes bug 16164; bugfix on
19276      0.2.6.3-alpha. Patch from Peter Palfrader.
19277
19278  o Minor bugfixes (controller):
19279    - Add the descriptor ID in each HS_DESC control event. It was
19280      missing, but specified in control-spec.txt. Fixes bug 15881;
19281      bugfix on 0.2.5.2-alpha.
19282
19283  o Minor bugfixes (crypto error-handling, also in 0.2.6.10):
19284    - Check for failures from crypto_early_init, and refuse to continue.
19285      A previous typo meant that we could keep going with an
19286      uninitialized crypto library, and would have OpenSSL initialize
19287      its own PRNG. Fixes bug 16360; bugfix on 0.2.5.2-alpha, introduced
19288      when implementing ticket 4900. Patch by "teor".
19289
19290  o Minor bugfixes (hidden services):
19291    - Fix a crash when reloading configuration while at least one
19292      configured and one ephemeral hidden service exists. Fixes bug
19293      16060; bugfix on 0.2.7.1-alpha.
19294    - Avoid crashing with a double-free bug when we create an ephemeral
19295      hidden service but adding it fails for some reason. Fixes bug
19296      16228; bugfix on 0.2.7.1-alpha.
19297
19298  o Minor bugfixes (Linux seccomp2 sandbox):
19299    - Use the sandbox in tor_open_cloexec whether or not O_CLOEXEC is
19300      defined. Patch by "teor". Fixes bug 16515; bugfix on 0.2.3.1-alpha.
19301
19302  o Minor bugfixes (Linux seccomp2 sandbox, also in 0.2.6.10):
19303    - Allow pipe() and pipe2() syscalls in the seccomp2 sandbox: we need
19304      these when eventfd2() support is missing. Fixes bug 16363; bugfix
19305      on 0.2.6.3-alpha. Patch from "teor".
19306
19307  o Minor bugfixes (Linux seccomp2 sandbox, also in 0.2.6.9):
19308    - Fix sandboxing to work when running as a relay, by allowing the
19309      renaming of secret_id_key, and allowing the eventfd2 and futex
19310      syscalls. Fixes bug 16244; bugfix on 0.2.6.1-alpha. Patch by
19311      Peter Palfrader.
19312    - Allow systemd connections to work with the Linux seccomp2 sandbox
19313      code. Fixes bug 16212; bugfix on 0.2.6.2-alpha. Patch by
19314      Peter Palfrader.
19315
19316  o Minor bugfixes (relay):
19317    - Fix a rarely-encountered memory leak when failing to initialize
19318      the thread pool. Fixes bug 16631; bugfix on 0.2.6.3-alpha. Patch
19319      from "cypherpunks".
19320
19321  o Minor bugfixes (systemd):
19322    - Fix an accidental formatting error that broke the systemd
19323      configuration file. Fixes bug 16152; bugfix on 0.2.7.1-alpha.
19324    - Tor's systemd unit file no longer contains extraneous spaces.
19325      These spaces would sometimes confuse tools like deb-systemd-
19326      helper. Fixes bug 16162; bugfix on 0.2.5.5-alpha.
19327
19328  o Minor bugfixes (tests):
19329    - Use the configured Python executable when running test-stem-full.
19330      Fixes bug 16470; bugfix on 0.2.7.1-alpha.
19331
19332  o Minor bugfixes (tests, also in 0.2.6.9):
19333    - Fix a crash in the unit tests when built with MSVC2013. Fixes bug
19334      16030; bugfix on 0.2.6.2-alpha. Patch from "NewEraCracker".
19335
19336  o Minor bugfixes (threads, comments):
19337    - Always initialize return value in compute_desc_id in rendcommon.c
19338      Patch by "teor". Fixes part of bug 16115; bugfix on 0.2.7.1-alpha.
19339    - Check for NULL values in getinfo_helper_onions(). Patch by "teor".
19340      Fixes part of bug 16115; bugfix on 0.2.7.1-alpha.
19341    - Remove undefined directive-in-macro in test_util_writepid clang
19342      3.7 complains that using a preprocessor directive inside a macro
19343      invocation in test_util_writepid in test_util.c is undefined.
19344      Patch by "teor". Fixes part of bug 16115; bugfix on 0.2.7.1-alpha.
19345
19346  o Code simplification and refactoring:
19347    - Define WINVER and _WIN32_WINNT centrally, in orconfig.h, in order
19348      to ensure they remain consistent and visible everywhere.
19349    - Remove some vestigial workarounds for the MSVC6 compiler. We
19350      haven't supported that in ages.
19351    - The link authentication code has been refactored for better
19352      testability and reliability. It now uses code generated with the
19353      "trunnel" binary encoding generator, to reduce the risk of bugs
19354      due to programmer error. Done as part of ticket 12498.
19355
19356  o Documentation:
19357    - Include a specific and (hopefully) accurate documentation of the
19358      torrc file's meta-format in doc/torrc_format.txt. This is mainly
19359      of interest to people writing programs to parse or generate torrc
19360      files. This document is not a commitment to long-term
19361      compatibility; some aspects of the current format are a bit
19362      ridiculous. Closes ticket 2325.
19363
19364  o Removed features:
19365    - Tor no longer supports copies of OpenSSL that are missing support
19366      for Elliptic Curve Cryptography. (We began using ECC when
19367      available in 0.2.4.8-alpha, for more safe and efficient key
19368      negotiation.) In particular, support for at least one of P256 or
19369      P224 is now required, with manual configuration needed if only
19370      P224 is available. Resolves ticket 16140.
19371    - Tor no longer supports versions of OpenSSL before 1.0. (If you are
19372      on an operating system that has not upgraded to OpenSSL 1.0 or
19373      later, and you compile Tor from source, you will need to install a
19374      more recent OpenSSL to link Tor against.) These versions of
19375      OpenSSL are still supported by the OpenSSL, but the numerous
19376      cryptographic improvements in later OpenSSL releases makes them a
19377      clear choice. Resolves ticket 16034.
19378    - Remove the HidServDirectoryV2 option. Now all relays offer to
19379      store hidden service descriptors. Related to 16543.
19380    - Remove the VoteOnHidServDirectoriesV2 option, since all
19381      authorities have long set it to 1. Closes ticket 16543.
19382
19383  o Testing:
19384    - Document use of coverity, clang static analyzer, and clang dynamic
19385      undefined behavior and address sanitizers in doc/HACKING. Include
19386      detailed usage instructions in the blacklist. Patch by "teor".
19387      Closes ticket 15817.
19388    - The link authentication protocol code now has extensive tests.
19389    - The relay descriptor signature testing code now has
19390      extensive tests.
19391    - The test_workqueue program now runs faster, and is enabled by
19392      default as a part of "make check".
19393    - Now that OpenSSL has its own scrypt implementation, add an unit
19394      test that checks for interoperability between libscrypt_scrypt()
19395      and OpenSSL's EVP_PBE_scrypt() so that we could not use libscrypt
19396      and rely on EVP_PBE_scrypt() whenever possible. Resolves
19397      ticket 16189.
19398
19399
19400Changes in version 0.2.6.10 - 2015-07-12
19401  Tor version 0.2.6.10 fixes some significant stability and hidden
19402  service client bugs, bulletproofs the cryptography init process, and
19403  fixes a bug when using the sandbox code with some older versions of
19404  Linux. Everyone running an older version, especially an older version
19405  of 0.2.6, should upgrade.
19406
19407  o Major bugfixes (hidden service clients, stability):
19408    - Stop refusing to store updated hidden service descriptors on a
19409      client. This reverts commit 9407040c59218 (which indeed fixed bug
19410      14219, but introduced a major hidden service reachability
19411      regression detailed in bug 16381). This is a temporary fix since
19412      we can live with the minor issue in bug 14219 (it just results in
19413      some load on the network) but the regression of 16381 is too much
19414      of a setback. First-round fix for bug 16381; bugfix
19415      on 0.2.6.3-alpha.
19416
19417  o Major bugfixes (stability):
19418    - Stop crashing with an assertion failure when parsing certain kinds
19419      of malformed or truncated microdescriptors. Fixes bug 16400;
19420      bugfix on 0.2.6.1-alpha. Found by "torkeln"; fix based on a patch
19421      by "cypherpunks_backup".
19422    - Stop random client-side assertion failures that could occur when
19423      connecting to a busy hidden service, or connecting to a hidden
19424      service while a NEWNYM is in progress. Fixes bug 16013; bugfix
19425      on 0.1.0.1-rc.
19426
19427  o Minor features (geoip):
19428    - Update geoip to the June 3 2015 Maxmind GeoLite2 Country database.
19429    - Update geoip6 to the June 3 2015 Maxmind GeoLite2 Country database.
19430
19431  o Minor bugfixes (crypto error-handling):
19432    - Check for failures from crypto_early_init, and refuse to continue.
19433      A previous typo meant that we could keep going with an
19434      uninitialized crypto library, and would have OpenSSL initialize
19435      its own PRNG. Fixes bug 16360; bugfix on 0.2.5.2-alpha, introduced
19436      when implementing ticket 4900. Patch by "teor".
19437
19438  o Minor bugfixes (Linux seccomp2 sandbox):
19439    - Allow pipe() and pipe2() syscalls in the seccomp2 sandbox: we need
19440      these when eventfd2() support is missing. Fixes bug 16363; bugfix
19441      on 0.2.6.3-alpha. Patch from "teor".
19442
19443
19444Changes in version 0.2.6.9 - 2015-06-11
19445  Tor 0.2.6.9 fixes a regression in the circuit isolation code, increases the
19446  requirements for receiving an HSDir flag, and addresses some other small
19447  bugs in the systemd and sandbox code. Clients using circuit isolation
19448  should upgrade; all directory authorities should upgrade.
19449
19450  o Major bugfixes (client-side privacy):
19451    - Properly separate out each SOCKSPort when applying stream
19452      isolation. The error occurred because each port's session group was
19453      being overwritten by a default value when the listener connection
19454      was initialized. Fixes bug 16247; bugfix on 0.2.6.3-alpha. Patch
19455      by "jojelino".
19456
19457  o Minor feature (directory authorities, security):
19458    - The HSDir flag given by authorities now requires the Stable flag.
19459      For the current network, this results in going from 2887 to 2806
19460      HSDirs. Also, it makes it harder for an attacker to launch a sybil
19461      attack by raising the effort for a relay to become Stable which
19462      takes at the very least 7 days to do so and by keeping the 96
19463      hours uptime requirement for HSDir. Implements ticket 8243.
19464
19465  o Minor bugfixes (compilation):
19466    - Build with --enable-systemd correctly when libsystemd is
19467      installed, but systemd is not. Fixes bug 16164; bugfix on
19468      0.2.6.3-alpha. Patch from Peter Palfrader.
19469
19470  o Minor bugfixes (Linux seccomp2 sandbox):
19471    - Fix sandboxing to work when running as a relaymby renaming of
19472      secret_id_key, and allowing the eventfd2 and futex syscalls. Fixes
19473      bug 16244; bugfix on 0.2.6.1-alpha. Patch by Peter Palfrader.
19474    - Allow systemd connections to work with the Linux seccomp2 sandbox
19475      code. Fixes bug 16212; bugfix on 0.2.6.2-alpha. Patch by
19476      Peter Palfrader.
19477
19478  o Minor bugfixes (tests):
19479    - Fix a crash in the unit tests when built with MSVC2013. Fixes bug
19480      16030; bugfix on 0.2.6.2-alpha. Patch from "NewEraCracker".
19481
19482
19483Changes in version 0.2.6.8 - 2015-05-21
19484  Tor 0.2.6.8 fixes a bit of dodgy code in parsing INTRODUCE2 cells, and
19485  fixes an authority-side bug in assigning the HSDir flag. All directory
19486  authorities should upgrade.
19487
19488  o Major bugfixes (hidden services, backport from 0.2.7.1-alpha):
19489    - Revert commit that made directory authorities assign the HSDir
19490      flag to relays without a DirPort; this was bad because such relays
19491      can't handle BEGIN_DIR cells. Fixes bug 15850; bugfix
19492      on 0.2.6.3-alpha.
19493
19494  o Minor bugfixes (hidden service, backport from 0.2.7.1-alpha):
19495    - Fix an out-of-bounds read when parsing invalid INTRODUCE2 cells on
19496      a client authorized hidden service. Fixes bug 15823; bugfix
19497      on 0.2.1.6-alpha.
19498
19499  o Minor features (geoip):
19500    - Update geoip to the April 8 2015 Maxmind GeoLite2 Country database.
19501    - Update geoip6 to the April 8 2015 Maxmind GeoLite2
19502      Country database.
19503
19504
19505Changes in version 0.2.7.1-alpha - 2015-05-12
19506  Tor 0.2.7.1-alpha is the first alpha release in its series. It
19507  includes numerous small features and bugfixes against previous Tor
19508  versions, and numerous small infrastructure improvements. The most
19509  notable features are several new ways for controllers to interact with
19510  the hidden services subsystem.
19511
19512  o New system requirements:
19513    - Tor no longer includes workarounds to support Libevent versions
19514      before 1.3e. Libevent 2.0 or later is recommended. Closes
19515      ticket 15248.
19516
19517  o Major features (controller):
19518    - Add the ADD_ONION and DEL_ONION commands that allow the creation
19519      and management of hidden services via the controller. Closes
19520      ticket 6411.
19521    - New "GETINFO onions/current" and "GETINFO onions/detached"
19522      commands to get information about hidden services created via the
19523      controller. Part of ticket 6411.
19524    - New HSFETCH command to launch a request for a hidden service
19525      descriptor. Closes ticket 14847.
19526    - New HSPOST command to upload a hidden service descriptor. Closes
19527      ticket 3523. Patch by "DonnchaC".
19528
19529  o Major bugfixes (hidden services):
19530    - Revert commit that made directory authorities assign the HSDir
19531      flag to relays without a DirPort; this was bad because such relays
19532      can't handle BEGIN_DIR cells. Fixes bug 15850; bugfix
19533      on 0.2.6.3-alpha.
19534
19535  o Minor features (clock-jump tolerance):
19536    - Recover better when our clock jumps back many hours, like might
19537      happen for Tails or Whonix users who start with a very wrong
19538      hardware clock, use Tor to discover a more accurate time, and then
19539      fix their clock. Resolves part of ticket 8766.
19540
19541  o Minor features (command-line interface):
19542    - Make --hash-password imply --hush to prevent unnecessary noise.
19543      Closes ticket 15542. Patch from "cypherpunks".
19544    - Print a warning whenever we find a relative file path being used
19545      as torrc option. Resolves issue 14018.
19546
19547  o Minor features (controller):
19548    - Add DirAuthority lines for default directory authorities to the
19549      output of the "GETINFO config/defaults" command if not already
19550      present. Implements ticket 14840.
19551    - Controllers can now use "GETINFO hs/client/desc/id/..." to
19552      retrieve items from the client's hidden service descriptor cache.
19553      Closes ticket 14845.
19554    - Implement a new controller command "GETINFO status/fresh-relay-
19555      descs" to fetch a descriptor/extrainfo pair that was generated on
19556      demand just for the controller's use. Implements ticket 14784.
19557
19558  o Minor features (DoS-resistance):
19559    - Make it harder for attackers to overload hidden services with
19560      introductions, by blocking multiple introduction requests on the
19561      same circuit. Resolves ticket 15515.
19562
19563  o Minor features (geoip):
19564    - Update geoip to the April 8 2015 Maxmind GeoLite2 Country database.
19565    - Update geoip6 to the April 8 2015 Maxmind GeoLite2
19566      Country database.
19567
19568  o Minor features (HS popularity countermeasure):
19569    - To avoid leaking HS popularity, don't cycle the introduction point
19570      when we've handled a fixed number of INTRODUCE2 cells but instead
19571      cycle it when a random number of introductions is reached, thus
19572      making it more difficult for an attacker to find out the amount of
19573      clients that have used the introduction point for a specific HS.
19574      Closes ticket 15745.
19575
19576  o Minor features (logging):
19577    - Include the Tor version in all LD_BUG log messages, since people
19578      tend to cut and paste those into the bugtracker. Implements
19579      ticket 15026.
19580
19581  o Minor features (pluggable transports):
19582    - When launching managed pluggable transports on Linux systems,
19583      attempt to have the kernel deliver a SIGTERM on tor exit if the
19584      pluggable transport process is still running. Resolves
19585      ticket 15471.
19586    - When launching managed pluggable transports, setup a valid open
19587      stdin in the child process that can be used to detect if tor has
19588      terminated. The "TOR_PT_EXIT_ON_STDIN_CLOSE" environment variable
19589      can be used by implementations to detect this new behavior.
19590      Resolves ticket 15435.
19591
19592  o Minor features (testing):
19593    - Add a test to verify that the compiler does not eliminate our
19594      memwipe() implementation. Closes ticket 15377.
19595    - Add make rule `check-changes` to verify the format of changes
19596      files. Closes ticket 15180.
19597    - Add unit tests for control_event_is_interesting(). Add a compile-
19598      time check that the number of events doesn't exceed the capacity
19599      of control_event_t.event_mask. Closes ticket 15431, checks for
19600      bugs similar to 13085. Patch by "teor".
19601    - Command-line argument tests moved to Stem. Resolves ticket 14806.
19602    - Integrate the ntor, backtrace, and zero-length keys tests into the
19603      automake test suite. Closes ticket 15344.
19604    - Remove assertions during builds to determine Tor's test coverage.
19605      We don't want to trigger these even in assertions, so including
19606      them artificially makes our branch coverage look worse than it is.
19607      This patch provides the new test-stem-full and coverage-html-full
19608      configure options. Implements ticket 15400.
19609
19610  o Minor bugfixes (build):
19611    - Improve out-of-tree builds by making non-standard rules work and
19612      clean up additional files and directories. Fixes bug 15053; bugfix
19613      on 0.2.7.0-alpha.
19614
19615  o Minor bugfixes (command-line interface):
19616    - When "--quiet" is provided along with "--validate-config", do not
19617      write anything to stdout on success. Fixes bug 14994; bugfix
19618      on 0.2.3.3-alpha.
19619    - When complaining about bad arguments to "--dump-config", use
19620      stderr, not stdout.
19621
19622  o Minor bugfixes (configuration, unit tests):
19623    - Only add the default fallback directories when the DirAuthorities,
19624      AlternateDirAuthority, and FallbackDir directory config options
19625      are set to their defaults. The default fallback directory list is
19626      currently empty, this fix will only change tor's behavior when it
19627      has default fallback directories. Includes unit tests for
19628      consider_adding_dir_servers(). Fixes bug 15642; bugfix on
19629      90f6071d8dc0 in 0.2.4.7-alpha. Patch by "teor".
19630
19631  o Minor bugfixes (correctness):
19632    - For correctness, avoid modifying a constant string in
19633      handle_control_postdescriptor. Fixes bug 15546; bugfix
19634      on 0.1.1.16-rc.
19635    - Remove side-effects from tor_assert() calls. This was harmless,
19636      because we never disable assertions, but it is bad style and
19637      unnecessary. Fixes bug 15211; bugfix on 0.2.5.5, 0.2.2.36,
19638      and 0.2.0.10.
19639
19640  o Minor bugfixes (hidden service):
19641    - Fix an out-of-bounds read when parsing invalid INTRODUCE2 cells on
19642      a client authorized hidden service. Fixes bug 15823; bugfix
19643      on 0.2.1.6-alpha.
19644    - Remove an extraneous newline character from the end of hidden
19645      service descriptors. Fixes bug 15296; bugfix on 0.2.0.10-alpha.
19646
19647  o Minor bugfixes (interface):
19648    - Print usage information for --dump-config when it is used without
19649      an argument. Also, fix the error message to use different wording
19650      and add newline at the end. Fixes bug 15541; bugfix
19651      on 0.2.5.1-alpha.
19652
19653  o Minor bugfixes (logs):
19654    - When building Tor under Clang, do not include an extra set of
19655      parentheses in log messages that include function names. Fixes bug
19656      15269; bugfix on every released version of Tor when compiled with
19657      recent enough Clang.
19658
19659  o Minor bugfixes (network):
19660    - When attempting to use fallback technique for network interface
19661      lookup, disregard loopback and multicast addresses since they are
19662      unsuitable for public communications.
19663
19664  o Minor bugfixes (statistics):
19665    - Disregard the ConnDirectionStatistics torrc options when Tor is
19666      not a relay since in that mode of operation no sensible data is
19667      being collected and because Tor might run into measurement hiccups
19668      when running as a client for some time, then becoming a relay.
19669      Fixes bug 15604; bugfix on 0.2.2.35.
19670
19671  o Minor bugfixes (test networks):
19672    - When self-testing reachability, use ExtendAllowPrivateAddresses to
19673      determine if local/private addresses imply reachability. The
19674      previous fix used TestingTorNetwork, which implies
19675      ExtendAllowPrivateAddresses, but this excluded rare configurations
19676      where ExtendAllowPrivateAddresses is set but TestingTorNetwork is
19677      not. Fixes bug 15771; bugfix on 0.2.6.1-alpha. Patch by "teor",
19678      issue discovered by CJ Ess.
19679
19680  o Minor bugfixes (testing):
19681    - Check for matching value in server response in ntor_ref.py. Fixes
19682      bug 15591; bugfix on 0.2.4.8-alpha. Reported and fixed
19683      by "joelanders".
19684    - Set the severity correctly when testing
19685      get_interface_addresses_ifaddrs() and
19686      get_interface_addresses_win32(), so that the tests fail gracefully
19687      instead of triggering an assertion. Fixes bug 15759; bugfix on
19688      0.2.6.3-alpha. Reported by Nicolas Derive.
19689
19690  o Code simplification and refactoring:
19691    - Move the hacky fallback code out of get_interface_address6() into
19692      separate function and get it covered with unit-tests. Resolves
19693      ticket 14710.
19694    - Refactor hidden service client-side cache lookup to intelligently
19695      report its various failure cases, and disentangle failure cases
19696      involving a lack of introduction points. Closes ticket 14391.
19697    - Use our own Base64 encoder instead of OpenSSL's, to allow more
19698      control over the output. Part of ticket 15652.
19699
19700  o Documentation:
19701    - Improve the descriptions of statistics-related torrc options in
19702      the manpage to describe rationale and possible uses cases. Fixes
19703      issue 15550.
19704    - Improve the layout and formatting of ./configure --help messages.
19705      Closes ticket 15024. Patch from "cypherpunks".
19706    - Standardize on the term "server descriptor" in the manual page.
19707      Previously, we had used "router descriptor", "server descriptor",
19708      and "relay descriptor" interchangeably. Part of ticket 14987.
19709
19710  o Removed code:
19711    - Remove `USE_OPENSSL_BASE64` and the corresponding fallback code
19712      and always use the internal Base64 decoder. The internal decoder
19713      has been part of tor since 0.2.0.10-alpha, and no one should
19714      be using the OpenSSL one. Part of ticket 15652.
19715    - Remove the 'tor_strclear()' function; use memwipe() instead.
19716      Closes ticket 14922.
19717
19718  o Removed features:
19719    - Remove the (seldom-used) DynamicDHGroups feature. For anti-
19720      fingerprinting we now recommend pluggable transports; for forward-
19721      secrecy in TLS, we now use the P-256 group. Closes ticket 13736.
19722    - Remove the undocumented "--digests" command-line option. It
19723      complicated our build process, caused subtle build issues on
19724      multiple platforms, and is now redundant since we started
19725      including git version identifiers. Closes ticket 14742.
19726    - Tor no longer contains checks for ancient directory cache versions
19727      that didn't know about microdescriptors.
19728    - Tor no longer contains workarounds for stat files generated by
19729      super-old versions of Tor that didn't choose guards sensibly.
19730
19731
19732Changes in version 0.2.4.27 - 2015-04-06
19733  Tor 0.2.4.27 backports two fixes from 0.2.6.7 for security issues that
19734  could be used by an attacker to crash hidden services, or crash clients
19735  visiting hidden services. Hidden services should upgrade as soon as
19736  possible; clients should upgrade whenever packages become available.
19737
19738  This release also backports a simple improvement to make hidden
19739  services a bit less vulnerable to denial-of-service attacks.
19740
19741  o Major bugfixes (security, hidden service):
19742    - Fix an issue that would allow a malicious client to trigger an
19743      assertion failure and halt a hidden service. Fixes bug 15600;
19744      bugfix on 0.2.1.6-alpha. Reported by "disgleirio".
19745    - Fix a bug that could cause a client to crash with an assertion
19746      failure when parsing a malformed hidden service descriptor. Fixes
19747      bug 15601; bugfix on 0.2.1.5-alpha. Found by "DonnchaC".
19748
19749  o Minor features (DoS-resistance, hidden service):
19750    - Introduction points no longer allow multiple INTRODUCE1 cells to
19751      arrive on the same circuit. This should make it more expensive for
19752      attackers to overwhelm hidden services with introductions.
19753      Resolves ticket 15515.
19754
19755
19756Changes in version 0.2.5.12 - 2015-04-06
19757  Tor 0.2.5.12 backports two fixes from 0.2.6.7 for security issues that
19758  could be used by an attacker to crash hidden services, or crash clients
19759  visiting hidden services. Hidden services should upgrade as soon as
19760  possible; clients should upgrade whenever packages become available.
19761
19762  This release also backports a simple improvement to make hidden
19763  services a bit less vulnerable to denial-of-service attacks.
19764
19765  o Major bugfixes (security, hidden service):
19766    - Fix an issue that would allow a malicious client to trigger an
19767      assertion failure and halt a hidden service. Fixes bug 15600;
19768      bugfix on 0.2.1.6-alpha. Reported by "disgleirio".
19769    - Fix a bug that could cause a client to crash with an assertion
19770      failure when parsing a malformed hidden service descriptor. Fixes
19771      bug 15601; bugfix on 0.2.1.5-alpha. Found by "DonnchaC".
19772
19773  o Minor features (DoS-resistance, hidden service):
19774    - Introduction points no longer allow multiple INTRODUCE1 cells to
19775      arrive on the same circuit. This should make it more expensive for
19776      attackers to overwhelm hidden services with introductions.
19777      Resolves ticket 15515.
19778
19779
19780Changes in version 0.2.6.7 - 2015-04-06
19781  Tor 0.2.6.7 fixes two security issues that could be used by an
19782  attacker to crash hidden services, or crash clients visiting hidden
19783  services. Hidden services should upgrade as soon as possible; clients
19784  should upgrade whenever packages become available.
19785
19786  This release also contains two simple improvements to make hidden
19787  services a bit less vulnerable to denial-of-service attacks.
19788
19789  o Major bugfixes (security, hidden service):
19790    - Fix an issue that would allow a malicious client to trigger an
19791      assertion failure and halt a hidden service. Fixes bug 15600;
19792      bugfix on 0.2.1.6-alpha. Reported by "disgleirio".
19793    - Fix a bug that could cause a client to crash with an assertion
19794      failure when parsing a malformed hidden service descriptor. Fixes
19795      bug 15601; bugfix on 0.2.1.5-alpha. Found by "DonnchaC".
19796
19797  o Minor features (DoS-resistance, hidden service):
19798    - Introduction points no longer allow multiple INTRODUCE1 cells to
19799      arrive on the same circuit. This should make it more expensive for
19800      attackers to overwhelm hidden services with introductions.
19801      Resolves ticket 15515.
19802    - Decrease the amount of reattempts that a hidden service performs
19803      when its rendezvous circuits fail. This reduces the computational
19804      cost for running a hidden service under heavy load. Resolves
19805      ticket 11447.
19806
19807
19808Changes in version 0.2.6.6 - 2015-03-24
19809  Tor 0.2.6.6 is the first stable release in the 0.2.6 series.
19810
19811  It adds numerous safety, security, correctness, and performance
19812  improvements. Client programs can be configured to use more kinds of
19813  sockets, AutomapHosts works better, the multithreading backend is
19814  improved, cell transmission is refactored, test coverage is much
19815  higher, more denial-of-service attacks are handled, guard selection is
19816  improved to handle long-term guards better, pluggable transports
19817  should work a bit better, and some annoying hidden service performance
19818  bugs should be addressed.
19819
19820  o Minor bugfixes (portability):
19821    - Use the correct datatype in the SipHash-2-4 function to prevent
19822      compilers from assuming any sort of alignment. Fixes bug 15436;
19823      bugfix on 0.2.5.3-alpha.
19824
19825Changes in version 0.2.6.5-rc - 2015-03-18
19826  Tor 0.2.6.5-rc is the second and (hopefully) last release candidate in
19827  the 0.2.6. It fixes a small number of bugs found in 0.2.6.4-rc.
19828
19829  o Major bugfixes (client):
19830    - Avoid crashing when making certain configuration option changes on
19831      clients. Fixes bug 15245; bugfix on 0.2.6.3-alpha. Reported
19832      by "anonym".
19833
19834  o Major bugfixes (pluggable transports):
19835    - Initialize the extended OR Port authentication cookie before
19836      launching pluggable transports. This prevents a race condition
19837      that occurred when server-side pluggable transports would cache the
19838      authentication cookie before it has been (re)generated. Fixes bug
19839      15240; bugfix on 0.2.5.1-alpha.
19840
19841  o Major bugfixes (portability):
19842    - Do not crash on startup when running on Solaris. Fixes a bug
19843      related to our fix for 9495; bugfix on 0.2.6.1-alpha. Reported
19844      by "ruebezahl".
19845
19846  o Minor features (heartbeat):
19847    - On relays, report how many connections we negotiated using each
19848      version of the Tor link protocols. This information will let us
19849      know if removing support for very old versions of the Tor
19850      protocols is harming the network. Closes ticket 15212.
19851
19852  o Code simplification and refactoring:
19853    - Refactor main loop to extract the 'loop' part. This makes it
19854      easier to run Tor under Shadow. Closes ticket 15176.
19855
19856
19857Changes in version 0.2.5.11 - 2015-03-17
19858  Tor 0.2.5.11 is the second stable release in the 0.2.5 series.
19859
19860  It backports several bugfixes from the 0.2.6 branch, including a
19861  couple of medium-level security fixes for relays and exit nodes.
19862  It also updates the list of directory authorities.
19863
19864  o Directory authority changes:
19865    - Remove turtles as a directory authority.
19866    - Add longclaw as a new (v3) directory authority. This implements
19867      ticket 13296. This keeps the directory authority count at 9.
19868    - The directory authority Faravahar has a new IP address. This
19869      closes ticket 14487.
19870
19871  o Major bugfixes (crash, OSX, security):
19872    - Fix a remote denial-of-service opportunity caused by a bug in
19873      OSX's _strlcat_chk() function. Fixes bug 15205; bug first appeared
19874      in OSX 10.9.
19875
19876  o Major bugfixes (relay, stability, possible security):
19877    - Fix a bug that could lead to a relay crashing with an assertion
19878      failure if a buffer of exactly the wrong layout was passed to
19879      buf_pullup() at exactly the wrong time. Fixes bug 15083; bugfix on
19880      0.2.0.10-alpha. Patch from 'cypherpunks'.
19881    - Do not assert if the 'data' pointer on a buffer is advanced to the
19882      very end of the buffer; log a BUG message instead. Only assert if
19883      it is past that point. Fixes bug 15083; bugfix on 0.2.0.10-alpha.
19884
19885  o Major bugfixes (exit node stability):
19886    - Fix an assertion failure that could occur under high DNS load.
19887      Fixes bug 14129; bugfix on Tor 0.0.7rc1. Found by "jowr";
19888      diagnosed and fixed by "cypherpunks".
19889
19890  o Major bugfixes (Linux seccomp2 sandbox):
19891    - Upon receiving sighup with the seccomp2 sandbox enabled, do not
19892      crash during attempts to call wait4. Fixes bug 15088; bugfix on
19893      0.2.5.1-alpha. Patch from "sanic".
19894
19895  o Minor features (controller):
19896    - New "GETINFO bw-event-cache" to get information about recent
19897      bandwidth events. Closes ticket 14128. Useful for controllers to
19898      get recent bandwidth history after the fix for ticket 13988.
19899
19900  o Minor features (geoip):
19901    - Update geoip to the March 3 2015 Maxmind GeoLite2 Country database.
19902    - Update geoip6 to the March 3 2015 Maxmind GeoLite2
19903      Country database.
19904
19905  o Minor bugfixes (client, automapping):
19906    - Avoid crashing on torrc lines for VirtualAddrNetworkIPv[4|6] when
19907      no value follows the option. Fixes bug 14142; bugfix on
19908      0.2.4.7-alpha. Patch by "teor".
19909    - Fix a memory leak when using AutomapHostsOnResolve. Fixes bug
19910      14195; bugfix on 0.1.0.1-rc.
19911
19912  o Minor bugfixes (compilation):
19913    - Build without warnings with the stock OpenSSL srtp.h header, which
19914      has a duplicate declaration of SSL_get_selected_srtp_profile().
19915      Fixes bug 14220; this is OpenSSL's bug, not ours.
19916
19917  o Minor bugfixes (directory authority):
19918    - Allow directory authorities to fetch more data from one another if
19919      they find themselves missing lots of votes. Previously, they had
19920      been bumping against the 10 MB queued data limit. Fixes bug 14261;
19921      bugfix on 0.1.2.5-alpha.
19922    - Enlarge the buffer to read bwauth generated files to avoid an
19923      issue when parsing the file in dirserv_read_measured_bandwidths().
19924      Fixes bug 14125; bugfix on 0.2.2.1-alpha.
19925
19926  o Minor bugfixes (statistics):
19927    - Increase period over which bandwidth observations are aggregated
19928      from 15 minutes to 4 hours. Fixes bug 13988; bugfix on 0.0.8pre1.
19929
19930  o Minor bugfixes (preventative security, C safety):
19931    - When reading a hexadecimal, base-32, or base-64 encoded value from
19932      a string, always overwrite the whole output buffer. This prevents
19933      some bugs where we would look at (but fortunately, not reveal)
19934      uninitialized memory on the stack. Fixes bug 14013; bugfix on all
19935      versions of Tor.
19936
19937
19938Changes in version 0.2.4.26 - 2015-03-17
19939  Tor 0.2.4.26 includes an updated list of directory authorities.  It
19940  also backports a couple of stability and security bugfixes from 0.2.5
19941  and beyond.
19942
19943  o Directory authority changes:
19944    - Remove turtles as a directory authority.
19945    - Add longclaw as a new (v3) directory authority. This implements
19946      ticket 13296. This keeps the directory authority count at 9.
19947    - The directory authority Faravahar has a new IP address. This
19948      closes ticket 14487.
19949
19950  o Major bugfixes (exit node stability, also in 0.2.6.3-alpha):
19951    - Fix an assertion failure that could occur under high DNS load.
19952      Fixes bug 14129; bugfix on Tor 0.0.7rc1. Found by "jowr";
19953      diagnosed and fixed by "cypherpunks".
19954
19955  o Major bugfixes (relay, stability, possible security, also in 0.2.6.4-rc):
19956    - Fix a bug that could lead to a relay crashing with an assertion
19957      failure if a buffer of exactly the wrong layout was passed to
19958      buf_pullup() at exactly the wrong time. Fixes bug 15083; bugfix on
19959      0.2.0.10-alpha. Patch from 'cypherpunks'.
19960    - Do not assert if the 'data' pointer on a buffer is advanced to the
19961      very end of the buffer; log a BUG message instead. Only assert if
19962      it is past that point. Fixes bug 15083; bugfix on 0.2.0.10-alpha.
19963
19964  o Minor features (geoip):
19965    - Update geoip to the March 3 2015 Maxmind GeoLite2 Country database.
19966    - Update geoip6 to the March 3 2015 Maxmind GeoLite2
19967      Country database.
19968
19969Changes in version 0.2.6.4-rc - 2015-03-09
19970  Tor 0.2.6.4-alpha fixes an issue in the directory code that an
19971  attacker might be able to use in order to crash certain Tor
19972  directories. It also resolves some minor issues left over from, or
19973  introduced in, Tor 0.2.6.3-alpha or earlier.
19974
19975  o Major bugfixes (crash, OSX, security):
19976    - Fix a remote denial-of-service opportunity caused by a bug in
19977      OSX's _strlcat_chk() function. Fixes bug 15205; bug first appeared
19978      in OSX 10.9.
19979
19980  o Major bugfixes (relay, stability, possible security):
19981    - Fix a bug that could lead to a relay crashing with an assertion
19982      failure if a buffer of exactly the wrong layout is passed to
19983      buf_pullup() at exactly the wrong time. Fixes bug 15083; bugfix on
19984      0.2.0.10-alpha. Patch from "cypherpunks".
19985    - Do not assert if the 'data' pointer on a buffer is advanced to the
19986      very end of the buffer; log a BUG message instead. Only assert if
19987      it is past that point. Fixes bug 15083; bugfix on 0.2.0.10-alpha.
19988
19989  o Major bugfixes (FreeBSD IPFW transparent proxy):
19990    - Fix address detection with FreeBSD transparent proxies, when
19991      "TransProxyType ipfw" is in use. Fixes bug 15064; bugfix
19992      on 0.2.5.4-alpha.
19993
19994  o Major bugfixes (Linux seccomp2 sandbox):
19995    - Pass IPPROTO_TCP rather than 0 to socket(), so that the Linux
19996      seccomp2 sandbox doesn't fail. Fixes bug 14989; bugfix
19997      on 0.2.6.3-alpha.
19998    - Allow AF_UNIX hidden services to be used with the seccomp2
19999      sandbox. Fixes bug 15003; bugfix on 0.2.6.3-alpha.
20000    - Upon receiving sighup with the seccomp2 sandbox enabled, do not
20001      crash during attempts to call wait4. Fixes bug 15088; bugfix on
20002      0.2.5.1-alpha. Patch from "sanic".
20003
20004  o Minor features (controller):
20005    - Messages about problems in the bootstrap process now include
20006      information about the server we were trying to connect to when we
20007      noticed the problem. Closes ticket 15006.
20008
20009  o Minor features (geoip):
20010    - Update geoip to the March 3 2015 Maxmind GeoLite2 Country database.
20011    - Update geoip6 to the March 3 2015 Maxmind GeoLite2
20012      Country database.
20013
20014  o Minor features (logs):
20015    - Quiet some log messages in the heartbeat and at startup. Closes
20016      ticket 14950.
20017
20018  o Minor bugfixes (certificate handling):
20019    - If an authority operator accidentally makes a signing certificate
20020      with a future publication time, do not discard its real signing
20021      certificates. Fixes bug 11457; bugfix on 0.2.0.3-alpha.
20022    - Remove any old authority certificates that have been superseded
20023      for at least two days. Previously, we would keep superseded
20024      certificates until they expired, if they were published close in
20025      time to the certificate that superseded them. Fixes bug 11454;
20026      bugfix on 0.2.1.8-alpha.
20027
20028  o Minor bugfixes (compilation):
20029    - Fix a compilation warning on s390. Fixes bug 14988; bugfix
20030      on 0.2.5.2-alpha.
20031    - Fix a compilation warning on FreeBSD. Fixes bug 15151; bugfix
20032      on 0.2.6.2-alpha.
20033
20034  o Minor bugfixes (testing):
20035    - Fix endianness issues in unit test for resolve_my_address() to
20036      have it pass on big endian systems. Fixes bug 14980; bugfix on
20037      Tor 0.2.6.3-alpha.
20038    - Avoid a side-effect in a tor_assert() in the unit tests. Fixes bug
20039      15188; bugfix on 0.1.2.3-alpha. Patch from Tom van der Woerdt.
20040    - When running the new 'make test-stem' target, use the configured
20041      python binary. Fixes bug 15037; bugfix on 0.2.6.3-alpha. Patch
20042      from "cypherpunks".
20043    - When running the zero-length-keys tests, do not use the default
20044      torrc file. Fixes bug 15033; bugfix on 0.2.6.3-alpha. Reported
20045      by "reezer".
20046
20047  o Directory authority IP change:
20048    - The directory authority Faravahar has a new IP address. This
20049      closes ticket 14487.
20050
20051  o Removed code:
20052    - Remove some lingering dead code that once supported mempools.
20053      Mempools were disabled by default in 0.2.5, and removed entirely
20054      in 0.2.6.3-alpha. Closes more of ticket 14848; patch
20055      by "cypherpunks".
20056
20057
20058Changes in version 0.2.6.3-alpha - 2015-02-19
20059  Tor 0.2.6.3-alpha is the third (and hopefully final) alpha release in
20060  the 0.2.6.x series. It introduces support for more kinds of sockets,
20061  makes it harder to accidentally run an exit, improves our
20062  multithreading backend, incorporates several fixes for the
20063  AutomapHostsOnResolve option, and fixes numerous other bugs besides.
20064
20065  If no major regressions or security holes are found in this version,
20066  the next version will be a release candidate.
20067
20068  o Deprecated versions:
20069    - Tor relays older than 0.2.4.18-rc are no longer allowed to
20070      advertise themselves on the network. Closes ticket 13555.
20071
20072  o Major features (security, unix domain sockets):
20073    - Allow SocksPort to be an AF_UNIX Unix Domain Socket. Now high risk
20074      applications can reach Tor without having to create AF_INET or
20075      AF_INET6 sockets, meaning they can completely disable their
20076      ability to make non-Tor network connections. To create a socket of
20077      this type, use "SocksPort unix:/path/to/socket". Implements
20078      ticket 12585.
20079    - Support mapping hidden service virtual ports to AF_UNIX sockets.
20080      The syntax is "HiddenServicePort 80 unix:/path/to/socket".
20081      Implements ticket 11485.
20082
20083  o Major features (changed defaults):
20084    - Prevent relay operators from unintentionally running exits: When a
20085      relay is configured as an exit node, we now warn the user unless
20086      the "ExitRelay" option is set to 1. We warn even more loudly if
20087      the relay is configured with the default exit policy, since this
20088      can indicate accidental misconfiguration. Setting "ExitRelay 0"
20089      stops Tor from running as an exit relay. Closes ticket 10067.
20090
20091  o Major features (directory system):
20092    - When downloading server- or microdescriptors from a directory
20093      server, we no longer launch multiple simultaneous requests to the
20094      same server. This reduces load on the directory servers,
20095      especially when directory guards are in use. Closes ticket 9969.
20096    - When downloading server- or microdescriptors over a tunneled
20097      connection, do not limit the length of our requests to what the
20098      Squid proxy is willing to handle. Part of ticket 9969.
20099    - Authorities can now vote on the correct digests and latest
20100      versions for different software packages. This allows packages
20101      that include Tor to use the Tor authority system as a way to get
20102      notified of updates and their correct digests. Implements proposal
20103      227. Closes ticket 10395.
20104
20105  o Major features (guards):
20106    - Introduce the Guardfraction feature to improves load balancing on
20107      guard nodes. Specifically, it aims to reduce the traffic gap that
20108      guard nodes experience when they first get the Guard flag. This is
20109      a required step if we want to increase the guard lifetime to 9
20110      months or greater.  Closes ticket 9321.
20111
20112  o Major features (performance):
20113    - Make the CPU worker implementation more efficient by avoiding the
20114      kernel and lengthening pipelines. The original implementation used
20115      sockets to transfer data from the main thread to the workers, and
20116      didn't allow any thread to be assigned more than a single piece of
20117      work at once. The new implementation avoids communications
20118      overhead by making requests in shared memory, avoiding kernel IO
20119      where possible, and keeping more requests in flight at once.
20120      Implements ticket 9682.
20121
20122  o Major features (relay):
20123    - Raise the minimum acceptable configured bandwidth rate for bridges
20124      to 50 KiB/sec and for relays to 75 KiB/sec. (The old values were
20125      20 KiB/sec.) Closes ticket 13822.
20126
20127  o Major bugfixes (exit node stability):
20128    - Fix an assertion failure that could occur under high DNS load.
20129      Fixes bug 14129; bugfix on Tor 0.0.7rc1. Found by "jowr";
20130      diagnosed and fixed by "cypherpunks".
20131
20132  o Major bugfixes (mixed relay-client operation):
20133    - When running as a relay and client at the same time (not
20134      recommended), if we decide not to use a new guard because we want
20135      to retry older guards, only close the locally-originating circuits
20136      passing through that guard. Previously we would close all the
20137      circuits through that guard. Fixes bug 9819; bugfix on
20138      0.2.1.1-alpha. Reported by "skruffy".
20139
20140  o Minor features (build):
20141    - New --disable-system-torrc compile-time option to prevent Tor from
20142      looking for the system-wide torrc or torrc-defaults files.
20143      Resolves ticket 13037.
20144
20145  o Minor features (controller):
20146    - Include SOCKS_USERNAME and SOCKS_PASSWORD values in controller
20147      events so controllers can observe circuit isolation inputs. Closes
20148      ticket 8405.
20149    - ControlPort now supports the unix:/path/to/socket syntax as an
20150      alternative to the ControlSocket option, for consistency with
20151      SocksPort and HiddenServicePort. Closes ticket 14451.
20152    - New "GETINFO bw-event-cache" to get information about recent
20153      bandwidth events. Closes ticket 14128. Useful for controllers to
20154      get recent bandwidth history after the fix for ticket 13988.
20155
20156  o Minor features (Denial of service resistance):
20157    - Count the total number of bytes used storing hidden service
20158      descriptors against the value of MaxMemInQueues. If we're low on
20159      memory, and more than 20% of our memory is used holding hidden
20160      service descriptors, free them until no more than 10% of our
20161      memory holds hidden service descriptors. Free the least recently
20162      fetched descriptors first. Resolves ticket 13806.
20163    - When we have recently been under memory pressure (over 3/4 of
20164      MaxMemInQueues is allocated), then allocate smaller zlib objects
20165      for small requests. Closes ticket 11791.
20166
20167  o Minor features (geoip):
20168    - Update geoip and geoip6 files to the January 7 2015 Maxmind
20169      GeoLite2 Country database.
20170
20171  o Minor features (guard nodes):
20172    - Reduce the time delay before saving guard status to disk from 10
20173      minutes to 30 seconds (or from one hour to 10 minutes if
20174      AvoidDiskWrites is set). Closes ticket 12485.
20175
20176  o Minor features (hidden service):
20177    - Make Sybil attacks against hidden services harder by changing the
20178      minimum time required to get the HSDir flag from 25 hours up to 96
20179      hours. Addresses ticket 14149.
20180    - New option "HiddenServiceAllowUnknownPorts" to allow hidden
20181      services to disable the anti-scanning feature introduced in
20182      0.2.6.2-alpha. With this option not set, a connection to an
20183      unlisted port closes the circuit. With this option set, only a
20184      RELAY_DONE cell is sent. Closes ticket 14084.
20185
20186  o Minor features (interface):
20187    - Implement "-f -" command-line option to read torrc configuration
20188      from standard input, if you don't want to store the torrc file in
20189      the file system. Implements feature 13865.
20190
20191  o Minor features (logging):
20192    - Add a count of unique clients to the bridge heartbeat message.
20193      Resolves ticket 6852.
20194    - Suppress "router info incompatible with extra info" message when
20195      reading extrainfo documents from cache. (This message got loud
20196      around when we closed bug 9812 in 0.2.6.2-alpha.) Closes
20197      ticket 13762.
20198    - Elevate hidden service authorized-client message from DEBUG to
20199      INFO. Closes ticket 14015.
20200
20201  o Minor features (stability):
20202    - Add assertions in our hash-table iteration code to check for
20203      corrupted values that could cause infinite loops. Closes
20204      ticket 11737.
20205
20206  o Minor features (systemd):
20207    - Various improvements and modernizations in systemd hardening
20208      support. Closes ticket 13805. Patch from Craig Andrews.
20209
20210  o Minor features (testing networks):
20211    - Drop the minimum RendPostPeriod on a testing network to 5 seconds,
20212      and the default on a testing network to 2 minutes. Drop the
20213      MIN_REND_INITIAL_POST_DELAY on a testing network to 5 seconds, but
20214      keep the default on a testing network at 30 seconds. This reduces
20215      HS bootstrap time to around 25 seconds. Also, change the default
20216      time in test-network.sh to match. Closes ticket 13401. Patch
20217      by "teor".
20218    - Create TestingDirAuthVoteHSDir to correspond to
20219      TestingDirAuthVoteExit/Guard. Ensures that authorities vote the
20220      HSDir flag for the listed relays regardless of uptime or ORPort
20221      connectivity. Respects the value of VoteOnHidServDirectoriesV2.
20222      Partial implementation for ticket 14067. Patch by "teor".
20223
20224  o Minor features (tor2web mode):
20225    - Introduce the config option Tor2webRendezvousPoints, which allows
20226      clients in Tor2webMode to select a specific Rendezvous Point to be
20227      used in HS circuits. This might allow better performance for
20228      Tor2Web nodes. Implements ticket 12844.
20229
20230  o Minor bugfixes (client DNS):
20231    - Report the correct cached DNS expiration times on SOCKS port or in
20232      DNS replies. Previously, we would report everything as "never
20233      expires." Fixes bug 14193; bugfix on 0.2.3.17-beta.
20234    - Avoid a small memory leak when we find a cached answer for a
20235      reverse DNS lookup in a client-side DNS cache. (Remember, client-
20236      side DNS caching is off by default, and is not recommended.) Fixes
20237      bug 14259; bugfix on 0.2.0.1-alpha.
20238
20239  o Minor bugfixes (client, automapping):
20240    - Avoid crashing on torrc lines for VirtualAddrNetworkIPv[4|6] when
20241      no value follows the option. Fixes bug 14142; bugfix on
20242      0.2.4.7-alpha. Patch by "teor".
20243    - Fix a memory leak when using AutomapHostsOnResolve. Fixes bug
20244      14195; bugfix on 0.1.0.1-rc.
20245    - Prevent changes to other options from removing the wildcard value
20246      "." from "AutomapHostsSuffixes". Fixes bug 12509; bugfix
20247      on 0.2.0.1-alpha.
20248    - Allow MapAddress and AutomapHostsOnResolve to work together when
20249      an address is mapped into another address type (like .onion) that
20250      must be automapped at resolve time. Fixes bug 7555; bugfix
20251      on 0.2.0.1-alpha.
20252
20253  o Minor bugfixes (client, bridges):
20254    - When we are using bridges and we had a network connectivity
20255      problem, only retry connecting to our currently configured
20256      bridges, not all bridges we know about and remember using. Fixes
20257      bug 14216; bugfix on 0.2.2.17-alpha.
20258
20259  o Minor bugfixes (client, IPv6):
20260    - Reject socks requests to literal IPv6 addresses when IPv6Traffic
20261      flag is not set; and not because the NoIPv4Traffic flag was set.
20262      Previously we'd looked at the NoIPv4Traffic flag for both types of
20263      literal addresses. Fixes bug 14280; bugfix on 0.2.4.7-alpha.
20264
20265  o Minor bugfixes (compilation):
20266    - The address of an array in the middle of a structure will always
20267      be non-NULL. clang recognises this and complains. Disable the
20268      tautologous and redundant check to silence this warning. Fixes bug
20269      14001; bugfix on 0.2.1.2-alpha.
20270    - Avoid warnings when building with systemd 209 or later. Fixes bug
20271      14072; bugfix on 0.2.6.2-alpha. Patch from "h.venev".
20272    - Compile correctly with (unreleased) OpenSSL 1.1.0 headers.
20273      Addresses ticket 14188.
20274    - Build without warnings with the stock OpenSSL srtp.h header, which
20275      has a duplicate declaration of SSL_get_selected_srtp_profile().
20276      Fixes bug 14220; this is OpenSSL's bug, not ours.
20277    - Do not compile any code related to Tor2Web mode when Tor2Web mode
20278      is not enabled at compile time. Previously, this code was included
20279      in a disabled state. See discussion on ticket 12844.
20280    - Remove the --disable-threads configure option again. It was
20281      accidentally partially reintroduced in 29ac883606d6d. Fixes bug
20282      14819; bugfix on 0.2.6.2-alpha.
20283
20284  o Minor bugfixes (controller):
20285    - Report "down" in response to the "GETINFO entry-guards" command
20286      when relays are down with an unreachable_since value. Previously,
20287      we would report "up". Fixes bug 14184; bugfix on 0.1.2.2-alpha.
20288    - Avoid crashing on a malformed EXTENDCIRCUIT command. Fixes bug
20289      14116; bugfix on 0.2.2.9-alpha.
20290    - Add a code for the END_CIRC_REASON_IP_NOW_REDUNDANT circuit close
20291      reason. Fixes bug 14207; bugfix on 0.2.6.2-alpha.
20292
20293  o Minor bugfixes (directory authority):
20294    - Allow directory authorities to fetch more data from one another if
20295      they find themselves missing lots of votes. Previously, they had
20296      been bumping against the 10 MB queued data limit. Fixes bug 14261;
20297      bugfix on 0.1.2.5-alpha.
20298    - Do not attempt to download extrainfo documents which we will be
20299      unable to validate with a matching server descriptor. Fixes bug
20300      13762; bugfix on 0.2.0.1-alpha.
20301    - Fix a bug that was truncating AUTHDIR_NEWDESC events sent to the
20302      control port. Fixes bug 14953; bugfix on 0.2.0.1-alpha.
20303    - Enlarge the buffer to read bwauth generated files to avoid an
20304      issue when parsing the file in dirserv_read_measured_bandwidths().
20305      Fixes bug 14125; bugfix on 0.2.2.1-alpha.
20306
20307  o Minor bugfixes (file handling):
20308    - Stop failing when key files are zero-length. Instead, generate new
20309      keys, and overwrite the empty key files. Fixes bug 13111; bugfix
20310      on all versions of Tor. Patch by "teor".
20311    - Stop generating a fresh .old RSA onion key file when the .old file
20312      is missing. Fixes part of 13111; bugfix on 0.0.6rc1.
20313    - Avoid overwriting .old key files with empty key files.
20314    - Skip loading zero-length extrainfo store, router store, stats,
20315      state, and key files.
20316    - Avoid crashing when trying to reload a torrc specified as a
20317      relative path with RunAsDaemon turned on. Fixes bug 13397; bugfix
20318      on 0.2.3.11-alpha.
20319
20320  o Minor bugfixes (hidden services):
20321    - Close the introduction circuit when we have no more usable intro
20322      points, instead of waiting for it to time out. This also ensures
20323      that no follow-up HS descriptor fetch is triggered when the
20324      circuit eventually times out. Fixes bug 14224; bugfix on 0.0.6.
20325    - When fetching a hidden service descriptor for a down service that
20326      was recently up, do not keep refetching until we try the same
20327      replica twice in a row. Fixes bug 14219; bugfix on 0.2.0.10-alpha.
20328    - Successfully launch Tor with a nonexistent hidden service
20329      directory. Our fix for bug 13942 didn't catch this case. Fixes bug
20330      14106; bugfix on 0.2.6.2-alpha.
20331
20332  o Minor bugfixes (logging):
20333    - Avoid crashing when there are more log domains than entries in
20334      domain_list. Bugfix on 0.2.3.1-alpha.
20335    - Add a string representation for LD_SCHED. Fixes bug 14740; bugfix
20336      on 0.2.6.1-alpha.
20337    - Don't log messages to stdout twice when starting up. Fixes bug
20338      13993; bugfix on 0.2.6.1-alpha.
20339
20340  o Minor bugfixes (parsing):
20341    - Stop accepting milliseconds (or other junk) at the end of
20342      descriptor publication times. Fixes bug 9286; bugfix on 0.0.2pre25.
20343    - Support two-number and three-number version numbers correctly, in
20344      case we change the Tor versioning system in the future. Fixes bug
20345      13661; bugfix on 0.0.8pre1.
20346
20347  o Minor bugfixes (path counting):
20348    - When deciding whether the consensus lists any exit nodes, count
20349      the number listed in the consensus, not the number we have
20350      descriptors for. Fixes part of bug 14918; bugfix on 0.2.6.2-alpha.
20351    - When deciding whether we have any exit nodes, only examine
20352      ExitNodes when the ExitNodes option is actually set. Fixes part of
20353      bug 14918; bugfix on 0.2.6.2-alpha.
20354    - Get rid of redundant and possibly scary warnings that we are
20355      missing directory information while we bootstrap. Fixes part of
20356      bug 14918; bugfix on 0.2.6.2-alpha.
20357
20358  o Minor bugfixes (portability):
20359    - Fix the ioctl()-based network interface lookup code so that it
20360      will work on systems that have variable-length struct ifreq, for
20361      example Mac OS X.
20362    - Fix scheduler compilation on targets where char is unsigned. Fixes
20363      bug 14764; bugfix on 0.2.6.2-alpha. Reported by Christian Kujau.
20364
20365  o Minor bugfixes (sandbox):
20366    - Allow glibc fatal errors to be sent to stderr before Tor exits.
20367      Previously, glibc would try to write them to /dev/tty, and the
20368      sandbox would trap the call and make Tor exit prematurely. Fixes
20369      bug 14759; bugfix on 0.2.5.1-alpha.
20370
20371  o Minor bugfixes (shutdown):
20372    - When shutting down, always call event_del() on lingering read or
20373      write events before freeing them. Otherwise, we risk double-frees
20374      or read-after-frees in event_base_free(). Fixes bug 12985; bugfix
20375      on 0.1.0.2-rc.
20376
20377  o Minor bugfixes (small memory leaks):
20378    - Avoid leaking memory when using IPv6 virtual address mappings.
20379      Fixes bug 14123; bugfix on 0.2.4.7-alpha. Patch by Tom van
20380      der Woerdt.
20381
20382  o Minor bugfixes (statistics):
20383    - Increase period over which bandwidth observations are aggregated
20384      from 15 minutes to 4 hours. Fixes bug 13988; bugfix on 0.0.8pre1.
20385
20386  o Minor bugfixes (systemd support):
20387    - Fix detection and operation of systemd watchdog. Fixes part of bug
20388      14141; bugfix on 0.2.6.2-alpha. Patch from Tomasz Torcz.
20389    - Run correctly under systemd with the RunAsDaemon option set. Fixes
20390      part of bug 14141; bugfix on 0.2.5.7-rc. Patch from Tomasz Torcz.
20391    - Inform the systemd supervisor about more changes in the Tor
20392      process status. Implements part of ticket 14141. Patch from
20393      Tomasz Torcz.
20394    - Cause the "--disable-systemd" option to actually disable systemd
20395      support. Fixes bug 14350; bugfix on 0.2.6.2-alpha. Patch
20396      from "blueness".
20397
20398  o Minor bugfixes (TLS):
20399    - Check more thoroughly throughout the TLS code for possible
20400      unlogged TLS errors. Possible diagnostic or fix for bug 13319.
20401
20402  o Minor bugfixes (transparent proxy):
20403    - Use getsockname, not getsockopt, to retrieve the address for a
20404      TPROXY-redirected connection. Fixes bug 13796; bugfix
20405      on 0.2.5.2-alpha.
20406
20407  o Code simplification and refactoring:
20408    - Move fields related to isolating and configuring client ports into
20409      a shared structure. Previously, they were duplicated across
20410      port_cfg_t, listener_connection_t, and edge_connection_t. Failure
20411      to copy them correctly had been the cause of at least one bug in
20412      the past. Closes ticket 8546.
20413    - Refactor the get_interface_addresses_raw() doom-function into
20414      multiple smaller and simpler subfunctions. Cover the resulting
20415      subfunctions with unit-tests. Fixes a significant portion of
20416      issue 12376.
20417    - Remove workaround in dirserv_thinks_router_is_hs_dir() that was
20418      only for version <= 0.2.2.24 which is now deprecated. Closes
20419      ticket 14202.
20420    - Remove a test for a long-defunct broken version-one
20421      directory server.
20422
20423  o Documentation:
20424    - Adding section on OpenBSD to our TUNING document. Thanks to mmcc
20425      for writing the OpenBSD-specific tips. Resolves ticket 13702.
20426    - Make the tor-resolve documentation match its help string and its
20427      options. Resolves part of ticket 14325.
20428    - Log a more useful error message from tor-resolve when failing to
20429      look up a hidden service address. Resolves part of ticket 14325.
20430
20431  o Downgraded warnings:
20432    - Don't warn when we've attempted to contact a relay using the wrong
20433      ntor onion key. Closes ticket 9635.
20434
20435  o Removed features:
20436    - To avoid confusion with the "ExitRelay" option, "ExitNode" is no
20437      longer silently accepted as an alias for "ExitNodes".
20438    - The --enable-mempool and --enable-buf-freelists options, which
20439      were originally created to work around bad malloc implementations,
20440      no longer exist. They were off-by-default in 0.2.5. Closes
20441      ticket 14848.
20442
20443  o Testing:
20444    - Make the checkdir/perms test complete successfully even if the
20445      global umask is not 022. Fixes bug 14215; bugfix on 0.2.6.2-alpha.
20446    - Test that tor does not fail when key files are zero-length. Check
20447      that tor generates new keys, and overwrites the empty key files.
20448    - Test that tor generates new keys when keys are missing
20449      (existing behavior).
20450    - Test that tor does not overwrite key files that already contain
20451      data (existing behavior). Tests bug 13111. Patch by "teor".
20452    - New "make test-stem" target to run stem integration tests.
20453      Requires that the "STEM_SOURCE_DIR" environment variable be set.
20454      Closes ticket 14107.
20455    - Make the test_cmdline_args.py script work correctly on Windows.
20456      Patch from Gisle Vanem.
20457    - Move the slower unit tests into a new "./src/test/test-slow"
20458      binary that can be run independently of the other tests. Closes
20459      ticket 13243.
20460    - Avoid undefined behavior when sampling huge values from the
20461      Laplace distribution. This made unittests fail on Raspberry Pi.
20462      Bug found by Device. Fixes bug 14090; bugfix on 0.2.6.2-alpha.
20463
20464
20465Changes in version 0.2.6.2-alpha - 2014-12-31
20466  Tor 0.2.6.2-alpha is the second alpha release in the 0.2.6.x series.
20467  It introduces a major new backend for deciding when to send cells on
20468  channels, which should lead down the road to big performance
20469  increases. It contains security and statistics features for better
20470  work on hidden services, and numerous bugfixes.
20471
20472  This release contains many new unit tests, along with major
20473  performance improvements for running testing networks using Chutney.
20474  Thanks to a series of patches contributed by "teor", testing networks
20475  should now bootstrap in seconds, rather than minutes.
20476
20477  o Major features (relay, infrastructure):
20478    - Complete revision of the code that relays use to decide which cell
20479      to send next. Formerly, we selected the best circuit to write on
20480      each channel, but we didn't select among channels in any
20481      sophisticated way. Now, we choose the best circuits globally from
20482      among those whose channels are ready to deliver traffic.
20483
20484      This patch implements a new inter-cmux comparison API, a global
20485      high/low watermark mechanism and a global scheduler loop for
20486      transmission prioritization across all channels as well as among
20487      circuits on one channel. This schedule is currently tuned to
20488      (tolerantly) avoid making changes in network performance, but it
20489      should form the basis for major circuit performance increases in
20490      the future. Code by Andrea; tuning by Rob Jansen; implements
20491      ticket 9262.
20492
20493  o Major features (hidden services):
20494    - Make HS port scanning more difficult by immediately closing the
20495      circuit when a user attempts to connect to a nonexistent port.
20496      Closes ticket 13667.
20497    - Add a HiddenServiceStatistics option that allows Tor relays to
20498      gather and publish statistics about the overall size and volume of
20499      hidden service usage. Specifically, when this option is turned on,
20500      an HSDir will publish an approximate number of hidden services
20501      that have published descriptors to it the past 24 hours. Also, if
20502      a relay has acted as a hidden service rendezvous point, it will
20503      publish the approximate amount of rendezvous cells it has relayed
20504      the past 24 hours. The statistics themselves are obfuscated so
20505      that the exact values cannot be derived. For more details see
20506      proposal 238, "Better hidden service stats from Tor relays". This
20507      feature is currently disabled by default. Implements feature 13192.
20508
20509  o Major bugfixes (client, automap):
20510    - Repair automapping with IPv6 addresses. This automapping should
20511      have worked previously, but one piece of debugging code that we
20512      inserted to detect a regression actually caused the regression to
20513      manifest itself again. Fixes bug 13811 and bug 12831; bugfix on
20514      0.2.4.7-alpha. Diagnosed and fixed by Francisco Blas
20515      Izquierdo Riera.
20516
20517  o Major bugfixes (hidden services):
20518    - When closing an introduction circuit that was opened in parallel
20519      with others, don't mark the introduction point as unreachable.
20520      Previously, the first successful connection to an introduction
20521      point would make the other introduction points get marked as
20522      having timed out. Fixes bug 13698; bugfix on 0.0.6rc2.
20523
20524  o Directory authority changes:
20525    - Remove turtles as a directory authority.
20526    - Add longclaw as a new (v3) directory authority. This implements
20527      ticket 13296. This keeps the directory authority count at 9.
20528
20529  o Major removed features:
20530    - Tor clients no longer support connecting to hidden services
20531      running on Tor 0.2.2.x and earlier; the Support022HiddenServices
20532      option has been removed. (There shouldn't be any hidden services
20533      running these versions on the network.) Closes ticket 7803.
20534
20535  o Minor features (client):
20536    - Validate hostnames in SOCKS5 requests more strictly. If SafeSocks
20537      is enabled, reject requests with IP addresses as hostnames.
20538      Resolves ticket 13315.
20539
20540  o Minor features (controller):
20541    - Add a "SIGNAL HEARTBEAT" controller command that tells Tor to
20542      write an unscheduled heartbeat message to the log. Implements
20543      feature 9503.
20544
20545  o Minor features (geoip):
20546    - Update geoip and geoip6 to the November 15 2014 Maxmind GeoLite2
20547      Country database.
20548
20549  o Minor features (hidden services):
20550    - When re-enabling the network, don't try to build introduction
20551      circuits until we have successfully built a circuit. This makes
20552      hidden services come up faster when the network is re-enabled.
20553      Patch from "akwizgran". Closes ticket 13447.
20554    - When we fail to retrieve a hidden service descriptor, send the
20555      controller an "HS_DESC FAILED" controller event. Implements
20556      feature 13212.
20557    - New HiddenServiceDirGroupReadable option to cause hidden service
20558      directories and hostname files to be created group-readable. Patch
20559      from "anon", David Stainton, and "meejah". Closes ticket 11291.
20560
20561  o Minor features (systemd):
20562    - Where supported, when running with systemd, report successful
20563      startup to systemd. Part of ticket 11016. Patch by Michael Scherer.
20564    - When running with systemd, support systemd watchdog messages. Part
20565      of ticket 11016. Patch by Michael Scherer.
20566
20567  o Minor features (transparent proxy):
20568    - Update the transparent proxy option checks to allow for both ipfw
20569      and pf on OS X. Closes ticket 14002.
20570    - Use the correct option when using IPv6 with transparent proxy
20571      support on Linux. Resolves 13808. Patch by Francisco Blas
20572      Izquierdo Riera.
20573
20574  o Minor bugfixes (preventative security, C safety):
20575    - When reading a hexadecimal, base-32, or base-64 encoded value from
20576      a string, always overwrite the whole output buffer. This prevents
20577      some bugs where we would look at (but fortunately, not reveal)
20578      uninitialized memory on the stack. Fixes bug 14013; bugfix on all
20579      versions of Tor.
20580    - Clear all memory targeted by tor_addr_{to,from}_sockaddr(), not
20581      just the part that's used. This makes it harder for data leak bugs
20582      to occur in the event of other programming failures. Resolves
20583      ticket 14041.
20584
20585  o Minor bugfixes (client, microdescriptors):
20586    - Use a full 256 bits of the SHA256 digest of a microdescriptor when
20587      computing which microdescriptors to download. This keeps us from
20588      erroneous download behavior if two microdescriptor digests ever
20589      have the same first 160 bits. Fixes part of bug 13399; bugfix
20590      on 0.2.3.1-alpha.
20591    - Reset a router's status if its microdescriptor digest changes,
20592      even if the first 160 bits remain the same. Fixes part of bug
20593      13399; bugfix on 0.2.3.1-alpha.
20594
20595  o Minor bugfixes (compilation):
20596    - Silence clang warnings under --enable-expensive-hardening,
20597      including implicit truncation of 64 bit values to 32 bit, const
20598      char assignment to self, tautological compare, and additional
20599      parentheses around equality tests. Fixes bug 13577; bugfix
20600      on 0.2.5.4-alpha.
20601    - Fix a clang warning about checking whether an address in the
20602      middle of a structure is NULL. Fixes bug 14001; bugfix
20603      on 0.2.1.2-alpha.
20604
20605  o Minor bugfixes (hidden services):
20606    - Correctly send a controller event when we find that a rendezvous
20607      circuit has finished. Fixes bug 13936; bugfix on 0.1.1.5-alpha.
20608    - Pre-check directory permissions for new hidden-services to avoid
20609      at least one case of "Bug: Acting on config options left us in a
20610      broken state. Dying." Fixes bug 13942; bugfix on 0.0.6pre1.
20611    - When adding a new hidden service (for example, via SETCONF), Tor
20612      no longer congratulates the user for running a relay. Fixes bug
20613      13941; bugfix on 0.2.6.1-alpha.
20614    - When fetching hidden service descriptors, we now check not only
20615      for whether we got the hidden service we had in mind, but also
20616      whether we got the particular descriptors we wanted. This prevents
20617      a class of inefficient but annoying DoS attacks by hidden service
20618      directories. Fixes bug 13214; bugfix on 0.2.1.6-alpha. Reported
20619      by "special".
20620
20621  o Minor bugfixes (Linux seccomp2 sandbox):
20622    - Make transparent proxy support work along with the seccomp2
20623      sandbox. Fixes part of bug 13808; bugfix on 0.2.5.1-alpha. Patch
20624      by Francisco Blas Izquierdo Riera.
20625    - Fix a memory leak in tor-resolve when running with the sandbox
20626      enabled. Fixes bug 14050; bugfix on 0.2.5.9-rc.
20627
20628  o Minor bugfixes (logging):
20629    - Downgrade warnings about RSA signature failures to info log level.
20630      Emit a warning when an extra info document is found incompatible
20631      with a corresponding router descriptor. Fixes bug 9812; bugfix
20632      on 0.0.6rc3.
20633    - Make connection_ap_handshake_attach_circuit() log the circuit ID
20634      correctly. Fixes bug 13701; bugfix on 0.0.6.
20635
20636  o Minor bugfixes (misc):
20637    - Stop allowing invalid address patterns like "*/24" that contain
20638      both a wildcard address and a bit prefix length. This affects all
20639      our address-range parsing code. Fixes bug 7484; bugfix
20640      on 0.0.2pre14.
20641
20642  o Minor bugfixes (testing networks, fast startup):
20643    - Allow Tor to build circuits using a consensus with no exits. If
20644      the consensus has no exits (typical of a bootstrapping test
20645      network), allow Tor to build circuits once enough descriptors have
20646      been downloaded. This assists in bootstrapping a testing Tor
20647      network. Fixes bug 13718; bugfix on 0.2.4.10-alpha. Patch
20648      by "teor".
20649    - When V3AuthVotingInterval is low, give a lower If-Modified-Since
20650      header to directory servers. This allows us to obtain consensuses
20651      promptly when the consensus interval is very short. This assists
20652      in bootstrapping a testing Tor network. Fixes parts of bugs 13718
20653      and 13963; bugfix on 0.2.0.3-alpha. Patch by "teor".
20654    - Stop assuming that private addresses are local when checking
20655      reachability in a TestingTorNetwork. Instead, when testing, assume
20656      all OR connections are remote. (This is necessary due to many test
20657      scenarios running all relays on localhost.) This assists in
20658      bootstrapping a testing Tor network. Fixes bug 13924; bugfix on
20659      0.1.0.1-rc. Patch by "teor".
20660    - Avoid building exit circuits from a consensus with no exits. Now
20661      thanks to our fix for 13718, we accept a no-exit network as not
20662      wholly lost, but we need to remember not to try to build exit
20663      circuits on it. Closes ticket 13814; patch by "teor".
20664    - Stop requiring exits to have non-zero bandwithcapacity in a
20665      TestingTorNetwork. Instead, when TestingMinExitFlagThreshold is 0,
20666      ignore exit bandwidthcapacity. This assists in bootstrapping a
20667      testing Tor network. Fixes parts of bugs 13718 and 13839; bugfix
20668      on 0.2.0.3-alpha. Patch by "teor".
20669    - Add "internal" to some bootstrap statuses when no exits are
20670      available. If the consensus does not contain Exits, Tor will only
20671      build internal circuits. In this case, relevant statuses will
20672      contain the word "internal" as indicated in the Tor control-
20673       spec.txt. When bootstrap completes, Tor will be ready to build
20674      internal circuits. If a future consensus contains Exits, exit
20675      circuits may become available. Fixes part of bug 13718; bugfix on
20676      0.2.4.10-alpha. Patch by "teor".
20677    - Decrease minimum consensus interval to 10 seconds when
20678      TestingTorNetwork is set, or 5 seconds for the first consensus.
20679      Fix assumptions throughout the code that assume larger intervals.
20680      Fixes bugs 13718 and 13823; bugfix on 0.2.0.3-alpha. Patch
20681      by "teor".
20682    - Avoid excluding guards from path building in minimal test
20683      networks, when we're in a test network and excluding guards would
20684      exclude all relays. This typically occurs in incredibly small tor
20685      networks, and those using "TestingAuthVoteGuard *". Fixes part of
20686      bug 13718; bugfix on 0.1.1.11-alpha. Patch by "teor".
20687
20688  o Code simplification and refactoring:
20689    - Stop using can_complete_circuits as a global variable; access it
20690      with a function instead.
20691    - Avoid using operators directly as macro arguments: this lets us
20692      apply coccinelle transformations to our codebase more directly.
20693      Closes ticket 13172.
20694    - Combine the functions used to parse ClientTransportPlugin and
20695      ServerTransportPlugin into a single function. Closes ticket 6456.
20696    - Add inline functions and convenience macros for inspecting channel
20697      state. Refactor the code to use convenience macros instead of
20698      checking channel state directly. Fixes issue 7356.
20699    - Document all members of was_router_added_t and rename
20700      ROUTER_WAS_NOT_NEW to ROUTER_IS_ALREADY_KNOWN to make it less
20701      confusable with ROUTER_WAS_TOO_OLD. Fixes issue 13644.
20702    - In connection_exit_begin_conn(), use END_CIRC_REASON_TORPROTOCOL
20703      constant instead of hardcoded value. Fixes issue 13840.
20704    - Refactor our generic strmap and digestmap types into a single
20705      implementation, so that we can add a new digest256map
20706      type trivially.
20707
20708  o Documentation:
20709    - Document the bridge-authority-only 'networkstatus-bridges' file.
20710      Closes ticket 13713; patch from "tom".
20711    - Fix typo in PredictedPortsRelevanceTime option description in
20712      manpage. Resolves issue 13707.
20713    - Stop suggesting that users specify relays by nickname: it isn't a
20714      good idea. Also, properly cross-reference how to specify relays in
20715      all parts of manual documenting options that take a list of
20716      relays. Closes ticket 13381.
20717    - Clarify the HiddenServiceDir option description in manpage to make
20718      it clear that relative paths are taken with respect to the current
20719      working directory. Also clarify that this behavior is not
20720      guaranteed to remain indefinitely. Fixes issue 13913.
20721
20722  o Testing:
20723    - New tests for many parts of channel, relay, and circuitmux
20724      functionality. Code by Andrea; part of 9262.
20725    - New tests for parse_transport_line(). Part of ticket 6456.
20726    - In the unit tests, use chgrp() to change the group of the unit
20727      test temporary directory to the current user, so that the sticky
20728      bit doesn't interfere with tests that check directory groups.
20729      Closes 13678.
20730    - Add unit tests for resolve_my_addr(). Part of ticket 12376; patch
20731      by 'rl1987'.
20732
20733
20734Changes in version 0.2.6.1-alpha - 2014-10-30
20735  Tor 0.2.6.1-alpha is the first release in the Tor 0.2.6.x series. It
20736  includes numerous code cleanups and new tests, and fixes a large
20737  number of annoying bugs. Out-of-memory conditions are handled better
20738  than in 0.2.5, pluggable transports have improved proxy support, and
20739  clients now use optimistic data for contacting hidden services. Also,
20740  we are now more robust to changes in what we consider a parseable
20741  directory object, so that tightening restrictions does not have a risk
20742  of introducing infinite download loops.
20743
20744  This is the first alpha release in a new series, so expect there to be
20745  bugs. Users who would rather test out a more stable branch should stay
20746  with 0.2.5.x for now.
20747
20748  o New compiler and system requirements:
20749    - Tor 0.2.6.x requires that your compiler support more of the C99
20750      language standard than before. The 'configure' script now detects
20751      whether your compiler supports C99 mid-block declarations and
20752      designated initializers. If it does not, Tor will not compile.
20753
20754      We may revisit this requirement if it turns out that a significant
20755      number of people need to build Tor with compilers that don't
20756      bother implementing a 15-year-old standard. Closes ticket 13233.
20757    - Tor no longer supports systems without threading support. When we
20758      began working on Tor, there were several systems that didn't have
20759      threads, or where the thread support wasn't able to run the
20760      threads of a single process on multiple CPUs. That no longer
20761      holds: every system where Tor needs to run well now has threading
20762      support. Resolves ticket 12439.
20763
20764  o Removed platform support:
20765    - We no longer include special code to build on Windows CE; as far
20766      as we know, nobody has used Tor on Windows CE in a very long time.
20767      Closes ticket 11446.
20768
20769  o Major features (bridges):
20770    - Expose the outgoing upstream HTTP/SOCKS proxy to pluggable
20771      transports if they are configured via the "TOR_PT_PROXY"
20772      environment variable. Implements proposal 232. Resolves
20773      ticket 8402.
20774
20775  o Major features (client performance, hidden services):
20776    - Allow clients to use optimistic data when connecting to a hidden
20777      service, which should remove a round-trip from hidden service
20778      initialization. See proposal 181 for details. Implements
20779      ticket 13211.
20780
20781  o Major features (directory system):
20782    - Upon receiving an unparseable directory object, if its digest
20783      matches what we expected, then don't try to download it again.
20784      Previously, when we got a descriptor we didn't like, we would keep
20785      trying to download it over and over. Closes ticket 11243.
20786
20787  o Major features (sample torrc):
20788    - Add a new, infrequently-changed "torrc.minimal". This file is
20789      similar to torrc.sample, but it will change as infrequently as
20790      possible, for the benefit of users whose systems prompt them for
20791      intervention whenever a default configuration file is changed.
20792      Making this change allows us to update torrc.sample to be a more
20793      generally useful "sample torrc".
20794
20795  o Major bugfixes (directory authorities):
20796    - Do not assign the HSDir flag to relays if they are not Valid, or
20797      currently hibernating. Fixes 12573; bugfix on 0.2.0.10-alpha.
20798
20799  o Major bugfixes (directory bandwidth performance):
20800    - Don't flush the zlib buffer aggressively when compressing
20801      directory information for clients. This should save about 7% of
20802      the bandwidth currently used for compressed descriptors and
20803      microdescriptors. Fixes bug 11787; bugfix on 0.1.1.23.
20804
20805  o Minor features (security, memory wiping):
20806    - Ensure we securely wipe keys from memory after
20807      crypto_digest_get_digest and init_curve25519_keypair_from_file
20808      have finished using them. Resolves ticket 13477.
20809
20810  o Minor features (security, out-of-memory handling):
20811    - When handling an out-of-memory condition, allocate less memory for
20812      temporary data structures. Fixes issue 10115.
20813    - When handling an out-of-memory condition, consider more types of
20814      buffers, including those on directory connections, and zlib
20815      buffers. Resolves ticket 11792.
20816
20817  o Minor features:
20818    - When identity keypair is generated for first time, log a
20819      congratulatory message that links to the new relay lifecycle
20820      document. Implements feature 10427.
20821
20822  o Minor features (client):
20823    - Clients are now willing to send optimistic data (before they
20824      receive a 'connected' cell) to relays of any version. (Relays
20825      without support for optimistic data are no longer supported on the
20826      Tor network.) Resolves ticket 13153.
20827
20828  o Minor features (directory authorities):
20829    - Don't list relays with a bandwidth estimate of 0 in the consensus.
20830      Implements a feature proposed during discussion of bug 13000.
20831    - In tor-gencert, report an error if the user provides the same
20832      argument more than once.
20833    - If a directory authority can't find a best consensus method in the
20834      votes that it holds, it now falls back to its favorite consensus
20835      method. Previously, it fell back to method 1. Neither of these is
20836      likely to get enough signatures, but "fall back to favorite"
20837      doesn't require us to maintain support an obsolete consensus
20838      method. Implements part of proposal 215.
20839
20840  o Minor features (logging):
20841    - On Unix-like systems, you can now use named pipes as the target of
20842      the Log option, and other options that try to append to files.
20843      Closes ticket 12061. Patch from "carlo von lynX".
20844    - When opening a log file at startup, send it every log message that
20845      we generated between startup and opening it. Previously, log
20846      messages that were generated before opening the log file were only
20847      logged to stdout. Closes ticket 6938.
20848    - Add a TruncateLogFile option to overwrite logs instead of
20849      appending to them. Closes ticket 5583.
20850
20851  o Minor features (portability, Solaris):
20852    - Threads are no longer disabled by default on Solaris; we believe
20853      that the versions of Solaris with broken threading support are all
20854      obsolete by now. Resolves ticket 9495.
20855
20856  o Minor features (relay):
20857    - Re-check our address after we detect a changed IP address from
20858      getsockname(). This ensures that the controller command "GETINFO
20859      address" will report the correct value. Resolves ticket 11582.
20860      Patch from "ra".
20861    - A new AccountingRule option lets Relays set whether they'd like
20862      AccountingMax to be applied separately to inbound and outbound
20863      traffic, or applied to the sum of inbound and outbound traffic.
20864      Resolves ticket 961. Patch by "chobe".
20865
20866  o Minor features (testing networks):
20867    - Add the TestingDirAuthVoteExit option, which lists nodes to assign
20868      the "Exit" flag regardless of their uptime, bandwidth, or exit
20869      policy. TestingTorNetwork must be set for this option to have any
20870      effect. Previously, authorities would take up to 35 minutes to
20871      give nodes the Exit flag in a test network. Partially implements
20872      ticket 13161.
20873
20874  o Minor features (validation):
20875    - Check all date/time values passed to tor_timegm and
20876      parse_rfc1123_time for validity, taking leap years into account.
20877      Improves HTTP header validation. Implemented with bug 13476.
20878    - In correct_tm(), limit the range of values returned by system
20879      localtime(_r) and gmtime(_r) to be between the years 1 and 8099.
20880      This means we don't have to deal with negative or too large dates,
20881      even if a clock is wrong. Otherwise we might fail to read a file
20882      written by us which includes such a date. Fixes bug 13476.
20883
20884  o Minor bugfixes (bridge clients):
20885    - When configured to use a bridge without an identity digest (not
20886      recommended), avoid launching an extra channel to it when
20887      bootstrapping. Fixes bug 7733; bugfix on 0.2.4.4-alpha.
20888
20889  o Minor bugfixes (bridges):
20890    - When DisableNetwork is set, do not launch pluggable transport
20891      plugins, and if any are running, terminate them. Fixes bug 13213;
20892      bugfix on 0.2.3.6-alpha.
20893
20894  o Minor bugfixes (C correctness):
20895    - Fix several instances of possible integer overflow/underflow/NaN.
20896      Fixes bug 13104; bugfix on 0.2.3.1-alpha and later. Patches
20897      from "teor".
20898    - In circuit_build_times_calculate_timeout() in circuitstats.c,
20899      avoid dividing by zero in the pareto calculations. This traps
20900      under clang's "undefined-trap" sanitizer. Fixes bug 13290; bugfix
20901      on 0.2.2.2-alpha.
20902    - Fix an integer overflow in format_time_interval(). Fixes bug
20903      13393; bugfix on 0.2.0.10-alpha.
20904    - Set the correct day of year value when the system's localtime(_r)
20905      or gmtime(_r) functions fail to set struct tm. Not externally
20906      visible. Fixes bug 13476; bugfix on 0.0.2pre14.
20907    - Avoid unlikely signed integer overflow in tor_timegm on systems
20908      with 32-bit time_t. Fixes bug 13476; bugfix on 0.0.2pre14.
20909
20910  o Minor bugfixes (client):
20911    - Fix smartlist_choose_node_by_bandwidth() so that relays with the
20912      BadExit flag are not considered worthy candidates. Fixes bug
20913      13066; bugfix on 0.1.2.3-alpha.
20914    - Use the consensus schedule for downloading consensuses, and not
20915      the generic schedule. Fixes bug 11679; bugfix on 0.2.2.6-alpha.
20916    - Handle unsupported or malformed SOCKS5 requests properly by
20917      responding with the appropriate error message before closing the
20918      connection. Fixes bugs 12971 and 13314; bugfix on 0.0.2pre13.
20919
20920  o Minor bugfixes (client, torrc):
20921    - Stop modifying the value of our DirReqStatistics torrc option just
20922      because we're not a bridge or relay. This bug was causing Tor
20923      Browser users to write "DirReqStatistics 0" in their torrc files
20924      as if they had chosen to change the config. Fixes bug 4244; bugfix
20925      on 0.2.3.1-alpha.
20926    - When GeoIPExcludeUnknown is enabled, do not incorrectly decide
20927      that our options have changed every time we SIGHUP. Fixes bug
20928      9801; bugfix on 0.2.4.10-alpha. Patch from "qwerty1".
20929
20930  o Minor bugfixes (controller):
20931    - Return an error when the second or later arguments of the
20932      "setevents" controller command are invalid events. Previously we
20933      would return success while silently skipping invalid events. Fixes
20934      bug 13205; bugfix on 0.2.3.2-alpha. Reported by "fpxnns".
20935
20936  o Minor bugfixes (directory system):
20937    - Always believe that v3 directory authorities serve extra-info
20938      documents, whether they advertise "caches-extra-info" or not.
20939      Fixes part of bug 11683; bugfix on 0.2.0.1-alpha.
20940    - When running as a v3 directory authority, advertise that you serve
20941      extra-info documents so that clients who want them can find them
20942      from you too. Fixes part of bug 11683; bugfix on 0.2.0.1-alpha.
20943    - Check the BRIDGE_DIRINFO flag bitwise rather than using equality.
20944      Previously, directories offering BRIDGE_DIRINFO and some other
20945      flag (i.e. microdescriptors or extrainfo) would be ignored when
20946      looking for bridges. Partially fixes bug 13163; bugfix
20947      on 0.2.0.7-alpha.
20948
20949  o Minor bugfixes (networking):
20950    - Check for orconns and use connection_or_close_for_error() rather
20951      than connection_mark_for_close() directly in the getsockopt()
20952      failure case of connection_handle_write_impl(). Fixes bug 11302;
20953      bugfix on 0.2.4.4-alpha.
20954
20955  o Minor bugfixes (relay):
20956    - When generating our family list, remove spaces from around the
20957      entries. Fixes bug 12728; bugfix on 0.2.1.7-alpha.
20958    - If our previous bandwidth estimate was 0 bytes, allow publishing a
20959      new relay descriptor immediately. Fixes bug 13000; bugfix
20960      on 0.1.1.6-alpha.
20961
20962  o Minor bugfixes (testing networks):
20963    - Fix TestingDirAuthVoteGuard to properly give out Guard flags in a
20964      testing network. Fixes bug 13064; bugfix on 0.2.5.2-alpha.
20965    - Stop using the default authorities in networks which provide both
20966      AlternateDirAuthority and AlternateBridgeAuthority. Partially
20967      fixes bug 13163; bugfix on 0.2.0.13-alpha.
20968
20969  o Minor bugfixes (testing):
20970    - Stop spawn test failures due to a race condition between the
20971      SIGCHLD handler updating the process status, and the test reading
20972      it. Fixes bug 13291; bugfix on 0.2.3.3-alpha.
20973
20974  o Minor bugfixes (testing, Windows):
20975    - Avoid passing an extra backslash when creating a temporary
20976      directory for running the unit tests on Windows. Fixes bug 12392;
20977      bugfix on 0.2.2.25-alpha. Patch from Gisle Vanem.
20978
20979  o Minor bugfixes (windows):
20980    - Remove code to special-case handling of NTE_BAD_KEYSET when
20981      acquiring windows CryptoAPI context. This error can't actually
20982      occur for the parameters we're providing. Fixes bug 10816; bugfix
20983      on 0.0.2pre26.
20984
20985  o Minor bugfixes (zlib):
20986    - Avoid truncating a zlib stream when trying to finalize it with an
20987      empty output buffer. Fixes bug 11824; bugfix on 0.1.1.23.
20988
20989  o Build fixes:
20990    - Allow our configure script to build correctly with autoconf 2.62
20991      again. Fixes bug 12693; bugfix on 0.2.5.2-alpha.
20992    - Improve the error message from ./configure to make it clear that
20993      when asciidoc has not been found, the user will have to either add
20994      --disable-asciidoc argument or install asciidoc. Resolves
20995      ticket 13228.
20996
20997  o Code simplification and refactoring:
20998    - Change the entry_is_live() function to take named bitfield
20999      elements instead of an unnamed list of booleans. Closes
21000      ticket 12202.
21001    - Refactor and unit-test entry_is_time_to_retry() in entrynodes.c.
21002      Resolves ticket 12205.
21003    - Use calloc and reallocarray functions instead of multiply-
21004      then-malloc. This makes it less likely for us to fall victim to an
21005      integer overflow attack when allocating. Resolves ticket 12855.
21006    - Use the standard macro name SIZE_MAX, instead of our
21007      own SIZE_T_MAX.
21008    - Document usage of the NO_DIRINFO and ALL_DIRINFO flags clearly in
21009      functions which take them as arguments. Replace 0 with NO_DIRINFO
21010      in a function call for clarity. Seeks to prevent future issues
21011      like 13163.
21012    - Avoid 4 null pointer errors under clang static analysis by using
21013      tor_assert() to prove that the pointers aren't null. Fixes
21014      bug 13284.
21015    - Rework the API of policies_parse_exit_policy() to use a bitmask to
21016      represent parsing options, instead of a confusing mess of
21017      booleans. Resolves ticket 8197.
21018    - Introduce a helper function to parse ExitPolicy in
21019      or_options_t structure.
21020
21021  o Documentation:
21022    - Add a doc/TUNING document with tips for handling large numbers of
21023      TCP connections when running busy Tor relay. Update the warning
21024      message to point to this file when running out of sockets
21025      operating system is allowing to use simultaneously. Resolves
21026      ticket 9708.
21027
21028  o Removed features:
21029    - We no longer remind the user about configuration options that have
21030      been obsolete since 0.2.3.x or earlier. Patch by Adrien Bak.
21031    - Remove our old, non-weighted bandwidth-based node selection code.
21032      Previously, we used it as a fallback when we couldn't perform
21033      weighted bandwidth-based node selection. But that would only
21034      happen in the cases where we had no consensus, or when we had a
21035      consensus generated by buggy or ancient directory authorities. In
21036      either case, it's better to use the more modern, better maintained
21037      algorithm, with reasonable defaults for the weights. Closes
21038      ticket 13126.
21039    - Remove the --disable-curve25519 configure option. Relays and
21040      clients now are required to support curve25519 and the
21041      ntor handshake.
21042    - The old "StrictEntryNodes" and "StrictExitNodes" options, which
21043      used to be deprecated synonyms for "StrictNodes", are now marked
21044      obsolete. Resolves ticket 12226.
21045    - Clients don't understand the BadDirectory flag in the consensus
21046      anymore, and ignore it.
21047
21048  o Testing:
21049    - Refactor the function that chooses guard nodes so that it can more
21050      easily be tested; write some tests for it.
21051    - Fix and re-enable the fgets_eagain unit test. Fixes bug 12503;
21052      bugfix on 0.2.3.1-alpha. Patch from "cypherpunks."
21053    - Create unit tests for format_time_interval(). With bug 13393.
21054    - Add unit tests for tor_timegm signed overflow, tor_timegm and
21055      parse_rfc1123_time validity checks, correct_tm year clamping. Unit
21056      tests (visible) fixes in bug 13476.
21057    - Add a "coverage-html" make target to generate HTML-visualized
21058      coverage results when building with --enable-coverage. (Requires
21059      lcov.) Patch from Kevin Murray.
21060    - Enable the backtrace handler (where supported) when running the
21061      unit tests.
21062    - Revise all unit tests that used the legacy test_* macros to
21063      instead use the recommended tt_* macros. This patch was generated
21064      with coccinelle, to avoid manual errors. Closes ticket 13119.
21065
21066  o Distribution (systemd):
21067    - systemd unit file: only allow tor to write to /var/lib/tor and
21068      /var/log/tor. The rest of the filesystem is accessible for reading
21069      only. Patch by intrigeri; resolves ticket 12751.
21070    - systemd unit file: ensure that the process and all its children
21071      can never gain new privileges. Patch by intrigeri; resolves
21072      ticket 12939.
21073    - systemd unit file: set up /var/run/tor as writable for the Tor
21074      service. Patch by intrigeri; resolves ticket 13196.
21075
21076  o Removed features (directory authorities):
21077    - Remove code that prevented authorities from listing Tor relays
21078      affected by CVE-2011-2769 as guards. These relays are already
21079      rejected altogether due to the minimum version requirement of
21080      0.2.3.16-alpha. Closes ticket 13152.
21081    - The "AuthDirRejectUnlisted" option no longer has any effect, as
21082      the fingerprints file (approved-routers) has been deprecated.
21083    - Directory authorities do not support being Naming dirauths anymore.
21084      The "NamingAuthoritativeDir" config option is now obsolete.
21085    - Directory authorities do not support giving out the BadDirectory
21086      flag anymore.
21087    - Directory authorities no longer advertise or support consensus
21088      methods 1 through 12 inclusive. These consensus methods were
21089      obsolete and/or insecure: maintaining the ability to support them
21090      served no good purpose. Implements part of proposal 215; closes
21091      ticket 10163.
21092
21093  o Testing (test-network.sh):
21094    - Stop using "echo -n", as some shells' built-in echo doesn't
21095      support "-n". Instead, use "/bin/echo -n". Partially fixes
21096      bug 13161.
21097    - Stop an apparent test-network hang when used with make -j2. Fixes
21098      bug 13331.
21099    - Add a --delay option to test-network.sh, which configures the
21100      delay before the chutney network tests for data transmission.
21101      Partially implements ticket 13161.
21102
21103
21104Changes in version 0.2.5.10 - 2014-10-24
21105  Tor 0.2.5.10 is the first stable release in the 0.2.5 series.
21106
21107  It adds several new security features, including improved
21108  denial-of-service resistance for relays, new compiler hardening
21109  options, and a system-call sandbox for hardened installations on Linux
21110  (requires seccomp2). The controller protocol has several new features,
21111  resolving IPv6 addresses should work better than before, and relays
21112  should be a little more CPU-efficient. We've added support for more
21113  OpenBSD and FreeBSD transparent proxy types. We've improved the build
21114  system and testing infrastructure to allow unit testing of more parts
21115  of the Tor codebase. Finally, we've addressed several nagging pluggable
21116  transport usability issues, and included numerous other small bugfixes
21117  and features mentioned below.
21118
21119  This release marks end-of-life for Tor 0.2.3.x; those Tor versions
21120  have accumulated many known flaws; everyone should upgrade.
21121
21122  o Deprecated versions:
21123    - Tor 0.2.3.x has reached end-of-life; it has received no patches or
21124      attention for some while.
21125
21126
21127Changes in version 0.2.5.9-rc - 2014-10-20
21128  Tor 0.2.5.9-rc is the third release candidate for the Tor 0.2.5.x
21129  series. It disables SSL3 in response to the recent "POODLE" attack
21130  (even though POODLE does not affect Tor). It also works around a crash
21131  bug caused by some operating systems' response to the "POODLE" attack
21132  (which does affect Tor). It also contains a few miscellaneous fixes.
21133
21134  o Major security fixes:
21135    - Disable support for SSLv3. All versions of OpenSSL in use with Tor
21136      today support TLS 1.0 or later, so we can safely turn off support
21137      for this old (and insecure) protocol. Fixes bug 13426.
21138
21139  o Major bugfixes (openssl bug workaround):
21140    - Avoid crashing when using OpenSSL version 0.9.8zc, 1.0.0o, or
21141      1.0.1j, built with the 'no-ssl3' configuration option. Fixes bug
21142      13471. This is a workaround for an OpenSSL bug.
21143
21144  o Minor bugfixes:
21145    - Disable the sandbox name resolver cache when running tor-resolve:
21146      tor-resolve doesn't use the sandbox code, and turning it on was
21147      breaking attempts to do tor-resolve on a non-default server on
21148      Linux. Fixes bug 13295; bugfix on 0.2.5.3-alpha.
21149
21150  o Compilation fixes:
21151    - Build and run correctly on systems like OpenBSD-current that have
21152      patched OpenSSL to remove get_cipher_by_char and/or its
21153      implementations. Fixes issue 13325.
21154
21155  o Downgraded warnings:
21156    - Downgrade the severity of the 'unexpected sendme cell from client'
21157      from 'warn' to 'protocol warning'. Closes ticket 8093.
21158
21159
21160Changes in version 0.2.4.25 - 2014-10-20
21161  Tor 0.2.4.25 disables SSL3 in response to the recent "POODLE" attack
21162  (even though POODLE does not affect Tor). It also works around a crash
21163  bug caused by some operating systems' response to the "POODLE" attack
21164  (which does affect Tor).
21165
21166  o Major security fixes (also in 0.2.5.9-rc):
21167    - Disable support for SSLv3. All versions of OpenSSL in use with Tor
21168      today support TLS 1.0 or later, so we can safely turn off support
21169      for this old (and insecure) protocol. Fixes bug 13426.
21170
21171  o Major bugfixes (openssl bug workaround, also in 0.2.5.9-rc):
21172    - Avoid crashing when using OpenSSL version 0.9.8zc, 1.0.0o, or
21173      1.0.1j, built with the 'no-ssl3' configuration option. Fixes bug
21174      13471. This is a workaround for an OpenSSL bug.
21175
21176
21177Changes in version 0.2.5.8-rc - 2014-09-22
21178  Tor 0.2.5.8-rc is the second release candidate for the Tor 0.2.5.x
21179  series. It fixes a bug that affects consistency and speed when
21180  connecting to hidden services, and it updates the location of one of
21181  the directory authorities.
21182
21183  o Major bugfixes:
21184    - Clients now send the correct address for their chosen rendezvous
21185      point when trying to access a hidden service. They used to send
21186      the wrong address, which would still work some of the time because
21187      they also sent the identity digest of the rendezvous point, and if
21188      the hidden service happened to try connecting to the rendezvous
21189      point from a relay that already had a connection open to it,
21190      the relay would reuse that connection. Now connections to hidden
21191      services should be more robust and faster. Also, this bug meant
21192      that clients were leaking to the hidden service whether they were
21193      on a little-endian (common) or big-endian (rare) system, which for
21194      some users might have reduced their anonymity. Fixes bug 13151;
21195      bugfix on 0.2.1.5-alpha.
21196
21197  o Directory authority changes:
21198    - Change IP address for gabelmoo (v3 directory authority).
21199
21200
21201Changes in version 0.2.4.24 - 2014-09-22
21202  Tor 0.2.4.24 fixes a bug that affects consistency and speed when
21203  connecting to hidden services, and it updates the location of one of
21204  the directory authorities.
21205
21206  o Major bugfixes:
21207    - Clients now send the correct address for their chosen rendezvous
21208      point when trying to access a hidden service. They used to send
21209      the wrong address, which would still work some of the time because
21210      they also sent the identity digest of the rendezvous point, and if
21211      the hidden service happened to try connecting to the rendezvous
21212      point from a relay that already had a connection open to it,
21213      the relay would reuse that connection. Now connections to hidden
21214      services should be more robust and faster. Also, this bug meant
21215      that clients were leaking to the hidden service whether they were
21216      on a little-endian (common) or big-endian (rare) system, which for
21217      some users might have reduced their anonymity. Fixes bug 13151;
21218      bugfix on 0.2.1.5-alpha.
21219
21220  o Directory authority changes:
21221    - Change IP address for gabelmoo (v3 directory authority).
21222
21223  o Minor features (geoip):
21224    - Update geoip and geoip6 to the August 7 2014 Maxmind GeoLite2
21225      Country database.
21226
21227
21228Changes in version 0.2.5.7-rc - 2014-09-11
21229  Tor 0.2.5.7-rc fixes several regressions from earlier in the 0.2.5.x
21230  release series, and some long-standing bugs related to ORPort reachability
21231  testing and failure to send CREATE cells. It is the first release
21232  candidate for the Tor 0.2.5.x series.
21233
21234  o Major bugfixes (client, startup):
21235    - Start making circuits as soon as DisabledNetwork is turned off.
21236      When Tor started with DisabledNetwork set, it would correctly
21237      conclude that it shouldn't build circuits, but it would mistakenly
21238      cache this conclusion, and continue believing it even when
21239      DisableNetwork is set to 0. Fixes the bug introduced by the fix
21240      for bug 11200; bugfix on 0.2.5.4-alpha.
21241    - Resume expanding abbreviations for command-line options. The fix
21242      for bug 4647 accidentally removed our hack from bug 586 that
21243      rewrote HashedControlPassword to __HashedControlSessionPassword
21244      when it appears on the commandline (which allowed the user to set
21245      her own HashedControlPassword in the torrc file while the
21246      controller generates a fresh session password for each run). Fixes
21247      bug 12948; bugfix on 0.2.5.1-alpha.
21248    - Warn about attempts to run hidden services and relays in the same
21249      process: that's probably not a good idea. Closes ticket 12908.
21250
21251  o Major bugfixes (relay):
21252    - Avoid queuing or sending destroy cells for circuit ID zero when we
21253      fail to send a CREATE cell. Fixes bug 12848; bugfix on 0.0.8pre1.
21254      Found and fixed by "cypherpunks".
21255    - Fix ORPort reachability detection on relays running behind a
21256      proxy, by correctly updating the "local" mark on the controlling
21257      channel when changing the address of an or_connection_t after the
21258      handshake. Fixes bug 12160; bugfix on 0.2.4.4-alpha.
21259
21260  o Minor features (bridge):
21261    - Add an ExtORPortCookieAuthFileGroupReadable option to make the
21262      cookie file for the ExtORPort g+r by default.
21263
21264  o Minor features (geoip):
21265    - Update geoip and geoip6 to the August 7 2014 Maxmind GeoLite2
21266      Country database.
21267
21268  o Minor bugfixes (logging):
21269    - Reduce the log severity of the "Pluggable transport proxy does not
21270      provide any needed transports and will not be launched." message,
21271      since Tor Browser includes several ClientTransportPlugin lines in
21272      its torrc-defaults file, leading every Tor Browser user who looks
21273      at her logs to see these notices and wonder if they're dangerous.
21274      Resolves bug 13124; bugfix on 0.2.5.3-alpha.
21275    - Downgrade "Unexpected onionskin length after decryption" warning
21276      to a protocol-warn, since there's nothing relay operators can do
21277      about a client that sends them a malformed create cell. Resolves
21278      bug 12996; bugfix on 0.0.6rc1.
21279    - Log more specific warnings when we get an ESTABLISH_RENDEZVOUS
21280      cell on a cannibalized or non-OR circuit. Resolves ticket 12997.
21281    - When logging information about an EXTEND2 or EXTENDED2 cell, log
21282      their names correctly. Fixes part of bug 12700; bugfix
21283      on 0.2.4.8-alpha.
21284    - When logging information about a relay cell whose command we don't
21285      recognize, log its command as an integer. Fixes part of bug 12700;
21286      bugfix on 0.2.1.10-alpha.
21287    - Escape all strings from the directory connection before logging
21288      them. Fixes bug 13071; bugfix on 0.1.1.15. Patch from "teor".
21289
21290  o Minor bugfixes (controller):
21291    - Restore the functionality of CookieAuthFileGroupReadable. Fixes
21292      bug 12864; bugfix on 0.2.5.1-alpha.
21293    - Actually send TRANSPORT_LAUNCHED and HS_DESC events to
21294      controllers. Fixes bug 13085; bugfix on 0.2.5.1-alpha. Patch
21295      by "teor".
21296
21297  o Minor bugfixes (compilation):
21298    - Fix compilation of test.h with MSVC. Patch from Gisle Vanem;
21299      bugfix on 0.2.5.5-alpha.
21300    - Make the nmake make files work again. Fixes bug 13081. Bugfix on
21301      0.2.5.1-alpha. Patch from "NewEraCracker".
21302    - In routerlist_assert_ok(), don't take the address of a
21303      routerinfo's cache_info member unless that routerinfo is non-NULL.
21304      Fixes bug 13096; bugfix on 0.1.1.9-alpha. Patch by "teor".
21305    - Fix a large number of false positive warnings from the clang
21306      analyzer static analysis tool. This should make real warnings
21307      easier for clang analyzer to find. Patch from "teor". Closes
21308      ticket 13036.
21309
21310  o Distribution (systemd):
21311    - Verify configuration file via ExecStartPre in the systemd unit
21312      file. Patch from intrigeri; resolves ticket 12730.
21313    - Explicitly disable RunAsDaemon in the systemd unit file. Our
21314      current systemd unit uses "Type = simple", so systemd does not
21315      expect tor to fork. If the user has "RunAsDaemon 1" in their
21316      torrc, then things won't work as expected. This is e.g. the case
21317      on Debian (and derivatives), since there we pass "--defaults-torrc
21318      /usr/share/tor/tor-service-defaults-torrc" (that contains
21319      "RunAsDaemon 1") by default. Patch by intrigeri; resolves
21320      ticket 12731.
21321
21322  o Documentation:
21323    - Adjust the URLs in the README to refer to the new locations of
21324      several documents on the website. Fixes bug 12830. Patch from
21325      Matt Pagan.
21326    - Document 'reject6' and 'accept6' ExitPolicy entries. Resolves
21327      ticket 12878.
21328
21329
21330Changes in version 0.2.5.6-alpha - 2014-07-28
21331  Tor 0.2.5.6-alpha brings us a big step closer to slowing down the
21332  risk from guard rotation, and fixes a variety of other issues to get
21333  us closer to a release candidate.
21334
21335  o Major features (also in 0.2.4.23):
21336    - Make the number of entry guards configurable via a new
21337      NumEntryGuards consensus parameter, and the number of directory
21338      guards configurable via a new NumDirectoryGuards consensus
21339      parameter. Implements ticket 12688.
21340
21341  o Major bugfixes (also in 0.2.4.23):
21342    - Fix a bug in the bounds-checking in the 32-bit curve25519-donna
21343      implementation that caused incorrect results on 32-bit
21344      implementations when certain malformed inputs were used along with
21345      a small class of private ntor keys. This bug does not currently
21346      appear to allow an attacker to learn private keys or impersonate a
21347      Tor server, but it could provide a means to distinguish 32-bit Tor
21348      implementations from 64-bit Tor implementations. Fixes bug 12694;
21349      bugfix on 0.2.4.8-alpha. Bug found by Robert Ransom; fix from
21350      Adam Langley.
21351
21352  o Major bugfixes:
21353    - Perform circuit cleanup operations even when circuit
21354      construction operations are disabled (because the network is
21355      disabled, or because there isn't enough directory information).
21356      Previously, when we were not building predictive circuits, we
21357      were not closing expired circuits either. Fixes bug 8387; bugfix on
21358      0.1.1.11-alpha. This bug became visible in 0.2.4.10-alpha when we
21359      became more strict about when we have "enough directory information
21360      to build circuits".
21361
21362  o Minor features:
21363    - Authorities now assign the Guard flag to the fastest 25% of the
21364      network (it used to be the fastest 50%). Also raise the consensus
21365      weight that guarantees the Guard flag from 250 to 2000. For the
21366      current network, this results in about 1100 guards, down from 2500.
21367      This step paves the way for moving the number of entry guards
21368      down to 1 (proposal 236) while still providing reasonable expected
21369      performance for most users. Implements ticket 12690.
21370    - Update geoip and geoip6 to the July 10 2014 Maxmind GeoLite2
21371      Country database.
21372    - Slightly enhance the diagnostic message for bug 12184.
21373
21374  o Minor bugfixes (also in 0.2.4.23):
21375    - Warn and drop the circuit if we receive an inbound 'relay early'
21376      cell. Those used to be normal to receive on hidden service circuits
21377      due to bug 1038, but the buggy Tor versions are long gone from
21378      the network so we can afford to resume watching for them. Resolves
21379      the rest of bug 1038; bugfix on 0.2.1.19.
21380    - Correct a confusing error message when trying to extend a circuit
21381      via the control protocol but we don't know a descriptor or
21382      microdescriptor for one of the specified relays. Fixes bug 12718;
21383      bugfix on 0.2.3.1-alpha.
21384
21385  o Minor bugfixes:
21386    - Fix compilation when building with bufferevents enabled. (This
21387      configuration is still not expected to work, however.)
21388      Fixes bugs 12438, 12474, 11578; bugfixes on 0.2.5.1-alpha and
21389      0.2.5.3-alpha. Patches from Anthony G. Basile and Sathyanarayanan
21390      Gunasekaran.
21391    - Compile correctly with builds and forks of OpenSSL (such as
21392      LibreSSL) that disable compression. Fixes bug 12602; bugfix on
21393      0.2.1.1-alpha. Patch from "dhill".
21394
21395
21396Changes in version 0.2.4.23 - 2014-07-28
21397  Tor 0.2.4.23 brings us a big step closer to slowing down the risk from
21398  guard rotation, and also backports several important fixes from the
21399  Tor 0.2.5 alpha release series.
21400
21401  o Major features:
21402    - Clients now look at the "usecreatefast" consensus parameter to
21403      decide whether to use CREATE_FAST or CREATE cells for the first hop
21404      of their circuit. This approach can improve security on connections
21405      where Tor's circuit handshake is stronger than the available TLS
21406      connection security levels, but the tradeoff is more computational
21407      load on guard relays. Implements proposal 221. Resolves ticket 9386.
21408    - Make the number of entry guards configurable via a new
21409      NumEntryGuards consensus parameter, and the number of directory
21410      guards configurable via a new NumDirectoryGuards consensus
21411      parameter. Implements ticket 12688.
21412
21413  o Major bugfixes:
21414    - Fix a bug in the bounds-checking in the 32-bit curve25519-donna
21415      implementation that caused incorrect results on 32-bit
21416      implementations when certain malformed inputs were used along with
21417      a small class of private ntor keys. This bug does not currently
21418      appear to allow an attacker to learn private keys or impersonate a
21419      Tor server, but it could provide a means to distinguish 32-bit Tor
21420      implementations from 64-bit Tor implementations. Fixes bug 12694;
21421      bugfix on 0.2.4.8-alpha. Bug found by Robert Ransom; fix from
21422      Adam Langley.
21423
21424  o Minor bugfixes:
21425    - Warn and drop the circuit if we receive an inbound 'relay early'
21426      cell. Those used to be normal to receive on hidden service circuits
21427      due to bug 1038, but the buggy Tor versions are long gone from
21428      the network so we can afford to resume watching for them. Resolves
21429      the rest of bug 1038; bugfix on 0.2.1.19.
21430    - Correct a confusing error message when trying to extend a circuit
21431      via the control protocol but we don't know a descriptor or
21432      microdescriptor for one of the specified relays. Fixes bug 12718;
21433      bugfix on 0.2.3.1-alpha.
21434    - Avoid an illegal read from stack when initializing the TLS
21435      module using a version of OpenSSL without all of the ciphers
21436      used by the v2 link handshake. Fixes bug 12227; bugfix on
21437      0.2.4.8-alpha.  Found by "starlight".
21438
21439  o Minor features:
21440    - Update geoip and geoip6 to the July 10 2014 Maxmind GeoLite2
21441      Country database.
21442
21443
21444Changes in version 0.2.5.5-alpha - 2014-06-18
21445  Tor 0.2.5.5-alpha fixes a wide variety of remaining issues in the Tor
21446  0.2.5.x release series, including a couple of DoS issues, some
21447  performance regressions, a large number of bugs affecting the Linux
21448  seccomp2 sandbox code, and various other bugfixes. It also adds
21449  diagnostic bugfixes for a few tricky issues that we're trying to
21450  track down.
21451
21452  o Major features (security, traffic analysis resistance):
21453    - Several major improvements to the algorithm used to decide when to
21454      close TLS connections. Previous versions of Tor closed connections
21455      at a fixed interval after the last time a non-padding cell was
21456      sent over the connection, regardless of the target of the
21457      connection. Now, we randomize the intervals by adding up to 50% of
21458      their base value, we measure the length of time since connection
21459      last had at least one circuit, and we allow connections to known
21460      ORs to remain open a little longer (15 minutes instead of 3
21461      minutes minimum). These changes should improve Tor's resistance
21462      against some kinds of traffic analysis, and lower some overhead
21463      from needlessly closed connections. Fixes ticket 6799.
21464      Incidentally fixes ticket 12023; bugfix on 0.2.5.1-alpha.
21465
21466  o Major bugfixes (security, OOM, new since 0.2.5.4-alpha, also in 0.2.4.22):
21467    - Fix a memory leak that could occur if a microdescriptor parse
21468      fails during the tokenizing step. This bug could enable a memory
21469      exhaustion attack by directory servers. Fixes bug 11649; bugfix
21470      on 0.2.2.6-alpha.
21471
21472  o Major bugfixes (security, directory authorities):
21473    - Directory authorities now include a digest of each relay's
21474      identity key as a part of its microdescriptor.
21475
21476      This is a workaround for bug 11743 (reported by "cypherpunks"),
21477      where Tor clients do not support receiving multiple
21478      microdescriptors with the same SHA256 digest in the same
21479      consensus. When clients receive a consensus like this, they only
21480      use one of the relays. Without this fix, a hostile relay could
21481      selectively disable some client use of target relays by
21482      constructing a router descriptor with a different identity and the
21483      same microdescriptor parameters and getting the authorities to
21484      list it in a microdescriptor consensus. This fix prevents an
21485      attacker from causing a microdescriptor collision, because the
21486      router's identity is not forgeable.
21487
21488  o Major bugfixes (relay):
21489    - Use a direct dirport connection when uploading non-anonymous
21490      descriptors to the directory authorities. Previously, relays would
21491      incorrectly use tunnel connections under a fairly wide variety of
21492      circumstances. Fixes bug 11469; bugfix on 0.2.4.3-alpha.
21493    - When a circuit accidentally has the same circuit ID for its
21494      forward and reverse direction, correctly detect the direction of
21495      cells using that circuit. Previously, this bug made roughly one
21496      circuit in a million non-functional. Fixes bug 12195; this is a
21497      bugfix on every version of Tor.
21498
21499  o Major bugfixes (client, pluggable transports):
21500    - When managing pluggable transports, use OS notification facilities
21501      to learn if they have crashed, and don't attempt to kill any
21502      process that has already exited. Fixes bug 8746; bugfix
21503      on 0.2.3.6-alpha.
21504
21505  o Minor features (diagnostic):
21506    - When logging a warning because of bug 7164, additionally check the
21507      hash table for consistency (as proposed on ticket 11737). This may
21508      help diagnose bug 7164.
21509    - When we log a heartbeat, log how many one-hop circuits we have
21510      that are at least 30 minutes old, and log status information about
21511      a few of them. This is an attempt to track down bug 8387.
21512    - When encountering an unexpected CR while writing text to a file on
21513      Windows, log the name of the file. Should help diagnosing
21514      bug 11233.
21515    - Give more specific warnings when a client notices that an onion
21516      handshake has failed. Fixes ticket 9635.
21517    - Add significant new logging code to attempt to diagnose bug 12184,
21518      where relays seem to run out of available circuit IDs.
21519    - Improve the diagnostic log message for bug 8387 even further to
21520      try to improve our odds of figuring out why one-hop directory
21521      circuits sometimes do not get closed.
21522
21523  o Minor features (security, memory management):
21524    - Memory allocation tricks (mempools and buffer freelists) are now
21525      disabled by default. You can turn them back on with
21526      --enable-mempools and --enable-buf-freelists respectively. We're
21527      disabling these features because malloc performance is good enough
21528      on most platforms, and a similar feature in OpenSSL exacerbated
21529      exploitation of the Heartbleed attack. Resolves ticket 11476.
21530
21531  o Minor features (security):
21532    - Apply the secure SipHash-2-4 function to the hash table mapping
21533      circuit IDs and channels to circuits. We missed this one when we
21534      were converting all the other hash functions to use SipHash back
21535      in 0.2.5.3-alpha. Resolves ticket 11750.
21536
21537  o Minor features (build):
21538    - The configure script has a --disable-seccomp option to turn off
21539      support for libseccomp on systems that have it, in case it (or
21540      Tor's use of it) is broken. Resolves ticket 11628.
21541
21542  o Minor features (other):
21543    - Update geoip and geoip6 to the June 4 2014 Maxmind GeoLite2
21544      Country database.
21545
21546  o Minor bugfixes (security, new since 0.2.5.4-alpha, also in 0.2.4.22):
21547    - When running a hidden service, do not allow TunneledDirConns 0;
21548      this will keep the hidden service from running, and also
21549      make it publish its descriptors directly over HTTP. Fixes bug 10849;
21550      bugfix on 0.2.1.1-alpha.
21551
21552  o Minor bugfixes (performance):
21553    - Avoid a bug where every successful connection made us recompute
21554      the flag telling us whether we have sufficient information to
21555      build circuits. Previously, we would forget our cached value
21556      whenever we successfully opened a channel (or marked a router as
21557      running or not running for any other reason), regardless of
21558      whether we had previously believed the router to be running. This
21559      forced us to run an expensive update operation far too often.
21560      Fixes bug 12170; bugfix on 0.1.2.1-alpha.
21561    - Avoid using tor_memeq() for checking relay cell integrity. This
21562      removes a possible performance bottleneck. Fixes part of bug
21563      12169; bugfix on 0.2.1.31.
21564
21565  o Minor bugfixes (compilation):
21566    - Fix compilation of test_status.c when building with MVSC. Bugfix
21567      on 0.2.5.4-alpha. Patch from Gisle Vanem.
21568    - Resolve GCC complaints on OpenBSD about discarding constness in
21569      TO_{ORIGIN,OR}_CIRCUIT functions. Fixes part of bug 11633; bugfix
21570      on 0.1.1.23. Patch from Dana Koch.
21571    - Resolve clang complaints on OpenBSD with -Wshorten-64-to-32 due to
21572      treatment of long and time_t as comparable types. Fixes part of
21573      bug 11633. Patch from Dana Koch.
21574    - Make Tor compile correctly with --disable-buf-freelists. Fixes bug
21575      11623; bugfix on 0.2.5.3-alpha.
21576    - When deciding whether to build the 64-bit curve25519
21577      implementation, detect platforms where we can compile 128-bit
21578      arithmetic but cannot link it. Fixes bug 11729; bugfix on
21579      0.2.4.8-alpha. Patch from "conradev".
21580    - Fix compilation when DNS_CACHE_DEBUG is enabled. Fixes bug 11761;
21581      bugfix on 0.2.3.13-alpha. Found by "cypherpunks".
21582    - Fix compilation with dmalloc. Fixes bug 11605; bugfix
21583      on 0.2.4.10-alpha.
21584
21585  o Minor bugfixes (Directory server):
21586    - When sending a compressed set of descriptors or microdescriptors,
21587      make sure to finalize the zlib stream. Previously, we would write
21588      all the compressed data, but if the last descriptor we wanted to
21589      send was missing or too old, we would not mark the stream as
21590      finished. This caused problems for decompression tools. Fixes bug
21591      11648; bugfix on 0.1.1.23.
21592
21593  o Minor bugfixes (Linux seccomp sandbox):
21594    - Make the seccomp sandbox code compile under ARM Linux. Fixes bug
21595      11622; bugfix on 0.2.5.1-alpha.
21596    - Avoid crashing when re-opening listener ports with the seccomp
21597      sandbox active. Fixes bug 12115; bugfix on 0.2.5.1-alpha.
21598    - Avoid crashing with the seccomp sandbox enabled along with
21599      ConstrainedSockets. Fixes bug 12139; bugfix on 0.2.5.1-alpha.
21600    - When we receive a SIGHUP with the sandbox enabled, correctly
21601      support rotating our log files. Fixes bug 12032; bugfix
21602      on 0.2.5.1-alpha.
21603    - Avoid crash when running with sandboxing enabled and
21604      DirReqStatistics not disabled. Fixes bug 12035; bugfix
21605      on 0.2.5.1-alpha.
21606    - Fix a "BUG" warning when trying to write bridge-stats files with
21607      the Linux syscall sandbox filter enabled. Fixes bug 12041; bugfix
21608      on 0.2.5.1-alpha.
21609    - Prevent the sandbox from crashing on startup when run with the
21610      --enable-expensive-hardening configuration option. Fixes bug
21611      11477; bugfix on 0.2.5.4-alpha.
21612    - When running with DirPortFrontPage and sandboxing both enabled,
21613      reload the DirPortFrontPage correctly when restarting. Fixes bug
21614      12028; bugfix on 0.2.5.1-alpha.
21615    - Don't try to enable the sandbox when using the Tor binary to check
21616      its configuration, hash a passphrase, or so on. Doing so was
21617      crashing on startup for some users. Fixes bug 11609; bugfix
21618      on 0.2.5.1-alpha.
21619    - Avoid warnings when running with sandboxing and node statistics
21620      enabled at the same time. Fixes part of 12064; bugfix on
21621      0.2.5.1-alpha. Patch from Michael Wolf.
21622    - Avoid warnings when running with sandboxing enabled at the same
21623      time as cookie authentication, hidden services, or directory
21624      authority voting. Fixes part of 12064; bugfix on 0.2.5.1-alpha.
21625    - Do not allow options that require calls to exec to be enabled
21626      alongside the seccomp2 sandbox: they will inevitably crash. Fixes
21627      bug 12043; bugfix on 0.2.5.1-alpha.
21628    - Handle failures in getpwnam()/getpwuid() when running with the
21629      User option set and the Linux syscall sandbox enabled. Fixes bug
21630      11946; bugfix on 0.2.5.1-alpha.
21631    - Refactor the getaddrinfo workaround that the seccomp sandbox uses
21632      to avoid calling getaddrinfo() after installing the sandbox
21633      filters. Previously, it preloaded a cache with the IPv4 address
21634      for our hostname, and nothing else. Now, it loads the cache with
21635      every address that it used to initialize the Tor process. Fixes
21636      bug 11970; bugfix on 0.2.5.1-alpha.
21637
21638  o Minor bugfixes (pluggable transports):
21639    - Enable the ExtORPortCookieAuthFile option, to allow changing the
21640      default location of the authentication token for the extended OR
21641      Port as used by sever-side pluggable transports. We had
21642      implemented this option before, but the code to make it settable
21643      had been omitted. Fixes bug 11635; bugfix on 0.2.5.1-alpha.
21644    - Avoid another 60-second delay when starting Tor in a pluggable-
21645      transport-using configuration when we already have cached
21646      descriptors for our bridges. Fixes bug 11965; bugfix
21647      on 0.2.3.6-alpha.
21648
21649  o Minor bugfixes (client):
21650    - Avoid "Tried to open a socket with DisableNetwork set" warnings
21651      when starting a client with bridges configured and DisableNetwork
21652      set. (Tor launcher starts Tor with DisableNetwork set the first
21653      time it runs.) Fixes bug 10405; bugfix on 0.2.3.9-alpha.
21654
21655  o Minor bugfixes (testing):
21656    - The Python parts of the test scripts now work on Python 3 as well
21657      as Python 2, so systems where '/usr/bin/python' is Python 3 will
21658      no longer have the tests break. Fixes bug 11608; bugfix
21659      on 0.2.5.2-alpha.
21660    - When looking for versions of python that we could run the tests
21661      with, check for "python2.7" and "python3.3"; previously we were
21662      only looking for "python", "python2", and "python3". Patch from
21663      Dana Koch. Fixes bug 11632; bugfix on 0.2.5.2-alpha.
21664    - Fix all valgrind warnings produced by the unit tests. There were
21665      over a thousand memory leak warnings previously, mostly produced
21666      by forgetting to free things in the unit test code. Fixes bug
21667      11618, bugfixes on many versions of Tor.
21668
21669  o Minor bugfixes (tor-fw-helper):
21670    - Give a correct log message when tor-fw-helper fails to launch.
21671      (Previously, we would say something like "tor-fw-helper sent us a
21672      string we could not parse".) Fixes bug 9781; bugfix
21673      on 0.2.4.2-alpha.
21674
21675  o Minor bugfixes (relay, threading):
21676    - Check return code on spawn_func() in cpuworker code, so that we
21677      don't think we've spawned a nonworking cpuworker and write junk to
21678      it forever. Fix related to bug 4345; bugfix on all released Tor
21679      versions. Found by "skruffy".
21680    - Use a pthread_attr to make sure that spawn_func() cannot return an
21681      error while at the same time launching a thread. Fix related to
21682      bug 4345; bugfix on all released Tor versions. Reported
21683      by "cypherpunks".
21684
21685  o Minor bugfixes (relay, oom prevention):
21686    - Correctly detect the total available system memory. We tried to do
21687      this in 0.2.5.4-alpha, but the code was set up to always return an
21688      error value, even on success. Fixes bug 11805; bugfix
21689      on 0.2.5.4-alpha.
21690
21691  o Minor bugfixes (relay, other):
21692    - We now drop CREATE cells for already-existent circuit IDs and for
21693      zero-valued circuit IDs, regardless of other factors that might
21694      otherwise have called for DESTROY cells. Fixes bug 12191; bugfix
21695      on 0.0.8pre1.
21696    - Avoid an illegal read from stack when initializing the TLS module
21697      using a version of OpenSSL without all of the ciphers used by the
21698      v2 link handshake. Fixes bug 12227; bugfix on 0.2.4.8-alpha. Found
21699      by "starlight".
21700    - When rejecting DATA cells for stream_id zero, still count them
21701      against the circuit's deliver window so that we don't fail to send
21702      a SENDME. Fixes bug 11246; bugfix on 0.2.4.10-alpha.
21703
21704  o Minor bugfixes (logging):
21705    - Fix a misformatted log message about delayed directory fetches.
21706      Fixes bug 11654; bugfix on 0.2.5.3-alpha.
21707    - Squelch a spurious LD_BUG message "No origin circuit for
21708      successful SOCKS stream" in certain hidden service failure cases;
21709      fixes bug 10616.
21710
21711  o Distribution:
21712    - Include a tor.service file in contrib/dist for use with systemd.
21713      Some distributions will be able to use this file unmodified;
21714      others will need to tweak it, or write their own. Patch from Jamie
21715      Nguyen; resolves ticket 8368.
21716
21717  o Documentation:
21718    - Clean up several option names in the manpage to match their real
21719      names, add the missing documentation for a couple of testing and
21720      directory authority options, remove the documentation for a
21721      V2-directory fetching option that no longer exists. Resolves
21722      ticket 11634.
21723    - Correct the documentation so that it lists the correct directory
21724      for the stats files. (They are in a subdirectory called "stats",
21725      not "status".)
21726    - In the manpage, move more authority-only options into the
21727      directory authority section so that operators of regular directory
21728      caches don't get confused.
21729
21730  o Package cleanup:
21731    - The contrib directory has been sorted and tidied. Before, it was
21732      an unsorted dumping ground for useful and not-so-useful things.
21733      Now, it is divided based on functionality, and the items which
21734      seemed to be nonfunctional or useless have been removed. Resolves
21735      ticket 8966; based on patches from "rl1987".
21736
21737  o Removed code:
21738    - Remove /tor/dbg-stability.txt URL that was meant to help debug WFU
21739      and MTBF calculations, but that nobody was using. Fixes ticket 11742.
21740    - The TunnelDirConns and PreferTunnelledDirConns options no longer
21741      exist; tunneled directory connections have been available since
21742      0.1.2.5-alpha, and turning them off is not a good idea. This is a
21743      brute-force fix for 10849, where "TunnelDirConns 0" would break
21744      hidden services.
21745
21746
21747Changes in version 0.2.4.22 - 2014-05-16
21748  Tor 0.2.4.22 backports numerous high-priority fixes from the Tor 0.2.5
21749  alpha release series. These include blocking all authority signing
21750  keys that may have been affected by the OpenSSL "heartbleed" bug,
21751  choosing a far more secure set of TLS ciphersuites by default, closing
21752  a couple of memory leaks that could be used to run a target relay out
21753  of RAM, and several others.
21754
21755  o Major features (security, backport from 0.2.5.4-alpha):
21756    - Block authority signing keys that were used on authorities
21757      vulnerable to the "heartbleed" bug in OpenSSL (CVE-2014-0160). (We
21758      don't have any evidence that these keys _were_ compromised; we're
21759      doing this to be prudent.) Resolves ticket 11464.
21760
21761  o Major bugfixes (security, OOM):
21762    - Fix a memory leak that could occur if a microdescriptor parse
21763      fails during the tokenizing step. This bug could enable a memory
21764      exhaustion attack by directory servers. Fixes bug 11649; bugfix
21765      on 0.2.2.6-alpha.
21766
21767  o Major bugfixes (TLS cipher selection, backport from 0.2.5.4-alpha):
21768    - The relay ciphersuite list is now generated automatically based on
21769      uniform criteria, and includes all OpenSSL ciphersuites with
21770      acceptable strength and forward secrecy. Previously, we had left
21771      some perfectly fine ciphersuites unsupported due to omission or
21772      typo. Resolves bugs 11513, 11492, 11498, 11499. Bugs reported by
21773      'cypherpunks'. Bugfix on 0.2.4.8-alpha.
21774    - Relays now trust themselves to have a better view than clients of
21775      which TLS ciphersuites are better than others. (Thanks to bug
21776      11513, the relay list is now well-considered, whereas the client
21777      list has been chosen mainly for anti-fingerprinting purposes.)
21778      Relays prefer: AES over 3DES; then ECDHE over DHE; then GCM over
21779      CBC; then SHA384 over SHA256 over SHA1; and last, AES256 over
21780      AES128. Resolves ticket 11528.
21781    - Clients now try to advertise the same list of ciphersuites as
21782      Firefox 28. This change enables selection of (fast) GCM
21783      ciphersuites, disables some strange old ciphers, and stops
21784      advertising the ECDH (not to be confused with ECDHE) ciphersuites.
21785      Resolves ticket 11438.
21786
21787  o Minor bugfixes (configuration, security):
21788    - When running a hidden service, do not allow TunneledDirConns 0:
21789      trying to set that option together with a hidden service would
21790      otherwise prevent the hidden service from running, and also make
21791      it publish its descriptors directly over HTTP. Fixes bug 10849;
21792      bugfix on 0.2.1.1-alpha.
21793
21794  o Minor bugfixes (controller, backport from 0.2.5.4-alpha):
21795    - Avoid sending a garbage value to the controller when a circuit is
21796      cannibalized. Fixes bug 11519; bugfix on 0.2.3.11-alpha.
21797
21798  o Minor bugfixes (exit relay, backport from 0.2.5.4-alpha):
21799    - Stop leaking memory when we successfully resolve a PTR record.
21800      Fixes bug 11437; bugfix on 0.2.4.7-alpha.
21801
21802  o Minor bugfixes (bridge client, backport from 0.2.5.4-alpha):
21803    - Avoid 60-second delays in the bootstrapping process when Tor is
21804      launching for a second time while using bridges. Fixes bug 9229;
21805      bugfix on 0.2.0.3-alpha.
21806
21807  o Minor bugfixes (relays and bridges, backport from 0.2.5.4-alpha):
21808    - Give the correct URL in the warning message when trying to run a
21809      relay on an ancient version of Windows. Fixes bug 9393.
21810
21811  o Minor bugfixes (compilation):
21812    - Fix a compilation error when compiling with --disable-curve25519.
21813      Fixes bug 9700; bugfix on 0.2.4.17-rc.
21814
21815  o Minor bugfixes:
21816    - Downgrade the warning severity for the the "md was still
21817      referenced 1 node(s)" warning. Tor 0.2.5.4-alpha has better code
21818      for trying to diagnose this bug, and the current warning in
21819      earlier versions of tor achieves nothing useful. Addresses warning
21820      from bug 7164.
21821
21822  o Minor features (log verbosity, backport from 0.2.5.4-alpha):
21823    - When we run out of usable circuit IDs on a channel, log only one
21824      warning for the whole channel, and describe how many circuits
21825      there were on the channel. Fixes part of ticket 11553.
21826
21827  o Minor features (security, backport from 0.2.5.4-alpha):
21828    - Decrease the lower limit of MaxMemInCellQueues to 256 MBytes (but
21829      leave the default at 8GBytes), to better support Raspberry Pi
21830      users. Fixes bug 9686; bugfix on 0.2.4.14-alpha.
21831
21832  o Documentation (backport from 0.2.5.4-alpha):
21833    - Correctly document that we search for a system torrc file before
21834      looking in ~/.torrc. Fixes documentation side of 9213; bugfix on
21835      0.2.3.18-rc.
21836
21837
21838Changes in version 0.2.5.4-alpha - 2014-04-25
21839  Tor 0.2.5.4-alpha includes several security and performance
21840  improvements for clients and relays, including blacklisting authority
21841  signing keys that were used while susceptible to the OpenSSL
21842  "heartbleed" bug, fixing two expensive functions on busy relays,
21843  improved TLS ciphersuite preference lists, support for run-time
21844  hardening on compilers that support AddressSanitizer, and more work on
21845  the Linux sandbox code.
21846
21847  There are also several usability fixes for clients (especially clients
21848  that use bridges), two new TransPort protocols supported (one on
21849  OpenBSD, one on FreeBSD), and various other bugfixes.
21850
21851  This release marks end-of-life for Tor 0.2.2.x; those Tor versions
21852  have accumulated many known flaws; everyone should upgrade.
21853
21854  o Major features (security):
21855    - If you don't specify MaxMemInQueues yourself, Tor now tries to
21856      pick a good value based on your total system memory. Previously,
21857      the default was always 8 GB. You can still override the default by
21858      setting MaxMemInQueues yourself. Resolves ticket 11396.
21859    - Block authority signing keys that were used on authorities
21860      vulnerable to the "heartbleed" bug in OpenSSL (CVE-2014-0160). (We
21861      don't have any evidence that these keys _were_ compromised; we're
21862      doing this to be prudent.) Resolves ticket 11464.
21863
21864  o Major features (relay performance):
21865    - Speed up server-side lookups of rendezvous and introduction point
21866      circuits by using hashtables instead of linear searches. These
21867      functions previously accounted between 3 and 7% of CPU usage on
21868      some busy relays. Resolves ticket 9841.
21869    - Avoid wasting CPU when extending a circuit over a channel that is
21870      nearly out of circuit IDs. Previously, we would do a linear scan
21871      over possible circuit IDs before finding one or deciding that we
21872      had exhausted our possibilities. Now, we try at most 64 random
21873      circuit IDs before deciding that we probably won't succeed. Fixes
21874      a possible root cause of ticket 11553.
21875
21876  o Major features (seccomp2 sandbox, Linux only):
21877    - The seccomp2 sandbox can now run a test network for multiple hours
21878      without crashing. The sandbox is still experimental, and more bugs
21879      will probably turn up. To try it, enable "Sandbox 1" on a Linux
21880      host. Resolves ticket 11351.
21881    - Strengthen sandbox code: the sandbox can now test the arguments
21882      for rename(), and blocks _sysctl() entirely. Resolves another part
21883      of ticket 11351.
21884    - When the sandbox blocks a system call, it now tries to log a stack
21885      trace before exiting. Resolves ticket 11465.
21886
21887  o Major bugfixes (TLS cipher selection):
21888    - The relay ciphersuite list is now generated automatically based on
21889      uniform criteria, and includes all OpenSSL ciphersuites with
21890      acceptable strength and forward secrecy. Previously, we had left
21891      some perfectly fine ciphersuites unsupported due to omission or
21892      typo. Resolves bugs 11513, 11492, 11498, 11499. Bugs reported by
21893      'cypherpunks'. Bugfix on 0.2.4.8-alpha.
21894    - Relays now trust themselves to have a better view than clients of
21895      which TLS ciphersuites are better than others. (Thanks to bug
21896      11513, the relay list is now well-considered, whereas the client
21897      list has been chosen mainly for anti-fingerprinting purposes.)
21898      Relays prefer: AES over 3DES; then ECDHE over DHE; then GCM over
21899      CBC; then SHA384 over SHA256 over SHA1; and last, AES256 over
21900      AES128. Resolves ticket 11528.
21901    - Clients now try to advertise the same list of ciphersuites as
21902      Firefox 28. This change enables selection of (fast) GCM
21903      ciphersuites, disables some strange old ciphers, and stops
21904      advertising the ECDH (not to be confused with ECDHE) ciphersuites.
21905      Resolves ticket 11438.
21906
21907  o Major bugfixes (bridge client):
21908    - Avoid 60-second delays in the bootstrapping process when Tor is
21909      launching for a second time while using bridges. Fixes bug 9229;
21910      bugfix on 0.2.0.3-alpha.
21911
21912  o Minor features (transparent proxy, *BSD):
21913    - Support FreeBSD's ipfw firewall interface for TransPort ports on
21914      FreeBSD. To enable it, set "TransProxyType ipfw". Resolves ticket
21915      10267; patch from "yurivict".
21916    - Support OpenBSD's divert-to rules with the pf firewall for
21917      transparent proxy ports. To enable it, set "TransProxyType
21918      pf-divert". This allows Tor to run a TransPort transparent proxy
21919      port on OpenBSD 4.4 or later without root privileges. See the
21920      pf.conf(5) manual page for information on configuring pf to use
21921      divert-to rules. Closes ticket 10896; patch from Dana Koch.
21922
21923  o Minor features (security):
21924    - New --enable-expensive-hardening option to enable security
21925      hardening options that consume nontrivial amounts of CPU and
21926      memory. Right now, this includes AddressSanitizer and UbSan, which
21927      are supported in newer versions of GCC and Clang. Closes ticket
21928      11477.
21929
21930  o Minor features (log verbosity):
21931    - Demote the message that we give when a flushing connection times
21932      out for too long from NOTICE to INFO. It was usually meaningless.
21933      Resolves ticket 5286.
21934    - Don't log so many notice-level bootstrapping messages at startup
21935      about downloading descriptors. Previously, we'd log a notice
21936      whenever we learned about more routers. Now, we only log a notice
21937      at every 5% of progress. Fixes bug 9963.
21938    - Warn less verbosely when receiving a malformed
21939      ESTABLISH_RENDEZVOUS cell. Fixes ticket 11279.
21940    - When we run out of usable circuit IDs on a channel, log only one
21941      warning for the whole channel, and describe how many circuits
21942      there were on the channel. Fixes part of ticket 11553.
21943
21944  o Minor features (relay):
21945    - If a circuit timed out for at least 3 minutes, check if we have a
21946      new external IP address, and publish a new descriptor with the new
21947      IP address if it changed. Resolves ticket 2454.
21948
21949  o Minor features (controller):
21950    - Make the entire exit policy available from the control port via
21951      GETINFO exit-policy/*. Implements enhancement 7952. Patch from
21952      "rl1987".
21953    - Because of the fix for ticket 11396, the real limit for memory
21954      usage may no longer match the configured MaxMemInQueues value. The
21955      real limit is now exposed via GETINFO limits/max-mem-in-queues.
21956
21957  o Minor features (bridge client):
21958    - Report a more useful failure message when we can't connect to a
21959      bridge because we don't have the right pluggable transport
21960      configured. Resolves ticket 9665. Patch from Fábio J. Bertinatto.
21961
21962  o Minor features (diagnostic):
21963    - Add more log messages to diagnose bug 7164, which causes
21964      intermittent "microdesc_free() called but md was still referenced"
21965      warnings. We now include more information, to figure out why we
21966      might be cleaning a microdescriptor for being too old if it's
21967      still referenced by a live node_t object.
21968
21969  o Minor bugfixes (client, DNSPort):
21970    - When using DNSPort, try to respond to AAAA requests with AAAA
21971      answers. Previously, we hadn't looked at the request type when
21972      deciding which answer type to prefer. Fixes bug 10468; bugfix on
21973      0.2.4.7-alpha.
21974    - When receiving a DNS query for an unsupported record type, reply
21975      with no answer rather than with a NOTIMPL error. This behavior
21976      isn't correct either, but it will break fewer client programs, we
21977      hope. Fixes bug 10268; bugfix on 0.2.0.1-alpha. Original patch
21978      from "epoch".
21979
21980  o Minor bugfixes (exit relay):
21981    - Stop leaking memory when we successfully resolve a PTR record.
21982      Fixes bug 11437; bugfix on 0.2.4.7-alpha.
21983
21984  o Minor bugfixes (bridge client):
21985    - Stop accepting bridge lines containing hostnames. Doing so would
21986      cause clients to perform DNS requests on the hostnames, which was
21987      not sensible behavior. Fixes bug 10801; bugfix on 0.2.0.1-alpha.
21988    - Avoid a 60-second delay in the bootstrapping process when a Tor
21989      client with pluggable transports re-reads its configuration at
21990      just the wrong time. Re-fixes bug 11156; bugfix on 0.2.5.3-alpha.
21991
21992  o Minor bugfixes (client, logging during bootstrap):
21993    - Warn only once if we start logging in an unsafe way. Previously,
21994      we complain as many times as we had problems. Fixes bug 9870;
21995      bugfix on 0.2.5.1-alpha.
21996    - Only report the first fatal bootstrap error on a given OR
21997      connection. This stops us from telling the controller bogus error
21998      messages like "DONE". Fixes bug 10431; bugfix on 0.2.1.1-alpha.
21999    - Be more helpful when trying to run sandboxed on Linux without
22000      libseccomp. Instead of saying "Sandbox is not implemented on this
22001      platform", we now explain that we need to be built with
22002      libseccomp. Fixes bug 11543; bugfix on 0.2.5.1-alpha.
22003    - Avoid generating spurious warnings when starting with
22004      DisableNetwork enabled. Fixes bug 11200 and bug 10405; bugfix on
22005      0.2.3.9-alpha.
22006
22007  o Minor bugfixes (closing OR connections):
22008    - If write_to_buf() in connection_write_to_buf_impl_() ever fails,
22009      check if it's an or_connection_t and correctly call
22010      connection_or_close_for_error() rather than
22011      connection_mark_for_close() directly. Fixes bug 11304; bugfix on
22012      0.2.4.4-alpha.
22013    - When closing all connections on setting DisableNetwork to 1, use
22014      connection_or_close_normally() rather than closing OR connections
22015      out from under the channel layer. Fixes bug 11306; bugfix on
22016      0.2.4.4-alpha.
22017
22018  o Minor bugfixes (controller):
22019    - Avoid sending a garbage value to the controller when a circuit is
22020      cannibalized. Fixes bug 11519; bugfix on 0.2.3.11-alpha.
22021
22022  o Minor bugfixes (tor-fw-helper):
22023    - Allow tor-fw-helper to build again by adding src/ext to its
22024      CPPFLAGS. Fixes bug 11296; bugfix on 0.2.5.3-alpha.
22025
22026  o Minor bugfixes (bridges):
22027    - Avoid potential crashes or bad behavior when launching a
22028      server-side managed proxy with ORPort or ExtORPort temporarily
22029      disabled. Fixes bug 9650; bugfix on 0.2.3.16-alpha.
22030
22031  o Minor bugfixes (platform-specific):
22032    - Fix compilation on Solaris, which does not have <endian.h>. Fixes
22033      bug 11426; bugfix on 0.2.5.3-alpha.
22034    - When dumping a malformed directory object to disk, save it in
22035      binary mode on Windows, not text mode. Fixes bug 11342; bugfix on
22036      0.2.2.1-alpha.
22037    - Don't report failures from make_socket_reuseable() on incoming
22038      sockets on OSX: this can happen when incoming connections close
22039      early. Fixes bug 10081.
22040
22041  o Minor bugfixes (trivial memory leaks):
22042    - Fix a small memory leak when signing a directory object. Fixes bug
22043      11275; bugfix on 0.2.4.13-alpha.
22044    - Free placeholder entries in our circuit table at exit; fixes a
22045      harmless memory leak. Fixes bug 11278; bugfix on 0.2.5.1-alpha.
22046    - Don't re-initialize a second set of OpenSSL mutexes when starting
22047      up. Previously, we'd make one set of mutexes, and then immediately
22048      replace them with another. Fixes bug 11726; bugfix on
22049      0.2.5.3-alpha.
22050    - Resolve some memory leaks found by coverity in the unit tests, on
22051      exit in tor-gencert, and on a failure to compute digests for our
22052      own keys when generating a v3 networkstatus vote. These leaks
22053      should never have affected anyone in practice.
22054
22055  o Minor bugfixes (hidden service):
22056    - Only retry attempts to connect to a chosen rendezvous point 8
22057      times, not 30. Fixes bug 4241; bugfix on 0.1.0.1-rc.
22058
22059  o Minor bugfixes (misc code correctness):
22060    - Fix various instances of undefined behavior in channeltls.c,
22061      tor_memmem(), and eventdns.c that would cause us to construct
22062      pointers to memory outside an allocated object. (These invalid
22063      pointers were not accessed, but C does not even allow them to
22064      exist.) Fixes bug 10363; bugfixes on 0.1.1.1-alpha, 0.1.2.1-alpha,
22065      0.2.0.10-alpha, and 0.2.3.6-alpha. Reported by "bobnomnom".
22066    - Use the AddressSanitizer and Ubsan sanitizers (in clang-3.4) to
22067      fix some miscellaneous errors in our tests and codebase. Fixes bug
22068      11232. Bugfixes on versions back as far as 0.2.1.11-alpha.
22069    - Always check return values for unlink, munmap, UnmapViewOfFile;
22070      check strftime return values more often. In some cases all we can
22071      do is report a warning, but this may help prevent deeper bugs from
22072      going unnoticed. Closes ticket 8787; bugfixes on many, many tor
22073      versions.
22074    - Fix numerous warnings from the clang "scan-build" static analyzer.
22075      Some of these are programming style issues; some of them are false
22076      positives that indicated awkward code; some are undefined behavior
22077      cases related to constructing (but not using) invalid pointers;
22078      some are assumptions about API behavior; some are (harmlessly)
22079      logging sizeof(ptr) bytes from a token when sizeof(*ptr) would be
22080      correct; and one or two are genuine bugs that weren't reachable
22081      from the rest of the program. Fixes bug 8793; bugfixes on many,
22082      many tor versions.
22083
22084  o Documentation:
22085    - Build the torify.1 manpage again. Previously, we were only trying
22086      to build it when also building tor-fw-helper. That's why we didn't
22087      notice that we'd broken the ability to build it. Fixes bug 11321;
22088      bugfix on 0.2.5.1-alpha.
22089    - Fix the layout of the SOCKSPort flags in the manpage. Fixes bug
22090      11061; bugfix on 0.2.4.7-alpha.
22091    - Correctly document that we search for a system torrc file before
22092      looking in ~/.torrc. Fixes documentation side of 9213; bugfix on
22093      0.2.3.18-rc.
22094    - Resolve warnings from Doxygen.
22095
22096  o Code simplifications and refactoring:
22097    - Remove is_internal_IP() function. Resolves ticket 4645.
22098    - Remove unused function circuit_dump_by_chan from circuitlist.c.
22099      Closes issue 9107; patch from "marek".
22100    - Change our use of the ENUM_BF macro to avoid declarations that
22101      confuse Doxygen.
22102
22103  o Deprecated versions:
22104    - Tor 0.2.2.x has reached end-of-life; it has received no patches or
22105      attention for some while. Directory authorities no longer accept
22106      descriptors from relays running any version of Tor prior to Tor
22107      0.2.3.16-alpha. Resolves ticket 11149.
22108
22109  o Testing:
22110    - New macros in test.h to simplify writing mock-functions for unit
22111      tests. Part of ticket 11507. Patch from Dana Koch.
22112    - Complete tests for the status.c module. Resolves ticket 11507.
22113      Patch from Dana Koch.
22114
22115  o Removed code:
22116    - Remove all code for the long unused v1 directory protocol.
22117      Resolves ticket 11070.
22118
22119
22120Changes in version 0.2.5.3-alpha - 2014-03-22
22121  Tor 0.2.5.3-alpha includes all the fixes from 0.2.4.21. It contains
22122  two new anti-DoS features for Tor relays, resolves a bug that kept
22123  SOCKS5 support for IPv6 from working, fixes several annoying usability
22124  issues for bridge users, and removes more old code for unused
22125  directory formats.
22126
22127  The Tor 0.2.5.x release series is now in patch-freeze: no feature
22128  patches not already written will be considered for inclusion in 0.2.5.x.
22129
22130  o Major features (relay security, DoS-resistance):
22131    - When deciding whether we have run out of memory and we need to
22132      close circuits, also consider memory allocated in buffers for
22133      streams attached to each circuit.
22134
22135      This change, which extends an anti-DoS feature introduced in
22136      0.2.4.13-alpha and improved in 0.2.4.14-alpha, lets Tor exit relays
22137      better resist more memory-based DoS attacks than before. Since the
22138      MaxMemInCellQueues option now applies to all queues, it is renamed
22139      to MaxMemInQueues. This feature fixes bug 10169.
22140    - Avoid hash-flooding denial-of-service attacks by using the secure
22141      SipHash-2-4 hash function for our hashtables. Without this
22142      feature, an attacker could degrade performance of a targeted
22143      client or server by flooding their data structures with a large
22144      number of entries to be stored at the same hash table position,
22145      thereby slowing down the Tor instance. With this feature, hash
22146      table positions are derived from a randomized cryptographic key,
22147      and an attacker cannot predict which entries will collide. Closes
22148      ticket 4900.
22149    - Decrease the lower limit of MaxMemInQueues to 256 MBytes (but leave
22150      the default at 8GBytes), to better support Raspberry Pi users. Fixes
22151      bug 9686; bugfix on 0.2.4.14-alpha.
22152
22153  o Minor features (bridges, pluggable transports):
22154    - Bridges now write the SHA1 digest of their identity key
22155      fingerprint (that is, a hash of a hash of their public key) to
22156      notice-level logs, and to a new hashed-fingerprint file. This
22157      information will help bridge operators look up their bridge in
22158      Globe and similar tools. Resolves ticket 10884.
22159    - Improve the message that Tor displays when running as a bridge
22160      using pluggable transports without an Extended ORPort listener.
22161      Also, log the message in the log file too. Resolves ticket 11043.
22162
22163  o Minor features (other):
22164    - Add a new option, PredictedPortsRelevanceTime, to control how long
22165      after having received a request to connect to a given port Tor
22166      will try to keep circuits ready in anticipation of future requests
22167      for that port. Patch from "unixninja92"; implements ticket 9176.
22168    - Generate a warning if any ports are listed in the SocksPolicy,
22169      DirPolicy, AuthDirReject, AuthDirInvalid, AuthDirBadDir, or
22170      AuthDirBadExit options. (These options only support address
22171      ranges.) Fixes part of ticket 11108.
22172    - Update geoip and geoip6 to the February 7 2014 Maxmind GeoLite2
22173      Country database.
22174
22175  o Minor bugfixes (new since 0.2.5.2-alpha, also in 0.2.4.21):
22176    - Build without warnings under clang 3.4. (We have some macros that
22177      define static functions only some of which will get used later in
22178      the module. Starting with clang 3.4, these give a warning unless the
22179      unused attribute is set on them.) Resolves ticket 10904.
22180    - Fix build warnings about missing "a2x" comment when building the
22181      manpages from scratch on OpenBSD; OpenBSD calls it "a2x.py".
22182      Fixes bug 10929; bugfix on 0.2.2.9-alpha. Patch from Dana Koch.
22183
22184  o Minor bugfixes (client):
22185    - Improve the log message when we can't connect to a hidden service
22186      because all of the hidden service directory nodes hosting its
22187      descriptor are excluded. Improves on our fix for bug 10722, which
22188      was a bugfix on 0.2.0.10-alpha.
22189    - Raise a control port warning when we fail to connect to all of
22190      our bridges. Previously, we didn't inform the controller, and
22191      the bootstrap process would stall. Fixes bug 11069; bugfix on
22192      0.2.1.2-alpha.
22193    - Exit immediately when a process-owning controller exits.
22194      Previously, tor relays would wait for a little while after their
22195      controller exited, as if they had gotten an INT signal -- but this
22196      was problematic, since there was no feedback for the user. To do a
22197      clean shutdown, controllers should send an INT signal and give Tor
22198      a chance to clean up. Fixes bug 10449; bugfix on 0.2.2.28-beta.
22199    - Stop attempting to connect to bridges before our pluggable
22200      transports are configured (harmless but resulted in some erroneous
22201      log messages). Fixes bug 11156; bugfix on 0.2.3.2-alpha.
22202    - Fix connections to IPv6 addresses over SOCKS5. Previously, we were
22203      generating incorrect SOCKS5 responses, and confusing client
22204      applications. Fixes bug 10987; bugfix on 0.2.4.7-alpha.
22205
22206  o Minor bugfixes (relays and bridges):
22207    - Avoid crashing on a malformed resolv.conf file when running a
22208      relay using Libevent 1. Fixes bug 8788; bugfix on 0.1.1.23.
22209    - Non-exit relays no longer launch mock DNS requests to check for
22210      DNS hijacking. This has been unnecessary since 0.2.1.7-alpha, when
22211      non-exit relays stopped servicing DNS requests. Fixes bug 965;
22212      bugfix on 0.2.1.7-alpha. Patch from Matt Pagan.
22213    - Bridges now report complete directory request statistics. Related
22214      to bug 5824; bugfix on 0.2.2.1-alpha.
22215    - Bridges now never collect statistics that were designed for
22216      relays. Fixes bug 5824; bugfix on 0.2.3.8-alpha.
22217    - Stop giving annoying warning messages when we decide not to launch
22218      a pluggable transport proxy that we don't need (because there are
22219      no bridges configured to use it). Resolves ticket 5018; bugfix
22220      on 0.2.5.2-alpha.
22221    - Give the correct URL in the warning message when trying to run a
22222      relay on an ancient version of Windows. Fixes bug 9393.
22223
22224  o Minor bugfixes (backtrace support):
22225    - Support automatic backtraces on more platforms by using the
22226      "-fasynchronous-unwind-tables" compiler option. This option is
22227      needed for platforms like 32-bit Intel where "-fomit-frame-pointer"
22228      is on by default and table generation is not. This doesn't yet
22229      add Windows support; only Linux, OSX, and some BSDs are affected.
22230      Reported by 'cypherpunks'; fixes bug 11047; bugfix on 0.2.5.2-alpha.
22231    - Avoid strange behavior if two threads hit failed assertions at the
22232      same time and both try to log backtraces at once. (Previously, if
22233      this had happened, both threads would have stored their intermediate
22234      results in the same buffer, and generated junk outputs.) Reported by
22235      "cypherpunks". Fixes bug 11048; bugfix on 0.2.5.2-alpha.
22236    - Fix a compiler warning in format_number_sigsafe(). Bugfix on
22237      0.2.5.2-alpha; patch from Nick Hopper.
22238
22239  o Minor bugfixes (unit tests):
22240    - Fix a small bug in the unit tests that might have made the tests
22241      call 'chmod' with an uninitialized bitmask. Fixes bug 10928;
22242      bugfix on 0.2.5.1-alpha. Patch from Dana Koch.
22243
22244  o Removed code:
22245    - Remove all remaining code related to version-0 hidden service
22246      descriptors: they have not been in use since 0.2.2.1-alpha. Fixes
22247      the rest of bug 10841.
22248
22249  o Documentation:
22250    - Document in the manpage that "KBytes" may also be written as
22251      "kilobytes" or "KB", that "Kbits" may also be written as
22252      "kilobits", and so forth. Closes ticket 9222.
22253    - Document that the ClientOnly config option overrides ORPort.
22254      Our old explanation made ClientOnly sound as though it did
22255      nothing at all. Resolves bug 9059.
22256    - Explain that SocksPolicy, DirPolicy, and similar options don't
22257      take port arguments. Fixes the other part of ticket 11108.
22258    - Fix a comment about the rend_server_descriptor_t.protocols field
22259      to more accurately describe its range. Also, make that field
22260      unsigned, to more accurately reflect its usage. Fixes bug 9099;
22261      bugfix on 0.2.1.5-alpha.
22262    - Fix the manpage's description of HiddenServiceAuthorizeClient:
22263      the maximum client name length is 16, not 19. Fixes bug 11118;
22264      bugfix on 0.2.1.6-alpha.
22265
22266  o Code simplifications and refactoring:
22267    - Get rid of router->address, since in all cases it was just the
22268      string representation of router->addr. Resolves ticket 5528.
22269
22270  o Test infrastructure:
22271    - Update to the latest version of tinytest.
22272    - Improve the tinytest implementation of string operation tests so
22273      that comparisons with NULL strings no longer crash the tests; they
22274      now just fail, normally. Fixes bug 9004; bugfix on 0.2.2.4-alpha.
22275
22276
22277Changes in version 0.2.4.21 - 2014-02-28
22278  Tor 0.2.4.21 further improves security against potential adversaries who
22279  find breaking 1024-bit crypto doable, and backports several stability
22280  and robustness patches from the 0.2.5 branch.
22281
22282  o Major features (client security):
22283    - When we choose a path for a 3-hop circuit, make sure it contains
22284      at least one relay that supports the NTor circuit extension
22285      handshake. Otherwise, there is a chance that we're building
22286      a circuit that's worth attacking by an adversary who finds
22287      breaking 1024-bit crypto doable, and that chance changes the game
22288      theory. Implements ticket 9777.
22289
22290  o Major bugfixes:
22291    - Do not treat streams that fail with reason
22292      END_STREAM_REASON_INTERNAL as indicating a definite circuit failure,
22293      since it could also indicate an ENETUNREACH connection error. Fixes
22294      part of bug 10777; bugfix on 0.2.4.8-alpha.
22295
22296  o Code simplification and refactoring:
22297    - Remove data structures which were introduced to implement the
22298      CellStatistics option: they are now redundant with the new timestamp
22299      field in the regular packed_cell_t data structure, which we did
22300      in 0.2.4.18-rc in order to resolve bug 9093. Resolves ticket 10870.
22301
22302  o Minor features:
22303    - Always clear OpenSSL bignums before freeing them -- even bignums
22304      that don't contain secrets. Resolves ticket 10793. Patch by
22305      Florent Daigniere.
22306    - Build without warnings under clang 3.4. (We have some macros that
22307      define static functions only some of which will get used later in
22308      the module. Starting with clang 3.4, these give a warning unless the
22309      unused attribute is set on them.) Resolves ticket 10904.
22310    - Update geoip and geoip6 files to the February 7 2014 Maxmind
22311      GeoLite2 Country database.
22312
22313  o Minor bugfixes:
22314    - Set the listen() backlog limit to the largest actually supported
22315      on the system, not to the value in a header file. Fixes bug 9716;
22316      bugfix on every released Tor.
22317    - Treat ENETUNREACH, EACCES, and EPERM connection failures at an
22318      exit node as a NOROUTE error, not an INTERNAL error, since they
22319      can apparently happen when trying to connect to the wrong sort
22320      of netblocks. Fixes part of bug 10777; bugfix on 0.1.0.1-rc.
22321    - Fix build warnings about missing "a2x" comment when building the
22322      manpages from scratch on OpenBSD; OpenBSD calls it "a2x.py".
22323      Fixes bug 10929; bugfix on 0.2.2.9-alpha. Patch from Dana Koch.
22324    - Avoid a segfault on SIGUSR1, where we had freed a connection but did
22325      not entirely remove it from the connection lists. Fixes bug 9602;
22326      bugfix on 0.2.4.4-alpha.
22327    - Fix a segmentation fault in our benchmark code when running with
22328      Fedora's OpenSSL package, or any other OpenSSL that provides
22329      ECDH but not P224. Fixes bug 10835; bugfix on 0.2.4.8-alpha.
22330    - Turn "circuit handshake stats since last time" log messages into a
22331      heartbeat message. Fixes bug 10485; bugfix on 0.2.4.17-rc.
22332
22333  o Documentation fixes:
22334    - Document that all but one DirPort entry must have the NoAdvertise
22335      flag set. Fixes bug 10470; bugfix on 0.2.3.3-alpha / 0.2.3.16-alpha.
22336
22337
22338Changes in version 0.2.5.2-alpha - 2014-02-13
22339  Tor 0.2.5.2-alpha includes all the fixes from 0.2.4.18-rc and 0.2.4.20,
22340  like the "poor random number generation" fix and the "building too many
22341  circuits" fix. It also further improves security against potential
22342  adversaries who find breaking 1024-bit crypto doable, and launches
22343  pluggable transports on demand (which gets us closer to integrating
22344  pluggable transport support by default -- not to be confused with Tor
22345  bundles enabling pluggable transports and bridges by default).
22346
22347  o Major features (client security):
22348    - When we choose a path for a 3-hop circuit, make sure it contains
22349      at least one relay that supports the NTor circuit extension
22350      handshake. Otherwise, there is a chance that we're building
22351      a circuit that's worth attacking by an adversary who finds
22352      breaking 1024-bit crypto doable, and that chance changes the game
22353      theory. Implements ticket 9777.
22354    - Clients now look at the "usecreatefast" consensus parameter to
22355      decide whether to use CREATE_FAST or CREATE cells for the first hop
22356      of their circuit. This approach can improve security on connections
22357      where Tor's circuit handshake is stronger than the available TLS
22358      connection security levels, but the tradeoff is more computational
22359      load on guard relays. Implements proposal 221. Resolves ticket 9386.
22360
22361  o Major features (bridges):
22362    - Don't launch pluggable transport proxies if we don't have any
22363      bridges configured that would use them. Now we can list many
22364      pluggable transports, and Tor will dynamically start one when it
22365      hears a bridge address that needs it. Resolves ticket 5018.
22366    - The bridge directory authority now assigns status flags (Stable,
22367      Guard, etc) to bridges based on thresholds calculated over all
22368      Running bridges. Now bridgedb can finally make use of its features
22369      to e.g. include at least one Stable bridge in its answers. Fixes
22370      bug 9859.
22371
22372  o Major features (other):
22373    - Extend ORCONN controller event to include an "ID" parameter,
22374      and add four new controller event types CONN_BW, CIRC_BW,
22375      CELL_STATS, and TB_EMPTY that show connection and circuit usage.
22376      The new events are emitted in private Tor networks only, with the
22377      goal of being able to better track performance and load during
22378      full-network simulations. Implements proposal 218 and ticket 7359.
22379    - On some platforms (currently: recent OSX versions, glibc-based
22380      platforms that support the ELF format, and a few other
22381      Unix-like operating systems), Tor can now dump stack traces
22382      when a crash occurs or an assertion fails. By default, traces
22383      are dumped to stderr (if possible) and to any logs that are
22384      reporting errors. Implements ticket 9299.
22385
22386  o Major bugfixes:
22387    - Avoid a segfault on SIGUSR1, where we had freed a connection but did
22388      not entirely remove it from the connection lists. Fixes bug 9602;
22389      bugfix on 0.2.4.4-alpha.
22390    - Do not treat streams that fail with reason
22391      END_STREAM_REASON_INTERNAL as indicating a definite circuit failure,
22392      since it could also indicate an ENETUNREACH connection error. Fixes
22393      part of bug 10777; bugfix on 0.2.4.8-alpha.
22394
22395  o Major bugfixes (new since 0.2.5.1-alpha, also in 0.2.4.20):
22396    - Do not allow OpenSSL engines to replace the PRNG, even when
22397      HardwareAccel is set. The only default builtin PRNG engine uses
22398      the Intel RDRAND instruction to replace the entire PRNG, and
22399      ignores all attempts to seed it with more entropy. That's
22400      cryptographically stupid: the right response to a new alleged
22401      entropy source is never to discard all previously used entropy
22402      sources. Fixes bug 10402; works around behavior introduced in
22403      OpenSSL 1.0.0. Diagnosis and investigation thanks to "coderman"
22404      and "rl1987".
22405    - Fix assertion failure when AutomapHostsOnResolve yields an IPv6
22406      address. Fixes bug 10465; bugfix on 0.2.4.7-alpha.
22407    - Avoid launching spurious extra circuits when a stream is pending.
22408      This fixes a bug where any circuit that _wasn't_ unusable for new
22409      streams would be treated as if it were, causing extra circuits to
22410      be launched. Fixes bug 10456; bugfix on 0.2.4.12-alpha.
22411
22412  o Major bugfixes (new since 0.2.5.1-alpha, also in 0.2.4.18-rc):
22413    - No longer stop reading or writing on cpuworker connections when
22414      our rate limiting buckets go empty. Now we should handle circuit
22415      handshake requests more promptly. Resolves bug 9731.
22416    - Stop trying to bootstrap all our directory information from
22417      only our first guard. Discovered while fixing bug 9946; bugfix
22418      on 0.2.4.8-alpha.
22419
22420  o Minor features (bridges, pluggable transports):
22421    - Add threshold cutoffs to the networkstatus document created by
22422      the Bridge Authority. Fixes bug 1117.
22423    - On Windows, spawn background processes using the CREATE_NO_WINDOW
22424      flag. Now Tor Browser Bundle 3.5 with pluggable transports enabled
22425      doesn't pop up a blank console window. (In Tor Browser Bundle 2.x,
22426      Vidalia set this option for us.) Implements ticket 10297.
22427
22428  o Minor features (security):
22429    - Always clear OpenSSL bignums before freeing them -- even bignums
22430      that don't contain secrets. Resolves ticket 10793. Patch by
22431      Florent Daignière.
22432
22433  o Minor features (config options and command line):
22434    - Add an --allow-missing-torrc commandline option that tells Tor to
22435      run even if the configuration file specified by -f is not available.
22436      Implements ticket 10060.
22437    - Add support for the TPROXY transparent proxying facility on Linux.
22438      See documentation for the new TransProxyType option for more
22439      details. Implementation by "thomo". Closes ticket 10582.
22440
22441  o Minor features (controller):
22442    - Add a new "HS_DESC" controller event that reports activities
22443      related to hidden service descriptors. Resolves ticket 8510.
22444    - New "DROPGUARDS" controller command to forget all current entry
22445      guards. Not recommended for ordinary use, since replacing guards
22446      too frequently makes several attacks easier. Resolves ticket 9934;
22447      patch from "ra".
22448
22449  o Minor features (build):
22450    - Assume that a user using ./configure --host wants to cross-compile,
22451      and give an error if we cannot find a properly named
22452      tool-chain. Add a --disable-tool-name-check option to proceed
22453      nevertheless. Addresses ticket 9869. Patch by Benedikt Gollatz.
22454    - If we run ./configure and the compiler recognizes -fstack-protector
22455      but the linker rejects it, warn the user about a potentially missing
22456      libssp package. Addresses ticket 9948. Patch from Benedikt Gollatz.
22457
22458  o Minor features (testing):
22459    - If Python is installed, "make check" now runs extra tests beyond
22460      the unit test scripts.
22461    - When bootstrapping a test network, sometimes very few relays get
22462      the Guard flag. Now a new option "TestingDirAuthVoteGuard" can
22463      specify a set of relays which should be voted Guard regardless of
22464      their uptime or bandwidth. Addresses ticket 9206.
22465
22466  o Minor features (log messages):
22467    - When ServerTransportPlugin is set on a bridge, Tor can write more
22468      useful statistics about bridge use in its extrainfo descriptors,
22469      but only if the Extended ORPort ("ExtORPort") is set too. Add a
22470      log message to inform the user in this case. Resolves ticket 9651.
22471    - When receiving a new controller connection, log the origin address.
22472      Resolves ticket 9698; patch from "sigpipe".
22473    - When logging OpenSSL engine status at startup, log the status of
22474      more engines. Fixes ticket 10043; patch from Joshua Datko.
22475    - Turn "circuit handshake stats since last time" log messages into a
22476      heartbeat message. Fixes bug 10485; bugfix on 0.2.4.17-rc.
22477
22478  o Minor features (new since 0.2.5.1-alpha, also in 0.2.4.18-rc):
22479    - Improve the circuit queue out-of-memory handler. Previously, when
22480      we ran low on memory, we'd close whichever circuits had the most
22481      queued cells. Now, we close those that have the *oldest* queued
22482      cells, on the theory that those are most responsible for us
22483      running low on memory. Based on analysis from a forthcoming paper
22484      by Jansen, Tschorsch, Johnson, and Scheuermann. Fixes bug 9093.
22485    - Generate bootstrapping status update events correctly when fetching
22486      microdescriptors. Fixes bug 9927.
22487    - Update to the October 2 2013 Maxmind GeoLite Country database.
22488
22489  o Minor bugfixes (clients):
22490    - When closing a channel that has already been open, do not close
22491      pending circuits that were waiting to connect to the same relay.
22492      Fixes bug 9880; bugfix on 0.2.5.1-alpha. Thanks to skruffy for
22493      finding this bug.
22494
22495  o Minor bugfixes (relays):
22496    - Treat ENETUNREACH, EACCES, and EPERM connection failures at an
22497      exit node as a NOROUTE error, not an INTERNAL error, since they
22498      can apparently happen when trying to connect to the wrong sort
22499      of netblocks. Fixes part of bug 10777; bugfix on 0.1.0.1-rc.
22500
22501  o Minor bugfixes (bridges):
22502    - Fix a bug where the first connection works to a bridge that uses a
22503      pluggable transport with client-side parameters, but we don't send
22504      the client-side parameters on subsequent connections. (We don't
22505      use any pluggable transports with client-side parameters yet,
22506      but ScrambleSuit will soon become the first one.) Fixes bug 9162;
22507      bugfix on 0.2.0.3-alpha. Based on a patch from "rl1987".
22508
22509  o Minor bugfixes (node selection):
22510    - If ExcludeNodes is set, consider non-excluded hidden service
22511      directory servers before excluded ones. Do not consider excluded
22512      hidden service directory servers at all if StrictNodes is
22513      set. (Previously, we would sometimes decide to connect to those
22514      servers, and then realize before we initiated a connection that
22515      we had excluded them.) Fixes bug 10722; bugfix on 0.2.0.10-alpha.
22516      Reported by "mr-4".
22517    - If we set the ExitNodes option but it doesn't include any nodes
22518      that have the Exit flag, we would choose not to bootstrap. Now we
22519      bootstrap so long as ExitNodes includes nodes which can exit to
22520      some port. Fixes bug 10543; bugfix on 0.2.4.10-alpha.
22521
22522  o Minor bugfixes (controller and command-line):
22523    - If changing a config option via "setconf" fails in a recoverable
22524      way, we used to nonetheless write our new control ports to the
22525      file described by the "ControlPortWriteToFile" option. Now we only
22526      write out that file if we successfully switch to the new config
22527      option. Fixes bug 5605; bugfix on 0.2.2.26-beta. Patch from "Ryman".
22528    - When a command-line option such as --version or --help that
22529      ordinarily implies --hush appears on the command line along with
22530      --quiet, then actually obey --quiet. Previously, we obeyed --quiet
22531      only if it appeared later on the command line. Fixes bug 9578;
22532      bugfix on 0.2.5.1-alpha.
22533
22534  o Minor bugfixes (code correctness):
22535    - Previously we used two temporary files when writing descriptors to
22536      disk; now we only use one. Fixes bug 1376.
22537    - Remove an erroneous (but impossible and thus harmless) pointer
22538      comparison that would have allowed compilers to skip a bounds
22539      check in channeltls.c. Fixes bugs 10313 and 9980; bugfix on
22540      0.2.0.10-alpha. Noticed by Jared L Wong and David Fifield.
22541    - Fix an always-true assertion in pluggable transports code so it
22542      actually checks what it was trying to check. Fixes bug 10046;
22543      bugfix on 0.2.3.9-alpha. Found by "dcb".
22544
22545  o Minor bugfixes (protocol correctness):
22546    - When receiving a VERSIONS cell with an odd number of bytes, close
22547      the connection immediately since the cell is malformed. Fixes bug
22548      10365; bugfix on 0.2.0.10-alpha. Spotted by "bobnomnom"; fix by
22549      "rl1987".
22550
22551  o Minor bugfixes (build):
22552    - Restore the ability to compile Tor with V2_HANDSHAKE_SERVER
22553      turned off (that is, without support for v2 link handshakes). Fixes
22554      bug 4677; bugfix on 0.2.3.2-alpha. Patch from "piet".
22555    - Fix compilation warnings and startup issues when running with
22556      "Sandbox 1" and libseccomp-2.1.0. Fixes bug 10563; bugfix on
22557      0.2.5.1-alpha.
22558    - Fix compilation on Solaris 9, which didn't like us having an
22559      identifier named "sun". Fixes bug 10565; bugfix in 0.2.5.1-alpha.
22560
22561  o Minor bugfixes (testing):
22562    - Fix a segmentation fault in our benchmark code when running with
22563      Fedora's OpenSSL package, or any other OpenSSL that provides
22564      ECDH but not P224. Fixes bug 10835; bugfix on 0.2.4.8-alpha.
22565
22566  o Minor bugfixes (log messages):
22567    - Fix a bug where clients using bridges would report themselves
22568      as 50% bootstrapped even without a live consensus document.
22569      Fixes bug 9922; bugfix on 0.2.1.1-alpha.
22570    - Suppress a warning where, if there's only one directory authority
22571      in the network, we would complain that votes and signatures cannot
22572      be uploaded to other directory authorities. Fixes bug 10842;
22573      bugfix on 0.2.2.26-beta.
22574    - Report bootstrapping progress correctly when we're downloading
22575      microdescriptors. We had updated our "do we have enough microdescs
22576      to begin building circuits?" logic most recently in 0.2.4.10-alpha
22577      (see bug 5956), but we left the bootstrap status event logic at
22578      "how far through getting 1/4 of them are we?" Fixes bug 9958;
22579      bugfix on 0.2.2.36, which is where they diverged (see bug 5343).
22580
22581  o Minor bugfixes (new since 0.2.5.1-alpha, also in 0.2.4.20):
22582    - Avoid a crash bug when starting with a corrupted microdescriptor
22583      cache file. Fixes bug 10406; bugfix on 0.2.2.6-alpha.
22584    - If we fail to dump a previously cached microdescriptor to disk, avoid
22585      freeing duplicate data later on. Fixes bug 10423; bugfix on
22586      0.2.4.13-alpha. Spotted by "bobnomnom".
22587
22588  o Minor bugfixes on 0.2.4.x (new since 0.2.5.1-alpha, also in 0.2.4.18-rc):
22589    - Correctly log long IPv6 exit policies, instead of truncating them
22590      or reporting an error. Fixes bug 9596; bugfix on 0.2.4.7-alpha.
22591    - Our default TLS ecdhe groups were backwards: we meant to be using
22592      P224 for relays (for performance win) and P256 for bridges (since
22593      it is more common in the wild). Instead we had it backwards. After
22594      reconsideration, we decided that the default should be P256 on all
22595      hosts, since its security is probably better, and since P224 is
22596      reportedly used quite little in the wild.  Found by "skruffy" on
22597      IRC. Fix for bug 9780; bugfix on 0.2.4.8-alpha.
22598    - Free directory authority certificate download statuses on exit
22599      rather than leaking them. Fixes bug 9644; bugfix on 0.2.4.13-alpha.
22600
22601  o Minor bugfixes on 0.2.3.x (new since 0.2.5.1-alpha, also in 0.2.4.18-rc):
22602    - If the guard we choose first doesn't answer, we would try the
22603      second guard, but once we connected to the second guard we would
22604      abandon it and retry the first one, slowing down bootstrapping.
22605      The fix is to treat all our initially chosen guards as acceptable
22606      to use. Fixes bug 9946; bugfix on 0.1.1.11-alpha.
22607    - Fix an assertion failure that would occur when disabling the
22608      ORPort setting on a running Tor process while accounting was
22609      enabled. Fixes bug 6979; bugfix on 0.2.2.18-alpha.
22610    - When examining the list of network interfaces to find our address,
22611      do not consider non-running or disabled network interfaces. Fixes
22612      bug 9904; bugfix on 0.2.3.11-alpha. Patch from "hantwister".
22613    - Avoid an off-by-one error when checking buffer boundaries when
22614      formatting the exit status of a pluggable transport helper.
22615      This is probably not an exploitable bug, but better safe than
22616      sorry. Fixes bug 9928; bugfix on 0.2.3.18-rc. Bug found by
22617      Pedro Ribeiro.
22618
22619  o Removed code and features:
22620    - Clients now reject any directory authority certificates lacking
22621      a dir-key-crosscert element. These have been included since
22622      0.2.1.9-alpha, so there's no real reason for them to be optional
22623      any longer. Completes proposal 157. Resolves ticket 10162.
22624    - Remove all code that existed to support the v2 directory system,
22625      since there are no longer any v2 directory authorities. Resolves
22626      ticket 10758.
22627    - Remove the HSAuthoritativeDir and AlternateHSAuthority torrc
22628      options, which were used for designating authorities as "Hidden
22629      service authorities". There has been no use of hidden service
22630      authorities since 0.2.2.1-alpha, when we stopped uploading or
22631      downloading v0 hidden service descriptors. Fixes bug 10881; also
22632      part of a fix for bug 10841.
22633
22634  o Code simplification and refactoring:
22635    - Remove some old fallback code designed to keep Tor clients working
22636      in a network with only two working relays. Elsewhere in the code we
22637      have long since stopped supporting such networks, so there wasn't
22638      much point in keeping it around. Addresses ticket 9926.
22639    - Reject 0-length EXTEND2 cells more explicitly. Fixes bug 10536;
22640      bugfix on 0.2.4.8-alpha. Reported by "cypherpunks".
22641    - Remove data structures which were introduced to implement the
22642      CellStatistics option: they are now redundant with the addition
22643      of a timestamp to the regular packed_cell_t data structure, which
22644      we did in 0.2.4.18-rc in order to resolve ticket 9093. Implements
22645      ticket 10870.
22646
22647  o Documentation (man page) fixes:
22648    - Update manpage to describe some of the files you can expect to
22649      find in Tor's DataDirectory. Addresses ticket 9839.
22650    - Document that all but one DirPort entry must have the NoAdvertise
22651      flag set. Fixes bug 10470; bugfix on 0.2.3.3-alpha / 0.2.3.16-alpha.
22652
22653  o Documentation fixes (new since 0.2.5.1-alpha, also in 0.2.4.18-rc):
22654    - Clarify the usage and risks of setting the ContactInfo torrc line
22655      for your relay or bridge. Resolves ticket 9854.
22656    - Add anchors to the manpage so we can link to the html version of
22657      the documentation for specific options. Resolves ticket 9866.
22658    - Replace remaining references to DirServer in man page and
22659      log entries. Resolves ticket 10124.
22660
22661  o Tool changes:
22662    - Make the "tor-gencert" tool used by directory authority operators
22663      create 2048-bit signing keys by default (rather than 1024-bit, since
22664      1024-bit is uncomfortably small these days). Addresses ticket 10324.
22665
22666
22667Changes in version 0.2.4.20 - 2013-12-22
22668  Tor 0.2.4.20 fixes potentially poor random number generation for users
22669  who 1) use OpenSSL 1.0.0 or later, 2) set "HardwareAccel 1" in their
22670  torrc file, 3) have "Sandy Bridge" or "Ivy Bridge" Intel processors,
22671  and 4) have no state file in their DataDirectory (as would happen on
22672  first start). Users who generated relay or hidden service identity
22673  keys in such a situation should discard them and generate new ones.
22674
22675  This release also fixes a logic error that caused Tor clients to build
22676  many more preemptive circuits than they actually need.
22677
22678  o Major bugfixes:
22679    - Do not allow OpenSSL engines to replace the PRNG, even when
22680      HardwareAccel is set. The only default builtin PRNG engine uses
22681      the Intel RDRAND instruction to replace the entire PRNG, and
22682      ignores all attempts to seed it with more entropy. That's
22683      cryptographically stupid: the right response to a new alleged
22684      entropy source is never to discard all previously used entropy
22685      sources. Fixes bug 10402; works around behavior introduced in
22686      OpenSSL 1.0.0. Diagnosis and investigation thanks to "coderman"
22687      and "rl1987".
22688    - Fix assertion failure when AutomapHostsOnResolve yields an IPv6
22689      address. Fixes bug 10465; bugfix on 0.2.4.7-alpha.
22690    - Avoid launching spurious extra circuits when a stream is pending.
22691      This fixes a bug where any circuit that _wasn't_ unusable for new
22692      streams would be treated as if it were, causing extra circuits to
22693      be launched. Fixes bug 10456; bugfix on 0.2.4.12-alpha.
22694
22695  o Minor bugfixes:
22696    - Avoid a crash bug when starting with a corrupted microdescriptor
22697      cache file. Fixes bug 10406; bugfix on 0.2.2.6-alpha.
22698    - If we fail to dump a previously cached microdescriptor to disk, avoid
22699      freeing duplicate data later on. Fixes bug 10423; bugfix on
22700      0.2.4.13-alpha. Spotted by "bobnomnom".
22701
22702
22703Changes in version 0.2.4.19 - 2013-12-11
22704  The Tor 0.2.4 release series is dedicated to the memory of Aaron Swartz
22705  (1986-2013). Aaron worked on diverse projects including helping to guide
22706  Creative Commons, playing a key role in stopping SOPA/PIPA, bringing
22707  transparency to the U.S government's PACER documents, and contributing
22708  design and development for Tor and Tor2Web. Aaron was one of the latest
22709  martyrs in our collective fight for civil liberties and human rights,
22710  and his death is all the more painful because he was one of us.
22711
22712  Tor 0.2.4.19, the first stable release in the 0.2.4 branch, features
22713  a new circuit handshake and link encryption that use ECC to provide
22714  better security and efficiency; makes relays better manage circuit
22715  creation requests; uses "directory guards" to reduce client enumeration
22716  risks; makes bridges collect and report statistics about the pluggable
22717  transports they support; cleans up and improves our geoip database;
22718  gets much closer to IPv6 support for clients, bridges, and relays; makes
22719  directory authorities use measured bandwidths rather than advertised
22720  ones when computing flags and thresholds; disables client-side DNS
22721  caching to reduce tracking risks; and fixes a big bug in bridge
22722  reachability testing. This release introduces two new design
22723  abstractions in the code: a new "channel" abstraction between circuits
22724  and or_connections to allow for implementing alternate relay-to-relay
22725  transports, and a new "circuitmux" abstraction storing the queue of
22726  circuits for a channel. The release also includes many stability,
22727  security, and privacy fixes.
22728
22729
22730Changes in version 0.2.4.18-rc - 2013-11-16
22731  Tor 0.2.4.18-rc is the fourth release candidate for the Tor 0.2.4.x
22732  series. It takes a variety of fixes from the 0.2.5.x branch to improve
22733  stability, performance, and better handling of edge cases.
22734
22735  o Major features:
22736    - Re-enable TLS 1.1 and 1.2 when built with OpenSSL 1.0.1e or later.
22737      Resolves ticket 6055. (OpenSSL before 1.0.1 didn't have TLS 1.1 or
22738      1.2, and OpenSSL from 1.0.1 through 1.0.1d had bugs that prevented
22739      renegotiation from working with TLS 1.1 or 1.2, so we had disabled
22740      them to solve bug 6033.)
22741
22742  o Major bugfixes:
22743    - No longer stop reading or writing on cpuworker connections when
22744      our rate limiting buckets go empty. Now we should handle circuit
22745      handshake requests more promptly. Resolves bug 9731.
22746    - If we are unable to save a microdescriptor to the journal, do not
22747      drop it from memory and then reattempt downloading it. Fixes bug
22748      9645; bugfix on 0.2.2.6-alpha.
22749    - Stop trying to bootstrap all our directory information from
22750      only our first guard. Discovered while fixing bug 9946; bugfix
22751      on 0.2.4.8-alpha.
22752    - The new channel code sometimes lost track of in-progress circuits,
22753      causing long-running clients to stop building new circuits. The
22754      fix is to always call circuit_n_chan_done(chan, 0) from
22755      channel_closed(). Fixes bug 9776; bugfix on 0.2.4.17-rc.
22756
22757  o Minor bugfixes (on 0.2.4.x):
22758    - Correctly log long IPv6 exit policies, instead of truncating them
22759      or reporting an error. Fixes bug 9596; bugfix on 0.2.4.7-alpha.
22760    - Our default TLS ecdhe groups were backwards: we meant to be using
22761      P224 for relays (for performance win) and P256 for bridges (since
22762      it is more common in the wild). Instead we had it backwards. After
22763      reconsideration, we decided that the default should be P256 on all
22764      hosts, since its security is probably better, and since P224 is
22765      reportedly used quite little in the wild.  Found by "skruffy" on
22766      IRC. Fix for bug 9780; bugfix on 0.2.4.8-alpha.
22767    - Free directory authority certificate download statuses on exit
22768      rather than leaking them. Fixes bug 9644; bugfix on 0.2.4.13-alpha.
22769
22770  o Minor bugfixes (on 0.2.3.x and earlier):
22771    - If the guard we choose first doesn't answer, we would try the
22772      second guard, but once we connected to the second guard we would
22773      abandon it and retry the first one, slowing down bootstrapping.
22774      The fix is to treat all our initially chosen guards as acceptable
22775      to use. Fixes bug 9946; bugfix on 0.1.1.11-alpha.
22776    - Fix an assertion failure that would occur when disabling the
22777      ORPort setting on a running Tor process while accounting was
22778      enabled. Fixes bug 6979; bugfix on 0.2.2.18-alpha.
22779    - When examining the list of network interfaces to find our address,
22780      do not consider non-running or disabled network interfaces. Fixes
22781      bug 9904; bugfix on 0.2.3.11-alpha. Patch from "hantwister".
22782    - Avoid an off-by-one error when checking buffer boundaries when
22783      formatting the exit status of a pluggable transport helper.
22784      This is probably not an exploitable bug, but better safe than
22785      sorry. Fixes bug 9928; bugfix on 0.2.3.18-rc. Bug found by
22786      Pedro Ribeiro.
22787
22788  o Minor features (protecting client timestamps):
22789    - Clients no longer send timestamps in their NETINFO cells. These were
22790      not used for anything, and they provided one small way for clients
22791      to be distinguished from each other as they moved from network to
22792      network or behind NAT. Implements part of proposal 222.
22793    - Clients now round timestamps in INTRODUCE cells down to the nearest
22794      10 minutes. If a new Support022HiddenServices option is set to 0, or
22795      if it's set to "auto" and the feature is disabled in the consensus,
22796      the timestamp is sent as 0 instead. Implements part of proposal 222.
22797    - Stop sending timestamps in AUTHENTICATE cells. This is not such
22798      a big deal from a security point of view, but it achieves no actual
22799      good purpose, and isn't needed. Implements part of proposal 222.
22800    - Reduce down accuracy of timestamps in hidden service descriptors.
22801      Implements part of proposal 222.
22802
22803  o Minor features (other):
22804    - Improve the circuit queue out-of-memory handler. Previously, when
22805      we ran low on memory, we'd close whichever circuits had the most
22806      queued cells. Now, we close those that have the *oldest* queued
22807      cells, on the theory that those are most responsible for us
22808      running low on memory. Based on analysis from a forthcoming paper
22809      by Jansen, Tschorsch, Johnson, and Scheuermann. Fixes bug 9093.
22810    - Generate bootstrapping status update events correctly when fetching
22811      microdescriptors. Fixes bug 9927.
22812    - Update to the October 2 2013 Maxmind GeoLite Country database.
22813
22814  o Documentation fixes:
22815    - Clarify the usage and risks of setting the ContactInfo torrc line
22816      for your relay or bridge. Resolves ticket 9854.
22817    - Add anchors to the manpage so we can link to the html version of
22818      the documentation for specific options. Resolves ticket 9866.
22819    - Replace remaining references to DirServer in man page and
22820      log entries. Resolves ticket 10124.
22821
22822
22823Changes in version 0.2.5.1-alpha - 2013-10-02
22824  Tor 0.2.5.1-alpha introduces experimental support for syscall sandboxing
22825  on Linux, allows bridges that offer pluggable transports to report usage
22826  statistics, fixes many issues to make testing easier, and provides
22827  a pile of minor features and bugfixes that have been waiting for a
22828  release of the new branch.
22829
22830  This is the first alpha release in a new series, so expect there to
22831  be bugs. Users who would rather test out a more stable branch should
22832  stay with 0.2.4.x for now.
22833
22834  o Major features (security):
22835    - Use the seccomp2 syscall filtering facility on Linux to limit
22836      which system calls Tor can invoke. This is an experimental,
22837      Linux-only feature to provide defense-in-depth against unknown
22838      attacks. To try turning it on, set "Sandbox 1" in your torrc
22839      file. Please be ready to report bugs. We hope to add support
22840      for better sandboxing in the future, including more fine-grained
22841      filters, better division of responsibility, and support for more
22842      platforms. This work has been done by Cristian-Matei Toader for
22843      Google Summer of Code.
22844    - Re-enable TLS 1.1 and 1.2 when built with OpenSSL 1.0.1e or later.
22845      Resolves ticket 6055. (OpenSSL before 1.0.1 didn't have TLS 1.1 or
22846      1.2, and OpenSSL from 1.0.1 through 1.0.1d had bugs that prevented
22847      renegotiation from working with TLS 1.1 or 1.2, so we had disabled
22848      them to solve bug 6033.)
22849
22850  o Major features (other):
22851    - Add support for passing arguments to managed pluggable transport
22852      proxies. Implements ticket 3594.
22853    - Bridges now track GeoIP information and the number of their users
22854      even when pluggable transports are in use, and report usage
22855      statistics in their extra-info descriptors. Resolves tickets 4773
22856      and 5040.
22857    - Make testing Tor networks bootstrap better: lower directory fetch
22858      retry schedules and maximum interval without directory requests,
22859      and raise maximum download tries. Implements ticket 6752.
22860    - Add make target 'test-network' to run tests on a Chutney network.
22861      Implements ticket 8530.
22862    - The ntor handshake is now on-by-default, no matter what the
22863      directory authorities recommend. Implements ticket 8561.
22864
22865  o Major bugfixes:
22866    - Instead of writing destroy cells directly to outgoing connection
22867      buffers, queue them and intersperse them with other outgoing cells.
22868      This can prevent a set of resource starvation conditions where too
22869      many pending destroy cells prevent data cells from actually getting
22870      delivered. Reported by "oftc_must_be_destroyed". Fixes bug 7912;
22871      bugfix on 0.2.0.1-alpha.
22872    - If we are unable to save a microdescriptor to the journal, do not
22873      drop it from memory and then reattempt downloading it. Fixes bug
22874      9645; bugfix on 0.2.2.6-alpha.
22875    - The new channel code sometimes lost track of in-progress circuits,
22876      causing long-running clients to stop building new circuits. The
22877      fix is to always call circuit_n_chan_done(chan, 0) from
22878      channel_closed(). Fixes bug 9776; bugfix on 0.2.4.17-rc.
22879
22880  o Build features:
22881    - Tor now builds each source file in two modes: a mode that avoids
22882      exposing identifiers needlessly, and another mode that exposes
22883      more identifiers for testing. This lets the compiler do better at
22884      optimizing the production code, while enabling us to take more
22885      radical measures to let the unit tests test things.
22886    - The production builds no longer include functions used only in
22887      the unit tests; all functions exposed from a module only for
22888      unit-testing are now static in production builds.
22889    - Add an --enable-coverage configuration option to make the unit
22890      tests (and a new src/or/tor-cov target) to build with gcov test
22891      coverage support.
22892
22893  o Testing:
22894    - We now have rudimentary function mocking support that our unit
22895      tests can use to test functions in isolation. Function mocking
22896      lets the tests temporarily replace a function's dependencies with
22897      stub functions, so that the tests can check the function without
22898      invoking the other functions it calls.
22899    - Add more unit tests for the <circid,channel>->circuit map, and
22900      the destroy-cell-tracking code to fix bug 7912.
22901    - Unit tests for failing cases of the TAP onion handshake.
22902    - More unit tests for address-manipulation functions.
22903
22904  o Minor features (protecting client timestamps):
22905    - Clients no longer send timestamps in their NETINFO cells. These were
22906      not used for anything, and they provided one small way for clients
22907      to be distinguished from each other as they moved from network to
22908      network or behind NAT. Implements part of proposal 222.
22909    - Clients now round timestamps in INTRODUCE cells down to the nearest
22910      10 minutes. If a new Support022HiddenServices option is set to 0, or
22911      if it's set to "auto" and the feature is disabled in the consensus,
22912      the timestamp is sent as 0 instead. Implements part of proposal 222.
22913    - Stop sending timestamps in AUTHENTICATE cells. This is not such
22914      a big deal from a security point of view, but it achieves no actual
22915      good purpose, and isn't needed. Implements part of proposal 222.
22916    - Reduce down accuracy of timestamps in hidden service descriptors.
22917      Implements part of proposal 222.
22918
22919  o Minor features (config options):
22920    - Config (torrc) lines now handle fingerprints which are missing
22921      their initial '$'. Resolves ticket 4341; improvement over 0.0.9pre5.
22922    - Support a --dump-config option to print some or all of the
22923      configured options. Mainly useful for debugging the command-line
22924      option parsing code. Helps resolve ticket 4647.
22925    - Raise awareness of safer logging: notify user of potentially
22926      unsafe config options, like logging more verbosely than severity
22927      "notice" or setting SafeLogging to 0. Resolves ticket 5584.
22928    - Add a new configuration option TestingV3AuthVotingStartOffset
22929      that bootstraps a network faster by changing the timing for
22930      consensus votes. Addresses ticket 8532.
22931    - Add a new torrc option "ServerTransportOptions" that allows
22932      bridge operators to pass configuration parameters to their
22933      pluggable transports. Resolves ticket 8929.
22934    - The config (torrc) file now accepts bandwidth and space limits in
22935      bits as well as bytes. (Anywhere that you can say "2 Kilobytes",
22936      you can now say "16 kilobits", and so on.) Resolves ticket 9214.
22937      Patch by CharlieB.
22938
22939  o Minor features (build):
22940    - Add support for `--library-versions` flag. Implements ticket 6384.
22941    - Return the "unexpected sendme" warnings to a warn severity, but make
22942      them rate limited, to help diagnose ticket 8093.
22943    - Detect a missing asciidoc, and warn the user about it, during
22944      configure rather than at build time. Fixes issue 6506. Patch from
22945      Arlo Breault.
22946
22947  o Minor features (other):
22948    - Use the SOCK_NONBLOCK socket type, if supported, to open nonblocking
22949      sockets in a single system call. Implements ticket 5129.
22950    - Log current accounting state (bytes sent and received + remaining
22951      time for the current accounting period) in the relay's heartbeat
22952      message. Implements ticket 5526; patch from Peter Retzlaff.
22953    - Implement the TRANSPORT_LAUNCHED control port event that
22954      notifies controllers about new launched pluggable
22955      transports. Resolves ticket 5609.
22956    - If we're using the pure-C 32-bit curve25519_donna implementation
22957      of curve25519, build it with the -fomit-frame-pointer option to
22958      make it go faster on register-starved hosts. This improves our
22959      handshake performance by about 6% on i386 hosts without nacl.
22960      Closes ticket 8109.
22961    - Update to the September 4 2013 Maxmind GeoLite Country database.
22962
22963  o Minor bugfixes:
22964    - Set the listen() backlog limit to the largest actually supported
22965      on the system, not to the value in a header file. Fixes bug 9716;
22966      bugfix on every released Tor.
22967    - No longer accept malformed http headers when parsing urls from
22968      headers. Now we reply with Bad Request ("400"). Fixes bug 2767;
22969      bugfix on 0.0.6pre1.
22970    - In munge_extrainfo_into_routerinfo(), check the return value of
22971      memchr(). This would have been a serious issue if we ever passed
22972      it a non-extrainfo. Fixes bug 8791; bugfix on 0.2.0.6-alpha. Patch
22973      from Arlo Breault.
22974    - On the chance that somebody manages to build Tor on a
22975      platform where time_t is unsigned, correct the way that
22976      microdesc_add_to_cache() handles negative time arguments.
22977      Fixes bug 8042; bugfix on 0.2.3.1-alpha.
22978    - Reject relative control socket paths and emit a warning. Previously,
22979      single-component control socket paths would be rejected, but Tor
22980      would not log why it could not validate the config. Fixes bug 9258;
22981      bugfix on 0.2.3.16-alpha.
22982
22983  o Minor bugfixes (command line):
22984    - Use a single command-line parser for parsing torrc options on the
22985      command line and for finding special command-line options to avoid
22986      inconsistent behavior for torrc option arguments that have the same
22987      names as command-line options. Fixes bugs 4647 and 9578; bugfix on
22988      0.0.9pre5.
22989    - No longer allow 'tor --hash-password' with no arguments. Fixes bug
22990      9573; bugfix on 0.0.9pre5.
22991
22992  o Minor fixes (build, auxiliary programs):
22993    - Stop preprocessing the "torify" script with autoconf, since
22994      it no longer refers to LOCALSTATEDIR. Fixes bug 5505; patch
22995      from Guilhem.
22996    - The tor-fw-helper program now follows the standard convention and
22997      exits with status code "0" on success. Fixes bug 9030; bugfix on
22998      0.2.3.1-alpha. Patch by Arlo Breault.
22999    - Corrected ./configure advice for what openssl dev package you should
23000      install on Debian. Fixes bug 9207; bugfix on 0.2.0.1-alpha.
23001
23002  o Minor code improvements:
23003    - Remove constants and tests for PKCS1 padding; it's insecure and
23004      shouldn't be used for anything new. Fixes bug 8792; patch
23005      from Arlo Breault.
23006    - Remove instances of strcpy() from the unit tests. They weren't
23007      hurting anything, since they were only in the unit tests, but it's
23008      embarrassing to have strcpy() in the code at all, and some analysis
23009      tools don't like it. Fixes bug 8790; bugfix on 0.2.3.6-alpha and
23010      0.2.3.8-alpha. Patch from Arlo Breault.
23011
23012  o Removed features:
23013    - Remove migration code from when we renamed the "cached-routers"
23014      file to "cached-descriptors" back in 0.2.0.8-alpha. This
23015      incidentally resolves ticket 6502 by cleaning up the related code
23016      a bit. Patch from Akshay Hebbar.
23017
23018  o Code simplification and refactoring:
23019    - Extract the common duplicated code for creating a subdirectory
23020      of the data directory and writing to a file in it. Fixes ticket
23021      4282; patch from Peter Retzlaff.
23022    - Since OpenSSL 0.9.7, the i2d_*() functions support allocating output
23023      buffer. Avoid calling twice: i2d_RSAPublicKey(), i2d_DHparams(),
23024      i2d_X509(), and i2d_PublicKey(). Resolves ticket 5170.
23025    - Add a set of accessor functions for the circuit timeout data
23026      structure. Fixes ticket 6153; patch from "piet".
23027    - Clean up exit paths from connection_listener_new(). Closes ticket
23028      8789. Patch from Arlo Breault.
23029    - Since we rely on OpenSSL 0.9.8 now, we can use EVP_PKEY_cmp()
23030      and drop our own custom pkey_eq() implementation. Fixes bug 9043.
23031    - Use a doubly-linked list to implement the global circuit list.
23032      Resolves ticket 9108. Patch from Marek Majkowski.
23033    - Remove contrib/id_to_fp.c since it wasn't used anywhere.
23034
23035
23036Changes in version 0.2.4.17-rc - 2013-09-05
23037  Tor 0.2.4.17-rc is the third release candidate for the Tor 0.2.4.x
23038  series. It adds an emergency step to help us tolerate the massive
23039  influx of users: 0.2.4 clients using the new (faster and safer) "NTor"
23040  circuit-level handshakes now effectively jump the queue compared to
23041  the 0.2.3 clients using "TAP" handshakes. This release also fixes a
23042  big bug hindering bridge reachability tests.
23043
23044  o Major features:
23045    - Relays now process the new "NTor" circuit-level handshake requests
23046      with higher priority than the old "TAP" circuit-level handshake
23047      requests. We still process some TAP requests to not totally starve
23048      0.2.3 clients when NTor becomes popular. A new consensus parameter
23049      "NumNTorsPerTAP" lets us tune the balance later if we need to.
23050      Implements ticket 9574.
23051
23052  o Major bugfixes:
23053    - If the circuit build timeout logic is disabled (via the consensus,
23054      or because we are an authority), then don't build testing circuits.
23055      Fixes bug 9657; bugfix on 0.2.2.14-alpha.
23056    - Bridges now send AUTH_CHALLENGE cells during their v3 handshakes;
23057      previously they did not, which prevented them from receiving
23058      successful connections from relays for self-test or bandwidth
23059      testing. Also, when a relay is extending a circuit to a bridge,
23060      it needs to send a NETINFO cell, even when the bridge hasn't sent
23061      an AUTH_CHALLENGE cell. Fixes bug 9546; bugfix on 0.2.3.6-alpha.
23062    - If the time to download the next old-style networkstatus is in
23063      the future, do not decline to consider whether to download the
23064      next microdescriptor networkstatus. Fixes bug 9564; bugfix on
23065      0.2.3.14-alpha.
23066
23067  o Minor bugfixes:
23068    - Avoid double-closing the listener socket in our socketpair()
23069      replacement (used on Windows) in the case where the addresses on
23070      our opened sockets don't match what we expected. Fixes bug 9400;
23071      bugfix on 0.0.2pre7. Found by Coverity.
23072
23073  o Minor fixes (config options):
23074    - Avoid overflows when the user sets MaxCircuitDirtiness to a
23075      ridiculously high value, by imposing a (ridiculously high) 30-day
23076      maximum on MaxCircuitDirtiness.
23077    - Fix the documentation of HeartbeatPeriod to say that the heartbeat
23078      message is logged at notice, not at info.
23079    - Warn and fail if a server is configured not to advertise any
23080      ORPorts at all. (We need *something* to put in our descriptor,
23081      or we just won't work.)
23082
23083  o Minor features:
23084    - Track how many "TAP" and "NTor" circuit handshake requests we get,
23085      and how many we complete, and log it every hour to help relay
23086      operators follow trends in network load. Addresses ticket 9658.
23087    - Update to the August 7 2013 Maxmind GeoLite Country database.
23088
23089
23090Changes in version 0.2.4.16-rc - 2013-08-10
23091  Tor 0.2.4.16-rc is the second release candidate for the Tor 0.2.4.x
23092  series. It fixes several crash bugs in the 0.2.4 branch.
23093
23094  o Major bugfixes:
23095    - Fix a bug in the voting algorithm that could yield incorrect results
23096      when a non-naming authority declared too many flags. Fixes bug 9200;
23097      bugfix on 0.2.0.3-alpha.
23098    - Fix an uninitialized read that could in some cases lead to a remote
23099      crash while parsing INTRODUCE2 cells. Bugfix on 0.2.4.1-alpha.
23100      Anybody running a hidden service on the experimental 0.2.4.x
23101      branch should upgrade. (This is, so far as we know, unrelated to
23102      the recent news.)
23103    - Avoid an assertion failure when processing DNS replies without the
23104      answer types we expected. Fixes bug 9337; bugfix on 0.2.4.7-alpha.
23105    - Avoid a crash when using --hash-password. Fixes bug 9295; bugfix on
23106      0.2.4.15-rc. Found by stem integration tests.
23107
23108  o Minor bugfixes:
23109    - Fix an invalid memory read that occurred when a pluggable
23110      transport proxy failed its configuration protocol.
23111      Fixes bug 9288; bugfix on 0.2.4.1-alpha.
23112    - When evaluating whether to use a connection that we haven't
23113      decided is canonical using a recent link protocol version,
23114      decide that it's canonical only if it used address _does_
23115      match the desired address. Fixes bug 9309; bugfix on
23116      0.2.4.4-alpha. Reported by skruffy.
23117    - Make the default behavior of NumDirectoryGuards be to track
23118      NumEntryGuards. Now a user who changes only NumEntryGuards will get
23119      the behavior she expects. Fixes bug 9354; bugfix on 0.2.4.8-alpha.
23120    - Fix a spurious compilation warning with some older versions of
23121      GCC on FreeBSD. Fixes bug 9254; bugfix on 0.2.4.14-alpha.
23122
23123  o Minor features:
23124    - Update to the July 3 2013 Maxmind GeoLite Country database.
23125
23126
23127Changes in version 0.2.4.15-rc - 2013-07-01
23128  Tor 0.2.4.15-rc is the first release candidate for the Tor 0.2.4.x
23129  series. It fixes a few smaller bugs, but generally appears stable.
23130  Please test it and let us know whether it is!
23131
23132  o Major bugfixes:
23133    - When receiving a new configuration file via the control port's
23134      LOADCONF command, do not treat the defaults file as absent.
23135      Fixes bug 9122; bugfix on 0.2.3.9-alpha.
23136
23137  o Minor features:
23138    - Issue a warning when running with the bufferevents backend enabled.
23139      It's still not stable, and people should know that they're likely
23140      to hit unexpected problems. Closes ticket 9147.
23141
23142
23143Changes in version 0.2.4.14-alpha - 2013-06-18
23144  Tor 0.2.4.14-alpha fixes a pair of client guard enumeration problems
23145  present in 0.2.4.13-alpha.
23146
23147  o Major bugfixes:
23148    - When we have too much memory queued in circuits (according to a new
23149      MaxMemInCellQueues option), close the circuits consuming the most
23150      memory. This prevents us from running out of memory as a relay if
23151      circuits fill up faster than they can be drained. Fixes bug 9063;
23152      bugfix on the 54th commit of Tor. This bug is a further fix beyond
23153      bug 6252, whose fix was merged into 0.2.3.21-rc.
23154
23155      This change also fixes an earlier approach taken in 0.2.4.13-alpha,
23156      where we tried to solve this issue simply by imposing an upper limit
23157      on the number of queued cells for a single circuit. That approach
23158      proved to be problematic, since there are ways to provoke clients to
23159      send a number of cells in excess of any such reasonable limit. Fixes
23160      bug 9072; bugfix on 0.2.4.13-alpha.
23161
23162    - Limit hidden service descriptors to at most ten introduction
23163      points, to slow one kind of guard enumeration. Fixes bug 9002;
23164      bugfix on 0.1.1.11-alpha.
23165
23166
23167Changes in version 0.2.4.13-alpha - 2013-06-14
23168  Tor 0.2.4.13-alpha fixes a variety of potential remote crash
23169  vulnerabilities, makes socks5 username/password circuit isolation
23170  actually actually work (this time for sure!), and cleans up a bunch
23171  of other issues in preparation for a release candidate.
23172
23173  o Major bugfixes (robustness):
23174    - Close any circuit that has too many cells queued on it. Fixes
23175      bug 9063; bugfix on the 54th commit of Tor. This bug is a further
23176      fix beyond bug 6252, whose fix was merged into 0.2.3.21-rc.
23177    - Prevent the get_freelists() function from running off the end of
23178      the list of freelists if it somehow gets an unrecognized
23179      allocation. Fixes bug 8844; bugfix on 0.2.0.16-alpha. Reported by
23180      eugenis.
23181    - Avoid an assertion failure on OpenBSD (and perhaps other BSDs)
23182      when an exit connection with optimistic data succeeds immediately
23183      rather than returning EINPROGRESS. Fixes bug 9017; bugfix on
23184      0.2.3.1-alpha.
23185    - Fix a directory authority crash bug when building a consensus
23186      using an older consensus as its basis. Fixes bug 8833. Bugfix
23187      on 0.2.4.12-alpha.
23188
23189  o Major bugfixes:
23190    - Avoid a memory leak where we would leak a consensus body when we
23191      find that a consensus which we couldn't previously verify due to
23192      missing certificates is now verifiable. Fixes bug 8719; bugfix
23193      on 0.2.0.10-alpha.
23194    - We used to always request authority certificates by identity digest,
23195      meaning we'd get the newest one even when we wanted one with a
23196      different signing key. Then we would complain about being given
23197      a certificate we already had, and never get the one we really
23198      wanted. Now we use the "fp-sk/" resource as well as the "fp/"
23199      resource to request the one we want. Fixes bug 5595; bugfix on
23200      0.2.0.8-alpha.
23201    - Follow the socks5 protocol when offering username/password
23202      authentication. The fix for bug 8117 exposed this bug, and it
23203      turns out real-world applications like Pidgin do care. Bugfix on
23204      0.2.3.2-alpha; fixes bug 8879.
23205    - Prevent failures on Windows Vista and later when rebuilding the
23206      microdescriptor cache. Diagnosed by Robert Ransom. Fixes bug 8822;
23207      bugfix on 0.2.4.12-alpha.
23208
23209  o Minor bugfixes:
23210    - Fix an impossible buffer overrun in the AES unit tests. Fixes
23211      bug 8845; bugfix on 0.2.0.7-alpha. Found by eugenis.
23212    - If for some reason we fail to write a microdescriptor while
23213      rebuilding the cache, do not let the annotations from that
23214      microdescriptor linger in the cache file, and do not let the
23215      microdescriptor stay recorded as present in its old location.
23216      Fixes bug 9047; bugfix on 0.2.2.6-alpha.
23217    - Fix a memory leak that would occur whenever a configuration
23218      option changed. Fixes bug 8718; bugfix on 0.2.3.3-alpha.
23219    - Paste the description for PathBias parameters from the man
23220      page into or.h, so the code documents them too. Fixes bug 7982;
23221      bugfix on 0.2.3.17-beta and 0.2.4.8-alpha.
23222    - Relays now treat a changed IPv6 ORPort as sufficient reason to
23223      publish an updated descriptor. Fixes bug 6026; bugfix on
23224      0.2.4.1-alpha.
23225    - When launching a resolve request on behalf of an AF_UNIX control
23226      socket, omit the address field of the new entry connection, used in
23227      subsequent controller events, rather than letting tor_dup_addr()
23228      set it to "<unknown address type>". Fixes bug 8639; bugfix on
23229      0.2.4.12-alpha.
23230
23231  o Minor bugfixes (log messages):
23232    - Fix a scaling issue in the path bias accounting code that
23233      resulted in "Bug:" log messages from either
23234      pathbias_scale_close_rates() or pathbias_count_build_success().
23235      This represents a bugfix on a previous bugfix: the original fix
23236      attempted in 0.2.4.10-alpha was incomplete. Fixes bug 8235; bugfix
23237      on 0.2.4.1-alpha.
23238    - Give a less useless error message when the user asks for an IPv4
23239      address on an IPv6-only port, or vice versa. Fixes bug 8846; bugfix
23240      on 0.2.4.7-alpha.
23241
23242  o Minor features:
23243    - Downgrade "unexpected SENDME" warnings to protocol-warn for 0.2.4.x,
23244      to tolerate bug 8093 for now.
23245    - Add an "ignoring-advertised-bws" boolean to the flag-threshold lines
23246      in directory authority votes to describe whether they have enough
23247      measured bandwidths to ignore advertised (relay descriptor)
23248      bandwidth claims. Resolves ticket 8711.
23249    - Update to the June 5 2013 Maxmind GeoLite Country database.
23250
23251  o Removed documentation:
23252    - Remove some of the older contents of doc/ as obsolete; move others
23253      to torspec.git. Fixes bug 8965.
23254
23255  o Code simplification and refactoring:
23256    - Avoid using character buffers when constructing most directory
23257      objects: this approach was unwieldy and error-prone. Instead,
23258      build smartlists of strings, and concatenate them when done.
23259
23260
23261Changes in version 0.2.4.12-alpha - 2013-04-18
23262  Tor 0.2.4.12-alpha moves Tor forward on several fronts: it starts the
23263  process for lengthening the guard rotation period, makes directory
23264  authority opinions in the consensus a bit less gameable, makes socks5
23265  username/password circuit isolation actually work, and fixes a wide
23266  variety of other issues.
23267
23268  o Major features:
23269    - Raise the default time that a client keeps an entry guard from
23270      "1-2 months" to "2-3 months", as suggested by Tariq Elahi's WPES
23271      2012 paper. (We would make it even longer, but we need better client
23272      load balancing first.) Also, make the guard lifetime controllable
23273      via a new GuardLifetime torrc option and a GuardLifetime consensus
23274      parameter. Start of a fix for bug 8240; bugfix on 0.1.1.11-alpha.
23275    - Directory authorities now prefer using measured bandwidths to
23276      advertised ones when computing flags and thresholds. Resolves
23277      ticket 8273.
23278    - Directory authorities that have more than a threshold number
23279      of relays with measured bandwidths now treat relays with unmeasured
23280      bandwidths as having bandwidth 0. Resolves ticket 8435.
23281
23282  o Major bugfixes (assert / resource use):
23283    - Avoid a bug where our response to TLS renegotiation under certain
23284      network conditions could lead to a busy-loop, with 100% CPU
23285      consumption. Fixes bug 5650; bugfix on 0.2.0.16-alpha.
23286    - Avoid an assertion when we discover that we'd like to write a cell
23287      onto a closing connection: just discard the cell. Fixes another
23288      case of bug 7350; bugfix on 0.2.4.4-alpha.
23289
23290  o Major bugfixes (client-side privacy):
23291    - When we mark a circuit as unusable for new circuits, have it
23292      continue to be unusable for new circuits even if MaxCircuitDirtiness
23293      is increased too much at the wrong time, or the system clock jumps
23294      backwards. Fixes bug 6174; bugfix on 0.0.2pre26.
23295    - If ClientDNSRejectInternalAddresses ("do not believe DNS queries
23296      which have resolved to internal addresses") is set, apply that
23297      rule to IPv6 as well. Fixes bug 8475; bugfix on 0.2.0.7-alpha.
23298    - When an exit relay rejects a stream with reason "exit policy", but
23299      we only know an exit policy summary (e.g. from the microdesc
23300      consensus) for it, do not mark the relay as useless for all exiting.
23301      Instead, mark just the circuit as unsuitable for that particular
23302      address. Fixes part of bug 7582; bugfix on 0.2.3.2-alpha.
23303    - Allow applications to get proper stream isolation with
23304      IsolateSOCKSAuth. Many SOCKS5 clients that want to offer
23305      username/password authentication also offer "no authentication". Tor
23306      had previously preferred "no authentication", so the applications
23307      never actually sent Tor their auth details. Now Tor selects
23308      username/password authentication if it's offered. You can disable
23309      this behavior on a per-SOCKSPort basis via PreferSOCKSNoAuth. Fixes
23310      bug 8117; bugfix on 0.2.3.3-alpha.
23311
23312  o Major bugfixes (other):
23313    - When unable to find any working directory nodes to use as a
23314      directory guard, give up rather than adding the same non-working
23315      nodes to the directory guard list over and over. Fixes bug 8231;
23316      bugfix on 0.2.4.8-alpha.
23317
23318  o Minor features:
23319    - Reject as invalid most directory objects containing a NUL.
23320      Belt-and-suspender fix for bug 8037.
23321    - In our testsuite, create temporary directories with a bit more
23322      entropy in their name to make name collisions less likely. Fixes
23323      bug 8638.
23324    - Add CACHED keyword to ADDRMAP events in the control protocol
23325      to indicate whether a DNS result will be cached or not. Resolves
23326      ticket 8596.
23327    - Update to the April 3 2013 Maxmind GeoLite Country database.
23328
23329  o Minor features (build):
23330    - Detect and reject attempts to build Tor with threading support
23331      when OpenSSL has been compiled without threading support.
23332      Fixes bug 6673.
23333    - Clarify that when autoconf is checking for nacl, it is checking
23334      specifically for nacl with a fast curve25519 implementation.
23335      Fixes bug 8014.
23336    - Warn if building on a platform with an unsigned time_t: there
23337      are too many places where Tor currently assumes that time_t can
23338      hold negative values. We'd like to fix them all, but probably
23339      some will remain.
23340
23341  o Minor bugfixes (build):
23342    - Fix some bugs in tor-fw-helper-natpmp when trying to build and
23343      run it on Windows. More bugs likely remain. Patch from Gisle Vanem.
23344      Fixes bug 7280; bugfix on 0.2.3.1-alpha.
23345    - Add the old src/or/micro-revision.i filename to CLEANFILES.
23346      On the off chance that somebody has one, it will go away as soon
23347      as they run "make clean". Fix for bug 7143; bugfix on 0.2.4.1-alpha.
23348    - Build Tor correctly on 32-bit platforms where the compiler can build
23349      but not run code using the "uint128_t" construction. Fixes bug 8587;
23350      bugfix on 0.2.4.8-alpha.
23351    - Fix compilation warning with some versions of clang that would
23352      prefer the -Wswitch-enum compiler flag to warn about switch
23353      statements with missing enum values, even if those switch
23354      statements have a "default:" statement. Fixes bug 8598; bugfix
23355      on 0.2.4.10-alpha.
23356
23357  o Minor bugfixes (protocol):
23358    - Fix the handling of a TRUNCATE cell when it arrives while the
23359      circuit extension is in progress. Fixes bug 7947; bugfix on 0.0.7.1.
23360    - Fix a misframing issue when reading the version numbers in a
23361      VERSIONS cell. Previously we would recognize [00 01 00 02] as
23362      'version 1, version 2, and version 0x100', when it should have
23363      only included versions 1 and 2. Fixes bug 8059; bugfix on
23364      0.2.0.10-alpha. Reported pseudonymously.
23365    - Make the format and order of STREAM events for DNS lookups
23366      consistent among the various ways to launch DNS lookups. Fixes
23367      bug 8203; bugfix on 0.2.0.24-rc. Patch by "Desoxy".
23368    - Correct our check for which versions of Tor support the EXTEND2
23369      cell. We had been willing to send it to Tor 0.2.4.7-alpha and
23370      later, when support was really added in version 0.2.4.8-alpha.
23371      Fixes bug 8464; bugfix on 0.2.4.8-alpha.
23372
23373  o Minor bugfixes (other):
23374    - Correctly store microdescriptors and extrainfo descriptors with
23375      an internal NUL byte. Fixes bug 8037; bugfix on 0.2.0.1-alpha.
23376      Bug reported by "cypherpunks".
23377    - Increase the width of the field used to remember a connection's
23378      link protocol version to two bytes. Harmless for now, since the
23379      only currently recognized versions are one byte long. Reported
23380      pseudonymously. Fixes bug 8062; bugfix on 0.2.0.10-alpha.
23381    - If the state file's path bias counts are invalid (presumably from a
23382      buggy Tor prior to 0.2.4.10-alpha), make them correct. Also add
23383      additional checks and log messages to the scaling of Path Bias
23384      counts, in case there still are remaining issues with scaling.
23385      Should help resolve bug 8235.
23386    - Eliminate several instances where we use "Nickname=ID" to refer to
23387      nodes in logs. Use "Nickname (ID)" instead. (Elsewhere, we still use
23388      "$ID=Nickname", which is also acceptable.) Fixes bug 7065. Bugfix
23389      on 0.2.3.21-rc, 0.2.4.5-alpha, 0.2.4.8-alpha, and 0.2.4.10-alpha.
23390
23391  o Minor bugfixes (syscalls):
23392    - Always check the return values of functions fcntl() and
23393      setsockopt(). We don't believe these are ever actually failing in
23394      practice, but better safe than sorry. Also, checking these return
23395      values should please analysis tools like Coverity. Patch from
23396      'flupzor'. Fixes bug 8206; bugfix on all versions of Tor.
23397    - Use direct writes rather than stdio when building microdescriptor
23398      caches, in an attempt to mitigate bug 8031, or at least make it
23399      less common.
23400
23401  o Minor bugfixes (config):
23402    - When rejecting a configuration because we were unable to parse a
23403      quoted string, log an actual error message. Fixes bug 7950; bugfix
23404      on 0.2.0.16-alpha.
23405    - Behave correctly when the user disables LearnCircuitBuildTimeout
23406      but doesn't tell us what they would like the timeout to be. Fixes
23407      bug 6304; bugfix on 0.2.2.14-alpha.
23408    - When autodetecting the number of CPUs, use the number of available
23409      CPUs in preference to the number of configured CPUs. Inform the
23410      user if this reduces the number of available CPUs. Fixes bug 8002;
23411      bugfix on 0.2.3.1-alpha.
23412    - Make it an error when you set EntryNodes but disable UseGuardNodes,
23413      since it will (surprisingly to some users) ignore EntryNodes. Fixes
23414      bug 8180; bugfix on 0.2.3.11-alpha.
23415    - Allow TestingTorNetworks to override the 4096-byte minimum for
23416      the Fast threshold. Otherwise they can't bootstrap until they've
23417      observed more traffic. Fixes bug 8508; bugfix on 0.2.4.10-alpha.
23418    - Fix some logic errors when the user manually overrides the
23419      PathsNeededToBuildCircuits option in torrc. Fixes bug 8599; bugfix
23420      on 0.2.4.10-alpha.
23421
23422  o Minor bugfixes (log messages to help diagnose bugs):
23423    - If we fail to free a microdescriptor because of bug 7164, log
23424      the filename and line number from which we tried to free it.
23425    - Add another diagnostic to the heartbeat message: track and log
23426      overhead that TLS is adding to the data we write. If this is
23427      high, we are sending too little data to SSL_write at a time.
23428      Diagnostic for bug 7707.
23429    - Add more detail to a log message about relaxed timeouts, to help
23430      track bug 7799.
23431    - Warn more aggressively when flushing microdescriptors to a
23432      microdescriptor cache fails, in an attempt to mitigate bug 8031,
23433      or at least make it more diagnosable.
23434    - Improve debugging output to help track down bug 8185 ("Bug:
23435      outgoing relay cell has n_chan==NULL. Dropping.")
23436    - Log the purpose of a path-bias testing circuit correctly.
23437      Improves a log message from bug 8477; bugfix on 0.2.4.8-alpha.
23438
23439  o Minor bugfixes (0.2.4.x log messages that were too noisy):
23440    - Don't attempt to relax the timeout of already opened 1-hop circuits.
23441      They might never timeout. This should eliminate some/all cases of
23442      the relaxed timeout log message.
23443    - Use circuit creation time for network liveness evaluation. This
23444      should eliminate warning log messages about liveness caused
23445      by changes in timeout evaluation. Fixes bug 6572; bugfix on
23446      0.2.4.8-alpha.
23447    - Reduce a path bias length check from notice to info. The message
23448      is triggered when creating controller circuits. Fixes bug 8196;
23449      bugfix on 0.2.4.8-alpha.
23450    - Fix a path state issue that triggered a notice during relay startup.
23451      Fixes bug 8320; bugfix on 0.2.4.10-alpha.
23452    - Reduce occurrences of warns about circuit purpose in
23453      connection_ap_expire_building(). Fixes bug 8477; bugfix on
23454      0.2.4.11-alpha.
23455
23456  o Minor bugfixes (pre-0.2.4.x log messages that were too noisy):
23457    - If we encounter a write failure on a SOCKS connection before we
23458      finish our SOCKS handshake, don't warn that we closed the
23459      connection before we could send a SOCKS reply. Fixes bug 8427;
23460      bugfix on 0.1.0.1-rc.
23461    - Correctly recognize that [::1] is a loopback address. Fixes
23462      bug 8377; bugfix on 0.2.1.3-alpha.
23463    - Fix a directory authority warn caused when we have a large amount
23464      of badexit bandwidth. Fixes bug 8419; bugfix on 0.2.2.10-alpha.
23465    - Don't log inappropriate heartbeat messages when hibernating: a
23466      hibernating node is _expected_ to drop out of the consensus,
23467      decide it isn't bootstrapped, and so forth. Fixes bug 7302;
23468      bugfix on 0.2.3.1-alpha.
23469    - Don't complain about bootstrapping problems while hibernating.
23470      These complaints reflect a general code problem, but not one
23471      with any problematic effects (no connections are actually
23472      opened). Fixes part of bug 7302; bugfix on 0.2.3.2-alpha.
23473
23474  o Documentation fixes:
23475    - Update tor-fw-helper.1.txt and tor-fw-helper.c to make option
23476      names match. Fixes bug 7768.
23477    - Make the torify manpage no longer refer to tsocks; torify hasn't
23478      supported tsocks since 0.2.3.14-alpha.
23479    - Make the tor manpage no longer reference tsocks.
23480    - Fix the GeoIPExcludeUnknown documentation to refer to
23481      ExcludeExitNodes rather than the currently nonexistent
23482      ExcludeEntryNodes. Spotted by "hamahangi" on tor-talk.
23483
23484  o Removed files:
23485    - The tor-tsocks.conf is no longer distributed or installed. We
23486      recommend that tsocks users use torsocks instead. Resolves
23487      ticket 8290.
23488
23489
23490Changes in version 0.2.4.11-alpha - 2013-03-11
23491  Tor 0.2.4.11-alpha makes relay measurement by directory authorities
23492  more robust, makes hidden service authentication work again, and
23493  resolves a DPI fingerprint for Tor's SSL transport.
23494
23495  o Major features (directory authorities):
23496    - Directory authorities now support a new consensus method (17)
23497      where they cap the published bandwidth of servers for which
23498      insufficient bandwidth measurements exist. Fixes part of bug 2286.
23499    - Directory authorities that set "DisableV2DirectoryInfo_ 1" no longer
23500      serve any v2 directory information. Now we can test disabling the
23501      old deprecated v2 directory format, and see whether doing so has
23502      any effect on network load. Begins to fix bug 6783.
23503    - Directory authorities now include inside each vote a statement of
23504      the performance thresholds they used when assigning flags.
23505      Implements ticket 8151.
23506
23507  o Major bugfixes (directory authorities):
23508    - Stop marking every relay as having been down for one hour every
23509      time we restart a directory authority. These artificial downtimes
23510      were messing with our Stable and Guard flag calculations. Fixes
23511      bug 8218 (introduced by the fix for 1035). Bugfix on 0.2.2.23-alpha.
23512
23513  o Major bugfixes (hidden services):
23514    - Allow hidden service authentication to succeed again. When we
23515      refactored the hidden service introduction code back
23516      in 0.2.4.1-alpha, we didn't update the code that checks
23517      whether authentication information is present, causing all
23518      authentication checks to return "false". Fix for bug 8207; bugfix
23519      on 0.2.4.1-alpha. Found by Coverity; this is CID 718615.
23520
23521  o Minor features (relays, bridges):
23522    - Make bridge relays check once a minute for whether their IP
23523      address has changed, rather than only every 15 minutes. Resolves
23524      bugs 1913 and 1992.
23525    - Refactor resolve_my_address() so it returns the method by which we
23526      decided our public IP address (explicitly configured, resolved from
23527      explicit hostname, guessed from interfaces, learned by gethostname).
23528      Now we can provide more helpful log messages when a relay guesses
23529      its IP address incorrectly (e.g. due to unexpected lines in
23530      /etc/hosts). Resolves ticket 2267.
23531    - Teach bridge-using clients to avoid 0.2.2 bridges when making
23532      microdescriptor-related dir requests, and only fall back to normal
23533      descriptors if none of their bridges can handle microdescriptors
23534      (as opposed to the fix in ticket 4013, which caused them to fall
23535      back to normal descriptors if *any* of their bridges preferred
23536      them). Resolves ticket 4994.
23537    - Randomize the lifetime of our SSL link certificate, so censors can't
23538      use the static value for filtering Tor flows. Resolves ticket 8443;
23539      related to ticket 4014 which was included in 0.2.2.33.
23540    - Support a new version of the link protocol that allows 4-byte circuit
23541      IDs. Previously, circuit IDs were limited to 2 bytes, which presented
23542      a possible resource exhaustion issue. Closes ticket 7351; implements
23543      proposal 214.
23544
23545  o Minor features (portability):
23546    - Tweak the curve25519-donna*.c implementations to tolerate systems
23547      that lack stdint.h. Fixes bug 3894; bugfix on 0.2.4.8-alpha.
23548    - Use Ville Laurikari's implementation of AX_CHECK_SIGN() to determine
23549      the signs of types during autoconf. This is better than our old
23550      approach, which didn't work when cross-compiling.
23551    - Detect the sign of enum values, rather than assuming that MSC is the
23552      only compiler where enum types are all signed. Fixes bug 7727;
23553      bugfix on 0.2.4.10-alpha.
23554
23555  o Minor features (other):
23556    - Say "KBytes" rather than "KB" in the man page (for various values
23557      of K), to further reduce confusion about whether Tor counts in
23558      units of memory or fractions of units of memory. Resolves ticket 7054.
23559    - Clear the high bit on curve25519 public keys before passing them to
23560      our backend, in case we ever wind up using a backend that doesn't do
23561      so itself. If we used such a backend, and *didn't* clear the high bit,
23562      we could wind up in a situation where users with such backends would
23563      be distinguishable from users without. Fixes bug 8121; bugfix on
23564      0.2.4.8-alpha.
23565    - Update to the March 6 2013 Maxmind GeoLite Country database.
23566
23567  o Minor bugfixes (clients):
23568    - When we receive a RELAY_END cell with the reason DONE, or with no
23569      reason, before receiving a RELAY_CONNECTED cell, report the SOCKS
23570      status as "connection refused". Previously we reported these cases
23571      as success but then immediately closed the connection. Fixes bug
23572      7902; bugfix on 0.1.0.1-rc. Reported by "oftc_must_be_destroyed".
23573    - Downgrade an assertion in connection_ap_expire_beginning to an
23574      LD_BUG message. The fix for bug 8024 should prevent this message
23575      from displaying, but just in case, a warn that we can diagnose
23576      is better than more assert crashes. Fixes bug 8065; bugfix on
23577      0.2.4.8-alpha.
23578    - Lower path use bias thresholds to .80 for notice and .60 for warn.
23579      Also make the rate limiting flags for the path use bias log messages
23580      independent from the original path bias flags. Fixes bug 8161;
23581      bugfix on 0.2.4.10-alpha.
23582
23583  o Minor bugfixes (relays):
23584    - Stop trying to resolve our hostname so often (e.g. every time we
23585      think about doing a directory fetch). Now we reuse the cached
23586      answer in some cases. Fixes bugs 1992 (bugfix on 0.2.0.20-rc)
23587      and 2410 (bugfix on 0.1.2.2-alpha).
23588    - Stop sending a stray "(null)" in some cases for the server status
23589      "EXTERNAL_ADDRESS" controller event. Resolves bug 8200; bugfix
23590      on 0.1.2.6-alpha.
23591    - When choosing which stream on a formerly stalled circuit to wake
23592      first, make better use of the platform's weak RNG. Previously,
23593      we had been using the % ("modulo") operator to try to generate a
23594      1/N chance of picking each stream, but this behaves badly with
23595      many platforms' choice of weak RNG. Fixes bug 7801; bugfix on
23596      0.2.2.20-alpha.
23597    - Use our own weak RNG when we need a weak RNG. Windows's rand() and
23598      Irix's random() only return 15 bits; Solaris's random() returns more
23599      bits but its RAND_MAX says it only returns 15, and so on. Motivated
23600      by the fix for bug 7801; bugfix on 0.2.2.20-alpha.
23601
23602  o Minor bugfixes (directory authorities):
23603    - Directory authorities now use less space when formatting identical
23604      microdescriptor lines in directory votes. Fixes bug 8158; bugfix
23605      on 0.2.4.1-alpha.
23606
23607  o Minor bugfixes (memory leaks spotted by Coverity -- bug 7816):
23608    - Avoid leaking memory if we fail to compute a consensus signature
23609      or we generate a consensus we can't parse. Bugfix on 0.2.0.5-alpha.
23610    - Fix a memory leak when receiving headers from an HTTPS proxy. Bugfix
23611      on 0.2.1.1-alpha.
23612    - Fix a memory leak during safe-cookie controller authentication.
23613      Bugfix on 0.2.3.13-alpha.
23614    - Avoid memory leak of IPv6 policy content if we fail to format it into
23615      a router descriptor. Bugfix on 0.2.4.7-alpha.
23616
23617  o Minor bugfixes (other code correctness issues):
23618    - Avoid a crash if we fail to generate an extrainfo descriptor.
23619      Fixes bug 8208; bugfix on 0.2.3.16-alpha. Found by Coverity;
23620      this is CID 718634.
23621    - When detecting the largest possible file descriptor (in order to
23622      close all file descriptors when launching a new program), actually
23623      use _SC_OPEN_MAX. The old code for doing this was very, very broken.
23624      Fixes bug 8209; bugfix on 0.2.3.1-alpha. Found by Coverity; this
23625      is CID 743383.
23626    - Fix a copy-and-paste error when adding a missing A1 to a routerset
23627      because of GeoIPExcludeUnknown. Fix for Coverity CID 980650.
23628      Bugfix on 0.2.4.10-alpha.
23629    - Fix an impossible-to-trigger integer overflow when estimating how
23630      long our onionskin queue would take. (This overflow would require us
23631      to accept 4 million onionskins before processing 100 of them.) Fixes
23632      bug 8210; bugfix on 0.2.4.10-alpha.
23633
23634  o Code simplification and refactoring:
23635    - Add a wrapper function for the common "log a message with a
23636      rate-limit" case.
23637
23638
23639Changes in version 0.2.4.10-alpha - 2013-02-04
23640  Tor 0.2.4.10-alpha adds defenses at the directory authority level from
23641  certain attacks that flood the network with relays; changes the queue
23642  for circuit create requests from a sized-based limit to a time-based
23643  limit; resumes building with MSVC on Windows; and fixes a wide variety
23644  of other issues.
23645
23646  o Major bugfixes (directory authority):
23647    - When computing directory thresholds, ignore any rejected-as-sybil
23648      nodes during the computation so that they can't influence Fast,
23649      Guard, etc. (We should have done this for proposal 109.) Fixes
23650      bug 8146.
23651    - When marking a node as a likely sybil, reset its uptime metrics
23652      to zero, so that it cannot time towards getting marked as Guard,
23653      Stable, or HSDir. (We should have done this for proposal 109.) Fixes
23654      bug 8147.
23655
23656  o Major bugfixes:
23657    - When a TLS write is partially successful but incomplete, remember
23658      that the flushed part has been flushed, and notice that bytes were
23659      actually written. Reported and fixed pseudonymously. Fixes bug
23660      7708; bugfix on Tor 0.1.0.5-rc.
23661    - Reject bogus create and relay cells with 0 circuit ID or 0 stream
23662      ID: these could be used to create unexpected streams and circuits
23663      which would count as "present" to some parts of Tor but "absent"
23664      to others, leading to zombie circuits and streams or to a bandwidth
23665      denial-of-service. Fixes bug 7889; bugfix on every released version
23666      of Tor. Reported by "oftc_must_be_destroyed".
23667    - Rename all macros in our local copy of queue.h to begin with "TOR_".
23668      This change seems the only good way to permanently prevent conflicts
23669      with queue.h on various operating systems. Fixes bug 8107; bugfix
23670      on 0.2.4.6-alpha.
23671
23672  o Major features (relay):
23673    - Instead of limiting the number of queued onionskins (aka circuit
23674      create requests) to a fixed, hard-to-configure number, we limit
23675      the size of the queue based on how many we expect to be able to
23676      process in a given amount of time. We estimate the time it will
23677      take to process an onionskin based on average processing time
23678      of previous onionskins. Closes ticket 7291. You'll never have to
23679      configure MaxOnionsPending again.
23680
23681  o Major features (portability):
23682    - Resume building correctly with MSVC and Makefile.nmake. This patch
23683      resolves numerous bugs and fixes reported by ultramage, including
23684      7305, 7308, 7309, 7310, 7312, 7313, 7315, 7316, and 7669.
23685    - Make the ntor and curve25519 code build correctly with MSVC.
23686      Fix on 0.2.4.8-alpha.
23687
23688  o Minor features:
23689    - When directory authorities are computing thresholds for flags,
23690      never let the threshold for the Fast flag fall below 4096
23691      bytes. Also, do not consider nodes with extremely low bandwidths
23692      when deciding thresholds for various directory flags. This change
23693      should raise our threshold for Fast relays, possibly in turn
23694      improving overall network performance; see ticket 1854. Resolves
23695      ticket 8145.
23696    - The Tor client now ignores sub-domain components of a .onion
23697      address. This change makes HTTP "virtual" hosting
23698      possible: http://foo.aaaaaaaaaaaaaaaa.onion/ and
23699      http://bar.aaaaaaaaaaaaaaaa.onion/ can be two different websites
23700      hosted on the same hidden service. Implements proposal 204.
23701    - We compute the overhead from passing onionskins back and forth to
23702      cpuworkers, and report it when dumping statistics in response to
23703      SIGUSR1. Supports ticket 7291.
23704
23705  o Minor features (path selection):
23706    - When deciding whether we have enough descriptors to build circuits,
23707      instead of looking at raw relay counts, look at which fraction
23708      of (bandwidth-weighted) paths we're able to build. This approach
23709      keeps clients from building circuits if their paths are likely to
23710      stand out statistically. The default fraction of paths needed is
23711      taken from the consensus directory; you can override it with the
23712      new PathsNeededToBuildCircuits option. Fixes ticket 5956.
23713    - When any country code is listed in ExcludeNodes or ExcludeExitNodes,
23714      and we have GeoIP information, also exclude all nodes with unknown
23715      countries "??" and "A1". This behavior is controlled by the
23716      new GeoIPExcludeUnknown option: you can make such nodes always
23717      excluded with "GeoIPExcludeUnknown 1", and disable the feature
23718      with "GeoIPExcludeUnknown 0". Setting "GeoIPExcludeUnknown auto"
23719      gets you the default behavior. Implements feature 7706.
23720    - Path Use Bias: Perform separate accounting for successful circuit
23721      use. Keep separate statistics on stream attempt rates versus stream
23722      success rates for each guard. Provide configurable thresholds to
23723      determine when to emit log messages or disable use of guards that
23724      fail too many stream attempts. Resolves ticket 7802.
23725
23726  o Minor features (log messages):
23727    - When learning a fingerprint for a bridge, log its corresponding
23728      transport type. Implements ticket 7896.
23729    - Improve the log message when "Bug/attack: unexpected sendme cell
23730      from client" occurs, to help us track bug 8093.
23731
23732  o Minor bugfixes:
23733    - Remove a couple of extraneous semicolons that were upsetting the
23734      cparser library. Patch by Christian Grothoff. Fixes bug 7115;
23735      bugfix on 0.2.2.1-alpha.
23736    - Remove a source of rounding error during path bias count scaling;
23737      don't count cannibalized circuits as used for path bias until we
23738      actually try to use them; and fix a circuit_package_relay_cell()
23739      warning message about n_chan==NULL. Fixes bug 7802.
23740    - Detect nacl when its headers are in a nacl/ subdirectory. Also,
23741      actually link against nacl when we're configured to use it. Fixes
23742      bug 7972; bugfix on 0.2.4.8-alpha.
23743    - Compile correctly with the --disable-curve25519 option. Fixes
23744      bug 8153; bugfix on 0.2.4.8-alpha.
23745
23746  o Build improvements:
23747    - Do not report status verbosely from autogen.sh unless the -v flag
23748      is specified. Fixes issue 4664. Patch from Onizuka.
23749    - Replace all calls to snprintf() outside of src/ext with
23750      tor_snprintf(). Also remove the #define to replace snprintf with
23751      _snprintf on Windows; they have different semantics, and all of
23752      our callers should be using tor_snprintf() anyway. Fixes bug 7304.
23753    - Try to detect if we are ever building on a platform where
23754      memset(...,0,...) does not set the value of a double to 0.0. Such
23755      platforms are permitted by the C standard, though in practice
23756      they're pretty rare (since IEEE 754 is nigh-ubiquitous). We don't
23757      currently support them, but it's better to detect them and fail
23758      than to perform erroneously.
23759
23760  o Removed features:
23761    - Stop exporting estimates of v2 and v3 directory traffic shares
23762      in extrainfo documents. They were unneeded and sometimes inaccurate.
23763      Also stop exporting any v2 directory request statistics. Resolves
23764      ticket 5823.
23765    - Drop support for detecting and warning about versions of Libevent
23766      before 1.3e. Nothing reasonable ships with them any longer;
23767      warning the user about them shouldn't be needed. Resolves ticket
23768      6826.
23769
23770  o Code simplifications and refactoring:
23771    - Rename "isin" functions to "contains", for grammar. Resolves
23772      ticket 5285.
23773    - Rename Tor's logging function log() to tor_log(), to avoid conflicts
23774      with the natural logarithm function from the system libm. Resolves
23775      ticket 7599.
23776
23777
23778Changes in version 0.2.4.9-alpha - 2013-01-15
23779  Tor 0.2.4.9-alpha provides a quick fix to make the new ntor handshake
23780  work more robustly.
23781
23782  o Major bugfixes:
23783    - Fix backward compatibility logic when receiving an embedded ntor
23784      handshake tunneled in a CREATE cell. This clears up the "Bug:
23785      couldn't format CREATED cell" warning. Fixes bug 7959; bugfix
23786      on 0.2.4.8-alpha.
23787
23788
23789Changes in version 0.2.4.8-alpha - 2013-01-14
23790  Tor 0.2.4.8-alpha introduces directory guards to reduce user enumeration
23791  risks, adds a new stronger and faster circuit handshake, and offers
23792  stronger and faster link encryption when both sides support it.
23793
23794  o Major features:
23795    - Preliminary support for directory guards (proposal 207): when
23796      possible, clients now use their entry guards for non-anonymous
23797      directory requests. This can help prevent client enumeration. Note
23798      that this behavior only works when we have a usable consensus
23799      directory, and when options about what to download are more or less
23800      standard. In the future we should re-bootstrap from our guards,
23801      rather than re-bootstrapping from the preconfigured list of
23802      directory sources that ships with Tor. Resolves ticket 6526.
23803    - Tor relays and clients now support a better CREATE/EXTEND cell
23804      format, allowing the sender to specify multiple address, identity,
23805      and handshake types. Implements Robert Ransom's proposal 200;
23806      closes ticket 7199.
23807
23808  o Major features (new circuit handshake):
23809    - Tor now supports a new circuit extension handshake designed by Ian
23810      Goldberg, Douglas Stebila, and Berkant Ustaoglu. Our original
23811      circuit extension handshake, later called "TAP", was a bit slow
23812      (especially on the relay side), had a fragile security proof, and
23813      used weaker keys than we'd now prefer. The new circuit handshake
23814      uses Dan Bernstein's "curve25519" elliptic-curve Diffie-Hellman
23815      function, making it significantly more secure than the older
23816      handshake, and significantly faster. Tor can use one of two built-in
23817      pure-C curve25519-donna implementations by Adam Langley, or it
23818      can link against the "nacl" library for a tuned version if present.
23819
23820      The built-in version is very fast for 64-bit systems when building
23821      with GCC. The built-in 32-bit version is still faster than the
23822      old TAP protocol, but using libnacl is better on most such hosts.
23823
23824      Clients don't currently use this protocol by default, since
23825      comparatively few clients support it so far. To try it, set
23826      UseNTorHandshake to 1.
23827
23828      Implements proposal 216; closes ticket 7202.
23829
23830  o Major features (better link encryption):
23831    - Relays can now enable the ECDHE TLS ciphersuites when available
23832      and appropriate. These ciphersuites let us negotiate forward-secure
23833      TLS secret keys more safely and more efficiently than with our
23834      previous use of Diffie-Hellman modulo a 1024-bit prime. By default,
23835      public relays prefer the (faster) P224 group, and bridges prefer
23836      the (more common) P256 group; you can override this with the
23837      TLSECGroup option.
23838
23839      Enabling these ciphers was a little tricky, since for a long time,
23840      clients had been claiming to support them without actually doing
23841      so, in order to foil fingerprinting. But with the client-side
23842      implementation of proposal 198 in 0.2.3.17-beta, clients can now
23843      match the ciphers from recent Firefox versions *and* list the
23844      ciphers they actually mean, so relays can believe such clients
23845      when they advertise ECDHE support in their TLS ClientHello messages.
23846
23847      This feature requires clients running 0.2.3.17-beta or later,
23848      and requires both sides to be running OpenSSL 1.0.0 or later
23849      with ECC support. OpenSSL 1.0.1, with the compile-time option
23850      "enable-ec_nistp_64_gcc_128", is highly recommended.
23851
23852      Implements the relay side of proposal 198; closes ticket 7200.
23853
23854  o Major bugfixes:
23855    - Avoid crashing when, as a relay without IPv6-exit support, a
23856      client insists on getting an IPv6 address or nothing. Fixes bug
23857      7814; bugfix on 0.2.4.7-alpha.
23858
23859  o Minor features:
23860    - Improve circuit build timeout handling for hidden services.
23861      In particular: adjust build timeouts more accurately depending
23862      upon the number of hop-RTTs that a particular circuit type
23863      undergoes. Additionally, launch intro circuits in parallel
23864      if they timeout, and take the first one to reply as valid.
23865    - Work correctly on Unix systems where EAGAIN and EWOULDBLOCK are
23866      separate error codes; or at least, don't break for that reason.
23867      Fixes bug 7935. Reported by "oftc_must_be_destroyed".
23868    - Update to the January 2 2013 Maxmind GeoLite Country database.
23869
23870  o Minor features (testing):
23871    - Add benchmarks for DH (1024-bit multiplicative group) and ECDH
23872      (P-256) Diffie-Hellman handshakes to src/or/bench.
23873    - Add benchmark functions to test onion handshake performance.
23874
23875  o Minor features (path bias detection):
23876    - Alter the Path Bias log messages to be more descriptive in terms
23877      of reporting timeouts and other statistics.
23878    - Create three levels of Path Bias log messages, as opposed to just
23879      two. These are configurable via consensus as well as via the torrc
23880      options PathBiasNoticeRate, PathBiasWarnRate, PathBiasExtremeRate.
23881      The default values are 0.70, 0.50, and 0.30 respectively.
23882    - Separate the log message levels from the decision to drop guards,
23883      which also is available via torrc option PathBiasDropGuards.
23884      PathBiasDropGuards still defaults to 0 (off).
23885    - Deprecate PathBiasDisableRate in favor of PathBiasDropGuards
23886      in combination with PathBiasExtremeRate.
23887    - Increase the default values for PathBiasScaleThreshold and
23888      PathBiasCircThreshold from (200, 20) to (300, 150).
23889    - Add in circuit usage accounting to path bias. If we try to use a
23890      built circuit but fail for any reason, it counts as path bias.
23891      Certain classes of circuits where the adversary gets to pick your
23892      destination node are exempt from this accounting. Usage accounting
23893      can be specifically disabled via consensus parameter or torrc.
23894    - Convert all internal path bias state to double-precision floating
23895      point, to avoid roundoff error and other issues.
23896    - Only record path bias information for circuits that have completed
23897      *two* hops. Assuming end-to-end tagging is the attack vector, this
23898      makes us more resilient to ambient circuit failure without any
23899      detection capability loss.
23900
23901  o Minor bugfixes (log messages):
23902    - Rate-limit the "No circuits are opened. Relaxed timeout for a
23903      circuit with channel state open..." message to once per hour to
23904      keep it from filling the notice logs. Mitigates bug 7799 but does
23905      not fix the underlying cause. Bugfix on 0.2.4.7-alpha.
23906    - Avoid spurious warnings when configuring multiple client ports of
23907      which only some are nonlocal. Previously, we had claimed that some
23908      were nonlocal when in fact they weren't. Fixes bug 7836; bugfix on
23909      0.2.3.3-alpha.
23910
23911  o Code simplifications and refactoring:
23912    - Get rid of a couple of harmless clang warnings, where we compared
23913      enums to ints. These warnings are newly introduced in clang 3.2.
23914    - Split the onion.c file into separate modules for the onion queue
23915      and the different handshakes it supports.
23916    - Remove the marshalling/unmarshalling code for sending requests to
23917      cpuworkers over a socket, and instead just send structs. The
23918      recipient will always be the same Tor binary as the sender, so
23919      any encoding is overkill.
23920
23921
23922Changes in version 0.2.4.7-alpha - 2012-12-24
23923  Tor 0.2.4.7-alpha introduces a new approach to providing fallback
23924  directory mirrors for more robust bootstrapping; fixes more issues where
23925  clients with changing network conditions refuse to make any circuits;
23926  adds initial support for exiting to IPv6 addresses; resumes being able
23927  to update our GeoIP database, and includes the geoip6 file this time;
23928  turns off the client-side DNS cache by default due to privacy risks;
23929  and fixes a variety of other issues.
23930
23931  o Major features (client resilience):
23932    - Add a new "FallbackDir" torrc option to use when we can't use
23933      a directory mirror from the consensus (either because we lack a
23934      consensus, or because they're all down). Currently, all authorities
23935      are fallbacks by default, and there are no other default fallbacks,
23936      but that will change. This option will allow us to give clients a
23937      longer list of servers to try to get a consensus from when first
23938      connecting to the Tor network, and thereby reduce load on the
23939      directory authorities. Implements proposal 206, "Preconfigured
23940      directory sources for bootstrapping". We also removed the old
23941      "FallbackNetworkstatus" option, since we never got it working well
23942      enough to use it. Closes bug 572.
23943    - If we have no circuits open, use a relaxed timeout (the
23944      95-percentile cutoff) until a circuit succeeds. This heuristic
23945      should allow Tor to succeed at building circuits even when the
23946      network connection drastically changes. Should help with bug 3443.
23947
23948  o Major features (IPv6):
23949    - Relays can now exit to IPv6 addresses: make sure that you have IPv6
23950      connectivity, then set the IPv6Exit flag to 1. Also make sure your
23951      exit policy reads as you would like: the address * applies to all
23952      address families, whereas *4 is IPv4 address only, and *6 is IPv6
23953      addresses only. On the client side, you'll need to wait until the
23954      authorities have upgraded, wait for enough exits to support IPv6,
23955      apply the "IPv6Traffic" flag to a SocksPort, and use Socks5. Closes
23956      ticket 5547, implements proposal 117 as revised in proposal 208.
23957
23958      We DO NOT recommend that clients with actual anonymity needs start
23959      using IPv6 over Tor yet, since not enough exits support it yet.
23960
23961  o Major features (geoip database):
23962    - Maxmind began labelling Tor relays as being in country "A1",
23963      which breaks by-country node selection inside Tor. Now we use a
23964      script to replace "A1" ("Anonymous Proxy") entries in our geoip
23965      file with real country codes. This script fixes about 90% of "A1"
23966      entries automatically and uses manual country code assignments to
23967      fix the remaining 10%. See src/config/README.geoip for details.
23968      Fixes bug 6266. Also update to the December 5 2012 Maxmind GeoLite
23969      Country database, as modified above.
23970
23971  o Major bugfixes (client-side DNS):
23972    - Turn off the client-side DNS cache by default. Updating and using
23973      the DNS cache is now configurable on a per-client-port
23974      level. SOCKSPort, DNSPort, etc lines may now contain
23975      {No,}Cache{IPv4,IPv6,}DNS lines to indicate that we shouldn't
23976      cache these types of DNS answers when we receive them from an
23977      exit node in response to an application request on this port, and
23978      {No,}UseCached{IPv4,IPv6,DNS} lines to indicate that if we have
23979      cached DNS answers of these types, we shouldn't use them. It's
23980      potentially risky to use cached DNS answers at the client, since
23981      doing so can indicate to one exit what answers we've gotten
23982      for DNS lookups in the past. With IPv6, this becomes especially
23983      problematic. Using cached DNS answers for requests on the same
23984      circuit would present less linkability risk, since all traffic
23985      on a circuit is already linkable, but it would also provide
23986      little performance benefit: the exit node caches DNS replies
23987      too. Implements a simplified version of Proposal 205. Implements
23988      ticket 7570.
23989
23990  o Major bugfixes (other):
23991    - Alter circuit build timeout measurement to start at the point
23992      where we begin the CREATE/CREATE_FAST step (as opposed to circuit
23993      initialization). This should make our timeout measurements more
23994      uniform. Previously, we were sometimes including ORconn setup time
23995      in our circuit build time measurements. Should resolve bug 3443.
23996    - Fix an assertion that could trigger in hibernate_go_dormant() when
23997      closing an or_connection_t: call channel_mark_for_close() rather
23998      than connection_mark_for_close(). Fixes bug 7267. Bugfix on
23999      0.2.4.4-alpha.
24000    - Include the geoip6 IPv6 GeoIP database in the tarball. Fixes bug
24001      7655; bugfix on 0.2.4.6-alpha.
24002
24003  o Minor features:
24004    - Add a new torrc option "ServerTransportListenAddr" to let bridge
24005      operators select the address where their pluggable transports will
24006      listen for connections. Resolves ticket 7013.
24007    - Allow an optional $ before the node identity digest in the
24008      controller command GETINFO ns/id/<identity>, for consistency with
24009      md/id/<identity> and desc/id/<identity>. Resolves ticket 7059.
24010    - Log packaged cell fullness as part of the heartbeat message.
24011      Diagnosis to try to determine the extent of bug 7743.
24012
24013  o Minor features (IPv6):
24014    - AutomapHostsOnResolve now supports IPv6 addresses. By default, we
24015      prefer to hand out virtual IPv6 addresses, since there are more of
24016      them and we can't run out. To override this behavior and make IPv4
24017      addresses preferred, set NoPreferIPv6Automap on whatever SOCKSPort
24018      or DNSPort you're using for resolving. Implements ticket 7571.
24019    - AutomapHostsOnResolve responses are now randomized, to avoid
24020      annoying situations where Tor is restarted and applications
24021      connect to the wrong addresses.
24022    - Never try more than 1000 times to pick a new virtual address when
24023      AutomapHostsOnResolve is set. That's good enough so long as we
24024      aren't close to handing out our entire virtual address space;
24025      if you're getting there, it's best to switch to IPv6 virtual
24026      addresses anyway.
24027
24028  o Minor bugfixes:
24029    - The ADDRMAP command can no longer generate an ill-formed error
24030      code on a failed MAPADDRESS. It now says "internal" rather than
24031      an English sentence fragment with spaces in the middle. Bugfix on
24032      Tor 0.2.0.19-alpha.
24033    - Fix log messages and comments to avoid saying "GMT" when we mean
24034      "UTC". Fixes bug 6113.
24035    - Compile on win64 using mingw64. Fixes bug 7260; patches from
24036      "yayooo".
24037    - Fix a crash when debugging unit tests on Windows: deallocate a
24038      shared library with FreeLibrary, not CloseHandle. Fixes bug 7306;
24039      bugfix on 0.2.2.17-alpha. Reported by "ultramage".
24040
24041  o Renamed options:
24042    - The DirServer option is now DirAuthority, for consistency with
24043      current naming patterns. You can still use the old DirServer form.
24044
24045  o Code simplification and refactoring:
24046    - Move the client-side address-map/virtual-address/DNS-cache code
24047      out of connection_edge.c into a new addressmap.c module.
24048    - Remove unused code for parsing v1 directories and "running routers"
24049      documents. Fixes bug 6887.
24050
24051
24052Changes in version 0.2.3.25 - 2012-11-19
24053  The Tor 0.2.3 release series is dedicated to the memory of Len "rabbi"
24054  Sassaman (1980-2011), a long-time cypherpunk, anonymity researcher,
24055  Mixmaster maintainer, Pynchon Gate co-designer, CodeCon organizer,
24056  programmer, and friend. Unstinting in his dedication to the cause of
24057  freedom, he inspired and helped many of us as we began our work on
24058  anonymity, and inspires us still. Please honor his memory by writing
24059  software to protect people's freedoms, and by helping others to do so.
24060
24061  Tor 0.2.3.25, the first stable release in the 0.2.3 branch, features
24062  significantly reduced directory overhead (via microdescriptors),
24063  enormous crypto performance improvements for fast relays on new
24064  enough hardware, a new v3 TLS handshake protocol that can better
24065  resist fingerprinting, support for protocol obfuscation plugins (aka
24066  pluggable transports), better scalability for hidden services, IPv6
24067  support for bridges, performance improvements like allowing clients
24068  to skip the first round-trip on the circuit ("optimistic data") and
24069  refilling token buckets more often, a new "stream isolation" design
24070  to isolate different applications on different circuits, and many
24071  stability, security, and privacy fixes.
24072
24073  o Major bugfixes:
24074    - Tor tries to wipe potentially sensitive data after using it, so
24075      that if some subsequent security failure exposes Tor's memory,
24076      the damage will be limited. But we had a bug where the compiler
24077      was eliminating these wipe operations when it decided that the
24078      memory was no longer visible to a (correctly running) program,
24079      hence defeating our attempt at defense in depth. We fix that
24080      by using OpenSSL's OPENSSL_cleanse() operation, which a compiler
24081      is unlikely to optimize away. Future versions of Tor may use
24082      a less ridiculously heavy approach for this. Fixes bug 7352.
24083      Reported in an article by Andrey Karpov.
24084
24085  o Minor bugfixes:
24086    - Fix a harmless bug when opting against publishing a relay descriptor
24087      because DisableNetwork is set. Fixes bug 7464; bugfix on
24088      0.2.3.9-alpha.
24089
24090
24091Changes in version 0.2.4.6-alpha - 2012-11-13
24092  Tor 0.2.4.6-alpha fixes an assert bug that has been plaguing relays,
24093  makes our defense-in-depth memory wiping more reliable, and begins to
24094  count IPv6 addresses in bridge statistics,
24095
24096  o Major bugfixes:
24097    - Fix an assertion failure that could occur when closing a connection
24098      with a spliced rendezvous circuit. Fix for bug 7212; bugfix on
24099      Tor 0.2.4.4-alpha.
24100    - Tor tries to wipe potentially sensitive data after using it, so
24101      that if some subsequent security failure exposes Tor's memory,
24102      the damage will be limited. But we had a bug where the compiler
24103      was eliminating these wipe operations when it decided that the
24104      memory was no longer visible to a (correctly running) program,
24105      hence defeating our attempt at defense in depth. We fix that
24106      by using OpenSSL's OPENSSL_cleanse() operation, which a compiler
24107      is unlikely to optimize away. Future versions of Tor may use
24108      a less ridiculously heavy approach for this. Fixes bug 7352.
24109      Reported in an article by Andrey Karpov.
24110
24111  o Minor features:
24112    - Add GeoIP database for IPv6 addresses. The new config option
24113      is GeoIPv6File.
24114    - Bridge statistics now count bridge clients connecting over IPv6:
24115      bridge statistics files now list "bridge-ip-versions" and
24116      extra-info documents list "geoip6-db-digest". The control protocol
24117      "CLIENTS_SEEN" and "ip-to-country" queries now support IPv6. Initial
24118      implementation by "shkoo", addressing ticket 5055.
24119
24120  o Minor bugfixes:
24121    - Warn when we are binding low ports when hibernation is enabled;
24122      previously we had warned when we were _advertising_ low ports with
24123      hibernation enabled. Fixes bug 7285; bugfix on 0.2.3.9-alpha.
24124    - Fix a harmless bug when opting against publishing a relay descriptor
24125      because DisableNetwork is set. Fixes bug 7464; bugfix on
24126      0.2.3.9-alpha.
24127    - Add warning message when a managed proxy dies during configuration.
24128      Fixes bug 7195; bugfix on 0.2.4.2-alpha.
24129    - Fix a linking error when building tor-fw-helper without miniupnp.
24130      Fixes bug 7235; bugfix on 0.2.4.2-alpha. Fix by Anthony G. Basile.
24131    - Check for closing an or_connection_t without going through correct
24132      channel functions; emit a warning and then call
24133      connection_or_close_for_error() so we don't assert as in bugs 7212
24134      and 7267.
24135    - Compile correctly on compilers without C99 designated initializer
24136      support. Fixes bug 7286; bugfix on 0.2.4.4-alpha.
24137    - Avoid a possible assert that can occur when channel_send_destroy() is
24138      called on a channel in CHANNEL_STATE_CLOSING, CHANNEL_STATE_CLOSED,
24139      or CHANNEL_STATE_ERROR when the Tor process is resumed after being
24140      blocked for a long interval. Fixes bug 7350; bugfix on 0.2.4.4-alpha.
24141    - Fix a memory leak on failing cases of channel_tls_process_certs_cell.
24142      Fixes bug 7422; bugfix on 0.2.4.4-alpha.
24143
24144  o Code simplification and refactoring:
24145    - Start using OpenBSD's implementation of queue.h, so that we don't
24146      need to hand-roll our own pointer and list structures whenever we
24147      need them. (We can't rely on a sys/queue.h, since some operating
24148      systems don't have them, and the ones that do have them don't all
24149      present the same extensions.)
24150
24151
24152Changes in version 0.2.4.5-alpha - 2012-10-25
24153  Tor 0.2.4.5-alpha comes hard at the heels of 0.2.4.4-alpha, to fix
24154  two important security vulnerabilities that could lead to remotely
24155  triggerable relay crashes, fix a major bug that was preventing clients
24156  from choosing suitable exit nodes, and refactor some of our code.
24157
24158  o Major bugfixes (security, also in 0.2.3.24-rc):
24159    - Fix a group of remotely triggerable assertion failures related to
24160      incorrect link protocol negotiation. Found, diagnosed, and fixed
24161      by "some guy from France". Fix for CVE-2012-2250; bugfix on
24162      0.2.3.6-alpha.
24163    - Fix a denial of service attack by which any directory authority
24164      could crash all the others, or by which a single v2 directory
24165      authority could crash everybody downloading v2 directory
24166      information. Fixes bug 7191; bugfix on 0.2.0.10-alpha.
24167
24168  o Major bugfixes (also in 0.2.3.24-rc):
24169    - When parsing exit policy summaries from microdescriptors, we had
24170      previously been ignoring the last character in each one, so that
24171      "accept 80,443,8080" would be treated by clients as indicating
24172      a node that allows access to ports 80, 443, and 808. That would
24173      lead to clients attempting connections that could never work,
24174      and ignoring exit nodes that would support their connections. Now
24175      clients parse these exit policy summaries correctly. Fixes bug 7192;
24176      bugfix on 0.2.3.1-alpha.
24177
24178  o Minor bugfixes (also in 0.2.3.24-rc):
24179    - Clients now consider the ClientRejectInternalAddresses config option
24180      when using a microdescriptor consensus stanza to decide whether
24181      an exit relay would allow exiting to an internal address. Fixes
24182      bug 7190; bugfix on 0.2.3.1-alpha.
24183
24184  o Minor bugfixes:
24185    - Only disable TLS session ticket support when running as a TLS
24186      server. Now clients will blend better with regular Firefox
24187      connections. Fixes bug 7189; bugfix on Tor 0.2.3.23-rc.
24188
24189  o Code simplification and refactoring:
24190    - Start using OpenBSD's implementation of queue.h (originally by
24191      Niels Provos).
24192    - Move the entry node code from circuitbuild.c to its own file.
24193    - Move the circuit build timeout tracking code from circuitbuild.c
24194      to its own file.
24195
24196
24197Changes in version 0.2.3.24-rc - 2012-10-25
24198  Tor 0.2.3.24-rc fixes two important security vulnerabilities that
24199  could lead to remotely triggerable relay crashes, and fixes
24200  a major bug that was preventing clients from choosing suitable exit
24201  nodes.
24202
24203  o Major bugfixes (security):
24204    - Fix a group of remotely triggerable assertion failures related to
24205      incorrect link protocol negotiation. Found, diagnosed, and fixed
24206      by "some guy from France". Fix for CVE-2012-2250; bugfix on
24207      0.2.3.6-alpha.
24208    - Fix a denial of service attack by which any directory authority
24209      could crash all the others, or by which a single v2 directory
24210      authority could crash everybody downloading v2 directory
24211      information. Fixes bug 7191; bugfix on 0.2.0.10-alpha.
24212
24213  o Major bugfixes:
24214    - When parsing exit policy summaries from microdescriptors, we had
24215      previously been ignoring the last character in each one, so that
24216      "accept 80,443,8080" would be treated by clients as indicating
24217      a node that allows access to ports 80, 443, and 808. That would
24218      lead to clients attempting connections that could never work,
24219      and ignoring exit nodes that would support their connections. Now
24220      clients parse these exit policy summaries correctly. Fixes bug 7192;
24221      bugfix on 0.2.3.1-alpha.
24222
24223  o Minor bugfixes:
24224    - Clients now consider the ClientRejectInternalAddresses config option
24225      when using a microdescriptor consensus stanza to decide whether
24226      an exit relay would allow exiting to an internal address. Fixes
24227      bug 7190; bugfix on 0.2.3.1-alpha.
24228
24229
24230Changes in version 0.2.4.4-alpha - 2012-10-20
24231  Tor 0.2.4.4-alpha adds a new v3 directory authority, fixes a privacy
24232  vulnerability introduced by a change in OpenSSL, fixes a remotely
24233  triggerable assert, and adds new channel_t and circuitmux_t abstractions
24234  that will make it easier to test new connection transport and cell
24235  scheduling algorithms.
24236
24237  o New directory authorities (also in 0.2.3.23-rc):
24238    - Add Faravahar (run by Sina Rabbani) as the ninth v3 directory
24239      authority. Closes ticket 5749.
24240
24241  o Major bugfixes (security/privacy, also in 0.2.3.23-rc):
24242    - Disable TLS session tickets. OpenSSL's implementation was giving
24243      our TLS session keys the lifetime of our TLS context objects, when
24244      perfect forward secrecy would want us to discard anything that
24245      could decrypt a link connection as soon as the link connection
24246      was closed. Fixes bug 7139; bugfix on all versions of Tor linked
24247      against OpenSSL 1.0.0 or later. Found by Florent Daignière.
24248    - Discard extraneous renegotiation attempts once the V3 link
24249      protocol has been initiated. Failure to do so left us open to
24250      a remotely triggerable assertion failure. Fixes CVE-2012-2249;
24251      bugfix on 0.2.3.6-alpha. Reported by "some guy from France".
24252
24253  o Internal abstraction features:
24254    - Introduce new channel_t abstraction between circuits and
24255      or_connection_t to allow for implementing alternate OR-to-OR
24256      transports. A channel_t is an abstract object which can either be a
24257      cell-bearing channel, which is responsible for authenticating and
24258      handshaking with the remote OR and transmitting cells to and from
24259      it, or a listening channel, which spawns new cell-bearing channels
24260      at the request of remote ORs. Implements part of ticket 6465.
24261    - Also new is the channel_tls_t subclass of channel_t, adapting it
24262      to the existing or_connection_t code. The V2/V3 protocol handshaking
24263      code which formerly resided in command.c has been moved below the
24264      channel_t abstraction layer and may be found in channeltls.c now.
24265      Implements the rest of ticket 6465.
24266    - Introduce new circuitmux_t storing the queue of circuits for
24267      a channel; this encapsulates and abstracts the queue logic and
24268      circuit selection policy, and allows the latter to be overridden
24269      easily by switching out a policy object. The existing EWMA behavior
24270      is now implemented as a circuitmux_policy_t. Resolves ticket 6816.
24271
24272  o Required libraries:
24273    - Tor now requires OpenSSL 0.9.8 or later. OpenSSL 1.0.0 or later is
24274      strongly recommended.
24275
24276  o Minor features:
24277    - Warn users who run hidden services on a Tor client with
24278      UseEntryGuards disabled that their hidden services will be
24279      vulnerable to http://freehaven.net/anonbib/#hs-attack06 (the
24280      attack which motivated Tor to support entry guards in the first
24281      place). Resolves ticket 6889.
24282    - Tor now builds correctly on Bitrig, an OpenBSD fork. Patch from
24283      dhill. Resolves ticket 6982.
24284    - Option OutboundBindAddress can be specified multiple times and
24285      accepts IPv6 addresses. Resolves ticket 6876.
24286
24287  o Minor bugfixes (also in 0.2.3.23-rc):
24288    - Don't serve or accept v2 hidden service descriptors over a
24289      relay's DirPort. It's never correct to do so, and disabling it
24290      might make it more annoying to exploit any bugs that turn up in the
24291      descriptor-parsing code. Fixes bug 7149.
24292    - Fix two cases in src/or/transports.c where we were calling
24293      fmt_addr() twice in a parameter list. Bug found by David
24294      Fifield. Fixes bug 7014; bugfix on 0.2.3.9-alpha.
24295    - Fix memory leaks whenever we logged any message about the "path
24296      bias" detection. Fixes bug 7022; bugfix on 0.2.3.21-rc.
24297    - When relays refuse a "create" cell because their queue of pending
24298      create cells is too big (typically because their cpu can't keep up
24299      with the arrival rate), send back reason "resource limit" rather
24300      than reason "internal", so network measurement scripts can get a
24301      more accurate picture. Fixes bug 7037; bugfix on 0.1.1.11-alpha.
24302
24303  o Minor bugfixes:
24304    - Command-line option "--version" implies "--quiet". Fixes bug 6997.
24305    - Free some more still-in-use memory at exit, to make hunting for
24306      memory leaks easier. Resolves bug 7029.
24307    - When a Tor client gets a "truncated" relay cell, the first byte of
24308      its payload specifies why the circuit was truncated. We were
24309      ignoring this 'reason' byte when tearing down the circuit, resulting
24310      in the controller not being told why the circuit closed. Now we
24311      pass the reason from the truncated cell to the controller. Bugfix
24312      on 0.1.2.3-alpha; fixes bug 7039.
24313    - Downgrade "Failed to hand off onionskin" messages to "debug"
24314      severity, since they're typically redundant with the "Your computer
24315      is too slow" messages. Fixes bug 7038; bugfix on 0.2.2.16-alpha.
24316    - Make clients running with IPv6 bridges connect over IPv6 again,
24317      even without setting new config options ClientUseIPv6 and
24318      ClientPreferIPv6ORPort. Fixes bug 6757; bugfix on 0.2.4.1-alpha.
24319    - Use square brackets around IPv6 addresses in numerous places
24320      that needed them, including log messages, HTTPS CONNECT proxy
24321      requests, TransportProxy statefile entries, and pluggable transport
24322      extra-info lines. Fixes bug 7011; patch by David Fifield.
24323
24324  o Code refactoring and cleanup:
24325    - Source files taken from other packages now reside in src/ext;
24326      previously they were scattered around the rest of Tor.
24327    - Avoid use of reserved identifiers in our C code. The C standard
24328      doesn't like us declaring anything that starts with an
24329      underscore, so let's knock it off before we get in trouble. Fix
24330      for bug 1031; bugfix on the first Tor commit.
24331
24332
24333Changes in version 0.2.3.23-rc - 2012-10-20
24334  Tor 0.2.3.23-rc adds a new v3 directory authority, fixes a privacy
24335  vulnerability introduced by a change in OpenSSL, and fixes a variety
24336  of smaller bugs in preparation for the release.
24337
24338  o New directory authorities:
24339    - Add Faravahar (run by Sina Rabbani) as the ninth v3 directory
24340      authority. Closes ticket 5749.
24341
24342  o Major bugfixes (security/privacy):
24343    - Disable TLS session tickets. OpenSSL's implementation was giving
24344      our TLS session keys the lifetime of our TLS context objects, when
24345      perfect forward secrecy would want us to discard anything that
24346      could decrypt a link connection as soon as the link connection
24347      was closed. Fixes bug 7139; bugfix on all versions of Tor linked
24348      against OpenSSL 1.0.0 or later. Found by Florent Daignière.
24349    - Discard extraneous renegotiation attempts once the V3 link
24350      protocol has been initiated. Failure to do so left us open to
24351      a remotely triggerable assertion failure. Fixes CVE-2012-2249;
24352      bugfix on 0.2.3.6-alpha. Reported by "some guy from France".
24353
24354  o Major bugfixes:
24355    - Fix a possible crash bug when checking for deactivated circuits
24356      in connection_or_flush_from_first_active_circuit(). Fixes bug 6341;
24357      bugfix on 0.2.2.7-alpha. Bug report and fix received pseudonymously.
24358
24359  o Minor bugfixes (on 0.2.3.x):
24360    - Fix two cases in src/or/transports.c where we were calling
24361      fmt_addr() twice in a parameter list. Bug found by David
24362      Fifield. Fixes bug 7014; bugfix on 0.2.3.9-alpha.
24363    - Convert an assert in the pathbias code to a log message. The assert
24364      appears to only be triggerable by Tor2Web mode. Fixes bug 6866;
24365      bugfix on 0.2.3.17-beta.
24366    - Fix memory leaks whenever we logged any message about the "path
24367      bias" detection. Fixes bug 7022; bugfix on 0.2.3.21-rc.
24368
24369  o Minor bugfixes (on 0.2.2.x and earlier):
24370    - Don't serve or accept v2 hidden service descriptors over a relay's
24371      DirPort. It's never correct to do so, and disabling it might
24372      make it more annoying to exploit any bugs that turn up in the
24373      descriptor-parsing code. Fixes bug 7149.
24374    - When relays refuse a "create" cell because their queue of pending
24375      create cells is too big (typically because their cpu can't keep up
24376      with the arrival rate), send back reason "resource limit" rather
24377      than reason "internal", so network measurement scripts can get a
24378      more accurate picture. Bugfix on 0.1.1.11-alpha; fixes bug 7037.
24379    - Correct file sizes when reading binary files on Cygwin, to avoid
24380      a bug where Tor would fail to read its state file. Fixes bug 6844;
24381      bugfix on 0.1.2.7-alpha.
24382    - Avoid undefined behavior when parsing the list of supported
24383      rendezvous/introduction protocols in a hidden service descriptor.
24384      Previously, Tor would have confused (as-yet-unused) protocol version
24385      numbers greater than 32 with lower ones on many platforms. Fixes
24386      bug 6827; bugfix on 0.2.0.10-alpha. Found by George Kadianakis.
24387
24388  o Documentation fixes:
24389    - Clarify that hidden services are TCP only. Fixes bug 6024.
24390
24391
24392Changes in version 0.2.4.3-alpha - 2012-09-22
24393  Tor 0.2.4.3-alpha fixes another opportunity for a remotely triggerable
24394  assertion, resumes letting relays test reachability of their DirPort,
24395  and cleans up a bunch of smaller bugs.
24396
24397  o Security fixes:
24398    - Fix an assertion failure in tor_timegm() that could be triggered
24399      by a badly formatted directory object. Bug found by fuzzing with
24400      Radamsa. Fixes bug 6811; bugfix on 0.2.0.20-rc.
24401
24402  o Major bugfixes:
24403    - Fix a possible crash bug when checking for deactivated circuits
24404      in connection_or_flush_from_first_active_circuit(). Fixes bug 6341;
24405      bugfix on 0.2.2.7-alpha. Bug report and fix received pseudonymously.
24406    - Allow routers to detect that their own DirPorts are running. When
24407      we removed support for versions_supports_begindir, we also
24408      accidentally removed the mechanism we used to self-test our
24409      DirPort. Diagnosed with help from kargig. Fixes bugs 6814 and 6815;
24410      bugfix on 0.2.4.2-alpha.
24411
24412  o Security features:
24413    - Switch to a completely time-invariant approach for picking nodes
24414      weighted by bandwidth. Our old approach would run through the
24415      part of the loop after it had made its choice slightly slower
24416      than it ran through the part of the loop before it had made its
24417      choice. Addresses ticket 6538.
24418    - Disable the use of Guard nodes when in Tor2WebMode. Guard usage
24419      by tor2web clients allows hidden services to identify tor2web
24420      clients through their repeated selection of the same rendezvous
24421      and introduction point circuit endpoints (their guards). Resolves
24422      ticket 6888.
24423
24424  o Minor features:
24425    - Enable Tor to read configuration, state, and key information from
24426      a FIFO. Previously Tor would only read from files with a positive
24427      stat.st_size. Code from meejah; fixes bug 6044.
24428
24429  o Minor bugfixes:
24430    - Correct file sizes when reading binary files on Cygwin, to avoid
24431      a bug where Tor would fail to read its state file. Fixes bug 6844;
24432      bugfix on 0.1.2.7-alpha.
24433    - Correctly handle votes with more than 31 flags. Fixes bug 6853;
24434      bugfix on 0.2.0.3-alpha.
24435    - When complaining about a client port on a public address, log
24436      which address we're complaining about. Fixes bug 4020; bugfix on
24437      0.2.3.3-alpha. Patch by Tom Fitzhenry.
24438    - Convert an assert in the pathbias code to a log message. The assert
24439      appears to only be triggerable by Tor2Web mode. Fixes bug 6866;
24440      bugfix on 0.2.3.17-beta.
24441    - Our new buildsystem was overzealous about rebuilding manpages: it
24442      would rebuild them all whenever any one of them changed. Now our
24443      dependency checking should be correct. Fixes bug 6843; bugfix on
24444      0.2.4.1-alpha.
24445    - Don't do reachability testing over IPv6 unless AuthDirPublishIPv6
24446      is set. Fixes bug 6880. Bugfix on 0.2.4.1-alpha.
24447    - Correct log printout about which address family is preferred
24448      when connecting to a bridge with both an IPv4 and IPv6 OR port.
24449      Fixes bug 6884; bugfix on 0.2.4.1-alpha.
24450
24451  o Minor bugfixes (code cleanliness):
24452    - Fix round_to_power_of_2() so it doesn't invoke undefined behavior
24453      with large values. This situation was untriggered, but nevertheless
24454      incorrect. Fixes bug 6831; bugfix on 0.2.0.1-alpha.
24455    - Reject consensus votes with more than 64 known-flags. We aren't even
24456      close to that limit yet, and our code doesn't handle it correctly.
24457      Fixes bug 6833; bugfix on 0.2.0.1-alpha.
24458    - Avoid undefined behavior when parsing the list of supported
24459      rendezvous/introduction protocols in a hidden service descriptor.
24460      Previously, Tor would have confused (as-yet-unused) protocol version
24461      numbers greater than 32 with lower ones on many platforms. Fixes
24462      bug 6827; bugfix on 0.2.0.10-alpha. Found by George Kadianakis.
24463    - Fix handling of rendezvous client authorization types over 8.
24464      Fixes bug 6861; bugfix on 0.2.1.5-alpha.
24465    - Fix building with older versions of GCC (2.95, for one) that don't
24466      like preprocessor directives inside macro arguments. Found by
24467      grarpamp. Fixes bug 6842; bugfix on 0.2.4.2-alpha.
24468    - Switch weighted node selection rule from using a list of doubles
24469      to using a list of int64_t. This change should make the process
24470      slightly easier to debug and maintain. Needed to finish ticket 6538.
24471
24472  o Code simplification and refactoring:
24473    - Move the generic "config" code into a new file, and have "config.c"
24474      hold only torrc- and state-related code. Resolves ticket 6823.
24475    - Move the core of our "choose a weighted element at random" logic
24476      into its own function, and give it unit tests. Now the logic is
24477      testable, and a little less fragile too.
24478    - Removed the testing_since field of node_t, which hasn't been used
24479      for anything since 0.2.0.9-alpha.
24480
24481  o Documentation fixes:
24482    - Clarify that hidden services are TCP only. Fixes bug 6024.
24483    - Resolve a typo in torrc.sample.in. Fixes bug 6819; bugfix on
24484      0.2.3.14-alpha.
24485
24486
24487Changes in version 0.2.3.22-rc - 2012-09-11
24488  Tor 0.2.3.22-rc fixes another opportunity for a remotely triggerable
24489  assertion.
24490
24491  o Security fixes:
24492    - Fix an assertion failure in tor_timegm() that could be triggered
24493      by a badly formatted directory object. Bug found by fuzzing with
24494      Radamsa. Fixes bug 6811; bugfix on 0.2.0.20-rc.
24495
24496  o Minor bugfixes:
24497    - Avoid segfault when starting up having run with an extremely old
24498      version of Tor and parsing its state file. Fixes bug 6801; bugfix
24499      on 0.2.2.23-alpha.
24500
24501
24502Changes in version 0.2.2.39 - 2012-09-11
24503  Tor 0.2.2.39 fixes two more opportunities for remotely triggerable
24504  assertions.
24505
24506  o Security fixes:
24507    - Fix an assertion failure in tor_timegm() that could be triggered
24508      by a badly formatted directory object. Bug found by fuzzing with
24509      Radamsa. Fixes bug 6811; bugfix on 0.2.0.20-rc.
24510    - Do not crash when comparing an address with port value 0 to an
24511      address policy. This bug could have been used to cause a remote
24512      assertion failure by or against directory authorities, or to
24513      allow some applications to crash clients. Fixes bug 6690; bugfix
24514      on 0.2.1.10-alpha.
24515
24516
24517Changes in version 0.2.4.2-alpha - 2012-09-10
24518  Tor 0.2.4.2-alpha enables port forwarding for pluggable transports,
24519  raises the default rate limiting even more, and makes the bootstrapping
24520  log messages less noisy.
24521
24522  o Major features:
24523    - Automatically forward the TCP ports of pluggable transport
24524      proxies using tor-fw-helper if PortForwarding is enabled. Implements
24525      ticket 4567.
24526
24527  o Major bugfixes:
24528    - Raise the default BandwidthRate/BandwidthBurst values from 5MB/10MB
24529      to 1GB/1GB. The previous defaults were intended to be "basically
24530      infinite", but it turns out they're now limiting our 100mbit+
24531      relays and bridges. Fixes bug 6605; bugfix on 0.2.0.10-alpha (the
24532      last time we raised it).
24533
24534  o Minor features:
24535    - Detect when we're running with a version of OpenSSL other than the
24536      one we compiled with. This has occasionally given people hard-to-
24537      track-down errors.
24538    - Log fewer lines at level "notice" about our OpenSSL and Libevent
24539      versions and capabilities when everything is going right. Resolves
24540      part of ticket 6736.
24541    - Directory authorities no long accept descriptors for any version of
24542      Tor before 0.2.2.35, or for any 0.2.3 release before 0.2.3.10-alpha.
24543      These versions are insecure, unsupported, or both. Implements
24544      ticket 6789.
24545
24546  o Minor bugfixes:
24547    - Rename the (internal-use-only) UsingTestingNetworkDefaults option
24548      to start with a triple-underscore so the controller won't touch it.
24549      Patch by Meejah. Fixes bug 3155. Bugfix on 0.2.2.23-alpha.
24550    - Avoid segfault when starting up having run with an extremely old
24551      version of Tor and parsing its state file. Fixes bug 6801; bugfix
24552      on 0.2.2.23-alpha.
24553    - Rename the (testing-use-only) _UseFilteringSSLBufferevents option
24554      so it doesn't start with _. Fixes bug 3155. Bugfix on 0.2.3.1-alpha.
24555    - Don't follow the NULL pointer if microdescriptor generation fails.
24556      (This does not appear to be triggerable, but it's best to be safe.)
24557      Found by "f. tp.". Fixes bug 6797; bugfix on 0.2.4.1-alpha.
24558    - Fix mis-declared dependencies on src/common/crypto.c and
24559      src/or/tor_main.c that could break out-of-tree builds under some
24560      circumstances. Fixes bug 6778; bugfix on 0.2.4.1-alpha.
24561    - Avoid a warning when building common_sha1.i out of tree. Fixes bug
24562      6778; bugfix on 0.2.4.1-alpha.
24563    - Fix a harmless (in this case) build warning for implicitly
24564      converting a strlen() to an int. Bugfix on 0.2.4.1-alpha.
24565
24566  o Removed features:
24567    - Now that all versions before 0.2.2.x are disallowed, we no longer
24568      need to work around their missing features. Thus we can remove a
24569      bunch of compatibility code.
24570
24571  o Code refactoring:
24572    - Tweak tor-fw-helper to accept an arbitrary amount of arbitrary
24573      TCP ports to forward. In the past it only accepted two ports:
24574      the ORPort and the DirPort.
24575
24576
24577Changes in version 0.2.4.1-alpha - 2012-09-05
24578  Tor 0.2.4.1-alpha lets bridges publish their pluggable transports to
24579  bridgedb; lets relays use IPv6 addresses and directory authorities
24580  advertise them; and switches to a cleaner build interface.
24581
24582  This is the first alpha release in a new series, so expect there to
24583  be bugs. Users who would rather test out a more stable branch should
24584  stay with 0.2.3.x for now.
24585
24586  o Major features (bridges):
24587    - Bridges now report the pluggable transports they support to the
24588      bridge authority, so it can pass the supported transports on to
24589      bridgedb and/or eventually do reachability testing. Implements
24590      ticket 3589.
24591
24592  o Major features (IPv6):
24593    - Bridge authorities now accept IPv6 bridge addresses and include
24594      them in network status documents. Implements ticket 5534.
24595    - Clients who set "ClientUseIPv6 1" may connect to entry nodes over
24596      IPv6. Set "ClientPreferIPv6ORPort 1" to make this even more likely
24597      to happen. Implements ticket 5535.
24598    - All kind of relays, not just bridges, can now advertise an IPv6
24599      OR port. Implements ticket 6362.
24600    - Directory authorities vote on IPv6 OR ports using the new consensus
24601      method 14. Implements ticket 6363.
24602
24603  o Major features (build):
24604    - Switch to a nonrecursive Makefile structure. Now instead of each
24605      Makefile.am invoking other Makefile.am's, there is a master
24606      Makefile.am that includes the others. This change makes our build
24607      process slightly more maintainable, and improves parallelism for
24608      building with make -j. Original patch by Stewart Smith; various
24609      fixes by Jim Meyering.
24610    - Where available, we now use automake's "silent" make rules by
24611      default, so that warnings are easier to spot. You can get the old
24612      behavior with "make V=1". Patch by Stewart Smith for ticket 6522.
24613
24614  o Minor features (code security and spec conformance):
24615    - Clear keys and key-derived material left on the stack in
24616      rendservice.c and rendclient.c. Check return value of
24617      crypto_pk_write_private_key_to_string() in rend_service_load_keys().
24618      These fixes should make us more forward-secure against cold-boot
24619      attacks and the like. Fixes bug 2385.
24620    - Reject EXTEND cells sent to nonexistent streams. According to the
24621      spec, an EXTEND cell sent to _any_ nonzero stream ID is invalid, but
24622      we were only checking for stream IDs that were currently in use.
24623      Found while hunting for more instances of bug 6271. Bugfix on
24624      0.0.2pre8, which introduced incremental circuit construction.
24625
24626  o Minor features (streamlining);
24627    - No longer include the "opt" prefix when generating routerinfos
24628      or v2 directories: it has been needless since Tor 0.1.2. Closes
24629      ticket 5124.
24630    - Remove some now-needless code that tried to aggressively flush
24631      OR connections as data was added to them. Since 0.2.0.1-alpha, our
24632      cell queue logic has saved us from the failure mode that this code
24633      was supposed to prevent. Removing this code will limit the number
24634      of baroque control flow paths through Tor's network logic. Reported
24635      pseudonymously on IRC. Fixes bug 6468; bugfix on 0.2.0.1-alpha.
24636
24637  o Minor features (controller):
24638    - Add a "GETINFO signal/names" control port command. Implements
24639      ticket 3842.
24640    - Provide default values for all options via "GETINFO config/defaults".
24641      Implements ticket 4971.
24642
24643  o Minor features (IPv6):
24644    - New config option "AuthDirHasIPv6Connectivity 1" that directory
24645      authorities should set if they have IPv6 connectivity and want to
24646      do reachability tests for IPv6 relays. Implements feature 5974.
24647    - A relay with an IPv6 OR port now sends that address in NETINFO
24648      cells (in addition to its other address). Implements ticket 6364.
24649
24650  o Minor features (log messages):
24651    - Omit the first heartbeat log message, because it never has anything
24652      useful to say, and it clutters up the bootstrapping messages.
24653      Resolves ticket 6758.
24654    - Don't log about reloading the microdescriptor cache at startup. Our
24655      bootstrap warnings are supposed to tell the user when there's a
24656      problem, and our bootstrap notices say when there isn't. Resolves
24657      ticket 6759; bugfix on 0.2.2.6-alpha.
24658    - Don't log "I learned some more directory information" when we're
24659      reading cached directory information. Reserve it for when new
24660      directory information arrives in response to a fetch. Resolves
24661      ticket 6760.
24662    - Prevent rounding error in path bias counts when scaling
24663      them down, and use the correct scale factor default. Also demote
24664      some path bias related log messages down a level and make others
24665      less scary sounding. Fixes bug 6647. Bugfix against 0.2.3.17-beta.
24666    - We no longer warn so much when generating manpages from their
24667      asciidoc source.
24668
24669  o Code simplifications and refactoring:
24670    - Enhance our internal sscanf replacement so that we can eliminate
24671      the last remaining uses of the system sscanf. (Though those uses
24672      of sscanf were safe, sscanf itself is generally error prone, so
24673      we want to eliminate when we can.) Fixes ticket 4195 and Coverity
24674      CID 448.
24675    - Move ipv6_preferred from routerinfo_t to node_t. Addresses bug 4620.
24676    - Move last_reachable and testing_since from routerinfo_t to node_t.
24677      Implements ticket 5529.
24678    - Add replaycache_t structure, functions and unit tests, then refactor
24679      rend_service_introduce() to be more clear to read, improve, debug,
24680      and test. Resolves bug 6177.
24681    - Finally remove support for malloc_good_size and malloc_usable_size.
24682      We had hoped that these functions would let us eke a little more
24683      memory out of our malloc implementation. Unfortunately, the only
24684      implementations that provided these functions are also ones that
24685      are already efficient about not overallocation: they never got us
24686      more than 7 or so bytes per allocation. Removing them saves us a
24687      little code complexity and a nontrivial amount of build complexity.
24688
24689  o New requirements:
24690    - Tor maintainers now require Automake version 1.9 or later to build
24691      Tor from the Git repository. (Automake is not required when building
24692      from a source distribution.)
24693
24694
24695Changes in version 0.2.3.21-rc - 2012-09-05
24696  Tor 0.2.3.21-rc is the fourth release candidate for the Tor 0.2.3.x
24697  series. It fixes a trio of potential security bugs, fixes a bug where
24698  we were leaving some of the fast relays out of the microdescriptor
24699  consensus, resumes interpreting "ORPort 0" and "DirPort 0" correctly,
24700  and cleans up other smaller issues.
24701
24702  o Major bugfixes (security):
24703    - Tear down the circuit if we get an unexpected SENDME cell. Clients
24704      could use this trick to make their circuits receive cells faster
24705      than our flow control would have allowed, or to gum up the network,
24706      or possibly to do targeted memory denial-of-service attacks on
24707      entry nodes. Fixes bug 6252. Bugfix on the 54th commit on Tor --
24708      from July 2002, before the release of Tor 0.0.0. We had committed
24709      this patch previously, but we had to revert it because of bug 6271.
24710      Now that 6271 is fixed, this patch appears to work.
24711    - Reject any attempt to extend to an internal address. Without
24712      this fix, a router could be used to probe addresses on an internal
24713      network to see whether they were accepting connections. Fixes bug
24714      6710; bugfix on 0.0.8pre1.
24715    - Do not crash when comparing an address with port value 0 to an
24716      address policy. This bug could have been used to cause a remote
24717      assertion failure by or against directory authorities, or to
24718      allow some applications to crash clients. Fixes bug 6690; bugfix
24719      on 0.2.1.10-alpha.
24720
24721  o Major bugfixes:
24722    - Remove the upper bound on microdescriptor length. We were hitting
24723      the limit for routers with complex exit policies or family
24724      declarations, causing clients to not use them. Fixes the first
24725      piece of bug 6404; fix on 0.2.2.6-alpha.
24726    - Detect "ORPort 0" as meaning, uniformly, that we're not running
24727      as a relay. Previously, some of our code would treat the presence
24728      of any ORPort line as meaning that we should act like a relay,
24729      even though our new listener code would correctly not open any
24730      ORPorts for ORPort 0. Similar bugs in other Port options are also
24731      fixed. Fixes the first half of bug 6507; bugfix on 0.2.3.3-alpha.
24732
24733  o Minor bugfixes:
24734    - Avoid a pair of double-free and use-after-mark bugs that can
24735      occur with certain timings in canceled and re-received DNS
24736      requests. Fixes bug 6472; bugfix on 0.0.7rc1.
24737    - Fix build and 64-bit compile warnings from --enable-openbsd-malloc.
24738      Fixes bug 6379. Bugfix on 0.2.0.20-rc.
24739    - Allow one-hop directory fetching circuits the full "circuit build
24740      timeout" period, rather than just half of it, before failing them
24741      and marking the relay down. This fix should help reduce cases where
24742      clients declare relays (or worse, bridges) unreachable because
24743      the TLS handshake takes a few seconds to complete. Fixes bug 6743;
24744      bugfix on 0.2.2.2-alpha, where we changed the timeout from a static
24745      30 seconds.
24746    - Authorities no longer include any router in their microdescriptor
24747      consensuses for which they couldn't generate or agree on a
24748      microdescriptor. Fixes the second piece of bug 6404; fix on
24749      0.2.2.6-alpha.
24750    - Detect and reject attempts to specify both "FooPort" and
24751      "FooPort 0" in the same configuration domain. (It's still okay
24752      to have a FooPort in your configuration file, and use "FooPort 0"
24753      on the command line to disable it.) Fixes the second half of bug
24754      6507; bugfix on 0.2.3.3-alpha.
24755    - Make wildcarded addresses (that is, ones beginning with "*.") work
24756      when provided via the controller's MapAddress command. Previously,
24757      they were accepted, but we never actually noticed that they were
24758      wildcards. Fixes bug 6244; bugfix on 0.2.3.9-alpha.
24759    - Avoid crashing on a malformed state file where EntryGuardPathBias
24760      precedes EntryGuard. Fix for bug 6774; bugfix on 0.2.3.17-beta.
24761    - Add a (probably redundant) memory clear between iterations of
24762      the router status voting loop, to prevent future coding errors
24763      where data might leak between iterations of the loop. Resolves
24764      ticket 6514.
24765
24766  o Minor bugfixes (log messages):
24767    - Downgrade "set buildtimeout to low value" messages to "info"
24768      severity; they were never an actual problem, there was never
24769      anything reasonable to do about them, and they tended to spam logs
24770      from time to time. Fixes bug 6251; bugfix on 0.2.2.2-alpha.
24771    - Downgrade path-bias warning messages to "info". We'll try to get
24772      them working better in 0.2.4. Add internal circuit construction
24773      state to protect against the noisy warn message "Unexpectedly high
24774      circuit_successes". Also add some additional rate-limited notice
24775      messages to help determine the root cause of the warn. Fixes bug
24776      6475. Bugfix against 0.2.3.17-beta.
24777    - Move log message when unable to find a microdesc in a routerstatus
24778      entry to parse time. Previously we'd spam this warning every time
24779      we tried to figure out which microdescriptors to download. Fixes
24780      the third piece of bug 6404; fix on 0.2.3.18-rc.
24781
24782  o Minor features:
24783    - Consider new, removed or changed IPv6 OR ports a non-cosmetic
24784      change when the authority is deciding whether to accept a newly
24785      uploaded descriptor. Implements ticket 6423.
24786    - Add missing documentation for consensus and microdesc files.
24787      Resolves ticket 6732.
24788
24789
24790Changes in version 0.2.2.38 - 2012-08-12
24791  Tor 0.2.2.38 fixes a remotely triggerable crash bug, and fixes a timing
24792  attack that could in theory leak path information.
24793
24794  o Security fixes:
24795    - Avoid an uninitialized memory read when reading a vote or consensus
24796      document that has an unrecognized flavor name. This read could
24797      lead to a remote crash bug. Fixes bug 6530; bugfix on 0.2.2.6-alpha.
24798    - Try to leak less information about what relays a client is
24799      choosing to a side-channel attacker. Previously, a Tor client would
24800      stop iterating through the list of available relays as soon as it
24801      had chosen one, thus finishing a little earlier when it picked
24802      a router earlier in the list. If an attacker can recover this
24803      timing information (nontrivial but not proven to be impossible),
24804      they could learn some coarse-grained information about which relays
24805      a client was picking (middle nodes in particular are likelier to
24806      be affected than exits). The timing attack might be mitigated by
24807      other factors (see bug 6537 for some discussion), but it's best
24808      not to take chances. Fixes bug 6537; bugfix on 0.0.8rc1.
24809
24810
24811Changes in version 0.2.3.20-rc - 2012-08-05
24812  Tor 0.2.3.20-rc is the third release candidate for the Tor 0.2.3.x
24813  series. It fixes a pair of code security bugs and a potential anonymity
24814  issue, updates our RPM spec files, and cleans up other smaller issues.
24815
24816  o Security fixes:
24817    - Avoid read-from-freed-memory and double-free bugs that could occur
24818      when a DNS request fails while launching it. Fixes bug 6480;
24819      bugfix on 0.2.0.1-alpha.
24820    - Avoid an uninitialized memory read when reading a vote or consensus
24821      document that has an unrecognized flavor name. This read could
24822      lead to a remote crash bug. Fixes bug 6530; bugfix on 0.2.2.6-alpha.
24823    - Try to leak less information about what relays a client is
24824      choosing to a side-channel attacker. Previously, a Tor client would
24825      stop iterating through the list of available relays as soon as it
24826      had chosen one, thus finishing a little earlier when it picked
24827      a router earlier in the list. If an attacker can recover this
24828      timing information (nontrivial but not proven to be impossible),
24829      they could learn some coarse-grained information about which relays
24830      a client was picking (middle nodes in particular are likelier to
24831      be affected than exits). The timing attack might be mitigated by
24832      other factors (see bug 6537 for some discussion), but it's best
24833      not to take chances. Fixes bug 6537; bugfix on 0.0.8rc1.
24834
24835  o Minor features:
24836    - Try to make the warning when giving an obsolete SOCKSListenAddress
24837      a little more useful.
24838    - Terminate active server managed proxies if Tor stops being a
24839      relay. Addresses parts of bug 6274; bugfix on 0.2.3.6-alpha.
24840    - Provide a better error message about possible OSX Asciidoc failure
24841      reasons. Fixes bug 6436.
24842    - Warn when Tor is configured to use accounting in a way that can
24843      link a hidden service to some other hidden service or public
24844      address. Resolves ticket 6490.
24845
24846  o Minor bugfixes:
24847    - Check return value of fputs() when writing authority certificate
24848      file. Fixes Coverity issue 709056; bugfix on 0.2.0.1-alpha.
24849    - Ignore ServerTransportPlugin lines when Tor is not configured as
24850      a relay. Fixes bug 6274; bugfix on 0.2.3.6-alpha.
24851    - When disabling guards for having too high a proportion of failed
24852      circuits, make sure to look at each guard. Fixes bug 6397; bugfix
24853      on 0.2.3.17-beta.
24854
24855  o Packaging (RPM):
24856    - Update our default RPM spec files to work with mock and rpmbuild
24857      on RHEL/Fedora. They have an updated set of dependencies and
24858      conflicts, a fix for an ancient typo when creating the "_tor"
24859      user, and better instructions. Thanks to Ondrej Mikle for the
24860      patch series. Fixes bug 6043.
24861
24862  o Testing:
24863    - Make it possible to set the TestingTorNetwork configuration
24864      option using AlternateDirAuthority and AlternateBridgeAuthority
24865      as an alternative to setting DirServer. Addresses ticket 6377.
24866
24867  o Documentation:
24868    - Clarify the documentation for the Alternate*Authority options.
24869      Fixes bug 6387.
24870    - Fix some typos in the manpages. Patch from A. Costa. Fixes bug 6500.
24871
24872  o Code simplification and refactoring:
24873    - Do not use SMARTLIST_FOREACH for any loop whose body exceeds
24874      10 lines. Also, don't nest them. Doing so in the past has
24875      led to hard-to-debug code. The new style is to use the
24876      SMARTLIST_FOREACH_{BEGIN,END} pair. Addresses issue 6400.
24877
24878
24879Changes in version 0.2.3.19-rc - 2012-07-06
24880  Tor 0.2.3.19-rc is the second release candidate for the Tor 0.2.3.x
24881  series. It fixes the compile on Windows, reverts to a GeoIP database
24882  that isn't as broken, and fixes a flow control bug that has been around
24883  since the beginning of Tor.
24884
24885  o Major bugfixes:
24886    - Fix a bug handling SENDME cells on nonexistent streams that could
24887      result in bizarre window values. Report and patch contributed
24888      pseudonymously. Fixes part of bug 6271. This bug was introduced
24889      before the first Tor release, in svn commit r152.
24890    - Revert to the May 1 2012 Maxmind GeoLite Country database. In the
24891      June 2012 database, Maxmind marked many Tor relays as country "A1",
24892      which will cause risky behavior for clients that set EntryNodes
24893      or ExitNodes. Addresses bug 6334; bugfix on 0.2.3.17-beta.
24894    - Instead of ENOBUFS on Windows, say WSAENOBUFS. Fixes compilation
24895      on Windows. Fixes bug 6296; bugfix on 0.2.3.18-rc.
24896
24897  o Minor bugfixes:
24898    - Fix wrong TCP port range in parse_port_range(). Fixes bug 6218;
24899      bugfix on 0.2.1.10-alpha.
24900
24901
24902Changes in version 0.2.3.18-rc - 2012-06-28
24903  Tor 0.2.3.18-rc is the first release candidate for the Tor 0.2.3.x
24904  series. It fixes a few smaller bugs, but generally appears stable.
24905  Please test it and let us know whether it is!
24906
24907  o Major bugfixes:
24908    - Allow wildcarded mapaddress targets to be specified on the
24909      controlport. Partially fixes bug 6244; bugfix on 0.2.3.9-alpha.
24910    - Make our linker option detection code more robust against linkers
24911      such as on FreeBSD 8, where a bad combination of options completes
24912      successfully but makes an unrunnable binary. Fixes bug 6173;
24913      bugfix on 0.2.3.17-beta.
24914
24915  o Minor bugfixes (on 0.2.2.x and earlier):
24916    - Avoid a false positive in the util/threads unit test by increasing
24917      the maximum timeout time. Fixes bug 6227; bugfix on 0.2.0.4-alpha.
24918    - Replace "Sending publish request" log messages with "Launching
24919      upload", so that they no longer confusingly imply that we're
24920      sending something to a directory we might not even be connected
24921      to yet. Fixes bug 3311; bugfix on 0.2.0.10-alpha.
24922    - Make sure to set *socket_error in all error cases in
24923      connection_connect(), so it can't produce a warning about
24924      errno being zero from errno_to_orconn_end_reason(). Bugfix on
24925      0.2.1.1-alpha; resolves ticket 6028.
24926    - Downgrade "Got a certificate, but we already have it" log messages
24927      from warning to info, except when we're a dirauth. Fixes bug 5238;
24928      bugfix on 0.2.1.7-alpha.
24929    - When checking for requested signatures on the latest consensus
24930      before serving it to a client, make sure to check the right
24931      consensus flavor. Bugfix on 0.2.2.6-alpha.
24932    - Downgrade "eventdns rejected address" message to LOG_PROTOCOL_WARN.
24933      Fixes bug 5932; bugfix on 0.2.2.7-alpha.
24934
24935  o Minor bugfixes (on 0.2.3.x):
24936    - Make format_helper_exit_status() avoid unnecessary space padding
24937      and stop confusing log_from_pipe(). Fixes ticket 5557; bugfix
24938      on 0.2.3.1-alpha.
24939    - Downgrade a message about cleaning the microdescriptor cache to
24940      "info" from "notice". Fixes bug 6238; bugfix on 0.2.3.1-alpha.
24941    - Log a BUG message at severity INFO if we have a networkstatus with
24942      a missing entry for some microdescriptor. Continues on a patch
24943      to 0.2.3.2-alpha.
24944    - Improve the log message when a managed proxy fails to launch. Fixes
24945      bug 5099; bugfix on 0.2.3.6-alpha.
24946    - Don't do DNS lookups when parsing corrupted managed proxy protocol
24947      messages. Fixes bug 6226; bugfix on 0.2.3.6-alpha.
24948    - When formatting wildcarded address mappings for the controller,
24949      be sure to include "*." as appropriate. Partially fixes bug 6244;
24950      bugfix on 0.2.3.9-alpha.
24951    - Avoid a warning caused by using strcspn() from glibc with clang 3.0.
24952      Bugfix on 0.2.3.13-alpha.
24953    - Stop logging messages about running with circuit timeout learning
24954      enabled at severity LD_BUG. Fixes bug 6169; bugfix on 0.2.3.17-beta.
24955    - Disable a spurious warning about reading on a marked and flushing
24956      connection. We shouldn't be doing that, but apparently we
24957      sometimes do. Fixes bug 6203; bugfix on 0.2.3.17-beta.
24958    - Fix a bug that stopped AllowDotExit from working on addresses
24959      that had an entry in the DNS cache. Fixes bug 6211; bugfix on
24960      0.2.3.17-beta.
24961
24962  o Code simplification, refactoring, unit tests:
24963    - Move tor_gettimeofday_cached() into compat_libevent.c, and use
24964      Libevent's notion of cached time when possible.
24965    - Remove duplicate code for invoking getrlimit() from control.c.
24966    - Add a unit test for the environment_variable_names_equal function.
24967
24968  o Documentation:
24969    - Document the --defaults-torrc option, and the new (in 0.2.3)
24970      semantics for overriding, extending, and clearing lists of
24971      options. Closes bug 4748.
24972
24973
24974Changes in version 0.2.3.17-beta - 2012-06-15
24975  Tor 0.2.3.17-beta enables compiler and linker hardening by default,
24976  gets our TLS handshake back on track for being able to blend in with
24977  Firefox, fixes a big bug in 0.2.3.16-alpha that broke Tor's interaction
24978  with Vidalia, and otherwise continues to get us closer to a release
24979  candidate.
24980
24981  o Major features:
24982    - Enable gcc and ld hardening by default. Resolves ticket 5210.
24983    - Update TLS cipher list to match Firefox 8 and later. Resolves
24984      ticket 4744.
24985    - Implement the client side of proposal 198: remove support for
24986      clients falsely claiming to support standard ciphersuites that
24987      they can actually provide. As of modern OpenSSL versions, it's not
24988      necessary to fake any standard ciphersuite, and doing so prevents
24989      us from using better ciphersuites in the future, since servers
24990      can't know whether an advertised ciphersuite is really supported or
24991      not. Some hosts -- notably, ones with very old versions of OpenSSL
24992      or where OpenSSL has been built with ECC disabled -- will stand
24993      out because of this change; TBB users should not be affected.
24994
24995  o Major bugfixes:
24996    - Change the default value for DynamicDHGroups (introduced in
24997      0.2.3.9-alpha) to 0. This feature can make Tor relays less
24998      identifiable by their use of the mod_ssl DH group, but at
24999      the cost of some usability (#4721) and bridge tracing (#6087)
25000      regressions. Resolves ticket 5598.
25001    - Send a CRLF at the end of each STATUS_* control protocol event. This
25002      bug tickled a bug in Vidalia which would make it freeze. Fixes
25003      bug 6094; bugfix on 0.2.3.16-alpha.
25004
25005  o Minor bugfixes:
25006    - Disable writing on marked-for-close connections when they are
25007      blocked on bandwidth, to prevent busy-looping in Libevent. Fixes
25008      bug 5263; bugfix on 0.0.2pre13, where we first added a special
25009      case for flushing marked connections.
25010    - Detect SSL handshake even when the initial attempt to write the
25011      server hello fails. Fixes bug 4592; bugfix on 0.2.0.13-alpha.
25012    - Change the AllowDotExit rules so they should actually work.
25013      We now enforce AllowDotExit only immediately after receiving an
25014      address via SOCKS or DNSPort: other sources are free to provide
25015      .exit addresses after the resolution occurs. Fixes bug 3940;
25016      bugfix on 0.2.2.1-alpha.
25017    - Fix a (harmless) integer overflow in cell statistics reported by
25018      some fast relays. Fixes bug 5849; bugfix on 0.2.2.1-alpha.
25019    - Make sure circuitbuild.c checks LearnCircuitBuildTimeout in all the
25020      right places and never depends on the consensus parameters or
25021      computes adaptive timeouts when it is disabled. Fixes bug 5049;
25022      bugfix on 0.2.2.14-alpha.
25023    - When building Tor on Windows with -DUNICODE (not default), ensure
25024      that error messages, filenames, and DNS server names are always
25025      NUL-terminated when we convert them to a single-byte encoding.
25026      Fixes bug 5909; bugfix on 0.2.2.16-alpha.
25027    - Make Tor build correctly again with -DUNICODE -D_UNICODE defined.
25028      Fixes bug 6097; bugfix on 0.2.2.16-alpha.
25029    - Fix an edge case where TestingTorNetwork is set but the authorities
25030      and relays all have an uptime of zero, where the private Tor network
25031      could briefly lack support for hidden services. Fixes bug 3886;
25032      bugfix on 0.2.2.18-alpha.
25033    - Correct the manpage's descriptions for the default values of
25034      DirReqStatistics and ExtraInfoStatistics. Fixes bug 2865; bugfix
25035      on 0.2.3.1-alpha.
25036    - Fix the documentation for the --hush and --quiet command line
25037      options, which changed their behavior back in 0.2.3.3-alpha.
25038    - Fix compilation warning with clang 3.1. Fixes bug 6141; bugfix on
25039      0.2.3.11-alpha.
25040
25041  o Minor features:
25042    - Rate-limit the "Weighted bandwidth is 0.000000" message, and add
25043      more information to it, so that we can track it down in case it
25044      returns again. Mitigates bug 5235.
25045    - Check CircuitBuildTimeout and LearnCircuitBuildTimeout in
25046      options_validate(); warn if LearnCircuitBuildTimeout is disabled and
25047      CircuitBuildTimeout is set unreasonably low. Resolves ticket 5452.
25048    - Warn the user when HTTPProxy, but no other proxy type, is
25049      configured. This can cause surprising behavior: it doesn't send
25050      all of Tor's traffic over the HTTPProxy -- it sends unencrypted
25051      directory traffic only. Resolves ticket 4663.
25052    - Issue a notice if a guard completes less than 40% of your circuits.
25053      Threshold is configurable by torrc option PathBiasNoticeRate and
25054      consensus parameter pb_noticepct. There is additional, off-by-
25055      default code to disable guards which fail too many circuits.
25056      Addresses ticket 5458.
25057    - Update to the June 6 2012 Maxmind GeoLite Country database.
25058
25059  o Code simplifications and refactoring:
25060    - Remove validate_pluggable_transports_config(): its warning
25061      message is now handled by connection_or_connect().
25062
25063
25064Changes in version 0.2.2.37 - 2012-06-06
25065  Tor 0.2.2.37 introduces a workaround for a critical renegotiation
25066  bug in OpenSSL 1.0.1 (where 20% of the Tor network can't talk to itself
25067  currently).
25068
25069  o Major bugfixes:
25070    - Work around a bug in OpenSSL that broke renegotiation with TLS
25071      1.1 and TLS 1.2. Without this workaround, all attempts to speak
25072      the v2 Tor connection protocol when both sides were using OpenSSL
25073      1.0.1 would fail. Resolves ticket 6033.
25074    - When waiting for a client to renegotiate, don't allow it to add
25075      any bytes to the input buffer. This fixes a potential DoS issue.
25076      Fixes bugs 5934 and 6007; bugfix on 0.2.0.20-rc.
25077    - Fix an edge case where if we fetch or publish a hidden service
25078      descriptor, we might build a 4-hop circuit and then use that circuit
25079      for exiting afterwards -- even if the new last hop doesn't obey our
25080      ExitNodes config option. Fixes bug 5283; bugfix on 0.2.0.10-alpha.
25081
25082  o Minor bugfixes:
25083    - Fix a build warning with Clang 3.1 related to our use of vasprintf.
25084      Fixes bug 5969. Bugfix on 0.2.2.11-alpha.
25085
25086  o Minor features:
25087    - Tell GCC and Clang to check for any errors in format strings passed
25088      to the tor_v*(print|scan)f functions.
25089
25090
25091Changes in version 0.2.3.16-alpha - 2012-06-05
25092  Tor 0.2.3.16-alpha introduces a workaround for a critical renegotiation
25093  bug in OpenSSL 1.0.1 (where 20% of the Tor network can't talk to itself
25094  currently). It also fixes a variety of smaller bugs and other cleanups
25095  that get us closer to a release candidate.
25096
25097  o Major bugfixes (general):
25098    - Work around a bug in OpenSSL that broke renegotiation with TLS
25099      1.1 and TLS 1.2. Without this workaround, all attempts to speak
25100      the v2 Tor connection protocol when both sides were using OpenSSL
25101      1.0.1 would fail. Resolves ticket 6033.
25102    - When waiting for a client to renegotiate, don't allow it to add
25103      any bytes to the input buffer. This fixes a potential DoS issue.
25104      Fixes bugs 5934 and 6007; bugfix on 0.2.0.20-rc.
25105    - Pass correct OR address to managed proxies (like obfsproxy),
25106      even when ORListenAddress is used. Fixes bug 4865; bugfix on
25107      0.2.3.9-alpha.
25108    - The advertised platform of a router now includes only its operating
25109      system's name (e.g., "Linux", "Darwin", "Windows 7"), and not its
25110      service pack level (for Windows) or its CPU architecture (for Unix).
25111      We also no longer include the "git-XYZ" tag in the version. Resolves
25112      part of bug 2988.
25113
25114  o Major bugfixes (clients):
25115    - If we are unable to find any exit that supports our predicted ports,
25116      stop calling them predicted, so that we don't loop and build
25117      hopeless circuits indefinitely. Fixes bug 3296; bugfix on 0.0.9pre6,
25118      which introduced predicted ports.
25119    - Fix an edge case where if we fetch or publish a hidden service
25120      descriptor, we might build a 4-hop circuit and then use that circuit
25121      for exiting afterwards -- even if the new last hop doesn't obey our
25122      ExitNodes config option. Fixes bug 5283; bugfix on 0.2.0.10-alpha.
25123    - Check at each new consensus whether our entry guards were picked
25124      long enough ago that we should rotate them. Previously, we only
25125      did this check at startup, which could lead to us holding a guard
25126      indefinitely. Fixes bug 5380; bugfix on 0.2.1.14-rc.
25127    - When fetching a bridge descriptor from a bridge authority,
25128      always do so anonymously, whether we have been able to open
25129      circuits or not. Partial fix for bug 1938; bugfix on 0.2.0.7-alpha.
25130      This behavior makes it *safer* to use UpdateBridgesFromAuthority,
25131      but we'll need to wait for bug 6010 before it's actually usable.
25132
25133  o Major bugfixes (directory authorities):
25134    - When computing weight parameters, behave more robustly in the
25135      presence of a bad bwweightscale value. Previously, the authorities
25136      would crash if they agreed on a sufficiently broken weight_scale
25137      value: now, they use a reasonable default and carry on. Partial
25138      fix for 5786; bugfix on 0.2.2.17-alpha.
25139    - Check more thoroughly to prevent a rogue authority from
25140      double-voting on any consensus directory parameter. Previously,
25141      authorities would crash in this case if the total number of
25142      votes for any parameter exceeded the number of active voters,
25143      but would let it pass otherwise. Partial fix for bug 5786; bugfix
25144      on 0.2.2.2-alpha.
25145
25146  o Minor features:
25147    - Rate-limit log messages when asked to connect anonymously to
25148      a private address. When these hit, they tended to hit fast and
25149      often. Also, don't bother trying to connect to addresses that we
25150      are sure will resolve to 127.0.0.1: getting 127.0.0.1 in a directory
25151      reply makes us think we have been lied to, even when the address the
25152      client tried to connect to was "localhost." Resolves ticket 2822.
25153    - Allow packagers to insert an extra string in server descriptor
25154      platform lines by setting the preprocessor variable TOR_BUILD_TAG.
25155      Resolves the rest of ticket 2988.
25156    - Raise the threshold of server descriptors needed (75%) and exit
25157      server descriptors needed (50%) before we will declare ourselves
25158      bootstrapped. This will make clients start building circuits a
25159      little later, but makes the initially constructed circuits less
25160      skewed and less in conflict with further directory fetches. Fixes
25161      ticket 3196.
25162    - Close any connection that sends unrecognized junk before the
25163      handshake. Solves an issue noted in bug 4369.
25164    - Improve log messages about managed transports. Resolves ticket 5070.
25165    - Tag a bridge's descriptor as "never to be sent unencrypted".
25166      This shouldn't matter, since bridges don't open non-anonymous
25167      connections to the bridge authority and don't allow unencrypted
25168      directory connections from clients, but we might as well make
25169      sure. Closes bug 5139.
25170    - Expose our view of whether we have gone dormant to the controller,
25171      via a new "GETINFO dormant" value. Torbutton and other controllers
25172      can use this to avoid doing periodic requests through Tor while
25173      it's dormant (bug 4718). Fixes bug 5954.
25174    - Tell GCC and Clang to check for any errors in format strings passed
25175      to the tor_v*(print|scan)f functions.
25176    - Update to the May 1 2012 Maxmind GeoLite Country database.
25177
25178  o Minor bugfixes (already included in 0.2.2.36):
25179    - Reject out-of-range times like 23:59:61 in parse_rfc1123_time().
25180      Fixes bug 5346; bugfix on 0.0.8pre3.
25181    - Correct parsing of certain date types in parse_http_time().
25182      Without this patch, If-Modified-Since would behave
25183      incorrectly. Fixes bug 5346; bugfix on 0.2.0.2-alpha. Patch from
25184      Esteban Manchado Velázques.
25185    - Make our number-parsing functions always treat too-large values
25186      as an error, even when those values exceed the width of the
25187      underlying type. Previously, if the caller provided these
25188      functions with minima or maxima set to the extreme values of the
25189      underlying integer type, these functions would return those
25190      values on overflow rather than treating overflow as an error.
25191      Fixes part of bug 5786; bugfix on 0.0.9.
25192    - If we hit the error case where routerlist_insert() replaces an
25193      existing (old) server descriptor, make sure to remove that
25194      server descriptor from the old_routers list. Fix related to bug
25195      1776. Bugfix on 0.2.2.18-alpha.
25196    - Clarify the behavior of MaxCircuitDirtiness with hidden service
25197      circuits. Fixes issue 5259.
25198
25199  o Minor bugfixes (coding cleanup, on 0.2.2.x and earlier):
25200    - Prevent a null-pointer dereference when receiving a data cell
25201      for a nonexistent stream when the circuit in question has an
25202      empty deliver window. We don't believe this is triggerable,
25203      since we don't currently allow deliver windows to become empty,
25204      but the logic is tricky enough that it's better to make the code
25205      robust. Fixes bug 5541; bugfix on 0.0.2pre14.
25206    - Fix a memory leak when trying to launch a DNS request when the
25207      network is disabled or the nameservers are unconfigurable. Fixes
25208      bug 5916; bugfix on Tor 0.1.2.1-alpha (for the unconfigurable
25209      nameserver case) and on 0.2.3.9-alpha (for the DisableNetwork case).
25210    - Don't hold a Windows file handle open for every file mapping;
25211      the file mapping handle is sufficient. Fixes bug 5951; bugfix on
25212      0.1.2.1-alpha.
25213    - Avoid O(n^2) performance characteristics when parsing a large
25214      extrainfo cache. Fixes bug 5828; bugfix on 0.2.0.1-alpha.
25215    - Format more doubles with %f, not %lf. Patch from grarpamp to make
25216      Tor build correctly on older BSDs again. Fixes bug 3894; bugfix on
25217      Tor 0.2.0.8-alpha.
25218    - Make our replacement implementation of strtok_r() compatible with
25219      the standard behavior of strtok_r(). Patch by nils. Fixes bug 5091;
25220      bugfix on 0.2.2.1-alpha.
25221    - Fix a NULL-pointer dereference on a badly formed
25222      SETCIRCUITPURPOSE command. Found by mikeyc. Fixes bug 5796;
25223      bugfix on 0.2.2.9-alpha.
25224    - Fix a build warning with Clang 3.1 related to our use of vasprintf.
25225      Fixes bug 5969. Bugfix on 0.2.2.11-alpha.
25226    - Defensively refactor rend_mid_rendezvous() so that protocol
25227      violations and length checks happen in the beginning. Fixes
25228      bug 5645.
25229    - Set _WIN32_WINNT to 0x0501 consistently throughout the code, so
25230      that IPv6 stuff will compile on MSVC, and compilation issues
25231      will be easier to track down. Fixes bug 5861.
25232
25233  o Minor bugfixes (correctness, on 0.2.2.x and earlier):
25234    - Exit nodes now correctly report EADDRINUSE and EADDRNOTAVAIL as
25235      resource exhaustion, so that clients can adjust their load to
25236      try other exits. Fixes bug 4710; bugfix on 0.1.0.1-rc, which
25237      started using END_STREAM_REASON_RESOURCELIMIT.
25238    - Don't check for whether the address we're using for outbound
25239      connections has changed until after the outbound connection has
25240      completed. On Windows, getsockname() doesn't succeed until the
25241      connection is finished. Fixes bug 5374; bugfix on 0.1.1.14-alpha.
25242    - If the configuration tries to set MyFamily on a bridge, refuse to
25243      do so, and warn about the security implications. Fixes bug 4657;
25244      bugfix on 0.2.0.3-alpha.
25245    - If the client fails to set a reasonable set of ciphersuites
25246      during its v2 handshake renegotiation, allow the renegotiation to
25247      continue nevertheless (i.e. send all the required certificates).
25248      Fixes bug 4591; bugfix on 0.2.0.20-rc.
25249    - When we receive a SIGHUP and the controller __ReloadTorrcOnSIGHUP
25250      option is set to 0 (which Vidalia version 0.2.16 now does when
25251      a SAVECONF attempt fails), perform other actions that SIGHUP
25252      usually causes (like reopening the logs). Fixes bug 5095; bugfix
25253      on 0.2.1.9-alpha.
25254    - If we fail to write a microdescriptor to the disk cache, do not
25255      continue replacing the old microdescriptor file. Fixes bug 2954;
25256      bugfix on 0.2.2.6-alpha.
25257    - Exit nodes don't need to fetch certificates for authorities that
25258      they don't recognize; only directory authorities, bridges,
25259      and caches need to do that. Fixes part of bug 2297; bugfix on
25260      0.2.2.11-alpha.
25261    - Correctly handle checking the permissions on the parent
25262      directory of a control socket in the root directory. Bug found
25263      by Esteban Manchado Velázquez. Fixes bug 5089; bugfix on Tor
25264      0.2.2.26-beta.
25265    - When told to add a bridge with the same digest as a preexisting
25266      bridge but a different addr:port, change the addr:port as
25267      requested. Previously we would not notice the change. Fixes half
25268      of bug 5603; fix on 0.2.2.26-beta.
25269    - End AUTHCHALLENGE error messages (in the control protocol) with
25270      a CRLF. Fixes bug 5760; bugfix on 0.2.2.36 and 0.2.3.13-alpha.
25271
25272  o Minor bugfixes (on 0.2.3.x):
25273    - Turn an assertion (that the number of handshakes received as a
25274      server is not < 1) into a warning. Fixes bug 4873; bugfix on
25275      0.2.3.1-alpha.
25276    - Format IPv4 addresses correctly in ADDRMAP events. (Previously,
25277      we had reversed them when the answer was cached.) Fixes bug
25278      5723; bugfix on 0.2.3.1-alpha.
25279    - Work correctly on Linux systems with accept4 support advertised in
25280      their headers, but without accept4 support in the kernel. Fix
25281      by murb. Fixes bug 5762; bugfix on 0.2.3.1-alpha.
25282    - When told to add a bridge with the same addr:port as a preexisting
25283      bridge but a different transport, change the transport as
25284      requested. Previously we would not notice the change. Fixes half
25285      of bug 5603; fix on 0.2.3.2-alpha.
25286    - Avoid a "double-reply" warning when replying to a SOCKS request
25287      with a parse error. Patch from Fabian Keil. Fixes bug 4108;
25288      bugfix on 0.2.3.4-alpha.
25289    - Fix a bug where a bridge authority crashes if it has seen no
25290      directory requests when it's time to write statistics to disk.
25291      Fixes bug 5891; bugfix on 0.2.3.6-alpha. Also fixes bug 5508 in
25292      a better way.
25293    - Don't try to open non-control listeners when DisableNetwork is set.
25294      Previously, we'd open all listeners, then immediately close them.
25295      Fixes bug 5604; bugfix on 0.2.3.9-alpha.
25296    - Don't abort the managed proxy protocol if the managed proxy
25297      sends us an unrecognized line; ignore it instead. Fixes bug
25298      5910; bugfix on 0.2.3.9-alpha.
25299    - Fix a compile warning in crypto.c when compiling with clang 3.1.
25300      Fixes bug 5969, bugfix on 0.2.3.9-alpha.
25301    - Fix a compilation issue on GNU Hurd, which doesn't have PATH_MAX.
25302      Fixes bug 5355; bugfix on 0.2.3.11-alpha.
25303    - Remove bogus definition of "_WIN32" from src/win32/orconfig.h, to
25304      unbreak the MSVC build. Fixes bug 5858; bugfix on 0.2.3.12-alpha.
25305    - Resolve numerous small warnings and build issues with MSVC. Resolves
25306      bug 5859.
25307
25308  o Documentation fixes:
25309    - Improve the manual's documentation for the NT Service command-line
25310      options. Addresses ticket 3964.
25311    - Clarify SessionGroup documentation slightly; resolves ticket 5437.
25312    - Document the changes to the ORPort and DirPort options, and the
25313      fact that {OR/Dir}ListenAddress is now unnecessary (and
25314      therefore deprecated). Resolves ticket 5597.
25315
25316  o Removed files:
25317    - Remove the torrc.bridge file: we don't use it for anything, and
25318      it had become badly desynchronized from torrc.sample. Resolves
25319      bug 5622.
25320
25321
25322Changes in version 0.2.2.36 - 2012-05-24
25323  Tor 0.2.2.36 updates the addresses for two of the eight directory
25324  authorities, fixes some potential anonymity and security issues,
25325  and fixes several crash bugs.
25326
25327  Tor 0.2.1.x has reached its end-of-life. Those Tor versions have many
25328  known flaws, and nobody should be using them. You should upgrade. If
25329  you're using a Linux or BSD and its packages are obsolete, stop using
25330  those packages and upgrade anyway.
25331
25332  o Directory authority changes:
25333    - Change IP address for maatuska (v3 directory authority).
25334    - Change IP address for ides (v3 directory authority), and rename
25335      it to turtles.
25336
25337  o Security fixes:
25338    - When building or running with any version of OpenSSL earlier
25339      than 0.9.8s or 1.0.0f, disable SSLv3 support. These OpenSSL
25340      versions have a bug (CVE-2011-4576) in which their block cipher
25341      padding includes uninitialized data, potentially leaking sensitive
25342      information to any peer with whom they make a SSLv3 connection. Tor
25343      does not use SSL v3 by default, but a hostile client or server
25344      could force an SSLv3 connection in order to gain information that
25345      they shouldn't have been able to get. The best solution here is to
25346      upgrade to OpenSSL 0.9.8s or 1.0.0f (or later). But when building
25347      or running with a non-upgraded OpenSSL, we disable SSLv3 entirely
25348      to make sure that the bug can't happen.
25349    - Never use a bridge or a controller-supplied node as an exit, even
25350      if its exit policy allows it. Found by wanoskarnet. Fixes bug
25351      5342. Bugfix on 0.1.1.15-rc (for controller-purpose descriptors)
25352      and 0.2.0.3-alpha (for bridge-purpose descriptors).
25353    - Only build circuits if we have a sufficient threshold of the total
25354      descriptors that are marked in the consensus with the "Exit"
25355      flag. This mitigates an attack proposed by wanoskarnet, in which
25356      all of a client's bridges collude to restrict the exit nodes that
25357      the client knows about. Fixes bug 5343.
25358    - Provide controllers with a safer way to implement the cookie
25359      authentication mechanism. With the old method, if another locally
25360      running program could convince a controller that it was the Tor
25361      process, then that program could trick the controller into telling
25362      it the contents of an arbitrary 32-byte file. The new "SAFECOOKIE"
25363      authentication method uses a challenge-response approach to prevent
25364      this attack. Fixes bug 5185; implements proposal 193.
25365
25366  o Major bugfixes:
25367    - Avoid logging uninitialized data when unable to decode a hidden
25368      service descriptor cookie. Fixes bug 5647; bugfix on 0.2.1.5-alpha.
25369    - Avoid a client-side assertion failure when receiving an INTRODUCE2
25370      cell on a general purpose circuit. Fixes bug 5644; bugfix on
25371      0.2.1.6-alpha.
25372    - Fix builds when the path to sed, openssl, or sha1sum contains
25373      spaces, which is pretty common on Windows. Fixes bug 5065; bugfix
25374      on 0.2.2.1-alpha.
25375    - Correct our replacements for the timeradd() and timersub() functions
25376      on platforms that lack them (for example, Windows). The timersub()
25377      function is used when expiring circuits, while timeradd() is
25378      currently unused. Bug report and patch by Vektor. Fixes bug 4778;
25379      bugfix on 0.2.2.24-alpha.
25380    - Fix the SOCKET_OK test that we use to tell when socket
25381      creation fails so that it works on Win64. Fixes part of bug 4533;
25382      bugfix on 0.2.2.29-beta. Bug found by wanoskarnet.
25383
25384  o Minor bugfixes:
25385    - Reject out-of-range times like 23:59:61 in parse_rfc1123_time().
25386      Fixes bug 5346; bugfix on 0.0.8pre3.
25387    - Make our number-parsing functions always treat too-large values
25388      as an error, even when those values exceed the width of the
25389      underlying type. Previously, if the caller provided these
25390      functions with minima or maxima set to the extreme values of the
25391      underlying integer type, these functions would return those
25392      values on overflow rather than treating overflow as an error.
25393      Fixes part of bug 5786; bugfix on 0.0.9.
25394    - Older Linux kernels erroneously respond to strange nmap behavior
25395      by having accept() return successfully with a zero-length
25396      socket. When this happens, just close the connection. Previously,
25397      we would try harder to learn the remote address: but there was
25398      no such remote address to learn, and our method for trying to
25399      learn it was incorrect. Fixes bugs 1240, 4745, and 4747. Bugfix
25400      on 0.1.0.3-rc. Reported and diagnosed by "r1eo".
25401    - Correct parsing of certain date types in parse_http_time().
25402      Without this patch, If-Modified-Since would behave
25403      incorrectly. Fixes bug 5346; bugfix on 0.2.0.2-alpha. Patch from
25404      Esteban Manchado Velázques.
25405    - Change the BridgePassword feature (part of the "bridge community"
25406      design, which is not yet implemented) to use a time-independent
25407      comparison. The old behavior might have allowed an adversary
25408      to use timing to guess the BridgePassword value. Fixes bug 5543;
25409      bugfix on 0.2.0.14-alpha.
25410    - Detect and reject certain misformed escape sequences in
25411      configuration values. Previously, these values would cause us
25412      to crash if received in a torrc file or over an authenticated
25413      control port. Bug found by Esteban Manchado Velázquez, and
25414      independently by Robert Connolly from Matta Consulting who further
25415      noted that it allows a post-authentication heap overflow. Patch
25416      by Alexander Schrijver. Fixes bugs 5090 and 5402 (CVE 2012-1668);
25417      bugfix on 0.2.0.16-alpha.
25418    - Fix a compile warning when using the --enable-openbsd-malloc
25419      configure option. Fixes bug 5340; bugfix on 0.2.0.20-rc.
25420    - During configure, detect when we're building with clang version
25421      3.0 or lower and disable the -Wnormalized=id and -Woverride-init
25422      CFLAGS. clang doesn't support them yet.
25423    - When sending an HTTP/1.1 proxy request, include a Host header.
25424      Fixes bug 5593; bugfix on 0.2.2.1-alpha.
25425    - Fix a NULL-pointer dereference on a badly formed SETCIRCUITPURPOSE
25426      command. Found by mikeyc. Fixes bug 5796; bugfix on 0.2.2.9-alpha.
25427    - If we hit the error case where routerlist_insert() replaces an
25428      existing (old) server descriptor, make sure to remove that
25429      server descriptor from the old_routers list. Fix related to bug
25430      1776. Bugfix on 0.2.2.18-alpha.
25431
25432  o Minor bugfixes (documentation and log messages):
25433    - Fix a typo in a log message in rend_service_rendezvous_has_opened().
25434      Fixes bug 4856; bugfix on Tor 0.0.6.
25435    - Update "ClientOnly" man page entry to explain that there isn't
25436      really any point to messing with it. Resolves ticket 5005.
25437    - Document the GiveGuardFlagTo_CVE_2011_2768_VulnerableRelays
25438      directory authority option (introduced in Tor 0.2.2.34).
25439    - Downgrade the "We're missing a certificate" message from notice
25440      to info: people kept mistaking it for a real problem, whereas it
25441      is seldom the problem even when we are failing to bootstrap. Fixes
25442      bug 5067; bugfix on 0.2.0.10-alpha.
25443    - Correctly spell "connect" in a log message on failure to create a
25444      controlsocket. Fixes bug 4803; bugfix on 0.2.2.26-beta.
25445    - Clarify the behavior of MaxCircuitDirtiness with hidden service
25446      circuits. Fixes issue 5259.
25447
25448  o Minor features:
25449    - Directory authorities now reject versions of Tor older than
25450      0.2.1.30, and Tor versions between 0.2.2.1-alpha and 0.2.2.20-alpha
25451      inclusive. These versions accounted for only a small fraction of
25452      the Tor network, and have numerous known security issues. Resolves
25453      issue 4788.
25454    - Update to the May 1 2012 Maxmind GeoLite Country database.
25455
25456  o Feature removal:
25457    - When sending or relaying a RELAY_EARLY cell, we used to convert
25458      it to a RELAY cell if the connection was using the v1 link
25459      protocol. This was a workaround for older versions of Tor, which
25460      didn't handle RELAY_EARLY cells properly. Now that all supported
25461      versions can handle RELAY_EARLY cells, and now that we're enforcing
25462      the "no RELAY_EXTEND commands except in RELAY_EARLY cells" rule,
25463      remove this workaround. Addresses bug 4786.
25464
25465
25466Changes in version 0.2.3.15-alpha - 2012-04-30
25467  Tor 0.2.3.15-alpha fixes a variety of smaller bugs, including making
25468  the development branch build on Windows again.
25469
25470  o Minor bugfixes (on 0.2.2.x and earlier):
25471    - Make sure that there are no unhandled pending TLS errors before
25472      reading from a TLS stream. We had checks in 0.1.0.3-rc, but
25473      lost them in 0.1.0.5-rc when we refactored read_to_buf_tls().
25474      Bugfix on 0.1.0.5-rc; fixes bug 4528.
25475    - Fix an assert that directory authorities could trigger on sighup
25476      during some configuration state transitions. We now don't treat
25477      it as a fatal error when the new descriptor we just generated in
25478      init_keys() isn't accepted. Fixes bug 4438; bugfix on 0.2.1.9-alpha.
25479    - After we pick a directory mirror, we would refuse to use it if
25480      it's in our ExcludeExitNodes list, resulting in mysterious failures
25481      to bootstrap for people who just wanted to avoid exiting from
25482      certain locations. Fixes bug 5623; bugfix on 0.2.2.25-alpha.
25483    - When building with --enable-static-tor on OpenBSD, do not
25484      erroneously attempt to link -lrt. Fixes bug 5103.
25485
25486  o Minor bugfixes (on 0.2.3.x):
25487    - When Tor is built with kernel headers from a recent (last few
25488      years) Linux kernel, do not fail to run on older (pre-2.6.28
25489      Linux kernels). Fixes bug 5112; bugfix on 0.2.3.1-alpha.
25490    - Fix cross-compilation issues with mingw. Bugfixes on 0.2.3.6-alpha
25491      and 0.2.3.12-alpha.
25492    - Fix compilation with miniupnpc version 1.6; patch from
25493      Anthony G. Basile. Fixes bug 5434; bugfix on 0.2.3.12-alpha.
25494    - Fix compilation with MSVC, which had defined MS_WINDOWS. Bugfix
25495      on 0.2.3.13-alpha; found and fixed by Gisle Vanem.
25496    - Fix compilation on platforms without unistd.h, or where environ
25497      is defined in stdlib.h. Fixes bug 5704; bugfix on 0.2.3.13-alpha.
25498
25499  o Minor features:
25500    - Directory authorities are now a little more lenient at accepting
25501      older router descriptors, or newer router descriptors that don't
25502      make big changes. This should help ameliorate past and future
25503      issues where routers think they have uploaded valid descriptors,
25504      but the authorities don't think so. Fix for ticket 2479.
25505    - Make the code that clients use to detect an address change be
25506      IPv6-aware, so that it won't fill clients' logs with error
25507      messages when trying to get the IPv4 address of an IPv6
25508      connection. Implements ticket 5537.
25509
25510  o Removed features:
25511    - Remove the GiveGuardFlagTo_CVE_2011_2768_VulnerableRelays option;
25512      authorities needed to use it for a while to keep the network working
25513      as people upgraded to 0.2.1.31, 0.2.2.34, or 0.2.3.6-alpha, but
25514      that was six months ago. As of now, it should no longer be needed
25515      or used.
25516
25517
25518Changes in version 0.2.3.14-alpha - 2012-04-23
25519  Tor 0.2.3.14-alpha fixes yet more bugs to get us closer to a release
25520  candidate. It also dramatically speeds up AES: fast relays should
25521  consider switching to the newer OpenSSL library.
25522
25523  o Directory authority changes:
25524    - Change IP address for ides (v3 directory authority), and rename
25525      it to turtles.
25526
25527  o Major bugfixes:
25528    - Avoid logging uninitialized data when unable to decode a hidden
25529      service descriptor cookie. Fixes bug 5647; bugfix on 0.2.1.5-alpha.
25530    - Avoid a client-side assertion failure when receiving an INTRODUCE2
25531      cell on a general purpose circuit. Fixes bug 5644; bugfix on
25532      0.2.1.6-alpha.
25533    - If authorities are unable to get a v2 consensus document from other
25534      directory authorities, they no longer fall back to fetching
25535      them from regular directory caches. Fixes bug 5635; bugfix on
25536      0.2.2.26-beta, where routers stopped downloading v2 consensus
25537      documents entirely.
25538    - When we start a Tor client with a normal consensus already cached,
25539      be willing to download a microdescriptor consensus. Fixes bug 4011;
25540      fix on 0.2.3.1-alpha.
25541
25542  o Major features (performance):
25543    - When built to use OpenSSL 1.0.1, and built for an x86 or x86_64
25544      instruction set, take advantage of OpenSSL's AESNI, bitsliced, or
25545      vectorized AES implementations as appropriate. These can be much,
25546      much faster than other AES implementations.
25547
25548  o Minor bugfixes (0.2.2.x and earlier):
25549    - Don't launch more than 10 service-side introduction-point circuits
25550      for a hidden service in five minutes. Previously, we would consider
25551      launching more introduction-point circuits if at least one second
25552      had passed without any introduction-point circuits failing. Fixes
25553      bug 4607; bugfix on 0.0.7pre1.
25554    - Change the BridgePassword feature (part of the "bridge community"
25555      design, which is not yet implemented) to use a time-independent
25556      comparison. The old behavior might have allowed an adversary
25557      to use timing to guess the BridgePassword value. Fixes bug 5543;
25558      bugfix on 0.2.0.14-alpha.
25559    - Enforce correct return behavior of tor_vsscanf() when the '%%'
25560      pattern is used. Fixes bug 5558. Bugfix on 0.2.1.13.
25561    - When sending an HTTP/1.1 proxy request, include a Host header.
25562      Fixes bug 5593; bugfix on 0.2.2.1-alpha.
25563    - Don't log that we have "decided to publish new relay descriptor"
25564      unless we are actually publishing a descriptor. Fixes bug 3942;
25565      bugfix on 0.2.2.28-beta.
25566
25567  o Minor bugfixes (0.2.3.x):
25568    - Fix a bug where a bridge authority crashes (on a failed assert)
25569      if it has seen no directory requests when it's time to write
25570      statistics to disk. Fixes bug 5508. Bugfix on 0.2.3.6-alpha.
25571    - Fix bug stomping on ORPort option NoListen and ignoring option
25572      NoAdvertise. Fixes bug 5151; bugfix on 0.2.3.9-alpha.
25573    - In the testsuite, provide a large enough buffer in the tor_sscanf
25574      unit test. Otherwise we'd overrun that buffer and crash during
25575      the unit tests. Found by weasel. Fixes bug 5449; bugfix on
25576      0.2.3.12-alpha.
25577    - Make sure we create the keys directory if it doesn't exist and we're
25578      about to store the dynamic Diffie-Hellman parameters. Fixes bug
25579      5572; bugfix on 0.2.3.13-alpha.
25580    - Fix a small memory leak when trying to decode incorrect base16
25581      authenticator during SAFECOOKIE authentication. Found by
25582      Coverity Scan. Fixes CID 507. Bugfix on 0.2.3.13-alpha.
25583
25584  o Minor features:
25585    - Add more information to a log statement that might help track down
25586      bug 4091. If you're seeing "Bug: tor_addr_is_internal() called with a
25587      non-IP address" messages (or any Bug messages, for that matter!),
25588      please let us know about it.
25589    - Relays now understand an IPv6 address when they get one from a
25590      directory server. Resolves ticket 4875.
25591    - Resolve IPv6 addresses in bridge and entry statistics to country
25592      code "??" which means we at least count them. Resolves ticket 5053;
25593      improves on 0.2.3.9-alpha.
25594    - Update to the April 3 2012 Maxmind GeoLite Country database.
25595    - Begin a doc/state-contents.txt file to explain the contents of
25596      the Tor state file. Fixes bug 2987.
25597
25598  o Default torrc changes:
25599    - Stop listing "socksport 9050" in torrc.sample. We open a socks
25600      port on 9050 by default anyway, so this should not change anything
25601      in practice.
25602    - Stop mentioning the deprecated *ListenAddress options in
25603      torrc.sample. Fixes bug 5438.
25604    - Document unit of bandwidth related options in sample torrc.
25605      Fixes bug 5621.
25606
25607  o Removed features:
25608    - The "torify" script no longer supports the "tsocks" socksifier
25609      tool, since tsocks doesn't support DNS and UDP right for Tor.
25610      Everyone should be using torsocks instead. Fixes bugs 3530 and
25611      5180. Based on a patch by "ugh".
25612
25613  o Code refactoring:
25614    - Change the symmetric cipher interface so that creating and
25615      initializing a stream cipher are no longer separate functions.
25616    - Remove all internal support for unpadded RSA. We never used it, and
25617      it would be a bad idea to start.
25618
25619
25620Changes in version 0.2.3.13-alpha - 2012-03-26
25621  Tor 0.2.3.13-alpha fixes a variety of stability and correctness bugs
25622  in managed pluggable transports, as well as providing other cleanups
25623  that get us closer to a release candidate.
25624
25625  o Directory authority changes:
25626    - Change IP address for maatuska (v3 directory authority).
25627
25628  o Security fixes:
25629    - Provide controllers with a safer way to implement the cookie
25630      authentication mechanism. With the old method, if another locally
25631      running program could convince a controller that it was the Tor
25632      process, then that program could trick the controller into telling
25633      it the contents of an arbitrary 32-byte file. The new "SAFECOOKIE"
25634      authentication method uses a challenge-response approach to prevent
25635      this attack. Fixes bug 5185, implements proposal 193.
25636    - Never use a bridge or a controller-supplied node as an exit, even
25637      if its exit policy allows it. Found by wanoskarnet. Fixes bug
25638      5342. Bugfix on 0.1.1.15-rc (for controller-purpose descriptors)
25639      and 0.2.0.3-alpha (for bridge-purpose descriptors).
25640    - Only build circuits if we have a sufficient threshold of the total
25641      descriptors that are marked in the consensus with the "Exit"
25642      flag. This mitigates an attack proposed by wanoskarnet, in which
25643      all of a client's bridges collude to restrict the exit nodes that
25644      the client knows about. Fixes bug 5343.
25645
25646  o Major bugfixes (on Tor 0.2.3.x):
25647    - Avoid an assert when managed proxies like obfsproxy are configured,
25648      and we receive HUP signals or setconf attempts too rapidly. This
25649      situation happens most commonly when Vidalia tries to attach to
25650      Tor or tries to configure the Tor it's attached to. Fixes bug 5084;
25651      bugfix on 0.2.3.6-alpha.
25652    - Fix a relay-side pluggable transports bug where managed proxies were
25653      unreachable from the Internet, because Tor asked them to bind on
25654      localhost. Fixes bug 4725; bugfix on 0.2.3.9-alpha.
25655    - Stop discarding command-line arguments when TestingTorNetwork
25656      is set. Discovered by Kevin Bauer. Fixes bug 5373; bugfix on
25657      0.2.3.9-alpha, where task 4552 added support for two layers of
25658      torrc files.
25659    - Resume allowing the unit tests to run in gdb. This was accidentally
25660      made impossible when the DisableDebuggerAttachment option was
25661      introduced. Fixes bug 5448; bugfix on 0.2.3.9-alpha.
25662    - Resume building with nat-pmp support. Fixes bug 4955; bugfix on
25663      0.2.3.11-alpha. Reported by Anthony G. Basile.
25664
25665  o Minor bugfixes (on 0.2.2.x and earlier):
25666    - Ensure we don't cannibalize circuits that are longer than three hops
25667      already, so we don't end up making circuits with 5 or more
25668      hops. Patch contributed by wanoskarnet. Fixes bug 5231; bugfix on
25669      0.1.0.1-rc which introduced cannibalization.
25670    - Detect and reject certain misformed escape sequences in
25671      configuration values. Previously, these values would cause us
25672      to crash if received in a torrc file or over an authenticated
25673      control port. Bug found by Esteban Manchado Velázquez, and
25674      independently by Robert Connolly from Matta Consulting who further
25675      noted that it allows a post-authentication heap overflow. Patch
25676      by Alexander Schrijver. Fixes bugs 5090 and 5402 (CVE 2012-1668);
25677      bugfix on 0.2.0.16-alpha.
25678    - Fix a compile warning when using the --enable-openbsd-malloc
25679      configure option. Fixes bug 5340; bugfix on 0.2.0.20-rc.
25680    - Directory caches no longer refuse to clean out descriptors because
25681      of missing v2 networkstatus documents, unless they're configured
25682      to retrieve v2 networkstatus documents. Fixes bug 4838; bugfix on
25683      0.2.2.26-beta. Patch by Daniel Bryg.
25684    - Update to the latest version of the tinytest unit testing framework.
25685      This includes a couple of bugfixes that can be relevant for
25686      running forked unit tests on Windows, and removes all reserved
25687      identifiers.
25688
25689  o Minor bugfixes (on 0.2.3.x):
25690    - On a failed pipe() call, don't leak file descriptors. Fixes bug
25691      4296; bugfix on 0.2.3.1-alpha.
25692    - Spec conformance: on a v3 handshake, do not send a NETINFO cell
25693      until after we have received a CERTS cell. Fixes bug 4361; bugfix
25694      on 0.2.3.6-alpha. Patch by "frosty".
25695    - When binding to an IPv6 address, set the IPV6_V6ONLY socket
25696      option, so that the IP stack doesn't decide to use it for IPv4
25697      too. Fixes bug 4760; bugfix on 0.2.3.9-alpha.
25698    - Ensure that variables set in Tor's environment cannot override
25699      environment variables that Tor passes to a managed
25700      pluggable-transport proxy. Previously, Tor would pass every
25701      variable in its environment to managed proxies along with the new
25702      ones, in such a way that on many operating systems, the inherited
25703      environment variables would override those which Tor tried to
25704      explicitly set. Bugfix on 0.2.3.12-alpha for most Unixoid systems;
25705      bugfix on 0.2.3.9-alpha for Windows.
25706
25707  o Minor features:
25708    - A wide variety of new unit tests by Esteban Manchado Velázquez.
25709    - Shorten links in the tor-exit-notice file. Patch by Christian Kujau.
25710    - Update to the March 6 2012 Maxmind GeoLite Country database.
25711
25712
25713Changes in version 0.2.3.12-alpha - 2012-02-13
25714  Tor 0.2.3.12-alpha lets fast exit relays scale better, allows clients
25715  to use bridges that run Tor 0.2.2.x, and resolves several big bugs
25716  when Tor is configured to use a pluggable transport like obfsproxy.
25717
25718  o Major bugfixes:
25719    - Fix builds when the path to sed, openssl, or sha1sum contains
25720      spaces, which is pretty common on Windows. Fixes bug 5065; bugfix
25721      on 0.2.2.1-alpha.
25722    - Set the SO_REUSEADDR socket option before we call bind() on outgoing
25723      connections. This change should allow busy exit relays to stop
25724      running out of available sockets as quickly. Fixes bug 4950;
25725      bugfix on 0.2.2.26-beta.
25726    - Allow 0.2.3.x clients to use 0.2.2.x bridges. Previously the client
25727      would ask the bridge for microdescriptors, which are only supported
25728      in 0.2.3.x, and then fail to bootstrap when it didn't get the
25729      answers it wanted. Fixes bug 4013; bugfix on 0.2.3.2-alpha.
25730    - Properly set up obfsproxy's environment when in managed mode. The
25731      Tor Browser Bundle needs LD_LIBRARY_PATH to be passed to obfsproxy,
25732      and when you run your Tor as a daemon, there's no HOME. Fixes bugs
25733      5076 and 5082; bugfix on 0.2.3.6-alpha.
25734
25735  o Minor features:
25736    - Use the dead_strip option when building Tor on OS X. This reduces
25737      binary size by almost 19% when linking openssl and libevent
25738      statically, which we do for Tor Browser Bundle.
25739    - Fix broken URLs in the sample torrc file, and tell readers about
25740      the OutboundBindAddress, ExitPolicyRejectPrivate, and
25741      PublishServerDescriptor options. Addresses bug 4652.
25742    - Update to the February 7 2012 Maxmind GeoLite Country database.
25743
25744  o Minor bugfixes:
25745    - Downgrade the "We're missing a certificate" message from notice
25746      to info: people kept mistaking it for a real problem, whereas it
25747      is seldom the problem even when we are failing to bootstrap. Fixes
25748      bug 5067; bugfix on 0.2.0.10-alpha.
25749    - Don't put "TOR_PT_EXTENDED_SERVER_PORT=127.0.0.1:4200" in a
25750      managed pluggable transport server proxy's environment.
25751      Previously, we would put it there, even though Tor doesn't
25752      implement an 'extended server port' yet, and even though Tor
25753      almost certainly isn't listening at that address. For now, we set
25754      it to an empty string to avoid crashing older obfsproxies. Bugfix
25755      on 0.2.3.6-alpha.
25756    - Log the heartbeat message every HeartbeatPeriod seconds, not every
25757      HeartbeatPeriod + 1 seconds. Fixes bug 4942; bugfix on
25758      0.2.3.1-alpha. Bug reported by Scott Bennett.
25759    - Calculate absolute paths correctly on Windows. Fixes bug 4973;
25760      bugfix on 0.2.3.11-alpha.
25761    - Update "ClientOnly" man page entry to explain that there isn't
25762      really any point to messing with it. Resolves ticket 5005.
25763    - Use the correct CVE number for CVE-2011-4576 in our comments and
25764      log messages. Found by "fermenthor". Resolves bug 5066; bugfix on
25765      0.2.3.11-alpha.
25766
25767  o Code simplifications and refactoring:
25768    - Use the _WIN32 macro throughout our code to detect Windows.
25769      (Previously we had used the obsolete 'WIN32' and the idiosyncratic
25770      'MS_WINDOWS'.)
25771
25772
25773Changes in version 0.2.3.11-alpha - 2012-01-22
25774  Tor 0.2.3.11-alpha marks feature-freeze for the 0.2.3 tree. It deploys
25775  the last step of the plan to limit maximum circuit length, includes
25776  a wide variety of hidden service performance and correctness fixes,
25777  works around an OpenSSL security flaw if your distro is too stubborn
25778  to upgrade, and fixes a bunch of smaller issues.
25779
25780  o Major features:
25781    - Now that Tor 0.2.0.x is completely deprecated, enable the final
25782      part of "Proposal 110: Avoiding infinite length circuits" by
25783      refusing all circuit-extend requests that do not use a relay_early
25784      cell. This change helps Tor resist a class of denial-of-service
25785      attacks by limiting the maximum circuit length.
25786    - Adjust the number of introduction points that a hidden service
25787      will try to maintain based on how long its introduction points
25788      remain in use and how many introductions they handle. Fixes
25789      part of bug 3825.
25790    - Try to use system facilities for enumerating local interface
25791      addresses, before falling back to our old approach (which was
25792      binding a UDP socket, and calling getsockname() on it). That
25793      approach was scaring OS X users whose draconian firewall
25794      software warned about binding to UDP sockets, regardless of
25795      whether packets were sent. Now we try to use getifaddrs(),
25796      SIOCGIFCONF, or GetAdaptersAddresses(), depending on what the
25797      system supports. Resolves ticket 1827.
25798
25799  o Major security workaround:
25800    - When building or running with any version of OpenSSL earlier
25801      than 0.9.8s or 1.0.0f, disable SSLv3 support. These OpenSSL
25802      versions have a bug (CVE-2011-4576) in which their block cipher
25803      padding includes uninitialized data, potentially leaking sensitive
25804      information to any peer with whom they make a SSLv3 connection. Tor
25805      does not use SSL v3 by default, but a hostile client or server
25806      could force an SSLv3 connection in order to gain information that
25807      they shouldn't have been able to get. The best solution here is to
25808      upgrade to OpenSSL 0.9.8s or 1.0.0f (or later). But when building
25809      or running with a non-upgraded OpenSSL, we disable SSLv3 entirely
25810      to make sure that the bug can't happen.
25811
25812  o Major bugfixes:
25813    - Fix the SOCKET_OK test that we use to tell when socket
25814      creation fails so that it works on Win64. Fixes part of bug 4533;
25815      bugfix on 0.2.2.29-beta. Bug found by wanoskarnet.
25816    - Correct our replacements for the timeradd() and timersub() functions
25817      on platforms that lack them (for example, Windows). The timersub()
25818      function is used when expiring circuits, while timeradd() is
25819      currently unused. Bug report and patch by Vektor. Fixes bug 4778;
25820      bugfix on 0.2.2.24-alpha and 0.2.3.1-alpha.
25821    - Do not use OpenSSL 1.0.0's counter mode: it has a critical bug
25822      that was fixed in OpenSSL 1.0.0a. We test for the counter mode
25823      bug at runtime, not compile time, because some distributions hack
25824      their OpenSSL to mis-report its version. Fixes bug 4779; bugfix
25825      on 0.2.3.9-alpha. Found by Pascal.
25826
25827  o Minor features (controller):
25828    - Use absolute path names when reporting the torrc filename in the
25829      control protocol, so a controller can more easily find the torrc
25830      file. Resolves bug 1101.
25831    - Extend the control protocol to report flags that control a circuit's
25832      path selection in CIRC events and in replies to 'GETINFO
25833      circuit-status'. Implements part of ticket 2411.
25834    - Extend the control protocol to report the hidden service address
25835      and current state of a hidden-service-related circuit in CIRC
25836      events and in replies to 'GETINFO circuit-status'. Implements part
25837      of ticket 2411.
25838    - When reporting the path to the cookie file to the controller,
25839      give an absolute path. Resolves ticket 4881.
25840    - Allow controllers to request an event notification whenever a
25841      circuit is cannibalized or its purpose is changed. Implements
25842      part of ticket 3457.
25843    - Include the creation time of a circuit in CIRC and CIRC2
25844      control-port events and the list produced by the 'GETINFO
25845      circuit-status' control-port command.
25846
25847  o Minor features (directory authorities):
25848    - Directory authorities now reject versions of Tor older than
25849      0.2.1.30, and Tor versions between 0.2.2.1-alpha and 0.2.2.20-alpha
25850      inclusive. These versions accounted for only a small fraction of
25851      the Tor network, and have numerous known security issues. Resolves
25852      issue 4788.
25853    - Authority operators can now vote for all relays in a given
25854      set of countries to be BadDir/BadExit/Invalid/Rejected.
25855    - Provide two consensus parameters (FastFlagMinThreshold and
25856      FastFlagMaxThreshold) to control the range of allowable bandwidths
25857      for the Fast directory flag. These allow authorities to run
25858      experiments on appropriate requirements for being a "Fast" node.
25859      The AuthDirFastGuarantee config value still applies. Implements
25860      ticket 3946.
25861    - Document the GiveGuardFlagTo_CVE_2011_2768_VulnerableRelays
25862      directory authority option (introduced in Tor 0.2.2.34).
25863
25864  o Minor features (other):
25865    - Don't disable the DirPort when we cannot exceed our AccountingMax
25866      limit during this interval because the effective bandwidthrate is
25867      low enough. This is useful in a situation where AccountMax is only
25868      used as an additional safeguard or to provide statistics.
25869    - Prepend an informative header to generated dynamic_dh_params files.
25870    - If EntryNodes are given, but UseEntryGuards is set to 0, warn that
25871      EntryNodes will have no effect. Resolves issue 2571.
25872    - Log more useful messages when we fail to disable debugger
25873      attachment.
25874    - Log which authority we're missing votes from when we go to fetch
25875      them from the other auths.
25876    - Log (at debug level) whenever a circuit's purpose is changed.
25877    - Add missing documentation for the MaxClientCircuitsPending,
25878      UseMicrodescriptors, UserspaceIOCPBuffers, and
25879      _UseFilteringSSLBufferevents options, all introduced during
25880      the 0.2.3.x series.
25881    - Update to the January 3 2012 Maxmind GeoLite Country database.
25882
25883  o Minor bugfixes (hidden services):
25884    - Don't close hidden service client circuits which have almost
25885      finished connecting to their destination when they reach
25886      the normal circuit-build timeout. Previously, we would close
25887      introduction circuits which are waiting for an acknowledgement
25888      from the introduction point, and rendezvous circuits which have
25889      been specified in an INTRODUCE1 cell sent to a hidden service,
25890      after the normal CBT. Now, we mark them as 'timed out', and launch
25891      another rendezvous attempt in parallel. This behavior change can
25892      be disabled using the new CloseHSClientCircuitsImmediatelyOnTimeout
25893      option. Fixes part of bug 1297; bugfix on 0.2.2.2-alpha.
25894    - Don't close hidden-service-side rendezvous circuits when they
25895      reach the normal circuit-build timeout. This behavior change can
25896      be disabled using the new
25897      CloseHSServiceRendCircuitsImmediatelyOnTimeout option. Fixes the
25898      remaining part of bug 1297; bugfix on 0.2.2.2-alpha.
25899    - Make sure we never mark the wrong rendezvous circuit as having
25900      had its introduction cell acknowledged by the introduction-point
25901      relay. Previously, when we received an INTRODUCE_ACK cell on a
25902      client-side hidden-service introduction circuit, we might have
25903      marked a rendezvous circuit other than the one we specified in
25904      the INTRODUCE1 cell as INTRO_ACKED, which would have produced
25905      a warning message and interfered with the hidden service
25906      connection-establishment process. Fixes bug 4759; bugfix on
25907      0.2.3.3-alpha, when we added the stream-isolation feature which
25908      might cause Tor to open multiple rendezvous circuits for the same
25909      hidden service.
25910    - Don't trigger an assertion failure when we mark a new client-side
25911      hidden-service introduction circuit for close during the process
25912      of creating it. Fixes bug 4796; bugfix on 0.2.3.6-alpha. Reported
25913      by murb.
25914
25915  o Minor bugfixes (log messages):
25916    - Correctly spell "connect" in a log message on failure to create a
25917      controlsocket. Fixes bug 4803; bugfix on 0.2.2.26-beta and
25918      0.2.3.2-alpha.
25919    - Fix a typo in a log message in rend_service_rendezvous_has_opened().
25920      Fixes bug 4856; bugfix on Tor 0.0.6.
25921    - Fix the log message describing how we work around discovering
25922      that our version is the ill-fated OpenSSL 0.9.8l. Fixes bug
25923      4837; bugfix on 0.2.2.9-alpha.
25924    - When logging about a disallowed .exit name, do not also call it
25925      an "invalid onion address". Fixes bug 3325; bugfix on 0.2.2.9-alpha.
25926
25927  o Minor bugfixes (build fixes):
25928    - During configure, detect when we're building with clang version
25929      3.0 or lower and disable the -Wnormalized=id and -Woverride-init
25930      CFLAGS. clang doesn't support them yet.
25931    - During configure, search for library containing cos function as
25932      libm lives in libcore on some platforms (BeOS/Haiku). Linking
25933      against libm was hard-coded before. Fixes the first part of bug
25934      4727; bugfix on 0.2.2.2-alpha. Patch and analysis by Martin Hebnes
25935      Pedersen.
25936    - Detect attempts to build Tor on (as yet hypothetical) versions
25937      of Windows where sizeof(intptr_t) != sizeof(SOCKET). Partial
25938      fix for bug 4533. Bugfix on 0.2.2.28-beta.
25939    - Preprocessor directives should not be put inside the arguments
25940      of a macro. This would break compilation with GCC releases prior
25941      to version 3.3. We would never recommend such an old GCC version,
25942      but it is apparently required for binary compatibility on some
25943      platforms (namely, certain builds of Haiku). Fixes the other part
25944      of bug 4727; bugfix on 0.2.3.3-alpha. Patch and analysis by Martin
25945      Hebnes Pedersen.
25946
25947  o Minor bugfixes (other):
25948    - Older Linux kernels erroneously respond to strange nmap behavior
25949      by having accept() return successfully with a zero-length
25950      socket. When this happens, just close the connection. Previously,
25951      we would try harder to learn the remote address: but there was
25952      no such remote address to learn, and our method for trying to
25953      learn it was incorrect. Fixes bugs 1240, 4745, and 4747. Bugfix
25954      on 0.1.0.3-rc. Reported and diagnosed by "r1eo".
25955    - Fix null-pointer access that could occur if TLS allocation failed.
25956      Fixes bug 4531; bugfix on 0.2.0.20-rc. Found by "troll_un". This was
25957      erroneously listed as fixed in 0.2.3.9-alpha, but the fix had
25958      accidentally been reverted.
25959    - Fix our implementation of crypto_random_hostname() so it can't
25960      overflow on ridiculously large inputs. (No Tor version has ever
25961      provided this kind of bad inputs, but let's be correct in depth.)
25962      Fixes bug 4413; bugfix on 0.2.2.9-alpha. Fix by Stephen Palmateer.
25963    - Find more places in the code that should have been testing for
25964      invalid sockets using the SOCKET_OK macro. Required for a fix
25965      for bug 4533. Bugfix on 0.2.2.28-beta.
25966    - Fix an assertion failure when, while running with bufferevents, a
25967      connection finishes connecting after it is marked for close, but
25968      before it is closed. Fixes bug 4697; bugfix on 0.2.3.1-alpha.
25969    - test_util_spawn_background_ok() hardcoded the expected value
25970      for ENOENT to 2. This isn't portable as error numbers are
25971      platform specific, and particularly the hurd has ENOENT at
25972      0x40000002. Construct expected string at runtime, using the correct
25973      value for ENOENT. Fixes bug 4733; bugfix on 0.2.3.1-alpha.
25974    - Reject attempts to disable DisableDebuggerAttachment while Tor is
25975      running. Fixes bug 4650; bugfix on 0.2.3.9-alpha.
25976    - Use an appropriate-width type for sockets in tor-fw-helper on
25977      win64. Fixes bug 1983 at last. Bugfix on 0.2.3.9-alpha.
25978
25979  o Feature removal:
25980    - When sending or relaying a RELAY_EARLY cell, we used to convert
25981      it to a RELAY cell if the connection was using the v1 link
25982      protocol. This was a workaround for older versions of Tor, which
25983      didn't handle RELAY_EARLY cells properly. Now that all supported
25984      versions can handle RELAY_EARLY cells, and now that we're enforcing
25985      the "no RELAY_EXTEND commands except in RELAY_EARLY cells" rule,
25986      remove this workaround. Addresses bug 4786.
25987
25988  o Code simplifications and refactoring:
25989    - Use OpenSSL's built-in SSL_state_string_long() instead of our
25990      own homebrewed ssl_state_to_string() replacement. Patch from
25991      Emile Snyder. Fixes bug 4653.
25992    - Use macros to indicate OpenSSL versions, so we don't need to worry
25993      about accidental hexadecimal bit shifts.
25994    - Remove some workaround code for OpenSSL 0.9.6 (which is no longer
25995      supported).
25996    - Convert more instances of tor_snprintf+tor_strdup into tor_asprintf.
25997    - Use the smartlist_add_asprintf() alias more consistently.
25998    - Use a TOR_INVALID_SOCKET macro when initializing a socket to an
25999      invalid value, rather than just -1.
26000    - Rename a handful of old identifiers, mostly related to crypto
26001      structures and crypto functions. By convention, our "create an
26002      object" functions are called "type_new()", our "free an object"
26003      functions are called "type_free()", and our types indicate that
26004      they are types only with a final "_t". But a handful of older
26005      types and functions broke these rules, with function names like
26006      "type_create" or "subsystem_op_type", or with type names like
26007      type_env_t.
26008
26009
26010Changes in version 0.2.3.10-alpha - 2011-12-16
26011  Tor 0.2.3.10-alpha fixes a critical heap-overflow security issue in
26012  Tor's buffers code. Absolutely everybody should upgrade.
26013
26014  The bug relied on an incorrect calculation when making data continuous
26015  in one of our IO buffers, if the first chunk of the buffer was
26016  misaligned by just the wrong amount. The miscalculation would allow an
26017  attacker to overflow a piece of heap-allocated memory. To mount this
26018  attack, the attacker would need to either open a SOCKS connection to
26019  Tor's SocksPort (usually restricted to localhost), or target a Tor
26020  instance configured to make its connections through a SOCKS proxy
26021  (which Tor does not do by default).
26022
26023  Good security practice requires that all heap-overflow bugs should be
26024  presumed to be exploitable until proven otherwise, so we are treating
26025  this as a potential code execution attack. Please upgrade immediately!
26026  This bug does not affect bufferevents-based builds of Tor. Special
26027  thanks to "Vektor" for reporting this issue to us!
26028
26029  This release also contains a few minor bugfixes for issues discovered
26030  in 0.2.3.9-alpha.
26031
26032  o Major bugfixes:
26033    - Fix a heap overflow bug that could occur when trying to pull
26034      data into the first chunk of a buffer, when that chunk had
26035      already had some data drained from it. Fixes CVE-2011-2778;
26036      bugfix on 0.2.0.16-alpha. Reported by "Vektor".
26037
26038  o Minor bugfixes:
26039    - If we can't attach streams to a rendezvous circuit when we
26040      finish connecting to a hidden service, clear the rendezvous
26041      circuit's stream-isolation state and try to attach streams
26042      again. Previously, we cleared rendezvous circuits' isolation
26043      state either too early (if they were freshly built) or not at all
26044      (if they had been built earlier and were cannibalized). Bugfix on
26045      0.2.3.3-alpha; fixes bug 4655.
26046    - Fix compilation of the libnatpmp helper on non-Windows. Bugfix on
26047      0.2.3.9-alpha; fixes bug 4691. Reported by Anthony G. Basile.
26048    - Fix an assertion failure when a relay with accounting enabled
26049      starts up while dormant. Fixes bug 4702; bugfix on 0.2.3.9-alpha.
26050
26051  o Minor features:
26052    - Update to the December 6 2011 Maxmind GeoLite Country database.
26053
26054
26055Changes in version 0.2.2.35 - 2011-12-16
26056  Tor 0.2.2.35 fixes a critical heap-overflow security issue in Tor's
26057  buffers code. Absolutely everybody should upgrade.
26058
26059  The bug relied on an incorrect calculation when making data continuous
26060  in one of our IO buffers, if the first chunk of the buffer was
26061  misaligned by just the wrong amount. The miscalculation would allow an
26062  attacker to overflow a piece of heap-allocated memory. To mount this
26063  attack, the attacker would need to either open a SOCKS connection to
26064  Tor's SocksPort (usually restricted to localhost), or target a Tor
26065  instance configured to make its connections through a SOCKS proxy
26066  (which Tor does not do by default).
26067
26068  Good security practice requires that all heap-overflow bugs should be
26069  presumed to be exploitable until proven otherwise, so we are treating
26070  this as a potential code execution attack. Please upgrade immediately!
26071  This bug does not affect bufferevents-based builds of Tor. Special
26072  thanks to "Vektor" for reporting this issue to us!
26073
26074  Tor 0.2.2.35 also fixes several bugs in previous versions, including
26075  crash bugs for unusual configurations, and a long-term bug that
26076  would prevent Tor from starting on Windows machines with draconian
26077  AV software.
26078
26079  With this release, we remind everyone that 0.2.0.x has reached its
26080  formal end-of-life. Those Tor versions have many known flaws, and
26081  nobody should be using them. You should upgrade -- ideally to the
26082  0.2.2.x series. If you're using a Linux or BSD and its packages are
26083  obsolete, stop using those packages and upgrade anyway.
26084
26085  The Tor 0.2.1.x series is also approaching its end-of-life: it will no
26086  longer receive support after some time in early 2012.
26087
26088  o Major bugfixes:
26089    - Fix a heap overflow bug that could occur when trying to pull
26090      data into the first chunk of a buffer, when that chunk had
26091      already had some data drained from it. Fixes CVE-2011-2778;
26092      bugfix on 0.2.0.16-alpha. Reported by "Vektor".
26093    - Initialize Libevent with the EVENT_BASE_FLAG_NOLOCK flag enabled, so
26094      that it doesn't attempt to allocate a socketpair. This could cause
26095      some problems on Windows systems with overzealous firewalls. Fix for
26096      bug 4457; workaround for Libevent versions 2.0.1-alpha through
26097      2.0.15-stable.
26098    - If we mark an OR connection for close based on a cell we process,
26099      don't process any further cells on it. We already avoid further
26100      reads on marked-for-close connections, but now we also discard the
26101      cells we'd already read. Fixes bug 4299; bugfix on 0.2.0.10-alpha,
26102      which was the first version where we might mark a connection for
26103      close based on processing a cell on it.
26104    - Correctly sanity-check that we don't underflow on a memory
26105      allocation (and then assert) for hidden service introduction
26106      point decryption. Bug discovered by Dan Rosenberg. Fixes bug 4410;
26107      bugfix on 0.2.1.5-alpha.
26108    - Fix a memory leak when we check whether a hidden service
26109      descriptor has any usable introduction points left. Fixes bug
26110      4424. Bugfix on 0.2.2.25-alpha.
26111    - Don't crash when we're running as a relay and don't have a GeoIP
26112      file. Bugfix on 0.2.2.34; fixes bug 4340. This backports a fix
26113      we've had in the 0.2.3.x branch already.
26114    - When running as a client, do not print a misleading (and plain
26115      wrong) log message that we're collecting "directory request"
26116      statistics: clients don't collect statistics. Also don't create a
26117      useless (because empty) stats file in the stats/ directory. Fixes
26118      bug 4353; bugfix on 0.2.2.34.
26119
26120  o Minor bugfixes:
26121    - Detect failure to initialize Libevent. This fix provides better
26122      detection for future instances of bug 4457.
26123    - Avoid frequent calls to the fairly expensive cull_wedged_cpuworkers
26124      function. This was eating up hideously large amounts of time on some
26125      busy servers. Fixes bug 4518; bugfix on 0.0.9.8.
26126    - Resolve an integer overflow bug in smartlist_ensure_capacity().
26127      Fixes bug 4230; bugfix on Tor 0.1.0.1-rc. Based on a patch by
26128      Mansour Moufid.
26129    - Don't warn about unused log_mutex in log.c when building with
26130      --disable-threads using a recent GCC. Fixes bug 4437; bugfix on
26131      0.1.0.6-rc which introduced --disable-threads.
26132    - When configuring, starting, or stopping an NT service, stop
26133      immediately after the service configuration attempt has succeeded
26134      or failed. Fixes bug 3963; bugfix on 0.2.0.7-alpha.
26135    - When sending a NETINFO cell, include the original address
26136      received for the other side, not its canonical address. Found
26137      by "troll_un"; fixes bug 4349; bugfix on 0.2.0.10-alpha.
26138    - Fix a typo in a hibernation-related log message. Fixes bug 4331;
26139      bugfix on 0.2.2.23-alpha; found by "tmpname0901".
26140    - Fix a memory leak in launch_direct_bridge_descriptor_fetch() that
26141      occurred when a client tried to fetch a descriptor for a bridge
26142      in ExcludeNodes. Fixes bug 4383; bugfix on 0.2.2.25-alpha.
26143    - Backport fixes for a pair of compilation warnings on Windows.
26144      Fixes bug 4521; bugfix on 0.2.2.28-beta and on 0.2.2.29-beta.
26145    - If we had ever tried to call tor_addr_to_str on an address of
26146      unknown type, we would have done a strdup on an uninitialized
26147      buffer. Now we won't. Fixes bug 4529; bugfix on 0.2.1.3-alpha.
26148      Reported by "troll_un".
26149    - Correctly detect and handle transient lookup failures from
26150      tor_addr_lookup. Fixes bug 4530; bugfix on 0.2.1.5-alpha.
26151      Reported by "troll_un".
26152    - Fix null-pointer access that could occur if TLS allocation failed.
26153      Fixes bug 4531; bugfix on 0.2.0.20-rc. Found by "troll_un".
26154    - Use tor_socket_t type for listener argument to accept(). Fixes bug
26155      4535; bugfix on 0.2.2.28-beta. Found by "troll_un".
26156
26157  o Minor features:
26158    - Add two new config options for directory authorities:
26159      AuthDirFastGuarantee sets a bandwidth threshold for guaranteeing the
26160      Fast flag, and AuthDirGuardBWGuarantee sets a bandwidth threshold
26161      that is always sufficient to satisfy the bandwidth requirement for
26162      the Guard flag. Now it will be easier for researchers to simulate
26163      Tor networks with different values. Resolves ticket 4484.
26164    - When Tor ignores a hidden service specified in its configuration,
26165      include the hidden service's directory in the warning message.
26166      Previously, we would only tell the user that some hidden service
26167      was ignored. Bugfix on 0.0.6; fixes bug 4426.
26168    - Update to the December 6 2011 Maxmind GeoLite Country database.
26169
26170  o Packaging changes:
26171    - Make it easier to automate expert package builds on Windows,
26172      by removing an absolute path from makensis.exe command.
26173
26174
26175Changes in version 0.2.1.32 - 2011-12-16
26176  Tor 0.2.1.32 backports important security and privacy fixes for
26177  oldstable. This release is intended only for package maintainers and
26178  others who cannot use the 0.2.2 stable series. All others should be
26179  using Tor 0.2.2.x or newer.
26180
26181  The Tor 0.2.1.x series will reach formal end-of-life some time in
26182  early 2012; we will stop releasing patches for it then.
26183
26184  o Major bugfixes (also included in 0.2.2.x):
26185    - Correctly sanity-check that we don't underflow on a memory
26186      allocation (and then assert) for hidden service introduction
26187      point decryption. Bug discovered by Dan Rosenberg. Fixes bug 4410;
26188      bugfix on 0.2.1.5-alpha.
26189    - Fix a heap overflow bug that could occur when trying to pull
26190      data into the first chunk of a buffer, when that chunk had
26191      already had some data drained from it. Fixes CVE-2011-2778;
26192      bugfix on 0.2.0.16-alpha. Reported by "Vektor".
26193
26194  o Minor features:
26195    - Update to the December 6 2011 Maxmind GeoLite Country database.
26196
26197
26198Changes in version 0.2.3.9-alpha - 2011-12-08
26199  Tor 0.2.3.9-alpha introduces initial IPv6 support for bridges, adds
26200  a "DisableNetwork" security feature that bundles can use to avoid
26201  touching the network until bridges are configured, moves forward on
26202  the pluggable transport design, fixes a flaw in the hidden service
26203  design that unnecessarily prevented clients with wrong clocks from
26204  reaching hidden services, and fixes a wide variety of other issues.
26205
26206  o Major features:
26207    - Clients can now connect to private bridges over IPv6. Bridges
26208      still need at least one IPv4 address in order to connect to
26209      other relays. Note that we don't yet handle the case where the
26210      user has two bridge lines for the same bridge (one IPv4, one
26211      IPv6). Implements parts of proposal 186.
26212    - New "DisableNetwork" config option to prevent Tor from launching any
26213      connections or accepting any connections except on a control port.
26214      Bundles and controllers can set this option before letting Tor talk
26215      to the rest of the network, for example to prevent any connections
26216      to a non-bridge address. Packages like Orbot can also use this
26217      option to instruct Tor to save power when the network is off.
26218    - Clients and bridges can now be configured to use a separate
26219      "transport" proxy. This approach makes the censorship arms race
26220      easier by allowing bridges to use protocol obfuscation plugins. It
26221      implements the "managed proxy" part of proposal 180 (ticket 3472).
26222    - When using OpenSSL 1.0.0 or later, use OpenSSL's counter mode
26223      implementation. It makes AES_CTR about 7% faster than our old one
26224      (which was about 10% faster than the one OpenSSL used to provide).
26225      Resolves ticket 4526.
26226    - Add a "tor2web mode" for clients that want to connect to hidden
26227      services non-anonymously (and possibly more quickly). As a safety
26228      measure to try to keep users from turning this on without knowing
26229      what they are doing, tor2web mode must be explicitly enabled at
26230      compile time, and a copy of Tor compiled to run in tor2web mode
26231      cannot be used as a normal Tor client. Implements feature 2553.
26232    - Add experimental support for running on Windows with IOCP and no
26233      kernel-space socket buffers. This feature is controlled by a new
26234      "UserspaceIOCPBuffers" config option (off by default), which has
26235      no effect unless Tor has been built with support for bufferevents,
26236      is running on Windows, and has enabled IOCP. This may, in the long
26237      run, help solve or mitigate bug 98.
26238    - Use a more secure consensus parameter voting algorithm. Now at
26239      least three directory authorities or a majority of them must
26240      vote on a given parameter before it will be included in the
26241      consensus. Implements proposal 178.
26242
26243  o Major bugfixes:
26244    - Hidden services now ignore the timestamps on INTRODUCE2 cells.
26245      They used to check that the timestamp was within 30 minutes
26246      of their system clock, so they could cap the size of their
26247      replay-detection cache, but that approach unnecessarily refused
26248      service to clients with wrong clocks. Bugfix on 0.2.1.6-alpha, when
26249      the v3 intro-point protocol (the first one which sent a timestamp
26250      field in the INTRODUCE2 cell) was introduced; fixes bug 3460.
26251    - Only use the EVP interface when AES acceleration is enabled,
26252      to avoid a 5-7% performance regression. Resolves issue 4525;
26253      bugfix on 0.2.3.8-alpha.
26254
26255  o Privacy/anonymity features (bridge detection):
26256    - Make bridge SSL certificates a bit more stealthy by using random
26257      serial numbers, in the same fashion as OpenSSL when generating
26258      self-signed certificates. Implements ticket 4584.
26259    - Introduce a new config option "DynamicDHGroups", enabled by
26260      default, which provides each bridge with a unique prime DH modulus
26261      to be used during SSL handshakes. This option attempts to help
26262      against censors who might use the Apache DH modulus as a static
26263      identifier for bridges. Addresses ticket 4548.
26264
26265  o Minor features (new/different config options):
26266    - New configuration option "DisableDebuggerAttachment" (on by default)
26267      to prevent basic debugging attachment attempts by other processes.
26268      Supports Mac OS X and Gnu/Linux. Resolves ticket 3313.
26269    - Allow MapAddress directives to specify matches against super-domains,
26270      as in "MapAddress *.torproject.org *.torproject.org.torserver.exit".
26271      Implements issue 933.
26272    - Slightly change behavior of "list" options (that is, config
26273      options that can appear more than once) when they appear both in
26274      torrc and on the command line. Previously, the command-line options
26275      would be appended to the ones from torrc. Now, the command-line
26276      options override the torrc options entirely. This new behavior
26277      allows the user to override list options (like exit policies and
26278      ports to listen on) from the command line, rather than simply
26279      appending to the list.
26280    - You can get the old (appending) command-line behavior for "list"
26281      options by prefixing the option name with a "+".
26282    - You can remove all the values for a "list" option from the command
26283      line without adding any new ones by prefixing the option name
26284      with a "/".
26285    - Add experimental support for a "defaults" torrc file to be parsed
26286      before the regular torrc. Torrc options override the defaults file's
26287      options in the same way that the command line overrides the torrc.
26288      The SAVECONF controller command saves only those options which
26289      differ between the current configuration and the defaults file. HUP
26290      reloads both files. (Note: This is an experimental feature; its
26291      behavior will probably be refined in future 0.2.3.x-alpha versions
26292      to better meet packagers' needs.) Implements task 4552.
26293
26294  o Minor features:
26295    - Try to make the introductory warning message that Tor prints on
26296      startup more useful for actually finding help and information.
26297      Resolves ticket 2474.
26298    - Running "make version" now displays the version of Tor that
26299      we're about to build. Idea from katmagic; resolves issue 4400.
26300    - Expire old or over-used hidden service introduction points.
26301      Required by fix for bug 3460.
26302    - Move the replay-detection cache for the RSA-encrypted parts of
26303      INTRODUCE2 cells to the introduction point data structures.
26304      Previously, we would use one replay-detection cache per hidden
26305      service. Required by fix for bug 3460.
26306    - Reduce the lifetime of elements of hidden services' Diffie-Hellman
26307      public key replay-detection cache from 60 minutes to 5 minutes. This
26308      replay-detection cache is now used only to detect multiple
26309      INTRODUCE2 cells specifying the same rendezvous point, so we can
26310      avoid launching multiple simultaneous attempts to connect to it.
26311
26312  o Minor bugfixes (on Tor 0.2.2.x and earlier):
26313    - Resolve an integer overflow bug in smartlist_ensure_capacity().
26314      Fixes bug 4230; bugfix on Tor 0.1.0.1-rc. Based on a patch by
26315      Mansour Moufid.
26316    - Fix a minor formatting issue in one of tor-gencert's error messages.
26317      Fixes bug 4574.
26318    - Prevent a false positive from the check-spaces script, by disabling
26319      the "whitespace between function name and (" check for functions
26320      named 'op()'.
26321    - Fix a log message suggesting that people contact a non-existent
26322      email address. Fixes bug 3448.
26323    - Fix null-pointer access that could occur if TLS allocation failed.
26324      Fixes bug 4531; bugfix on 0.2.0.20-rc. Found by "troll_un".
26325    - Report a real bootstrap problem to the controller on router
26326      identity mismatch. Previously we just said "foo", which probably
26327      made a lot of sense at the time. Fixes bug 4169; bugfix on
26328      0.2.1.1-alpha.
26329    - If we had ever tried to call tor_addr_to_str() on an address of
26330      unknown type, we would have done a strdup() on an uninitialized
26331      buffer. Now we won't. Fixes bug 4529; bugfix on 0.2.1.3-alpha.
26332      Reported by "troll_un".
26333    - Correctly detect and handle transient lookup failures from
26334      tor_addr_lookup(). Fixes bug 4530; bugfix on 0.2.1.5-alpha.
26335      Reported by "troll_un".
26336    - Use tor_socket_t type for listener argument to accept(). Fixes bug
26337      4535; bugfix on 0.2.2.28-beta. Found by "troll_un".
26338    - Initialize conn->addr to a valid state in spawn_cpuworker(). Fixes
26339      bug 4532; found by "troll_un".
26340
26341  o Minor bugfixes (on Tor 0.2.3.x):
26342    - Fix a compile warning in tor_inet_pton(). Bugfix on 0.2.3.8-alpha;
26343      fixes bug 4554.
26344    - Don't send two ESTABLISH_RENDEZVOUS cells when opening a new
26345      circuit for use as a hidden service client's rendezvous point.
26346      Fixes bugs 4641 and 4171; bugfix on 0.2.3.3-alpha. Diagnosed
26347      with help from wanoskarnet.
26348    - Restore behavior of overriding SocksPort, ORPort, and similar
26349      options from the command line. Bugfix on 0.2.3.3-alpha.
26350
26351  o Build fixes:
26352    - Properly handle the case where the build-tree is not the same
26353      as the source tree when generating src/common/common_sha1.i,
26354      src/or/micro-revision.i, and src/or/or_sha1.i. Fixes bug 3953;
26355      bugfix on 0.2.0.1-alpha.
26356
26357  o Code simplifications, cleanups, and refactorings:
26358    - Remove the pure attribute from all functions that used it
26359      previously. In many cases we assigned it incorrectly, because the
26360      functions might assert or call impure functions, and we don't have
26361      evidence that keeping the pure attribute is worthwhile. Implements
26362      changes suggested in ticket 4421.
26363    - Remove some dead code spotted by coverity. Fixes cid 432.
26364      Bugfix on 0.2.3.1-alpha, closes bug 4637.
26365
26366
26367Changes in version 0.2.3.8-alpha - 2011-11-22
26368  Tor 0.2.3.8-alpha fixes some crash and assert bugs, including a
26369  socketpair-related bug that has been bothering Windows users. It adds
26370  support to serve microdescriptors to controllers, so Vidalia's network
26371  map can resume listing relays (once Vidalia implements its side),
26372  and adds better support for hardware AES acceleration. Finally, it
26373  starts the process of adjusting the bandwidth cutoff for getting the
26374  "Fast" flag from 20KB to (currently) 32KB -- preliminary results show
26375  that tiny relays harm performance more than they help network capacity.
26376
26377  o Major bugfixes:
26378    - Initialize Libevent with the EVENT_BASE_FLAG_NOLOCK flag enabled, so
26379      that it doesn't attempt to allocate a socketpair. This could cause
26380      some problems on Windows systems with overzealous firewalls. Fix for
26381      bug 4457; workaround for Libevent versions 2.0.1-alpha through
26382      2.0.15-stable.
26383    - Correctly sanity-check that we don't underflow on a memory
26384      allocation (and then assert) for hidden service introduction
26385      point decryption. Bug discovered by Dan Rosenberg. Fixes bug 4410;
26386      bugfix on 0.2.1.5-alpha.
26387    - Remove the artificially low cutoff of 20KB to guarantee the Fast
26388      flag. In the past few years the average relay speed has picked
26389      up, and while the "top 7/8 of the network get the Fast flag" and
26390      "all relays with 20KB or more of capacity get the Fast flag" rules
26391      used to have the same result, now the top 7/8 of the network has
26392      a capacity more like 32KB. Bugfix on 0.2.1.14-rc. Fixes bug 4489.
26393    - Fix a rare assertion failure when checking whether a v0 hidden
26394      service descriptor has any usable introduction points left, and
26395      we don't have enough information to build a circuit to the first
26396      intro point named in the descriptor. The HS client code in
26397      0.2.3.x no longer uses v0 HS descriptors, but this assertion can
26398      trigger on (and crash) v0 HS authorities. Fixes bug 4411.
26399      Bugfix on 0.2.3.1-alpha; diagnosed by frosty_un.
26400    - Make bridge authorities not crash when they are asked for their own
26401      descriptor. Bugfix on 0.2.3.7-alpha, reported by Lucky Green.
26402    - When running as a client, do not print a misleading (and plain
26403      wrong) log message that we're collecting "directory request"
26404      statistics: clients don't collect statistics. Also don't create a
26405      useless (because empty) stats file in the stats/ directory. Fixes
26406      bug 4353; bugfix on 0.2.2.34 and 0.2.3.7-alpha.
26407
26408  o Major features:
26409    - Allow Tor controllers like Vidalia to obtain the microdescriptor
26410      for a relay by identity digest or nickname. Previously,
26411      microdescriptors were only available by their own digests, so a
26412      controller would have to ask for and parse the whole microdescriptor
26413      consensus in order to look up a single relay's microdesc. Fixes
26414      bug 3832; bugfix on 0.2.3.1-alpha.
26415    - Use OpenSSL's EVP interface for AES encryption, so that all AES
26416      operations can use hardware acceleration (if present). Resolves
26417      ticket 4442.
26418
26419  o Minor bugfixes (on 0.2.2.x and earlier):
26420    - Detect failure to initialize Libevent. This fix provides better
26421      detection for future instances of bug 4457.
26422    - Avoid frequent calls to the fairly expensive cull_wedged_cpuworkers
26423      function. This was eating up hideously large amounts of time on some
26424      busy servers. Fixes bug 4518; bugfix on 0.0.9.8.
26425    - Don't warn about unused log_mutex in log.c when building with
26426      --disable-threads using a recent GCC. Fixes bug 4437; bugfix on
26427      0.1.0.6-rc which introduced --disable-threads.
26428    - Allow manual 'authenticate' commands to the controller interface
26429      from netcat (nc) as well as telnet. We were rejecting them because
26430      they didn't come with the expected whitespace at the end of the
26431      command. Bugfix on 0.1.1.1-alpha; fixes bug 2893.
26432    - Fix some (not actually triggerable) buffer size checks in usage of
26433      tor_inet_ntop. Fixes bug 4434; bugfix on Tor 0.2.0.1-alpha. Patch
26434      by Anders Sundman.
26435    - Fix parsing of some corner-cases with tor_inet_pton(). Fixes
26436      bug 4515; bugfix on 0.2.0.1-alpha; fix by Anders Sundman.
26437    - When configuring, starting, or stopping an NT service, stop
26438      immediately after the service configuration attempt has succeeded
26439      or failed. Fixes bug 3963; bugfix on 0.2.0.7-alpha.
26440    - When sending a NETINFO cell, include the original address
26441      received for the other side, not its canonical address. Found
26442      by "troll_un"; fixes bug 4349; bugfix on 0.2.0.10-alpha.
26443    - Rename the bench_{aes,dmap} functions to test_*, so that tinytest
26444      can pick them up when the tests aren't disabled. Bugfix on
26445      0.2.2.4-alpha which introduced tinytest.
26446    - Fix a memory leak when we check whether a hidden service
26447      descriptor has any usable introduction points left. Fixes bug
26448      4424. Bugfix on 0.2.2.25-alpha.
26449    - Fix a memory leak in launch_direct_bridge_descriptor_fetch() that
26450      occurred when a client tried to fetch a descriptor for a bridge
26451      in ExcludeNodes. Fixes bug 4383; bugfix on 0.2.2.25-alpha.
26452
26453  o Minor bugfixes (on 0.2.3.x):
26454    - Make util unit tests build correctly with MSVC. Bugfix on
26455      0.2.3.3-alpha. Patch by Gisle Vanem.
26456    - Successfully detect AUTH_CHALLENGE cells with no recognized
26457      authentication type listed. Fixes bug 4367; bugfix on 0.2.3.6-alpha.
26458      Found by frosty_un.
26459    - If a relay receives an AUTH_CHALLENGE cell it can't answer,
26460      it should still send a NETINFO cell to allow the connection to
26461      become open. Fixes bug 4368; fix on 0.2.3.6-alpha; bug found by
26462      "frosty".
26463    - Log less loudly when we get an invalid authentication certificate
26464      from a source other than a directory authority: it's not unusual
26465      to see invalid certs because of clock skew. Fixes bug 4370; bugfix
26466      on 0.2.3.6-alpha.
26467    - Tolerate servers with more clock skew in their authentication
26468      certificates than previously. Fixes bug 4371; bugfix on
26469      0.2.3.6-alpha.
26470    - Fix a couple of compile warnings on Windows. Fixes bug 4469; bugfix
26471      on 0.2.3.4-alpha and 0.2.3.6-alpha.
26472
26473  o Minor features:
26474    - Add two new config options for directory authorities:
26475      AuthDirFastGuarantee sets a bandwidth threshold for guaranteeing the
26476      Fast flag, and AuthDirGuardBWGuarantee sets a bandwidth threshold
26477      that is always sufficient to satisfy the bandwidth requirement for
26478      the Guard flag. Now it will be easier for researchers to simulate
26479      Tor networks with different values. Resolves ticket 4484.
26480    - When Tor ignores a hidden service specified in its configuration,
26481      include the hidden service's directory in the warning message.
26482      Previously, we would only tell the user that some hidden service
26483      was ignored. Bugfix on 0.0.6; fixes bug 4426.
26484    - When we fail to initialize Libevent, retry with IOCP disabled so we
26485      don't need to turn on multi-threading support in Libevent, which in
26486      turn requires a working socketpair(). This is a workaround for bug
26487      4457, which affects Libevent versions from 2.0.1-alpha through
26488      2.0.15-stable.
26489    - Detect when we try to build on a platform that doesn't define
26490      AF_UNSPEC to 0. We don't work there, so refuse to compile.
26491    - Update to the November 1 2011 Maxmind GeoLite Country database.
26492
26493  o Packaging changes:
26494    - Make it easier to automate expert package builds on Windows,
26495      by removing an absolute path from makensis.exe command.
26496
26497  o Code simplifications and refactoring:
26498    - Remove some redundant #include directives throughout the code.
26499      Patch from Andrea Gelmini.
26500    - Unconditionally use OpenSSL's AES implementation instead of our
26501      old built-in one. OpenSSL's AES has been better for a while, and
26502      relatively few servers should still be on any version of OpenSSL
26503      that doesn't have good optimized assembly AES.
26504    - Use the name "CERTS" consistently to refer to the new cell type;
26505      we were calling it CERT in some places and CERTS in others.
26506
26507  o Testing:
26508    - Numerous new unit tests for functions in util.c and address.c by
26509      Anders Sundman.
26510    - The long-disabled benchmark tests are now split into their own
26511      ./src/test/bench binary.
26512    - The benchmark tests can now use more accurate timers than
26513      gettimeofday() when such timers are available.
26514
26515
26516Changes in version 0.2.3.7-alpha - 2011-10-30
26517  Tor 0.2.3.7-alpha fixes a crash bug in 0.2.3.6-alpha introduced by
26518  the new v3 handshake. It also resolves yet another bridge address
26519  enumeration issue.
26520
26521  o Major bugfixes:
26522    - If we mark an OR connection for close based on a cell we process,
26523      don't process any further cells on it. We already avoid further
26524      reads on marked-for-close connections, but now we also discard the
26525      cells we'd already read. Fixes bug 4299; bugfix on 0.2.0.10-alpha,
26526      which was the first version where we might mark a connection for
26527      close based on processing a cell on it.
26528    - Fix a double-free bug that would occur when we received an invalid
26529      certificate in a CERT cell in the new v3 handshake. Fixes bug 4343;
26530      bugfix on 0.2.3.6-alpha.
26531    - Bridges no longer include their address in NETINFO cells on outgoing
26532      OR connections, to allow them to blend in better with clients.
26533      Removes another avenue for enumerating bridges. Reported by
26534      "troll_un". Fixes bug 4348; bugfix on 0.2.0.10-alpha, when NETINFO
26535      cells were introduced.
26536
26537  o Trivial fixes:
26538    - Fixed a typo in a hibernation-related log message. Fixes bug 4331;
26539      bugfix on 0.2.2.23-alpha; found by "tmpname0901".
26540
26541
26542Changes in version 0.2.3.6-alpha - 2011-10-26
26543  Tor 0.2.3.6-alpha includes the fix from 0.2.2.34 for a critical
26544  anonymity vulnerability where an attacker can deanonymize Tor
26545  users. Everybody should upgrade.
26546
26547  This release also features support for a new v3 connection handshake
26548  protocol, and fixes to make hidden service connections more robust.
26549
26550  o Major features:
26551    - Implement a new handshake protocol (v3) for authenticating Tors to
26552      each other over TLS. It should be more resistant to fingerprinting
26553      than previous protocols, and should require less TLS hacking for
26554      future Tor implementations. Implements proposal 176.
26555    - Allow variable-length padding cells to disguise the length of
26556      Tor's TLS records. Implements part of proposal 184.
26557
26558  o Privacy/anonymity fixes (clients):
26559    - Clients and bridges no longer send TLS certificate chains on
26560      outgoing OR connections. Previously, each client or bridge would
26561      use the same cert chain for all outgoing OR connections until
26562      its IP address changes, which allowed any relay that the client
26563      or bridge contacted to determine which entry guards it is using.
26564      Fixes CVE-2011-2768. Bugfix on 0.0.9pre5; found by "frosty_un".
26565    - If a relay receives a CREATE_FAST cell on a TLS connection, it
26566      no longer considers that connection as suitable for satisfying a
26567      circuit EXTEND request. Now relays can protect clients from the
26568      CVE-2011-2768 issue even if the clients haven't upgraded yet.
26569    - Directory authorities no longer assign the Guard flag to relays
26570      that haven't upgraded to the above "refuse EXTEND requests
26571      to client connections" fix. Now directory authorities can
26572      protect clients from the CVE-2011-2768 issue even if neither
26573      the clients nor the relays have upgraded yet. There's a new
26574      "GiveGuardFlagTo_CVE_2011_2768_VulnerableRelays" config option
26575      to let us transition smoothly, else tomorrow there would be no
26576      guard relays.
26577
26578  o Major bugfixes (hidden services):
26579    - Improve hidden service robustness: when an attempt to connect to
26580      a hidden service ends, be willing to refetch its hidden service
26581      descriptors from each of the HSDir relays responsible for them
26582      immediately. Previously, we would not consider refetching the
26583      service's descriptors from each HSDir for 15 minutes after the last
26584      fetch, which was inconvenient if the hidden service was not running
26585      during the first attempt. Bugfix on 0.2.0.18-alpha; fixes bug 3335.
26586    - When one of a hidden service's introduction points appears to be
26587      unreachable, stop trying it. Previously, we would keep trying
26588      to build circuits to the introduction point until we lost the
26589      descriptor, usually because the user gave up and restarted Tor.
26590      Partly fixes bug 3825.
26591    - Don't launch a useless circuit after failing to use one of a
26592      hidden service's introduction points. Previously, we would
26593      launch a new introduction circuit, but not set the hidden service
26594      which that circuit was intended to connect to, so it would never
26595      actually be used. A different piece of code would then create a
26596      new introduction circuit correctly. Bug reported by katmagic and
26597      found by Sebastian Hahn. Bugfix on 0.2.1.13-alpha; fixes bug 4212.
26598
26599  o Major bugfixes (other):
26600    - Bridges now refuse CREATE or CREATE_FAST cells on OR connections
26601      that they initiated. Relays could distinguish incoming bridge
26602      connections from client connections, creating another avenue for
26603      enumerating bridges. Fixes CVE-2011-2769. Bugfix on 0.2.0.3-alpha.
26604      Found by "frosty_un".
26605    - Don't update the AccountingSoftLimitHitAt state file entry whenever
26606      tor gets started. This prevents a wrong average bandwidth
26607      estimate, which would cause relays to always start a new accounting
26608      interval at the earliest possible moment. Fixes bug 2003; bugfix
26609      on 0.2.2.7-alpha. Reported by BryonEldridge, who also helped
26610      immensely in tracking this bug down.
26611    - Fix a crash bug when changing node restrictions while a DNS lookup
26612      is in-progress. Fixes bug 4259; bugfix on 0.2.2.25-alpha. Bugfix
26613      by "Tey'".
26614
26615  o Minor bugfixes (on 0.2.2.x and earlier):
26616    - When a hidden service turns an extra service-side introduction
26617      circuit into a general-purpose circuit, free the rend_data and
26618      intro_key fields first, so we won't leak memory if the circuit
26619      is cannibalized for use as another service-side introduction
26620      circuit. Bugfix on 0.2.1.7-alpha; fixes bug 4251.
26621    - Rephrase the log message emitted if the TestSocks check is
26622      successful. Patch from Fabian Keil; fixes bug 4094.
26623    - Bridges now skip DNS self-tests, to act a little more stealthily.
26624      Fixes bug 4201; bugfix on 0.2.0.3-alpha, which first introduced
26625      bridges. Patch by "warms0x".
26626    - Remove a confusing dollar sign from the example fingerprint in the
26627      man page, and also make the example fingerprint a valid one. Fixes
26628      bug 4309; bugfix on 0.2.1.3-alpha.
26629    - Fix internal bug-checking logic that was supposed to catch
26630      failures in digest generation so that it will fail more robustly
26631      if we ask for a nonexistent algorithm. Found by Coverity Scan.
26632      Bugfix on 0.2.2.1-alpha; fixes Coverity CID 479.
26633    - Report any failure in init_keys() calls launched because our
26634      IP address has changed. Spotted by Coverity Scan. Bugfix on
26635      0.1.1.4-alpha; fixes CID 484.
26636
26637  o Minor bugfixes (on 0.2.3.x):
26638    - Fix a bug in configure.in that kept it from building a configure
26639      script with autoconf versions earlier than 2.61. Fixes bug 2430;
26640      bugfix on 0.2.3.1-alpha.
26641    - Don't warn users that they are exposing a client port to the
26642      Internet if they have specified an RFC1918 address. Previously,
26643      we would warn if the user had specified any non-loopback
26644      address. Bugfix on 0.2.3.3-alpha. Fixes bug 4018; reported by Tas.
26645    - Fix memory leaks in the failing cases of the new SocksPort and
26646      ControlPort code. Found by Coverity Scan. Bugfix on 0.2.3.3-alpha;
26647      fixes coverity CIDs 485, 486, and 487.
26648
26649  o Minor features:
26650    - When a hidden service's introduction point times out, consider
26651      trying it again during the next attempt to connect to the
26652      HS. Previously, we would not try it again unless a newly fetched
26653      descriptor contained it. Required by fixes for bugs 1297 and 3825.
26654    - The next version of Windows will be called Windows 8, and it has
26655      a major version of 6, minor version of 2. Correctly identify that
26656      version instead of calling it "Very recent version". Resolves
26657      ticket 4153; reported by funkstar.
26658    - The Bridge Authority now writes statistics on how many bridge
26659      descriptors it gave out in total, and how many unique descriptors
26660      it gave out. It also lists how often the most and least commonly
26661      fetched descriptors were given out, as well as the median and
26662      25th/75th percentile. Implements tickets 4200 and 4294.
26663    - Update to the October 4 2011 Maxmind GeoLite Country database.
26664
26665  o Code simplifications and refactoring:
26666    - Remove some old code to remember statistics about which descriptors
26667      we've served as a directory mirror. The feature wasn't used and
26668      is outdated now that microdescriptors are around.
26669    - Rename Tor functions that turn strings into addresses, so that
26670      "parse" indicates that no hostname resolution occurs, and
26671      "lookup" indicates that hostname resolution may occur. This
26672      should help prevent mistakes in the future. Fixes bug 3512.
26673
26674
26675Changes in version 0.2.2.34 - 2011-10-26
26676  Tor 0.2.2.34 fixes a critical anonymity vulnerability where an attacker
26677  can deanonymize Tor users. Everybody should upgrade.
26678
26679  The attack relies on four components: 1) Clients reuse their TLS cert
26680  when talking to different relays, so relays can recognize a user by
26681  the identity key in her cert. 2) An attacker who knows the client's
26682  identity key can probe each guard relay to see if that identity key
26683  is connected to that guard relay right now. 3) A variety of active
26684  attacks in the literature (starting from "Low-Cost Traffic Analysis
26685  of Tor" by Murdoch and Danezis in 2005) allow a malicious website to
26686  discover the guard relays that a Tor user visiting the website is using.
26687  4) Clients typically pick three guards at random, so the set of guards
26688  for a given user could well be a unique fingerprint for her. This
26689  release fixes components #1 and #2, which is enough to block the attack;
26690  the other two remain as open research problems. Special thanks to
26691  "frosty_un" for reporting the issue to us!
26692
26693  Clients should upgrade so they are no longer recognizable by the TLS
26694  certs they present. Relays should upgrade so they no longer allow a
26695  remote attacker to probe them to test whether unpatched clients are
26696  currently connected to them.
26697
26698  This release also fixes several vulnerabilities that allow an attacker
26699  to enumerate bridge relays. Some bridge enumeration attacks still
26700  remain; see for example proposal 188.
26701
26702  o Privacy/anonymity fixes (clients):
26703    - Clients and bridges no longer send TLS certificate chains on
26704      outgoing OR connections. Previously, each client or bridge would
26705      use the same cert chain for all outgoing OR connections until
26706      its IP address changes, which allowed any relay that the client
26707      or bridge contacted to determine which entry guards it is using.
26708      Fixes CVE-2011-2768. Bugfix on 0.0.9pre5; found by "frosty_un".
26709    - If a relay receives a CREATE_FAST cell on a TLS connection, it
26710      no longer considers that connection as suitable for satisfying a
26711      circuit EXTEND request. Now relays can protect clients from the
26712      CVE-2011-2768 issue even if the clients haven't upgraded yet.
26713    - Directory authorities no longer assign the Guard flag to relays
26714      that haven't upgraded to the above "refuse EXTEND requests
26715      to client connections" fix. Now directory authorities can
26716      protect clients from the CVE-2011-2768 issue even if neither
26717      the clients nor the relays have upgraded yet. There's a new
26718      "GiveGuardFlagTo_CVE_2011_2768_VulnerableRelays" config option
26719      to let us transition smoothly, else tomorrow there would be no
26720      guard relays.
26721
26722  o Privacy/anonymity fixes (bridge enumeration):
26723    - Bridge relays now do their directory fetches inside Tor TLS
26724      connections, like all the other clients do, rather than connecting
26725      directly to the DirPort like public relays do. Removes another
26726      avenue for enumerating bridges. Fixes bug 4115; bugfix on 0.2.0.35.
26727    - Bridges relays now build circuits for themselves in a more similar
26728      way to how clients build them. Removes another avenue for
26729      enumerating bridges. Fixes bug 4124; bugfix on 0.2.0.3-alpha,
26730      when bridges were introduced.
26731    - Bridges now refuse CREATE or CREATE_FAST cells on OR connections
26732      that they initiated. Relays could distinguish incoming bridge
26733      connections from client connections, creating another avenue for
26734      enumerating bridges. Fixes CVE-2011-2769. Bugfix on 0.2.0.3-alpha.
26735      Found by "frosty_un".
26736
26737  o Major bugfixes:
26738    - Fix a crash bug when changing node restrictions while a DNS lookup
26739      is in-progress. Fixes bug 4259; bugfix on 0.2.2.25-alpha. Bugfix
26740      by "Tey'".
26741    - Don't launch a useless circuit after failing to use one of a
26742      hidden service's introduction points. Previously, we would
26743      launch a new introduction circuit, but not set the hidden service
26744      which that circuit was intended to connect to, so it would never
26745      actually be used. A different piece of code would then create a
26746      new introduction circuit correctly. Bug reported by katmagic and
26747      found by Sebastian Hahn. Bugfix on 0.2.1.13-alpha; fixes bug 4212.
26748
26749  o Minor bugfixes:
26750    - Change an integer overflow check in the OpenBSD_Malloc code so
26751      that GCC is less likely to eliminate it as impossible. Patch
26752      from Mansour Moufid. Fixes bug 4059.
26753    - When a hidden service turns an extra service-side introduction
26754      circuit into a general-purpose circuit, free the rend_data and
26755      intro_key fields first, so we won't leak memory if the circuit
26756      is cannibalized for use as another service-side introduction
26757      circuit. Bugfix on 0.2.1.7-alpha; fixes bug 4251.
26758    - Bridges now skip DNS self-tests, to act a little more stealthily.
26759      Fixes bug 4201; bugfix on 0.2.0.3-alpha, which first introduced
26760      bridges. Patch by "warms0x".
26761    - Fix internal bug-checking logic that was supposed to catch
26762      failures in digest generation so that it will fail more robustly
26763      if we ask for a nonexistent algorithm. Found by Coverity Scan.
26764      Bugfix on 0.2.2.1-alpha; fixes Coverity CID 479.
26765    - Report any failure in init_keys() calls launched because our
26766      IP address has changed. Spotted by Coverity Scan. Bugfix on
26767      0.1.1.4-alpha; fixes CID 484.
26768
26769  o Minor bugfixes (log messages and documentation):
26770    - Remove a confusing dollar sign from the example fingerprint in the
26771      man page, and also make the example fingerprint a valid one. Fixes
26772      bug 4309; bugfix on 0.2.1.3-alpha.
26773    - The next version of Windows will be called Windows 8, and it has
26774      a major version of 6, minor version of 2. Correctly identify that
26775      version instead of calling it "Very recent version". Resolves
26776      ticket 4153; reported by funkstar.
26777    - Downgrade log messages about circuit timeout calibration from
26778      "notice" to "info": they don't require or suggest any human
26779      intervention. Patch from Tom Lowenthal. Fixes bug 4063;
26780      bugfix on 0.2.2.14-alpha.
26781
26782  o Minor features:
26783    - Turn on directory request statistics by default and include them in
26784      extra-info descriptors. Don't break if we have no GeoIP database.
26785      Backported from 0.2.3.1-alpha; implements ticket 3951.
26786    - Update to the October 4 2011 Maxmind GeoLite Country database.
26787
26788
26789Changes in version 0.2.1.31 - 2011-10-26
26790  Tor 0.2.1.31 backports important security and privacy fixes for
26791  oldstable. This release is intended only for package maintainers and
26792  others who cannot use the 0.2.2 stable series. All others should be
26793  using Tor 0.2.2.x or newer.
26794
26795  o Security fixes (also included in 0.2.2.x):
26796    - Replace all potentially sensitive memory comparison operations
26797      with versions whose runtime does not depend on the data being
26798      compared. This will help resist a class of attacks where an
26799      adversary can use variations in timing information to learn
26800      sensitive data. Fix for one case of bug 3122. (Safe memcmp
26801      implementation by Robert Ransom based partially on code by DJB.)
26802    - Fix an assert in parsing router descriptors containing IPv6
26803      addresses. This one took down the directory authorities when
26804      somebody tried some experimental code. Bugfix on 0.2.1.3-alpha.
26805
26806  o Privacy/anonymity fixes (also included in 0.2.2.x):
26807    - Clients and bridges no longer send TLS certificate chains on
26808      outgoing OR connections. Previously, each client or bridge would
26809      use the same cert chain for all outgoing OR connections until
26810      its IP address changes, which allowed any relay that the client
26811      or bridge contacted to determine which entry guards it is using.
26812      Fixes CVE-2011-2768. Bugfix on 0.0.9pre5; found by "frosty_un".
26813    - If a relay receives a CREATE_FAST cell on a TLS connection, it
26814      no longer considers that connection as suitable for satisfying a
26815      circuit EXTEND request. Now relays can protect clients from the
26816      CVE-2011-2768 issue even if the clients haven't upgraded yet.
26817    - Bridges now refuse CREATE or CREATE_FAST cells on OR connections
26818      that they initiated. Relays could distinguish incoming bridge
26819      connections from client connections, creating another avenue for
26820      enumerating bridges. Fixes CVE-2011-2769. Bugfix on 0.2.0.3-alpha.
26821      Found by "frosty_un".
26822    - When receiving a hidden service descriptor, check that it is for
26823      the hidden service we wanted. Previously, Tor would store any
26824      hidden service descriptors that a directory gave it, whether it
26825      wanted them or not. This wouldn't have let an attacker impersonate
26826      a hidden service, but it did let directories pre-seed a client
26827      with descriptors that it didn't want. Bugfix on 0.0.6.
26828    - Avoid linkability based on cached hidden service descriptors: forget
26829      all hidden service descriptors cached as a client when processing a
26830      SIGNAL NEWNYM command. Fixes bug 3000; bugfix on 0.0.6.
26831    - Make the bridge directory authority refuse to answer directory
26832      requests for "all" descriptors. It used to include bridge
26833      descriptors in its answer, which was a major information leak.
26834      Found by "piebeer". Bugfix on 0.2.0.3-alpha.
26835    - Don't attach new streams to old rendezvous circuits after SIGNAL
26836      NEWNYM. Previously, we would keep using an existing rendezvous
26837      circuit if it remained open (i.e. if it were kept open by a
26838      long-lived stream, or if a new stream were attached to it before
26839      Tor could notice that it was old and no longer in use). Bugfix on
26840      0.1.1.15-rc; fixes bug 3375.
26841
26842  o Minor bugfixes (also included in 0.2.2.x):
26843    - When we restart our relay, we might get a successful connection
26844      from the outside before we've started our reachability tests,
26845      triggering a warning: "ORPort found reachable, but I have no
26846      routerinfo yet. Failing to inform controller of success." This
26847      bug was harmless unless Tor is running under a controller
26848      like Vidalia, in which case the controller would never get a
26849      REACHABILITY_SUCCEEDED status event. Bugfix on 0.1.2.6-alpha;
26850      fixes bug 1172.
26851    - Build correctly on OSX with zlib 1.2.4 and higher with all warnings
26852      enabled. Fixes bug 1526.
26853    - Remove undocumented option "-F" from tor-resolve: it hasn't done
26854      anything since 0.2.1.16-rc.
26855    - Avoid signed/unsigned comparisons by making SIZE_T_CEILING unsigned.
26856      None of the cases where we did this before were wrong, but by making
26857      this change we avoid warnings. Fixes bug 2475; bugfix on 0.2.1.28.
26858    - Fix a rare crash bug that could occur when a client was configured
26859      with a large number of bridges. Fixes bug 2629; bugfix on
26860      0.2.1.2-alpha. Bugfix by trac user "shitlei".
26861    - Correct the warning displayed when a rendezvous descriptor exceeds
26862      the maximum size. Fixes bug 2750; bugfix on 0.2.1.5-alpha. Found by
26863      John Brooks.
26864    - Fix an uncommon assertion failure when running with DNSPort under
26865      heavy load. Fixes bug 2933; bugfix on 0.2.0.1-alpha.
26866    - When warning about missing zlib development packages during compile,
26867      give the correct package names. Bugfix on 0.2.0.1-alpha.
26868    - Require that introduction point keys and onion keys have public
26869      exponent 65537. Bugfix on 0.2.0.10-alpha.
26870    - Do not crash when our configuration file becomes unreadable, for
26871      example due to a permissions change, between when we start up
26872      and when a controller calls SAVECONF. Fixes bug 3135; bugfix
26873      on 0.0.9pre6.
26874    - Fix warnings from GCC 4.6's "-Wunused-but-set-variable" option.
26875      Fixes bug 3208.
26876    - Always NUL-terminate the sun_path field of a sockaddr_un before
26877      passing it to the kernel. (Not a security issue: kernels are
26878      smart enough to reject bad sockaddr_uns.) Found by Coverity;
26879      CID #428. Bugfix on Tor 0.2.0.3-alpha.
26880    - Don't stack-allocate the list of supplementary GIDs when we're
26881      about to log them. Stack-allocating NGROUPS_MAX gid_t elements
26882      could take up to 256K, which is way too much stack. Found by
26883      Coverity; CID #450. Bugfix on 0.2.1.7-alpha.
26884
26885  o Minor bugfixes (only in 0.2.1.x):
26886    - Resume using micro-version numbers in 0.2.1.x: our Debian packages
26887      rely on them. Bugfix on 0.2.1.30.
26888    - Use git revisions instead of svn revisions when generating our
26889      micro-version numbers. Bugfix on 0.2.1.15-rc; fixes bug 2402.
26890
26891  o Minor features (also included in 0.2.2.x):
26892    - Adjust the expiration time on our SSL session certificates to
26893      better match SSL certs seen in the wild. Resolves ticket 4014.
26894    - Allow nameservers with IPv6 address. Resolves bug 2574.
26895    - Update to the October 4 2011 Maxmind GeoLite Country database.
26896
26897
26898Changes in version 0.2.3.5-alpha - 2011-09-28
26899  Tor 0.2.3.5-alpha fixes two bugs that make it possible to enumerate
26900  bridge relays; fixes an assertion error that many users started hitting
26901  today; and adds the ability to refill token buckets more often than
26902  once per second, allowing significant performance improvements.
26903
26904  o Security fixes:
26905    - Bridge relays now do their directory fetches inside Tor TLS
26906      connections, like all the other clients do, rather than connecting
26907      directly to the DirPort like public relays do. Removes another
26908      avenue for enumerating bridges. Fixes bug 4115; bugfix on 0.2.0.35.
26909    - Bridges relays now build circuits for themselves in a more similar
26910      way to how clients build them. Removes another avenue for
26911      enumerating bridges. Fixes bug 4124; bugfix on 0.2.0.3-alpha,
26912      when bridges were introduced.
26913
26914  o Major bugfixes:
26915    - Fix an "Assertion md->held_by_node == 1 failed" error that could
26916      occur when the same microdescriptor was referenced by two node_t
26917      objects at once. Fix for bug 4118; bugfix on Tor 0.2.3.1-alpha.
26918
26919  o Major features (networking):
26920    - Add a new TokenBucketRefillInterval option to refill token buckets
26921      more frequently than once per second. This should improve network
26922      performance, alleviate queueing problems, and make traffic less
26923      bursty. Implements proposal 183; closes ticket 3630. Design by
26924      Florian Tschorsch and Björn Scheuermann; implementation by
26925      Florian Tschorsch.
26926
26927  o Minor bugfixes:
26928    - Change an integer overflow check in the OpenBSD_Malloc code so
26929      that GCC is less likely to eliminate it as impossible. Patch
26930      from Mansour Moufid. Fixes bug 4059.
26931
26932  o Minor bugfixes (usability):
26933    - Downgrade log messages about circuit timeout calibration from
26934      "notice" to "info": they don't require or suggest any human
26935      intervention. Patch from Tom Lowenthal. Fixes bug 4063;
26936      bugfix on 0.2.2.14-alpha.
26937
26938  o Minor features (diagnostics):
26939    - When the system call to create a listener socket fails, log the
26940      error message explaining why. This may help diagnose bug 4027.
26941
26942
26943Changes in version 0.2.3.4-alpha - 2011-09-13
26944  Tor 0.2.3.4-alpha includes the fixes from 0.2.2.33, including a slight
26945  tweak to Tor's TLS handshake that makes relays and bridges that run
26946  this new version reachable from Iran again. It also fixes a few new
26947  bugs in 0.2.3.x, and teaches relays to recognize when they're not
26948  listed in the network consensus and republish.
26949
26950  o Major bugfixes (also part of 0.2.2.33):
26951    - Avoid an assertion failure when reloading a configuration with
26952      TrackExitHosts changes. Found and fixed by 'laruldan'. Fixes bug
26953      3923; bugfix on 0.2.2.25-alpha.
26954
26955  o Minor features (security, also part of 0.2.2.33):
26956    - Check for replays of the public-key encrypted portion of an
26957      INTRODUCE1 cell, in addition to the current check for replays of
26958      the g^x value. This prevents a possible class of active attacks
26959      by an attacker who controls both an introduction point and a
26960      rendezvous point, and who uses the malleability of AES-CTR to
26961      alter the encrypted g^x portion of the INTRODUCE1 cell. We think
26962      that these attacks are infeasible (requiring the attacker to send
26963      on the order of zettabytes of altered cells in a short interval),
26964      but we'd rather block them off in case there are any classes of
26965      this attack that we missed. Reported by Willem Pinckaers.
26966
26967  o Minor features (also part of 0.2.2.33):
26968    - Adjust the expiration time on our SSL session certificates to
26969      better match SSL certs seen in the wild. Resolves ticket 4014.
26970    - Change the default required uptime for a relay to be accepted as
26971      a HSDir (hidden service directory) from 24 hours to 25 hours.
26972      Improves on 0.2.0.10-alpha; resolves ticket 2649.
26973    - Add a VoteOnHidServDirectoriesV2 config option to allow directory
26974      authorities to abstain from voting on assignment of the HSDir
26975      consensus flag. Related to bug 2649.
26976    - Update to the September 6 2011 Maxmind GeoLite Country database.
26977
26978  o Minor bugfixes (also part of 0.2.2.33):
26979    - Demote the 'replay detected' log message emitted when a hidden
26980      service receives the same Diffie-Hellman public key in two different
26981      INTRODUCE2 cells to info level. A normal Tor client can cause that
26982      log message during its normal operation. Bugfix on 0.2.1.6-alpha;
26983      fixes part of bug 2442.
26984    - Demote the 'INTRODUCE2 cell is too {old,new}' log message to info
26985      level. There is nothing that a hidden service's operator can do
26986      to fix its clients' clocks. Bugfix on 0.2.1.6-alpha; fixes part
26987      of bug 2442.
26988    - Clarify a log message specifying the characters permitted in
26989      HiddenServiceAuthorizeClient client names. Previously, the log
26990      message said that "[A-Za-z0-9+-_]" were permitted; that could have
26991      given the impression that every ASCII character between "+" and "_"
26992      was permitted. Now we say "[A-Za-z0-9+_-]". Bugfix on 0.2.1.5-alpha.
26993
26994  o Build fixes (also part of 0.2.2.33):
26995    - Clean up some code issues that prevented Tor from building on older
26996      BSDs. Fixes bug 3894; reported by "grarpamp".
26997    - Search for a platform-specific version of "ar" when cross-compiling.
26998      Should fix builds on iOS. Resolves bug 3909, found by Marco Bonetti.
26999
27000  o Major bugfixes:
27001    - Fix a bug where the SocksPort option (for example) would get
27002      ignored and replaced by the default if a SocksListenAddress
27003      option was set. Bugfix on 0.2.3.3-alpha; fixes bug 3936. Fix by
27004      Fabian Keil.
27005
27006  o Major features:
27007    - Relays now try regenerating and uploading their descriptor more
27008      frequently if they are not listed in the consensus, or if the
27009      version of their descriptor listed in the consensus is too
27010      old. This fix should prevent situations where a server declines
27011      to re-publish itself because it has done so too recently, even
27012      though the authorities decided not to list its recent-enough
27013      descriptor. Fix for bug 3327.
27014
27015  o Minor features:
27016    - Relays now include a reason for regenerating their descriptors
27017      in an HTTP header when uploading to the authorities. This will
27018      make it easier to debug descriptor-upload issues in the future.
27019    - When starting as root and then changing our UID via the User
27020      control option, and we have a ControlSocket configured, make sure
27021      that the ControlSocket is owned by the same account that Tor will
27022      run under. Implements ticket 3421; fix by Jérémy Bobbio.
27023
27024  o Minor bugfixes:
27025    - Abort if tor_vasprintf fails in connection_printf_to_buf (a
27026      utility function used in the control-port code). This shouldn't
27027      ever happen unless Tor is completely out of memory, but if it did
27028      happen and Tor somehow recovered from it, Tor could have sent a log
27029      message to a control port in the middle of a reply to a controller
27030      command. Fixes part of bug 3428; bugfix on 0.1.2.3-alpha.
27031    - Make 'FetchUselessDescriptors' cause all descriptor types and
27032      all consensus types (including microdescriptors) to get fetched.
27033      Fixes bug 3851; bugfix on 0.2.3.1-alpha.
27034
27035  o Code refactoring:
27036    - Make a new "entry connection" struct as an internal subtype of "edge
27037      connection", to simplify the code and make exit connections smaller.
27038
27039
27040Changes in version 0.2.2.33 - 2011-09-13
27041  Tor 0.2.2.33 fixes several bugs, and includes a slight tweak to Tor's
27042  TLS handshake that makes relays and bridges that run this new version
27043  reachable from Iran again.
27044
27045  o Major bugfixes:
27046    - Avoid an assertion failure when reloading a configuration with
27047      TrackExitHosts changes. Found and fixed by 'laruldan'. Fixes bug
27048      3923; bugfix on 0.2.2.25-alpha.
27049
27050  o Minor features (security):
27051    - Check for replays of the public-key encrypted portion of an
27052      INTRODUCE1 cell, in addition to the current check for replays of
27053      the g^x value. This prevents a possible class of active attacks
27054      by an attacker who controls both an introduction point and a
27055      rendezvous point, and who uses the malleability of AES-CTR to
27056      alter the encrypted g^x portion of the INTRODUCE1 cell. We think
27057      that these attacks are infeasible (requiring the attacker to send
27058      on the order of zettabytes of altered cells in a short interval),
27059      but we'd rather block them off in case there are any classes of
27060      this attack that we missed. Reported by Willem Pinckaers.
27061
27062  o Minor features:
27063    - Adjust the expiration time on our SSL session certificates to
27064      better match SSL certs seen in the wild. Resolves ticket 4014.
27065    - Change the default required uptime for a relay to be accepted as
27066      a HSDir (hidden service directory) from 24 hours to 25 hours.
27067      Improves on 0.2.0.10-alpha; resolves ticket 2649.
27068    - Add a VoteOnHidServDirectoriesV2 config option to allow directory
27069      authorities to abstain from voting on assignment of the HSDir
27070      consensus flag. Related to bug 2649.
27071    - Update to the September 6 2011 Maxmind GeoLite Country database.
27072
27073  o Minor bugfixes (documentation and log messages):
27074    - Correct the man page to explain that HashedControlPassword and
27075      CookieAuthentication can both be set, in which case either method
27076      is sufficient to authenticate to Tor. Bugfix on 0.2.0.7-alpha,
27077      when we decided to allow these config options to both be set. Issue
27078      raised by bug 3898.
27079    - Demote the 'replay detected' log message emitted when a hidden
27080      service receives the same Diffie-Hellman public key in two different
27081      INTRODUCE2 cells to info level. A normal Tor client can cause that
27082      log message during its normal operation. Bugfix on 0.2.1.6-alpha;
27083      fixes part of bug 2442.
27084    - Demote the 'INTRODUCE2 cell is too {old,new}' log message to info
27085      level. There is nothing that a hidden service's operator can do
27086      to fix its clients' clocks. Bugfix on 0.2.1.6-alpha; fixes part
27087      of bug 2442.
27088    - Clarify a log message specifying the characters permitted in
27089      HiddenServiceAuthorizeClient client names. Previously, the log
27090      message said that "[A-Za-z0-9+-_]" were permitted; that could have
27091      given the impression that every ASCII character between "+" and "_"
27092      was permitted. Now we say "[A-Za-z0-9+_-]". Bugfix on 0.2.1.5-alpha.
27093
27094  o Build fixes:
27095    - Provide a substitute implementation of lround() for MSVC, which
27096      apparently lacks it. Patch from Gisle Vanem.
27097    - Clean up some code issues that prevented Tor from building on older
27098      BSDs. Fixes bug 3894; reported by "grarpamp".
27099    - Search for a platform-specific version of "ar" when cross-compiling.
27100      Should fix builds on iOS. Resolves bug 3909, found by Marco Bonetti.
27101
27102
27103Changes in version 0.2.3.3-alpha - 2011-09-01
27104  Tor 0.2.3.3-alpha adds a new "stream isolation" feature to improve Tor's
27105  security, and provides client-side support for the microdescriptor
27106  and optimistic data features introduced earlier in the 0.2.3.x
27107  series. It also includes numerous critical bugfixes in the (optional)
27108  bufferevent-based networking backend.
27109
27110  o Major features (stream isolation):
27111    - You can now configure Tor so that streams from different
27112      applications are isolated on different circuits, to prevent an
27113      attacker who sees your streams as they leave an exit node from
27114      linking your sessions to one another. To do this, choose some way
27115      to distinguish the applications: have them connect to different
27116      SocksPorts, or have one of them use SOCKS4 while the other uses
27117      SOCKS5, or have them pass different authentication strings to the
27118      SOCKS proxy. Then, use the new SocksPort syntax to configure the
27119      degree of isolation you need. This implements Proposal 171.
27120    - There's a new syntax for specifying multiple client ports (such as
27121      SOCKSPort, TransPort, DNSPort, NATDPort): you can now just declare
27122      multiple *Port entries with full addr:port syntax on each.
27123      The old *ListenAddress format is still supported, but you can't
27124      mix it with the new *Port syntax.
27125
27126  o Major features (other):
27127    - Enable microdescriptor fetching by default for clients. This allows
27128      clients to download a much smaller amount of directory information.
27129      To disable it (and go back to the old-style consensus and
27130      descriptors), set "UseMicrodescriptors 0" in your torrc file.
27131    - Tor's firewall-helper feature, introduced in 0.2.3.1-alpha (see the
27132      "PortForwarding" config option), now supports Windows.
27133    - When using an exit relay running 0.2.3.x, clients can now
27134      "optimistically" send data before the exit relay reports that
27135      the stream has opened. This saves a round trip when starting
27136      connections where the client speaks first (such as web browsing).
27137      This behavior is controlled by a consensus parameter (currently
27138      disabled). To turn it on or off manually, use the "OptimisticData"
27139      torrc option. Implements proposal 181; code by Ian Goldberg.
27140
27141  o Major bugfixes (bufferevents, fixes on 0.2.3.1-alpha):
27142    - When using IOCP on Windows, we need to enable Libevent windows
27143      threading support.
27144    - The IOCP backend now works even when the user has not specified
27145      the (internal, debugging-only) _UseFilteringSSLBufferevents option.
27146      Fixes part of bug 3752.
27147    - Correctly record the bytes we've read and written when using
27148      bufferevents, so that we can include them in our bandwidth history
27149      and advertised bandwidth. Fixes bug 3803.
27150    - Apply rate-limiting only at the bottom of a chain of filtering
27151      bufferevents. This prevents us from filling up internal read
27152      buffers and violating rate-limits when filtering bufferevents
27153      are enabled. Fixes part of bug 3804.
27154    - Add high-watermarks to the output buffers for filtered
27155      bufferevents. This prevents us from filling up internal write
27156      buffers and wasting CPU cycles when filtering bufferevents are
27157      enabled. Fixes part of bug 3804.
27158    - Correctly notice when data has been written from a bufferevent
27159      without flushing it completely. Fixes bug 3805.
27160    - Fix a bug where server-side tunneled bufferevent-based directory
27161      streams would get closed prematurely. Fixes bug 3814.
27162    - Fix a use-after-free error with per-connection rate-limiting
27163      buckets. Fixes bug 3888.
27164
27165  o Major bugfixes (also part of 0.2.2.31-rc):
27166    - If we're configured to write our ControlPorts to disk, only write
27167      them after switching UID and creating the data directory. This way,
27168      we don't fail when starting up with a nonexistent DataDirectory
27169      and a ControlPortWriteToFile setting based on that directory. Fixes
27170      bug 3747; bugfix on Tor 0.2.2.26-beta.
27171
27172  o Minor features:
27173    - Added a new CONF_CHANGED event so that controllers can be notified
27174      of any configuration changes made by other controllers, or by the
27175      user. Implements ticket 1692.
27176    - Use evbuffer_copyout() in inspect_evbuffer(). This fixes a memory
27177      leak when using bufferevents, and lets Libevent worry about how to
27178      best copy data out of a buffer.
27179    - Replace files in stats/ rather than appending to them. Now that we
27180      include statistics in extra-info descriptors, it makes no sense to
27181      keep old statistics forever. Implements ticket 2930.
27182
27183  o Minor features (build compatibility):
27184    - Limited, experimental support for building with nmake and MSVC.
27185    - Provide a substitute implementation of lround() for MSVC, which
27186      apparently lacks it. Patch from Gisle Vanem.
27187
27188  o Minor features (also part of 0.2.2.31-rc):
27189    - Update to the August 2 2011 Maxmind GeoLite Country database.
27190
27191  o Minor bugfixes (on 0.2.3.x-alpha):
27192    - Fix a spurious warning when parsing SOCKS requests with
27193      bufferevents enabled. Fixes bug 3615; bugfix on 0.2.3.2-alpha.
27194    - Get rid of a harmless warning that could happen on relays running
27195      with bufferevents. The warning was caused by someone doing an http
27196      request to a relay's orport. Also don't warn for a few related
27197      non-errors. Fixes bug 3700; bugfix on 0.2.3.1-alpha.
27198
27199  o Minor bugfixes (on 2.2.x and earlier):
27200    - Correct the man page to explain that HashedControlPassword and
27201      CookieAuthentication can both be set, in which case either method
27202      is sufficient to authenticate to Tor. Bugfix on 0.2.0.7-alpha,
27203      when we decided to allow these config options to both be set. Issue
27204      raised by bug 3898.
27205    - The "--quiet" and "--hush" options now apply not only to Tor's
27206      behavior before logs are configured, but also to Tor's behavior in
27207      the absence of configured logs. Fixes bug 3550; bugfix on
27208      0.2.0.10-alpha.
27209
27210  o Minor bugfixes (also part of 0.2.2.31-rc):
27211    - Write several files in text mode, on OSes that distinguish text
27212      mode from binary mode (namely, Windows). These files are:
27213      'buffer-stats', 'dirreq-stats', and 'entry-stats' on relays
27214      that collect those statistics; 'client_keys' and 'hostname' for
27215      hidden services that use authentication; and (in the tor-gencert
27216      utility) newly generated identity and signing keys. Previously,
27217      we wouldn't specify text mode or binary mode, leading to an
27218      assertion failure. Fixes bug 3607. Bugfix on 0.2.1.1-alpha (when
27219      the DirRecordUsageByCountry option which would have triggered
27220      the assertion failure was added), although this assertion failure
27221      would have occurred in tor-gencert on Windows in 0.2.0.1-alpha.
27222    - Selectively disable deprecation warnings on OS X because Lion
27223      started deprecating the shipped copy of openssl. Fixes bug 3643.
27224    - Remove an extra pair of quotation marks around the error
27225      message in control-port STATUS_GENERAL BUG events. Bugfix on
27226      0.1.2.6-alpha; fixes bug 3732.
27227    - When unable to format an address as a string, report its value
27228      as "???" rather than reusing the last formatted address. Bugfix
27229      on 0.2.1.5-alpha.
27230
27231  o Code simplifications and refactoring:
27232    - Rewrite the listener-selection logic so that parsing which ports
27233      we want to listen on is now separate from binding to the ports
27234      we want.
27235
27236  o Build changes:
27237    - Building Tor with bufferevent support now requires Libevent
27238      2.0.13-stable or later. Previous versions of Libevent had bugs in
27239      SSL-related bufferevents and related issues that would make Tor
27240      work badly with bufferevents. Requiring 2.0.13-stable also allows
27241      Tor with bufferevents to take advantage of Libevent APIs
27242      introduced after 2.0.8-rc.
27243
27244
27245Changes in version 0.2.2.32 - 2011-08-27
27246  The Tor 0.2.2 release series is dedicated to the memory of Andreas
27247  Pfitzmann (1958-2010), a pioneer in anonymity and privacy research,
27248  a founder of the PETS community, a leader in our field, a mentor,
27249  and a friend. He left us with these words: "I had the possibility
27250  to contribute to this world that is not as it should be. I hope I
27251  could help in some areas to make the world a better place, and that
27252  I could also encourage other people to be engaged in improving the
27253  world. Please, stay engaged. This world needs you, your love, your
27254  initiative -- now I cannot be part of that anymore."
27255
27256  Tor 0.2.2.32, the first stable release in the 0.2.2 branch, is finally
27257  ready. More than two years in the making, this release features improved
27258  client performance and hidden service reliability, better compatibility
27259  for Android, correct behavior for bridges that listen on more than
27260  one address, more extensible and flexible directory object handling,
27261  better reporting of network statistics, improved code security, and
27262  many many other features and bugfixes.
27263
27264
27265Changes in version 0.2.2.31-rc - 2011-08-17
27266  Tor 0.2.2.31-rc is the second and hopefully final release candidate
27267  for the Tor 0.2.2.x series.
27268
27269  o Major bugfixes:
27270    - Remove an extra pair of quotation marks around the error
27271      message in control-port STATUS_GENERAL BUG events. Bugfix on
27272      0.1.2.6-alpha; fixes bug 3732.
27273    - If we're configured to write our ControlPorts to disk, only write
27274      them after switching UID and creating the data directory. This way,
27275      we don't fail when starting up with a nonexistent DataDirectory
27276      and a ControlPortWriteToFile setting based on that directory. Fixes
27277      bug 3747; bugfix on Tor 0.2.2.26-beta.
27278
27279  o Minor features:
27280    - Update to the August 2 2011 Maxmind GeoLite Country database.
27281
27282  o Minor bugfixes:
27283    - Allow GETINFO fingerprint to return a fingerprint even when
27284      we have not yet built a router descriptor. Fixes bug 3577;
27285      bugfix on 0.2.0.1-alpha.
27286    - Write several files in text mode, on OSes that distinguish text
27287      mode from binary mode (namely, Windows). These files are:
27288      'buffer-stats', 'dirreq-stats', and 'entry-stats' on relays
27289      that collect those statistics; 'client_keys' and 'hostname' for
27290      hidden services that use authentication; and (in the tor-gencert
27291      utility) newly generated identity and signing keys. Previously,
27292      we wouldn't specify text mode or binary mode, leading to an
27293      assertion failure. Fixes bug 3607. Bugfix on 0.2.1.1-alpha (when
27294      the DirRecordUsageByCountry option which would have triggered
27295      the assertion failure was added), although this assertion failure
27296      would have occurred in tor-gencert on Windows in 0.2.0.1-alpha.
27297    - Selectively disable deprecation warnings on OS X because Lion
27298      started deprecating the shipped copy of openssl. Fixes bug 3643.
27299    - When unable to format an address as a string, report its value
27300      as "???" rather than reusing the last formatted address. Bugfix
27301      on 0.2.1.5-alpha.
27302
27303
27304Changes in version 0.2.3.2-alpha - 2011-07-18
27305  Tor 0.2.3.2-alpha introduces two new experimental features:
27306  microdescriptors and pluggable transports. It also continues cleaning
27307  up a variety of recently introduced features.
27308
27309  o Major features:
27310    - Clients can now use microdescriptors instead of regular descriptors
27311      to build circuits. Microdescriptors are authority-generated
27312      summaries of regular descriptors' contents, designed to change
27313      very rarely (see proposal 158 for details). This feature is
27314      designed to save bandwidth, especially for clients on slow internet
27315      connections. It's off by default for now, since nearly no caches
27316      support it, but it will be on-by-default for clients in a future
27317      version. You can use the UseMicrodescriptors option to turn it on.
27318    - Tor clients using bridges can now be configured to use a separate
27319      'transport' proxy for each bridge. This approach helps to resist
27320      censorship by allowing bridges to use protocol obfuscation
27321      plugins. It implements part of proposal 180. Implements ticket 2841.
27322    - While we're trying to bootstrap, record how many TLS connections
27323      fail in each state, and report which states saw the most failures
27324      in response to any bootstrap failures. This feature may speed up
27325      diagnosis of censorship events. Implements ticket 3116.
27326
27327  o Major bugfixes (on 0.2.3.1-alpha):
27328    - When configuring a large set of nodes in EntryNodes (as with
27329      'EntryNodes {cc}' or 'EntryNodes 1.1.1.1/16'), choose only a
27330      random subset to be guards, and choose them in random
27331      order. Fixes bug 2798.
27332    - Tor could crash when remembering a consensus in a non-used consensus
27333      flavor without having a current consensus set. Fixes bug 3361.
27334    - Comparing an unknown address to a microdescriptor's shortened exit
27335      policy would always give a "rejected" result. Fixes bug 3599.
27336    - Using microdescriptors as a client no longer prevents Tor from
27337      uploading and downloading hidden service descriptors. Fixes
27338      bug 3601.
27339
27340  o Minor features:
27341    - Allow nameservers with IPv6 address. Resolves bug 2574.
27342    - Accept attempts to include a password authenticator in the
27343      handshake, as supported by SOCKS5. This handles SOCKS clients that
27344      don't know how to omit a password when authenticating. Resolves
27345      bug 1666.
27346    - When configuring a large set of nodes in EntryNodes, and there are
27347      enough of them listed as Guard so that we don't need to consider
27348      the non-guard entries, prefer the ones listed with the Guard flag.
27349    - Check for and recover from inconsistency in the microdescriptor
27350      cache. This will make it harder for us to accidentally free a
27351      microdescriptor without removing it from the appropriate data
27352      structures. Fixes issue 3135; issue noted by "wanoskarnet".
27353    - Log SSL state transitions at log level DEBUG, log domain
27354      HANDSHAKE. This can be useful for debugging censorship events.
27355      Implements ticket 3264.
27356    - Add port 6523 (Gobby) to LongLivedPorts. Patch by intrigeri;
27357      implements ticket 3439.
27358
27359  o Minor bugfixes (on 0.2.3.1-alpha):
27360    - Do not free all general-purpose regular descriptors just
27361      because microdescriptor use is enabled. Fixes bug 3113.
27362    - Correctly link libevent_openssl when --enable-static-libevent
27363      is passed to configure. Fixes bug 3118.
27364    - Bridges should not complain during their heartbeat log messages that
27365      they are unlisted in the consensus: that's more or less the point
27366      of being a bridge. Fixes bug 3183.
27367    - Report a SIGNAL event to controllers when acting on a delayed
27368      SIGNAL NEWNYM command. Previously, we would report a SIGNAL
27369      event to the controller if we acted on a SIGNAL NEWNYM command
27370      immediately, and otherwise not report a SIGNAL event for the
27371      command at all. Fixes bug 3349.
27372    - Fix a crash when handling the SIGNAL controller command or
27373      reporting ERR-level status events with bufferevents enabled. Found
27374      by Robert Ransom. Fixes bug 3367.
27375    - Always ship the tor-fw-helper manpage in our release tarballs.
27376      Fixes bug 3389. Reported by Stephen Walker.
27377    - Fix a class of double-mark-for-close bugs when bufferevents
27378      are enabled. Fixes bug 3403.
27379    - Update tor-fw-helper to support libnatpmp-20110618. Fixes bug 3434.
27380    - Add SIGNAL to the list returned by the 'GETINFO events/names'
27381      control-port command. Fixes part of bug 3465.
27382    - Prevent using negative indices during unit test runs when read_all()
27383      fails. Spotted by coverity.
27384    - Fix a rare memory leak when checking the nodelist without it being
27385      present. Found by coverity.
27386    - Only try to download a microdescriptor-flavored consensus from
27387      a directory cache that provides them.
27388
27389  o Minor bugfixes (on 0.2.2.x and earlier):
27390    - Assert that hidden-service-related operations are not performed
27391      using single-hop circuits. Previously, Tor would assert that
27392      client-side streams are not attached to single-hop circuits,
27393      but not that other sensitive operations on the client and service
27394      side are not performed using single-hop circuits. Fixes bug 3332;
27395      bugfix on 0.0.6.
27396    - Don't publish a new relay descriptor when we reload our onion key,
27397      unless the onion key has actually changed. Fixes bug 3263 and
27398      resolves another cause of bug 1810. Bugfix on 0.1.1.11-alpha.
27399    - Allow GETINFO fingerprint to return a fingerprint even when
27400      we have not yet built a router descriptor. Fixes bug 3577;
27401      bugfix on 0.2.0.1-alpha.
27402    - Make 'tor --digests' list hashes of all Tor source files. Bugfix
27403      on 0.2.2.4-alpha; fixes bug 3427.
27404
27405  o Code simplification and refactoring:
27406    - Use tor_sscanf() in place of scanf() in more places through the
27407      code. This makes us a little more locale-independent, and
27408      should help shut up code-analysis tools that can't tell
27409      a safe sscanf string from a dangerous one.
27410    - Use tt_assert(), not tor_assert(), for checking for test failures.
27411      This makes the unit tests more able to go on in the event that
27412      one of them fails.
27413    - Split connection_about_to_close() into separate functions for each
27414      connection type.
27415
27416  o Build changes:
27417    - On Windows, we now define the _WIN32_WINNT macros only if they
27418      are not already defined. This lets the person building Tor decide,
27419      if they want, to require a later version of Windows.
27420
27421
27422Changes in version 0.2.2.30-rc - 2011-07-07
27423  Tor 0.2.2.30-rc is the first release candidate for the Tor 0.2.2.x
27424  series. It fixes a few smaller bugs, but generally appears stable.
27425  Please test it and let us know whether it is!
27426
27427  o Minor bugfixes:
27428    - Send a SUCCEEDED stream event to the controller when a reverse
27429      resolve succeeded. Fixes bug 3536; bugfix on 0.0.8pre1. Issue
27430      discovered by katmagic.
27431    - Always NUL-terminate the sun_path field of a sockaddr_un before
27432      passing it to the kernel. (Not a security issue: kernels are
27433      smart enough to reject bad sockaddr_uns.) Found by Coverity;
27434      CID #428. Bugfix on Tor 0.2.0.3-alpha.
27435    - Don't stack-allocate the list of supplementary GIDs when we're
27436      about to log them. Stack-allocating NGROUPS_MAX gid_t elements
27437      could take up to 256K, which is way too much stack. Found by
27438      Coverity; CID #450. Bugfix on 0.2.1.7-alpha.
27439    - Add BUILDTIMEOUT_SET to the list returned by the 'GETINFO
27440      events/names' control-port command. Bugfix on 0.2.2.9-alpha;
27441      fixes part of bug 3465.
27442    - Fix a memory leak when receiving a descriptor for a hidden
27443      service we didn't ask for. Found by Coverity; CID #30. Bugfix
27444      on 0.2.2.26-beta.
27445
27446  o Minor features:
27447    - Update to the July 1 2011 Maxmind GeoLite Country database.
27448
27449
27450Changes in version 0.2.2.29-beta - 2011-06-20
27451  Tor 0.2.2.29-beta reverts an accidental behavior change for users who
27452  have bridge lines in their torrc but don't want to use them; gets
27453  us closer to having the control socket feature working on Debian;
27454  and fixes a variety of smaller bugs.
27455
27456  o Major bugfixes:
27457    - Revert the UseBridges option to its behavior before 0.2.2.28-beta.
27458      When we changed the default behavior to "use bridges if any
27459      are listed in the torrc", we surprised users who had bridges
27460      in their torrc files but who didn't actually want to use them.
27461      Partial resolution for bug 3354.
27462
27463  o Privacy fixes:
27464    - Don't attach new streams to old rendezvous circuits after SIGNAL
27465      NEWNYM. Previously, we would keep using an existing rendezvous
27466      circuit if it remained open (i.e. if it were kept open by a
27467      long-lived stream, or if a new stream were attached to it before
27468      Tor could notice that it was old and no longer in use). Bugfix on
27469      0.1.1.15-rc; fixes bug 3375.
27470
27471  o Minor bugfixes:
27472    - Fix a bug when using ControlSocketsGroupWritable with User. The
27473      directory's group would be checked against the current group, not
27474      the configured group. Patch by Jérémy Bobbio. Fixes bug 3393;
27475      bugfix on 0.2.2.26-beta.
27476    - Make connection_printf_to_buf()'s behavior sane. Its callers
27477      expect it to emit a CRLF iff the format string ends with CRLF;
27478      it actually emitted a CRLF iff (a) the format string ended with
27479      CRLF or (b) the resulting string was over 1023 characters long or
27480      (c) the format string did not end with CRLF *and* the resulting
27481      string was 1021 characters long or longer. Bugfix on 0.1.1.9-alpha;
27482      fixes part of bug 3407.
27483    - Make send_control_event_impl()'s behavior sane. Its callers
27484      expect it to always emit a CRLF at the end of the string; it
27485      might have emitted extra control characters as well. Bugfix on
27486      0.1.1.9-alpha; fixes another part of bug 3407.
27487    - Make crypto_rand_int() check the value of its input correctly.
27488      Previously, it accepted values up to UINT_MAX, but could return a
27489      negative number if given a value above INT_MAX+1. Found by George
27490      Kadianakis. Fixes bug 3306; bugfix on 0.2.2pre14.
27491    - Avoid a segfault when reading a malformed circuit build state
27492      with more than INT_MAX entries. Found by wanoskarnet. Bugfix on
27493      0.2.2.4-alpha.
27494    - When asked about a DNS record type we don't support via a
27495      client DNSPort, reply with NOTIMPL rather than an empty
27496      reply. Patch by intrigeri. Fixes bug 3369; bugfix on 2.0.1-alpha.
27497    - Fix a rare memory leak during stats writing. Found by coverity.
27498
27499  o Minor features:
27500    - Update to the June 1 2011 Maxmind GeoLite Country database.
27501
27502  o Code simplifications and refactoring:
27503    - Remove some dead code as indicated by coverity.
27504    - Remove a few dead assignments during router parsing. Found by
27505      coverity.
27506    - Add some forgotten return value checks during unit tests. Found
27507      by coverity.
27508    - Don't use 1-bit wide signed bit fields. Found by coverity.
27509
27510
27511Changes in version 0.2.2.28-beta - 2011-06-04
27512  Tor 0.2.2.28-beta makes great progress towards a new stable release: we
27513  fixed a big bug in whether relays stay in the consensus consistently,
27514  we moved closer to handling bridges and hidden services correctly,
27515  and we started the process of better handling the dreaded "my Vidalia
27516  died, and now my Tor demands a password when I try to reconnect to it"
27517  usability issue.
27518
27519  o Major bugfixes:
27520    - Don't decide to make a new descriptor when receiving a HUP signal.
27521      This bug has caused a lot of 0.2.2.x relays to disappear from the
27522      consensus periodically. Fixes the most common case of triggering
27523      bug 1810; bugfix on 0.2.2.7-alpha.
27524    - Actually allow nameservers with IPv6 addresses. Fixes bug 2574.
27525    - Don't try to build descriptors if "ORPort auto" is set and we
27526      don't know our actual ORPort yet. Fix for bug 3216; bugfix on
27527      0.2.2.26-beta.
27528    - Resolve a crash that occurred when setting BridgeRelay to 1 with
27529      accounting enabled. Fixes bug 3228; bugfix on 0.2.2.18-alpha.
27530    - Apply circuit timeouts to opened hidden-service-related circuits
27531      based on the correct start time. Previously, we would apply the
27532      circuit build timeout based on time since the circuit's creation;
27533      it was supposed to be applied based on time since the circuit
27534      entered its current state. Bugfix on 0.0.6; fixes part of bug 1297.
27535    - Use the same circuit timeout for client-side introduction
27536      circuits as for other four-hop circuits, rather than the timeout
27537      for single-hop directory-fetch circuits; the shorter timeout may
27538      have been appropriate with the static circuit build timeout in
27539      0.2.1.x and earlier, but caused many hidden service access attempts
27540      to fail with the adaptive CBT introduced in 0.2.2.2-alpha. Bugfix
27541      on 0.2.2.2-alpha; fixes another part of bug 1297.
27542    - In ticket 2511 we fixed a case where you could use an unconfigured
27543      bridge if you had configured it as a bridge the last time you ran
27544      Tor. Now fix another edge case: if you had configured it as a bridge
27545      but then switched to a different bridge via the controller, you
27546      would still be willing to use the old one. Bugfix on 0.2.0.1-alpha;
27547      fixes bug 3321.
27548
27549  o Major features:
27550    - Add an __OwningControllerProcess configuration option and a
27551      TAKEOWNERSHIP control-port command. Now a Tor controller can ensure
27552      that when it exits, Tor will shut down. Implements feature 3049.
27553    - If "UseBridges 1" is set and no bridges are configured, Tor will
27554      now refuse to build any circuits until some bridges are set.
27555      If "UseBridges auto" is set, Tor will use bridges if they are
27556      configured and we are not running as a server, but otherwise will
27557      make circuits as usual. The new default is "auto". Patch by anonym,
27558      so the Tails LiveCD can stop automatically revealing you as a Tor
27559      user on startup.
27560
27561  o Minor bugfixes:
27562    - Fix warnings from GCC 4.6's "-Wunused-but-set-variable" option.
27563    - Remove a trailing asterisk from "exit-policy/default" in the
27564      output of the control port command "GETINFO info/names". Bugfix
27565      on 0.1.2.5-alpha.
27566    - Use a wide type to hold sockets when built for 64-bit Windows builds.
27567      Fixes bug 3270.
27568    - Warn when the user configures two HiddenServiceDir lines that point
27569      to the same directory. Bugfix on 0.0.6 (the version introducing
27570      HiddenServiceDir); fixes bug 3289.
27571    - Remove dead code from rend_cache_lookup_v2_desc_as_dir. Fixes
27572      part of bug 2748; bugfix on 0.2.0.10-alpha.
27573    - Log malformed requests for rendezvous descriptors as protocol
27574      warnings, not warnings. Also, use a more informative log message
27575      in case someone sees it at log level warning without prior
27576      info-level messages. Fixes the other part of bug 2748; bugfix
27577      on 0.2.0.10-alpha.
27578    - Clear the table recording the time of the last request for each
27579      hidden service descriptor from each HS directory on SIGNAL NEWNYM.
27580      Previously, we would clear our HS descriptor cache on SIGNAL
27581      NEWNYM, but if we had previously retrieved a descriptor (or tried
27582      to) from every directory responsible for it, we would refuse to
27583      fetch it again for up to 15 minutes. Bugfix on 0.2.2.25-alpha;
27584      fixes bug 3309.
27585    - Fix a log message that said "bits" while displaying a value in
27586      bytes. Found by wanoskarnet. Fixes bug 3318; bugfix on
27587      0.2.0.1-alpha.
27588    - When checking for 1024-bit keys, check for 1024 bits, not 128
27589      bytes. This allows Tor to correctly discard keys of length 1017
27590      through 1023. Bugfix on 0.0.9pre5.
27591
27592  o Minor features:
27593    - Relays now log the reason for publishing a new relay descriptor,
27594      so we have a better chance of hunting down instances of bug 1810.
27595      Resolves ticket 3252.
27596    - Revise most log messages that refer to nodes by nickname to
27597      instead use the "$key=nickname at address" format. This should be
27598      more useful, especially since nicknames are less and less likely
27599      to be unique. Resolves ticket 3045.
27600    - Log (at info level) when purging pieces of hidden-service-client
27601      state because of SIGNAL NEWNYM.
27602
27603  o Removed options:
27604    - Remove undocumented option "-F" from tor-resolve: it hasn't done
27605      anything since 0.2.1.16-rc.
27606
27607
27608Changes in version 0.2.2.27-beta - 2011-05-18
27609  Tor 0.2.2.27-beta fixes a bridge-related stability bug in the previous
27610  release, and also adds a few more general bugfixes.
27611
27612  o Major bugfixes:
27613    - Fix a crash bug when changing bridges in a running Tor process.
27614      Fixes bug 3213; bugfix on 0.2.2.26-beta.
27615    - When the controller configures a new bridge, don't wait 10 to 60
27616      seconds before trying to fetch its descriptor. Bugfix on
27617      0.2.0.3-alpha; fixes bug 3198 (suggested by 2355).
27618
27619  o Minor bugfixes:
27620    - Require that onion keys have exponent 65537 in microdescriptors too.
27621      Fixes more of bug 3207; bugfix on 0.2.2.26-beta.
27622    - Tor used to limit HttpProxyAuthenticator values to 48 characters.
27623      Changed the limit to 512 characters by removing base64 newlines.
27624      Fixes bug 2752. Fix by Michael Yakubovich.
27625    - When a client starts or stops using bridges, never use a circuit
27626      that was built before the configuration change. This behavior could
27627      put at risk a user who uses bridges to ensure that her traffic
27628      only goes to the chosen addresses. Bugfix on 0.2.0.3-alpha; fixes
27629      bug 3200.
27630
27631
27632Changes in version 0.2.2.26-beta - 2011-05-17
27633  Tor 0.2.2.26-beta fixes a variety of potential privacy problems. It
27634  also introduces a new "socksport auto" approach that should make it
27635  easier to run multiple Tors on the same system, and does a lot of
27636  cleanup to get us closer to a release candidate.
27637
27638  o Security/privacy fixes:
27639    - Replace all potentially sensitive memory comparison operations
27640      with versions whose runtime does not depend on the data being
27641      compared. This will help resist a class of attacks where an
27642      adversary can use variations in timing information to learn
27643      sensitive data. Fix for one case of bug 3122. (Safe memcmp
27644      implementation by Robert Ransom based partially on code by DJB.)
27645    - When receiving a hidden service descriptor, check that it is for
27646      the hidden service we wanted. Previously, Tor would store any
27647      hidden service descriptors that a directory gave it, whether it
27648      wanted them or not. This wouldn't have let an attacker impersonate
27649      a hidden service, but it did let directories pre-seed a client
27650      with descriptors that it didn't want. Bugfix on 0.0.6.
27651    - On SIGHUP, do not clear out all TrackHostExits mappings, client
27652      DNS cache entries, and virtual address mappings: that's what
27653      NEWNYM is for. Fixes bug 1345; bugfix on 0.1.0.1-rc.
27654
27655  o Major features:
27656    - The options SocksPort, ControlPort, and so on now all accept a
27657      value "auto" that opens a socket on an OS-selected port. A
27658      new ControlPortWriteToFile option tells Tor to write its
27659      actual control port or ports to a chosen file. If the option
27660      ControlPortFileGroupReadable is set, the file is created as
27661      group-readable. Now users can run two Tor clients on the same
27662      system without needing to manually mess with parameters. Resolves
27663      part of ticket 3076.
27664    - Set SO_REUSEADDR on all sockets, not just listeners. This should
27665      help busy exit nodes avoid running out of useable ports just
27666      because all the ports have been used in the near past. Resolves
27667      issue 2850.
27668
27669  o Minor features:
27670    - New "GETINFO net/listeners/(type)" controller command to return
27671      a list of addresses and ports that are bound for listeners for a
27672      given connection type. This is useful when the user has configured
27673      "SocksPort auto" and the controller needs to know which port got
27674      chosen. Resolves another part of ticket 3076.
27675    - Add a new ControlSocketsGroupWritable configuration option: when
27676      it is turned on, ControlSockets are group-writeable by the default
27677      group of the current user. Patch by Jérémy Bobbio; implements
27678      ticket 2972.
27679    - Tor now refuses to create a ControlSocket in a directory that is
27680      world-readable (or group-readable if ControlSocketsGroupWritable
27681      is 0). This is necessary because some operating systems do not
27682      enforce permissions on an AF_UNIX sockets. Permissions on the
27683      directory holding the socket, however, seems to work everywhere.
27684    - Rate-limit a warning about failures to download v2 networkstatus
27685      documents. Resolves part of bug 1352.
27686    - Backport code from 0.2.3.x that allows directory authorities to
27687      clean their microdescriptor caches. Needed to resolve bug 2230.
27688    - When an HTTPS proxy reports "403 Forbidden", we now explain
27689      what it means rather than calling it an unexpected status code.
27690      Closes bug 2503. Patch from Michael Yakubovich.
27691    - Update to the May 1 2011 Maxmind GeoLite Country database.
27692
27693  o Minor bugfixes:
27694    - Authorities now clean their microdesc cache periodically and when
27695      reading from disk initially, not only when adding new descriptors.
27696      This prevents a bug where we could lose microdescriptors. Bugfix
27697      on 0.2.2.6-alpha. Fixes bug 2230.
27698    - Do not crash when our configuration file becomes unreadable, for
27699      example due to a permissions change, between when we start up
27700      and when a controller calls SAVECONF. Fixes bug 3135; bugfix
27701      on 0.0.9pre6.
27702    - Avoid a bug that would keep us from replacing a microdescriptor
27703      cache on Windows. (We would try to replace the file while still
27704      holding it open. That's fine on Unix, but Windows doesn't let us
27705      do that.) Bugfix on 0.2.2.6-alpha; bug found by wanoskarnet.
27706    - Add missing explanations for the authority-related torrc options
27707      RephistTrackTime, BridgePassword, and V3AuthUseLegacyKey in the
27708      man page. Resolves issue 2379.
27709    - As an authority, do not upload our own vote or signature set to
27710      ourself. It would tell us nothing new, and as of 0.2.2.24-alpha,
27711      it would get flagged as a duplicate. Resolves bug 3026.
27712    - Accept hidden service descriptors if we think we might be a hidden
27713      service directory, regardless of what our consensus says. This
27714      helps robustness, since clients and hidden services can sometimes
27715      have a more up-to-date view of the network consensus than we do,
27716      and if they think that the directory authorities list us a HSDir,
27717      we might actually be one. Related to bug 2732; bugfix on
27718      0.2.0.10-alpha.
27719    - When a controller changes TrackHostExits, remove mappings for
27720      hosts that should no longer have their exits tracked. Bugfix on
27721      0.1.0.1-rc.
27722    - When a controller changes VirtualAddrNetwork, remove any mappings
27723      for hosts that were automapped to the old network. Bugfix on
27724      0.1.1.19-rc.
27725    - When a controller changes one of the AutomapHosts* options, remove
27726      any mappings for hosts that should no longer be automapped. Bugfix
27727      on 0.2.0.1-alpha.
27728    - Do not reset the bridge descriptor download status every time we
27729      re-parse our configuration or get a configuration change. Fixes
27730      bug 3019; bugfix on 0.2.0.3-alpha.
27731
27732  o Minor bugfixes (code cleanup):
27733    - When loading the microdesc journal, remember its current size.
27734      In 0.2.2, this helps prevent the microdesc journal from growing
27735      without limit on authorities (who are the only ones to use it in
27736      0.2.2). Fixes a part of bug 2230; bugfix on 0.2.2.6-alpha.
27737      Fix posted by "cypherpunks."
27738    - The microdesc journal is supposed to get rebuilt only if it is
27739      at least _half_ the length of the store, not _twice_ the length
27740      of the store. Bugfix on 0.2.2.6-alpha; fixes part of bug 2230.
27741    - Fix a potential null-pointer dereference while computing a
27742      consensus. Bugfix on 0.2.0.3-alpha, found with the help of
27743      clang's analyzer.
27744    - Avoid a possible null-pointer dereference when rebuilding the mdesc
27745      cache without actually having any descriptors to cache. Bugfix on
27746      0.2.2.6-alpha. Issue discovered using clang's static analyzer.
27747    - If we fail to compute the identity digest of a v3 legacy keypair,
27748      warn, and don't use a buffer-full of junk instead. Bugfix on
27749      0.2.1.1-alpha; fixes bug 3106.
27750    - Resolve an untriggerable issue in smartlist_string_num_isin(),
27751      where if the function had ever in the future been used to check
27752      for the presence of a too-large number, it would have given an
27753      incorrect result. (Fortunately, we only used it for 16-bit
27754      values.) Fixes bug 3175; bugfix on 0.1.0.1-rc.
27755    - Require that introduction point keys and onion handshake keys
27756      have a public exponent of 65537. Starts to fix bug 3207; bugfix
27757      on 0.2.0.10-alpha.
27758
27759  o Removed features:
27760    - Caches no longer download and serve v2 networkstatus documents
27761      unless FetchV2Networkstatus flag is set: these documents haven't
27762      haven't been used by clients or relays since 0.2.0.x. Resolves
27763      bug 3022.
27764
27765
27766Changes in version 0.2.3.1-alpha - 2011-05-05
27767  Tor 0.2.3.1-alpha adds some new experimental features, including support
27768  for an improved network IO backend, IOCP networking on Windows,
27769  microdescriptor caching, "fast-start" support for streams, and automatic
27770  home router configuration. There are also numerous internal improvements
27771  to try to make the code easier for developers to work with.
27772
27773  This is the first alpha release in a new series, so expect there to be
27774  bugs. Users who would rather test out a more stable branch should
27775  stay with 0.2.2.x for now.
27776
27777  o Major features:
27778    - Tor can now optionally build with the "bufferevents" buffered IO
27779      backend provided by Libevent 2. To use this feature, make sure you
27780      have the latest possible version of Libevent, and pass the
27781      --enable-bufferevents flag to configure when building Tor from
27782      source. This feature will make our networking code more flexible,
27783      let us stack layers on each other, and let us use more efficient
27784      zero-copy transports where available.
27785    - As an experimental feature, Tor can use IOCP for networking on Windows.
27786      Once this code is tuned and optimized, it promises much better
27787      performance than the select-based backend we've used in the past. To
27788      try this feature, you must build Tor with Libevent 2, configure Tor
27789      with the "bufferevents" buffered IO backend, and add "DisableIOCP 0" to
27790      your torrc. There are known bugs here: only try this if you can help
27791      debug it as it breaks.
27792    - The EntryNodes option can now include country codes like {de} or IP
27793      addresses or network masks. Previously we had disallowed these options
27794      because we didn't have an efficient way to keep the list up to
27795      date. Fixes bug 1982, but see bug 2798 for an unresolved issue here.
27796    - Exit nodes now accept and queue data on not-yet-connected streams.
27797      Previously, the client wasn't allowed to send data until the stream was
27798      connected, which slowed down all connections. This change will enable
27799      clients to perform a "fast-start" on streams and send data without
27800      having to wait for a confirmation that the stream has opened. (Patch
27801      from Ian Goldberg; implements the server side of Proposal 174.)
27802    - Tor now has initial support for automatic port mapping on the many
27803      home routers that support NAT-PMP or UPnP. (Not yet supported on
27804      Windows). To build the support code, you'll need to have libnatpnp
27805      library and/or the libminiupnpc library, and you'll need to enable the
27806      feature specifically by passing "--enable-upnp" and/or
27807      "--enable-natpnp" to configure. To turn it on, use the new
27808      PortForwarding option.
27809    - Caches now download, cache, and serve multiple "flavors" of the
27810      consensus, including a flavor that describes microdescriptors.
27811    - Caches now download, cache, and serve microdescriptors -- small
27812      summaries of router descriptors that are authenticated by all of the
27813      directory authorities. Once enough caches are running this code,
27814      clients will be able to save significant amounts of directory bandwidth
27815      by downloading microdescriptors instead of router descriptors.
27816
27817  o Minor features:
27818    - Make logging resolution configurable with a new LogTimeGranularity
27819      option, and change the default from 1 millisecond to 1 second.
27820      Implements enhancement 1668.
27821    - We log which torrc file we're using on startup. Implements ticket
27822      2444.
27823    - Ordinarily, Tor does not count traffic from private addresses (like
27824      127.0.0.1 or 10.0.0.1) when calculating rate limits or accounting.
27825      There is now a new option, CountPrivateBandwidth, to disable this
27826      behavior. Patch from Daniel Cagara.
27827    - New --enable-static-tor configure option for building Tor as
27828      statically as possible. Idea, general hackery and thoughts from
27829      Alexei Czeskis, John Gilmore, Jacob Appelbaum. Implements ticket
27830      2702.
27831    - If you set the NumCPUs option to 0, Tor will now try to detect how
27832      many CPUs you have. This is the new default behavior.
27833    - Turn on directory request statistics by default and include them in
27834      extra-info descriptors. Don't break if we have no GeoIP database.
27835    - Relays that set "ConnDirectionStatistics 1" write statistics on the
27836      bidirectional use of connections to disk every 24 hours.
27837    - Add a GeoIP file digest to the extra-info descriptor. Implements
27838      enhancement 1883.
27839    - The NodeFamily option -- which let you declare that you want to
27840      consider nodes to be part of a family whether they list themselves
27841      that way or not -- now allows IP address ranges and country codes.
27842    - Add a new 'Heartbeat' log message type to periodically log a message
27843      describing Tor's status at level Notice. This feature is meant for
27844      operators who log at notice, and want to make sure that their Tor
27845      server is still working. Implementation by George Kadianakis.
27846
27847  o Minor bugfixes (on 0.2.2.25-alpha):
27848    - When loading the microdesc journal, remember its current size.
27849      In 0.2.2, this helps prevent the microdesc journal from growing
27850      without limit on authorities (who are the only ones to use it in
27851      0.2.2). Fixes a part of bug 2230; bugfix on 0.2.2.6-alpha.
27852      Fix posted by "cypherpunks."
27853    - The microdesc journal is supposed to get rebuilt only if it is
27854      at least _half_ the length of the store, not _twice_ the length
27855      of the store. Bugfix on 0.2.2.6-alpha; fixes part of bug 2230.
27856    - If as an authority we fail to compute the identity digest of a v3
27857      legacy keypair, warn, and don't use a buffer-full of junk instead.
27858      Bugfix on 0.2.1.1-alpha; fixes bug 3106.
27859    - Authorities now clean their microdesc cache periodically and when
27860      reading from disk initially, not only when adding new descriptors.
27861      This prevents a bug where we could lose microdescriptors. Bugfix
27862      on 0.2.2.6-alpha.
27863
27864  o Minor features (controller):
27865    - Add a new SIGNAL event to the controller interface so that
27866      controllers can be notified when Tor handles a signal. Resolves
27867      issue 1955. Patch by John Brooks.
27868    - Add a new GETINFO option to get total bytes read and written. Patch
27869      from pipe, revised by atagar. Resolves ticket 2345.
27870    - Implement some GETINFO controller fields to provide information about
27871      the Tor process's pid, euid, username, and resource limits.
27872
27873  o Build changes:
27874    - Our build system requires automake 1.6 or later to create the
27875      Makefile.in files. Previously, you could have used 1.4.
27876      This only affects developers and people building Tor from git;
27877      people who build Tor from the source distribution without changing
27878      the Makefile.am files should be fine.
27879    - Our autogen.sh script uses autoreconf to launch autoconf, automake, and
27880      so on. This is more robust against some of the failure modes
27881      associated with running the autotools pieces on their own.
27882
27883  o Minor packaging issues:
27884    - On OpenSUSE, create the /var/run/tor directory on startup if it is not
27885      already created. Patch from Andreas Stieger. Fixes bug 2573.
27886
27887  o Code simplifications and refactoring:
27888    - A major revision to our internal node-selecting and listing logic.
27889      Tor already had at least two major ways to look at the question of
27890      "which Tor servers do we know about": a list of router descriptors,
27891      and a list of entries in the current consensus. With
27892      microdescriptors, we're adding a third. Having so many systems
27893      without an abstraction layer over them was hurting the codebase.
27894      Now, we have a new "node_t" abstraction that presents a consistent
27895      interface to a client's view of a Tor node, and holds (nearly) all
27896      of the mutable state formerly in routerinfo_t and routerstatus_t.
27897    - The helper programs tor-gencert, tor-resolve, and tor-checkkey
27898      no longer link against Libevent: they never used it, but
27899      our library structure used to force them to link it.
27900
27901  o Removed features:
27902    - Remove some old code to work around even older versions of Tor that
27903      used forked processes to handle DNS requests. Such versions of Tor
27904      are no longer in use as servers.
27905
27906  o Documentation fixes:
27907    - Correct a broken faq link in the INSTALL file. Fixes bug 2307.
27908    - Add missing documentation for the authority-related torrc options
27909      RephistTrackTime, BridgePassword, and V3AuthUseLegacyKey. Resolves
27910      issue 2379.
27911
27912
27913Changes in version 0.2.2.25-alpha - 2011-04-29
27914  Tor 0.2.2.25-alpha fixes many bugs: hidden service clients are more
27915  robust, routers no longer overreport their bandwidth, Win7 should crash
27916  a little less, and NEWNYM (as used by Vidalia's "new identity" button)
27917  now prevents hidden service-related activity from being linkable. It
27918  provides more information to Vidalia so you can see if your bridge is
27919  working. Also, 0.2.2.25-alpha revamps the Entry/Exit/ExcludeNodes and
27920  StrictNodes configuration options to make them more reliable, more
27921  understandable, and more regularly applied. If you use those options,
27922  please see the revised documentation for them in the manual page.
27923
27924  o Major bugfixes:
27925    - Relays were publishing grossly inflated bandwidth values because
27926      they were writing their state files wrong--now they write the
27927      correct value. Also, resume reading bandwidth history from the
27928      state file correctly. Fixes bug 2704; bugfix on 0.2.2.23-alpha.
27929    - Improve hidden service robustness: When we find that we have
27930      extended a hidden service's introduction circuit to a relay not
27931      listed as an introduction point in the HS descriptor we currently
27932      have, retry with an introduction point from the current
27933      descriptor. Previously we would just give up. Fixes bugs 1024 and
27934      1930; bugfix on 0.2.0.10-alpha.
27935    - Clients now stop trying to use an exit node associated with a given
27936      destination by TrackHostExits if they fail to reach that exit node.
27937      Fixes bug 2999. Bugfix on 0.2.0.20-rc.
27938    - Fix crash bug on platforms where gmtime and localtime can return
27939      NULL. Windows 7 users were running into this one. Fixes part of bug
27940      2077. Bugfix on all versions of Tor. Found by boboper.
27941
27942  o Security and stability fixes:
27943    - Don't double-free a parsable, but invalid, microdescriptor, even if
27944      it is followed in the blob we're parsing by an unparsable
27945      microdescriptor. Fixes an issue reported in a comment on bug 2954.
27946      Bugfix on 0.2.2.6-alpha; fix by "cypherpunks".
27947    - If the Nickname configuration option isn't given, Tor would pick a
27948      nickname based on the local hostname as the nickname for a relay.
27949      Because nicknames are not very important in today's Tor and the
27950      "Unnamed" nickname has been implemented, this is now problematic
27951      behavior: It leaks information about the hostname without being
27952      useful at all. Fixes bug 2979; bugfix on 0.1.2.2-alpha, which
27953      introduced the Unnamed nickname. Reported by tagnaq.
27954    - Fix an uncommon assertion failure when running with DNSPort under
27955      heavy load. Fixes bug 2933; bugfix on 0.2.0.1-alpha.
27956    - Avoid linkability based on cached hidden service descriptors: forget
27957      all hidden service descriptors cached as a client when processing a
27958      SIGNAL NEWNYM command. Fixes bug 3000; bugfix on 0.0.6.
27959
27960  o Major features:
27961    - Export GeoIP information on bridge usage to controllers even if we
27962      have not yet been running for 24 hours. Now Vidalia bridge operators
27963      can get more accurate and immediate feedback about their
27964      contributions to the network.
27965
27966  o Major features and bugfixes (node selection):
27967    - Revise and reconcile the meaning of the ExitNodes, EntryNodes,
27968      ExcludeEntryNodes, ExcludeExitNodes, ExcludeNodes, and StrictNodes
27969      options. Previously, we had been ambiguous in describing what
27970      counted as an "exit" node, and what operations exactly "StrictNodes
27971      0" would permit. This created confusion when people saw nodes built
27972      through unexpected circuits, and made it hard to tell real bugs from
27973      surprises. Now the intended behavior is:
27974        . "Exit", in the context of ExitNodes and ExcludeExitNodes, means
27975          a node that delivers user traffic outside the Tor network.
27976        . "Entry", in the context of EntryNodes, means a node used as the
27977          first hop of a multihop circuit. It doesn't include direct
27978          connections to directory servers.
27979        . "ExcludeNodes" applies to all nodes.
27980        . "StrictNodes" changes the behavior of ExcludeNodes only. When
27981          StrictNodes is set, Tor should avoid all nodes listed in
27982          ExcludeNodes, even when it will make user requests fail. When
27983          StrictNodes is *not* set, then Tor should follow ExcludeNodes
27984          whenever it can, except when it must use an excluded node to
27985          perform self-tests, connect to a hidden service, provide a
27986          hidden service, fulfill a .exit request, upload directory
27987          information, or fetch directory information.
27988      Collectively, the changes to implement the behavior fix bug 1090.
27989    - ExcludeNodes now takes precedence over EntryNodes and ExitNodes: if
27990      a node is listed in both, it's treated as excluded.
27991    - ExcludeNodes now applies to directory nodes -- as a preference if
27992      StrictNodes is 0, or an absolute requirement if StrictNodes is 1.
27993      Don't exclude all the directory authorities and set StrictNodes to 1
27994      unless you really want your Tor to break.
27995    - ExcludeNodes and ExcludeExitNodes now override exit enclaving.
27996    - ExcludeExitNodes now overrides .exit requests.
27997    - We don't use bridges listed in ExcludeNodes.
27998    - When StrictNodes is 1:
27999       . We now apply ExcludeNodes to hidden service introduction points
28000         and to rendezvous points selected by hidden service users. This
28001         can make your hidden service less reliable: use it with caution!
28002       . If we have used ExcludeNodes on ourself, do not try relay
28003         reachability self-tests.
28004       . If we have excluded all the directory authorities, we will not
28005         even try to upload our descriptor if we're a relay.
28006       . Do not honor .exit requests to an excluded node.
28007    - Remove a misfeature that caused us to ignore the Fast/Stable flags
28008      when ExitNodes is set. Bugfix on 0.2.2.7-alpha.
28009    - When the set of permitted nodes changes, we now remove any mappings
28010      introduced via TrackExitHosts to now-excluded nodes. Bugfix on
28011      0.1.0.1-rc.
28012    - We never cannibalize a circuit that had excluded nodes on it, even
28013      if StrictNodes is 0. Bugfix on 0.1.0.1-rc.
28014    - Revert a change where we would be laxer about attaching streams to
28015      circuits than when building the circuits. This was meant to prevent
28016      a set of bugs where streams were never attachable, but our improved
28017      code here should make this unnecessary. Bugfix on 0.2.2.7-alpha.
28018    - Keep track of how many times we launch a new circuit to handle a
28019      given stream. Too many launches could indicate an inconsistency
28020      between our "launch a circuit to handle this stream" logic and our
28021      "attach this stream to one of the available circuits" logic.
28022    - Improve log messages related to excluded nodes.
28023
28024  o Minor bugfixes:
28025    - Fix a spurious warning when moving from a short month to a long
28026      month on relays with month-based BandwidthAccounting. Bugfix on
28027      0.2.2.17-alpha; fixes bug 3020.
28028    - When a client finds that an origin circuit has run out of 16-bit
28029      stream IDs, we now mark it as unusable for new streams. Previously,
28030      we would try to close the entire circuit. Bugfix on 0.0.6.
28031    - Add a forgotten cast that caused a compile warning on OS X 10.6.
28032      Bugfix on 0.2.2.24-alpha.
28033    - Be more careful about reporting the correct error from a failed
28034      connect() system call. Under some circumstances, it was possible to
28035      look at an incorrect value for errno when sending the end reason.
28036      Bugfix on 0.1.0.1-rc.
28037    - Correctly handle an "impossible" overflow cases in connection byte
28038      counting, where we write or read more than 4GB on an edge connection
28039      in a single second. Bugfix on 0.1.2.8-beta.
28040    - Correct the warning displayed when a rendezvous descriptor exceeds
28041      the maximum size. Fixes bug 2750; bugfix on 0.2.1.5-alpha. Found by
28042      John Brooks.
28043    - Clients and hidden services now use HSDir-flagged relays for hidden
28044      service descriptor downloads and uploads even if the relays have no
28045      DirPort set and the client has disabled TunnelDirConns. This will
28046      eventually allow us to give the HSDir flag to relays with no
28047      DirPort. Fixes bug 2722; bugfix on 0.2.1.6-alpha.
28048    - Downgrade "no current certificates known for authority" message from
28049      Notice to Info. Fixes bug 2899; bugfix on 0.2.0.10-alpha.
28050    - Make the SIGNAL DUMP control-port command work on FreeBSD. Fixes bug
28051      2917. Bugfix on 0.1.1.1-alpha.
28052    - Only limit the lengths of single HS descriptors, even when multiple
28053      HS descriptors are published to an HSDir relay in a single POST
28054      operation. Fixes bug 2948; bugfix on 0.2.1.5-alpha. Found by hsdir.
28055    - Write the current time into the LastWritten line in our state file,
28056      rather than the time from the previous write attempt. Also, stop
28057      trying to use a time of -1 in our log statements. Fixes bug 3039;
28058      bugfix on 0.2.2.14-alpha.
28059    - Be more consistent in our treatment of file system paths. "~" should
28060      get expanded to the user's home directory in the Log config option.
28061      Fixes bug 2971; bugfix on 0.2.0.1-alpha, which introduced the
28062      feature for the -f and --DataDirectory options.
28063
28064  o Minor features:
28065    - Make sure every relay writes a state file at least every 12 hours.
28066      Previously, a relay could go for weeks without writing its state
28067      file, and on a crash could lose its bandwidth history, capacity
28068      estimates, client country statistics, and so on. Addresses bug 3012.
28069    - Send END_STREAM_REASON_NOROUTE in response to EHOSTUNREACH errors.
28070      Clients before 0.2.1.27 didn't handle NOROUTE correctly, but such
28071      clients are already deprecated because of security bugs.
28072    - Don't allow v0 hidden service authorities to act as clients.
28073      Required by fix for bug 3000.
28074    - Ignore SIGNAL NEWNYM commands on relay-only Tor instances. Required
28075      by fix for bug 3000.
28076    - Ensure that no empty [dirreq-](read|write)-history lines are added
28077      to an extrainfo document. Implements ticket 2497.
28078
28079  o Code simplification and refactoring:
28080    - Remove workaround code to handle directory responses from servers
28081      that had bug 539 (they would send HTTP status 503 responses _and_
28082      send a body too). Since only server versions before
28083      0.2.0.16-alpha/0.1.2.19 were affected, there is no longer reason to
28084      keep the workaround in place.
28085    - Remove the old 'fuzzy time' logic. It was supposed to be used for
28086      handling calculations where we have a known amount of clock skew and
28087      an allowed amount of unknown skew. But we only used it in three
28088      places, and we never adjusted the known/unknown skew values. This is
28089      still something we might want to do someday, but if we do, we'll
28090      want to do it differently.
28091    - Avoid signed/unsigned comparisons by making SIZE_T_CEILING unsigned.
28092      None of the cases where we did this before were wrong, but by making
28093      this change we avoid warnings. Fixes bug 2475; bugfix on 0.2.1.28.
28094    - Use GetTempDir to find the proper temporary directory location on
28095      Windows when generating temporary files for the unit tests. Patch by
28096      Gisle Vanem.
28097
28098
28099Changes in version 0.2.2.24-alpha - 2011-04-08
28100  Tor 0.2.2.24-alpha fixes a variety of bugs, including a big bug that
28101  prevented Tor clients from effectively using "multihomed" bridges,
28102  that is, bridges that listen on multiple ports or IP addresses so users
28103  can continue to use some of their addresses even if others get blocked.
28104
28105  o Major bugfixes:
28106    - Fix a bug where bridge users who configure the non-canonical
28107      address of a bridge automatically switch to its canonical
28108      address. If a bridge listens at more than one address, it should be
28109      able to advertise those addresses independently and any non-blocked
28110      addresses should continue to work. Bugfix on Tor 0.2.0.x. Fixes
28111      bug 2510.
28112    - If you configured Tor to use bridge A, and then quit and
28113      configured Tor to use bridge B instead, it would happily continue
28114      to use bridge A if it's still reachable. While this behavior is
28115      a feature if your goal is connectivity, in some scenarios it's a
28116      dangerous bug. Bugfix on Tor 0.2.0.1-alpha; fixes bug 2511.
28117    - Directory authorities now use data collected from their own
28118      uptime observations when choosing whether to assign the HSDir flag
28119      to relays, instead of trusting the uptime value the relay reports in
28120      its descriptor. This change helps prevent an attack where a small
28121      set of nodes with frequently-changing identity keys can blackhole
28122      a hidden service. (Only authorities need upgrade; others will be
28123      fine once they do.) Bugfix on 0.2.0.10-alpha; fixes bug 2709.
28124
28125  o Minor bugfixes:
28126    - When we restart our relay, we might get a successful connection
28127      from the outside before we've started our reachability tests,
28128      triggering a warning: "ORPort found reachable, but I have no
28129      routerinfo yet. Failing to inform controller of success." This
28130      bug was harmless unless Tor is running under a controller
28131      like Vidalia, in which case the controller would never get a
28132      REACHABILITY_SUCCEEDED status event. Bugfix on 0.1.2.6-alpha;
28133      fixes bug 1172.
28134    - Make directory authorities more accurate at recording when
28135      relays that have failed several reachability tests became
28136      unreachable, so we can provide more accuracy at assigning Stable,
28137      Guard, HSDir, etc flags. Bugfix on 0.2.0.6-alpha. Resolves bug 2716.
28138    - Fix an issue that prevented static linking of libevent on
28139      some platforms (notably Linux). Fixes bug 2698; bugfix on
28140      versions 0.2.1.23/0.2.2.8-alpha (the versions introducing
28141      the --with-static-libevent configure option).
28142    - We now ask the other side of a stream (the client or the exit)
28143      for more data on that stream when the amount of queued data on
28144      that stream dips low enough. Previously, we wouldn't ask the
28145      other side for more data until either it sent us more data (which
28146      it wasn't supposed to do if it had exhausted its window!) or we
28147      had completely flushed all our queued data. This flow control fix
28148      should improve throughput. Fixes bug 2756; bugfix on the earliest
28149      released versions of Tor (svn commit r152).
28150    - Avoid a double-mark-for-free warning when failing to attach a
28151      transparent proxy connection. (We thought we had fixed this in
28152      0.2.2.23-alpha, but it turns out our fix was checking the wrong
28153      connection.) Fixes bug 2757; bugfix on 0.1.2.1-alpha (the original
28154      bug) and 0.2.2.23-alpha (the incorrect fix).
28155    - When warning about missing zlib development packages during compile,
28156      give the correct package names. Bugfix on 0.2.0.1-alpha.
28157
28158  o Minor features:
28159    - Directory authorities now log the source of a rejected POSTed v3
28160      networkstatus vote.
28161    - Make compilation with clang possible when using
28162      --enable-gcc-warnings by removing two warning options that clang
28163      hasn't implemented yet and by fixing a few warnings. Implements
28164      ticket 2696.
28165    - When expiring circuits, use microsecond timers rather than
28166      one-second timers. This can avoid an unpleasant situation where a
28167      circuit is launched near the end of one second and expired right
28168      near the beginning of the next, and prevent fluctuations in circuit
28169      timeout values.
28170    - Use computed circuit-build timeouts to decide when to launch
28171      parallel introduction circuits for hidden services. (Previously,
28172      we would retry after 15 seconds.)
28173    - Update to the April 1 2011 Maxmind GeoLite Country database.
28174
28175  o Packaging fixes:
28176    - Create the /var/run/tor directory on startup on OpenSUSE if it is
28177      not already created. Patch from Andreas Stieger. Fixes bug 2573.
28178
28179  o Documentation changes:
28180    - Modernize the doxygen configuration file slightly. Fixes bug 2707.
28181    - Resolve all doxygen warnings except those for missing documentation.
28182      Fixes bug 2705.
28183    - Add doxygen documentation for more functions, fields, and types.
28184
28185
28186Changes in version 0.2.2.23-alpha - 2011-03-08
28187  Tor 0.2.2.23-alpha lets relays record their bandwidth history so when
28188  they restart they don't lose their bandwidth capacity estimate. This
28189  release also fixes a diverse set of user-facing bugs, ranging from
28190  relays overrunning their rate limiting to clients falsely warning about
28191  clock skew to bridge descriptor leaks by our bridge directory authority.
28192
28193  o Major bugfixes:
28194    - Stop sending a CLOCK_SKEW controller status event whenever
28195      we fetch directory information from a relay that has a wrong clock.
28196      Instead, only inform the controller when it's a trusted authority
28197      that claims our clock is wrong. Bugfix on 0.1.2.6-alpha; fixes
28198      the rest of bug 1074.
28199    - Fix an assert in parsing router descriptors containing IPv6
28200      addresses. This one took down the directory authorities when
28201      somebody tried some experimental code. Bugfix on 0.2.1.3-alpha.
28202    - Make the bridge directory authority refuse to answer directory
28203      requests for "all" descriptors. It used to include bridge
28204      descriptors in its answer, which was a major information leak.
28205      Found by "piebeer". Bugfix on 0.2.0.3-alpha.
28206    - If relays set RelayBandwidthBurst but not RelayBandwidthRate,
28207      Tor would ignore their RelayBandwidthBurst setting,
28208      potentially using more bandwidth than expected. Bugfix on
28209      0.2.0.1-alpha. Reported by Paul Wouters. Fixes bug 2470.
28210    - Ignore and warn if the user mistakenly sets "PublishServerDescriptor
28211      hidserv" in her torrc. The 'hidserv' argument never controlled
28212      publication of hidden service descriptors. Bugfix on 0.2.0.1-alpha.
28213
28214  o Major features:
28215    - Relays now save observed peak bandwidth throughput rates to their
28216      state file (along with total usage, which was already saved)
28217      so that they can determine their correct estimated bandwidth on
28218      restart. Resolves bug 1863, where Tor relays would reset their
28219      estimated bandwidth to 0 after restarting.
28220    - Directory authorities now take changes in router IP address and
28221      ORPort into account when determining router stability. Previously,
28222      if a router changed its IP or ORPort, the authorities would not
28223      treat it as having any downtime for the purposes of stability
28224      calculation, whereas clients would experience downtime since the
28225      change could take a while to propagate to them. Resolves issue 1035.
28226    - Enable Address Space Layout Randomization (ASLR) and Data Execution
28227      Prevention (DEP) by default on Windows to make it harder for
28228      attackers to exploit vulnerabilities. Patch from John Brooks.
28229
28230  o Minor bugfixes (on 0.2.1.x and earlier):
28231    - Fix a rare crash bug that could occur when a client was configured
28232      with a large number of bridges. Fixes bug 2629; bugfix on
28233      0.2.1.2-alpha. Bugfix by trac user "shitlei".
28234    - Avoid a double mark-for-free warning when failing to attach a
28235      transparent proxy connection. Bugfix on 0.1.2.1-alpha. Fixes
28236      bug 2279.
28237    - Correctly detect failure to allocate an OpenSSL BIO. Fixes bug 2378;
28238      found by "cypherpunks". This bug was introduced before the first
28239      Tor release, in svn commit r110.
28240    - Country codes aren't supported in EntryNodes until 0.2.3.x, so
28241      don't mention them in the manpage. Fixes bug 2450; issue
28242      spotted by keb and G-Lo.
28243    - Fix a bug in bandwidth history state parsing that could have been
28244      triggered if a future version of Tor ever changed the timing
28245      granularity at which bandwidth history is measured. Bugfix on
28246      Tor 0.1.1.11-alpha.
28247    - When a relay decides that its DNS is too broken for it to serve
28248      as an exit server, it advertised itself as a non-exit, but
28249      continued to act as an exit. This could create accidental
28250      partitioning opportunities for users. Instead, if a relay is
28251      going to advertise reject *:* as its exit policy, it should
28252      really act with exit policy "reject *:*". Fixes bug 2366.
28253      Bugfix on Tor 0.1.2.5-alpha. Bugfix by user "postman" on trac.
28254    - In the special case where you configure a public exit relay as your
28255      bridge, Tor would be willing to use that exit relay as the last
28256      hop in your circuit as well. Now we fail that circuit instead.
28257      Bugfix on 0.2.0.12-alpha. Fixes bug 2403. Reported by "piebeer".
28258    - Fix a bug with our locking implementation on Windows that couldn't
28259      correctly detect when a file was already locked. Fixes bug 2504,
28260      bugfix on 0.2.1.6-alpha.
28261    - Fix IPv6-related connect() failures on some platforms (BSD, OS X).
28262      Bugfix on 0.2.0.3-alpha; fixes first part of bug 2660. Patch by
28263      "piebeer".
28264    - Set target port in get_interface_address6() correctly. Bugfix
28265      on 0.1.1.4-alpha and 0.2.0.3-alpha; fixes second part of bug 2660.
28266    - Directory authorities are now more robust to hops back in time
28267      when calculating router stability. Previously, if a run of uptime
28268      or downtime appeared to be negative, the calculation could give
28269      incorrect results. Bugfix on 0.2.0.6-alpha; noticed when fixing
28270      bug 1035.
28271    - Fix an assert that got triggered when using the TestingTorNetwork
28272      configuration option and then issuing a GETINFO config-text control
28273      command. Fixes bug 2250; bugfix on 0.2.1.2-alpha.
28274
28275  o Minor bugfixes (on 0.2.2.x):
28276    - Clients should not weight BadExit nodes as Exits in their node
28277      selection. Similarly, directory authorities should not count BadExit
28278      bandwidth as Exit bandwidth when computing bandwidth-weights.
28279      Bugfix on 0.2.2.10-alpha; fixes bug 2203.
28280    - Correctly clear our dir_read/dir_write history when there is an
28281      error parsing any bw history value from the state file. Bugfix on
28282      Tor 0.2.2.15-alpha.
28283    - Resolve a bug in verifying signatures of directory objects
28284      with digests longer than SHA1. Bugfix on 0.2.2.20-alpha.
28285      Fixes bug 2409. Found by "piebeer".
28286    - Bridge authorities no longer crash on SIGHUP when they try to
28287      publish their relay descriptor to themselves. Fixes bug 2572. Bugfix
28288      on 0.2.2.22-alpha.
28289
28290  o Minor features:
28291    - Log less aggressively about circuit timeout changes, and improve
28292      some other circuit timeout messages. Resolves bug 2004.
28293    - Log a little more clearly about the times at which we're no longer
28294      accepting new connections. Resolves bug 2181.
28295    - Reject attempts at the client side to open connections to private
28296      IP addresses (like 127.0.0.1, 10.0.0.1, and so on) with
28297      a randomly chosen exit node. Attempts to do so are always
28298      ill-defined, generally prevented by exit policies, and usually
28299      in error. This will also help to detect loops in transparent
28300      proxy configurations. You can disable this feature by setting
28301      "ClientRejectInternalAddresses 0" in your torrc.
28302    - Always treat failure to allocate an RSA key as an unrecoverable
28303      allocation error.
28304    - Update to the March 1 2011 Maxmind GeoLite Country database.
28305
28306  o Minor features (log subsystem):
28307    - Add documentation for configuring logging at different severities in
28308      different log domains. We've had this feature since 0.2.1.1-alpha,
28309      but for some reason it never made it into the manpage. Fixes
28310      bug 2215.
28311    - Make it simpler to specify "All log domains except for A and B".
28312      Previously you needed to say "[*,~A,~B]". Now you can just say
28313      "[~A,~B]".
28314    - Add a "LogMessageDomains 1" option to include the domains of log
28315      messages along with the messages. Without this, there's no way
28316      to use log domains without reading the source or doing a lot
28317      of guessing.
28318
28319  o Packaging changes:
28320    - Stop shipping the Tor specs files and development proposal documents
28321      in the tarball. They are now in a separate git repository at
28322      git://git.torproject.org/torspec.git
28323
28324
28325Changes in version 0.2.1.30 - 2011-02-23
28326  Tor 0.2.1.30 fixes a variety of less critical bugs. The main other
28327  change is a slight tweak to Tor's TLS handshake that makes relays
28328  and bridges that run this new version reachable from Iran again.
28329  We don't expect this tweak will win the arms race long-term, but it
28330  buys us time until we roll out a better solution.
28331
28332  o Major bugfixes:
28333    - Stop sending a CLOCK_SKEW controller status event whenever
28334      we fetch directory information from a relay that has a wrong clock.
28335      Instead, only inform the controller when it's a trusted authority
28336      that claims our clock is wrong. Bugfix on 0.1.2.6-alpha; fixes
28337      the rest of bug 1074.
28338    - Fix a bounds-checking error that could allow an attacker to
28339      remotely crash a directory authority. Bugfix on 0.2.1.5-alpha.
28340      Found by "piebeer".
28341    - If relays set RelayBandwidthBurst but not RelayBandwidthRate,
28342      Tor would ignore their RelayBandwidthBurst setting,
28343      potentially using more bandwidth than expected. Bugfix on
28344      0.2.0.1-alpha. Reported by Paul Wouters. Fixes bug 2470.
28345    - Ignore and warn if the user mistakenly sets "PublishServerDescriptor
28346      hidserv" in her torrc. The 'hidserv' argument never controlled
28347      publication of hidden service descriptors. Bugfix on 0.2.0.1-alpha.
28348
28349  o Minor features:
28350    - Adjust our TLS Diffie-Hellman parameters to match those used by
28351      Apache's mod_ssl.
28352    - Update to the February 1 2011 Maxmind GeoLite Country database.
28353
28354  o Minor bugfixes:
28355    - Check for and reject overly long directory certificates and
28356      directory tokens before they have a chance to hit any assertions.
28357      Bugfix on 0.2.1.28. Found by "doorss".
28358    - Bring the logic that gathers routerinfos and assesses the
28359      acceptability of circuits into line. This prevents a Tor OP from
28360      getting locked in a cycle of choosing its local OR as an exit for a
28361      path (due to a .exit request) and then rejecting the circuit because
28362      its OR is not listed yet. It also prevents Tor clients from using an
28363      OR running in the same instance as an exit (due to a .exit request)
28364      if the OR does not meet the same requirements expected of an OR
28365      running elsewhere. Fixes bug 1859; bugfix on 0.1.0.1-rc.
28366
28367  o Packaging changes:
28368    - Stop shipping the Tor specs files and development proposal documents
28369      in the tarball. They are now in a separate git repository at
28370      git://git.torproject.org/torspec.git
28371    - Do not include Git version tags as though they are SVN tags when
28372      generating a tarball from inside a repository that has switched
28373      between branches. Bugfix on 0.2.1.15-rc; fixes bug 2402.
28374
28375
28376Changes in version 0.2.2.22-alpha - 2011-01-25
28377  Tor 0.2.2.22-alpha fixes a few more less-critical security issues. The
28378  main other change is a slight tweak to Tor's TLS handshake that makes
28379  relays and bridges that run this new version reachable from Iran again.
28380  We don't expect this tweak will win the arms race long-term, but it
28381  will buy us a bit more time until we roll out a better solution.
28382
28383  o Major bugfixes:
28384    - Fix a bounds-checking error that could allow an attacker to
28385      remotely crash a directory authority. Bugfix on 0.2.1.5-alpha.
28386      Found by "piebeer".
28387    - Don't assert when changing from bridge to relay or vice versa
28388      via the controller. The assert happened because we didn't properly
28389      initialize our keys in this case. Bugfix on 0.2.2.18-alpha; fixes
28390      bug 2433. Reported by bastik.
28391
28392  o Minor features:
28393    - Adjust our TLS Diffie-Hellman parameters to match those used by
28394      Apache's mod_ssl.
28395    - Provide a log message stating which geoip file we're parsing
28396      instead of just stating that we're parsing the geoip file.
28397      Implements ticket 2432.
28398
28399  o Minor bugfixes:
28400    - Check for and reject overly long directory certificates and
28401      directory tokens before they have a chance to hit any assertions.
28402      Bugfix on 0.2.1.28 / 0.2.2.20-alpha. Found by "doorss".
28403
28404
28405Changes in version 0.2.2.21-alpha - 2011-01-15
28406  Tor 0.2.2.21-alpha includes all the patches from Tor 0.2.1.29, which
28407  continues our recent code security audit work. The main fix resolves
28408  a remote heap overflow vulnerability that can allow remote code
28409  execution (CVE-2011-0427). Other fixes address a variety of assert
28410  and crash bugs, most of which we think are hard to exploit remotely.
28411
28412  o Major bugfixes (security), also included in 0.2.1.29:
28413    - Fix a heap overflow bug where an adversary could cause heap
28414      corruption. This bug probably allows remote code execution
28415      attacks. Reported by "debuger". Fixes CVE-2011-0427. Bugfix on
28416      0.1.2.10-rc.
28417    - Prevent a denial-of-service attack by disallowing any
28418      zlib-compressed data whose compression factor is implausibly
28419      high. Fixes part of bug 2324; reported by "doorss".
28420    - Zero out a few more keys in memory before freeing them. Fixes
28421      bug 2384 and part of bug 2385. These key instances found by
28422      "cypherpunks", based on Andrew Case's report about being able
28423      to find sensitive data in Tor's memory space if you have enough
28424      permissions. Bugfix on 0.0.2pre9.
28425
28426  o Major bugfixes (crashes), also included in 0.2.1.29:
28427    - Prevent calls to Libevent from inside Libevent log handlers.
28428      This had potential to cause a nasty set of crashes, especially
28429      if running Libevent with debug logging enabled, and running
28430      Tor with a controller watching for low-severity log messages.
28431      Bugfix on 0.1.0.2-rc. Fixes bug 2190.
28432    - Add a check for SIZE_T_MAX to tor_realloc() to try to avoid
28433      underflow errors there too. Fixes the other part of bug 2324.
28434    - Fix a bug where we would assert if we ever had a
28435      cached-descriptors.new file (or another file read directly into
28436      memory) of exactly SIZE_T_CEILING bytes. Fixes bug 2326; bugfix
28437      on 0.2.1.25. Found by doorss.
28438    - Fix some potential asserts and parsing issues with grossly
28439      malformed router caches. Fixes bug 2352; bugfix on Tor 0.2.1.27.
28440      Found by doorss.
28441
28442  o Minor bugfixes (other), also included in 0.2.1.29:
28443    - Fix a bug with handling misformed replies to reverse DNS lookup
28444      requests in DNSPort. Bugfix on Tor 0.2.0.1-alpha. Related to a
28445      bug reported by doorss.
28446    - Fix compilation on mingw when a pthreads compatibility library
28447      has been installed. (We don't want to use it, so we shouldn't
28448      be including pthread.h.) Fixes bug 2313; bugfix on 0.1.0.1-rc.
28449    - Fix a bug where we would declare that we had run out of virtual
28450      addresses when the address space was only half-exhausted. Bugfix
28451      on 0.1.2.1-alpha.
28452    - Correctly handle the case where AutomapHostsOnResolve is set but
28453      no virtual addresses are available. Fixes bug 2328; bugfix on
28454      0.1.2.1-alpha. Bug found by doorss.
28455    - Correctly handle wrapping around when we run out of virtual
28456      address space. Found by cypherpunks; bugfix on 0.2.0.5-alpha.
28457
28458  o Minor features, also included in 0.2.1.29:
28459    - Update to the January 1 2011 Maxmind GeoLite Country database.
28460    - Introduce output size checks on all of our decryption functions.
28461
28462  o Build changes, also included in 0.2.1.29:
28463    - Tor does not build packages correctly with Automake 1.6 and earlier;
28464      added a check to Makefile.am to make sure that we're building with
28465      Automake 1.7 or later.
28466    - The 0.2.1.28 tarball was missing src/common/OpenBSD_malloc_Linux.c
28467      because we built it with a too-old version of automake. Thus that
28468      release broke ./configure --enable-openbsd-malloc, which is popular
28469      among really fast exit relays on Linux.
28470
28471  o Major bugfixes, new in 0.2.2.21-alpha:
28472    - Prevent crash/heap corruption when the cbtnummodes consensus
28473      parameter is set to 0 or large values. Fixes bug 2317; bugfix
28474      on 0.2.2.14-alpha.
28475
28476  o Major features, new in 0.2.2.21-alpha:
28477    - Introduce minimum/maximum values that clients will believe
28478      from the consensus. Now we'll have a better chance to avoid crashes
28479      or worse when a consensus param has a weird value.
28480
28481  o Minor features, new in 0.2.2.21-alpha:
28482    - Make sure to disable DirPort if running as a bridge. DirPorts aren't
28483      used on bridges, and it makes bridge scanning somewhat easier.
28484    - If writing the state file to disk fails, wait up to an hour before
28485      retrying again, rather than trying again each second. Fixes bug
28486      2346; bugfix on Tor 0.1.1.3-alpha.
28487    - Make Libevent log messages get delivered to controllers later,
28488      and not from inside the Libevent log handler. This prevents unsafe
28489      reentrant Libevent calls while still letting the log messages
28490      get through.
28491    - Detect platforms that brokenly use a signed size_t, and refuse to
28492      build there. Found and analyzed by doorss and rransom.
28493    - Fix a bunch of compile warnings revealed by mingw with gcc 4.5.
28494      Resolves bug 2314.
28495
28496  o Minor bugfixes, new in 0.2.2.21-alpha:
28497    - Handle SOCKS messages longer than 128 bytes long correctly, rather
28498      than waiting forever for them to finish. Fixes bug 2330; bugfix
28499      on 0.2.0.16-alpha. Found by doorss.
28500    - Add assertions to check for overflow in arguments to
28501      base32_encode() and base32_decode(); fix a signed-unsigned
28502      comparison there too. These bugs are not actually reachable in Tor,
28503      but it's good to prevent future errors too. Found by doorss.
28504    - Correctly detect failures to create DNS requests when using Libevent
28505      versions before v2. (Before Libevent 2, we used our own evdns
28506      implementation. Its return values for Libevent's evdns_resolve_*()
28507      functions are not consistent with those from Libevent.) Fixes bug
28508      2363; bugfix on 0.2.2.6-alpha. Found by "lodger".
28509
28510  o Documentation, new in 0.2.2.21-alpha:
28511    - Document the default socks host and port (127.0.0.1:9050) for
28512      tor-resolve.
28513
28514
28515Changes in version 0.2.1.29 - 2011-01-15
28516  Tor 0.2.1.29 continues our recent code security audit work. The main
28517  fix resolves a remote heap overflow vulnerability that can allow remote
28518  code execution. Other fixes address a variety of assert and crash bugs,
28519  most of which we think are hard to exploit remotely.
28520
28521  o Major bugfixes (security):
28522    - Fix a heap overflow bug where an adversary could cause heap
28523      corruption. This bug probably allows remote code execution
28524      attacks. Reported by "debuger". Fixes CVE-2011-0427. Bugfix on
28525      0.1.2.10-rc.
28526    - Prevent a denial-of-service attack by disallowing any
28527      zlib-compressed data whose compression factor is implausibly
28528      high. Fixes part of bug 2324; reported by "doorss".
28529    - Zero out a few more keys in memory before freeing them. Fixes
28530      bug 2384 and part of bug 2385. These key instances found by
28531      "cypherpunks", based on Andrew Case's report about being able
28532      to find sensitive data in Tor's memory space if you have enough
28533      permissions. Bugfix on 0.0.2pre9.
28534
28535  o Major bugfixes (crashes):
28536    - Prevent calls to Libevent from inside Libevent log handlers.
28537      This had potential to cause a nasty set of crashes, especially
28538      if running Libevent with debug logging enabled, and running
28539      Tor with a controller watching for low-severity log messages.
28540      Bugfix on 0.1.0.2-rc. Fixes bug 2190.
28541    - Add a check for SIZE_T_MAX to tor_realloc() to try to avoid
28542      underflow errors there too. Fixes the other part of bug 2324.
28543    - Fix a bug where we would assert if we ever had a
28544      cached-descriptors.new file (or another file read directly into
28545      memory) of exactly SIZE_T_CEILING bytes. Fixes bug 2326; bugfix
28546      on 0.2.1.25. Found by doorss.
28547    - Fix some potential asserts and parsing issues with grossly
28548      malformed router caches. Fixes bug 2352; bugfix on Tor 0.2.1.27.
28549      Found by doorss.
28550
28551  o Minor bugfixes (other):
28552    - Fix a bug with handling misformed replies to reverse DNS lookup
28553      requests in DNSPort. Bugfix on Tor 0.2.0.1-alpha. Related to a
28554      bug reported by doorss.
28555    - Fix compilation on mingw when a pthreads compatibility library
28556      has been installed. (We don't want to use it, so we shouldn't
28557      be including pthread.h.) Fixes bug 2313; bugfix on 0.1.0.1-rc.
28558    - Fix a bug where we would declare that we had run out of virtual
28559      addresses when the address space was only half-exhausted. Bugfix
28560      on 0.1.2.1-alpha.
28561    - Correctly handle the case where AutomapHostsOnResolve is set but
28562      no virtual addresses are available. Fixes bug 2328; bugfix on
28563      0.1.2.1-alpha. Bug found by doorss.
28564    - Correctly handle wrapping around to when we run out of virtual
28565      address space. Found by cypherpunks, bugfix on 0.2.0.5-alpha.
28566    - The 0.2.1.28 tarball was missing src/common/OpenBSD_malloc_Linux.c
28567      because we built it with a too-old version of automake. Thus that
28568      release broke ./configure --enable-openbsd-malloc, which is popular
28569      among really fast exit relays on Linux.
28570
28571  o Minor features:
28572    - Update to the January 1 2011 Maxmind GeoLite Country database.
28573    - Introduce output size checks on all of our decryption functions.
28574
28575  o Build changes:
28576    - Tor does not build packages correctly with Automake 1.6 and earlier;
28577      added a check to Makefile.am to make sure that we're building with
28578      Automake 1.7 or later.
28579
28580
28581Changes in version 0.2.2.20-alpha - 2010-12-17
28582  Tor 0.2.2.20-alpha does some code cleanup to reduce the risk of remotely
28583  exploitable bugs. We also fix a variety of other significant bugs,
28584  change the IP address for one of our directory authorities, and update
28585  the minimum version that Tor relays must run to join the network.
28586
28587  o Major bugfixes:
28588    - Fix a remotely exploitable bug that could be used to crash instances
28589      of Tor remotely by overflowing on the heap. Remote-code execution
28590      hasn't been confirmed, but can't be ruled out. Everyone should
28591      upgrade. Bugfix on the 0.1.1 series and later.
28592    - Fix a bug that could break accounting on 64-bit systems with large
28593      time_t values, making them hibernate for impossibly long intervals.
28594      Fixes bug 2146. Bugfix on 0.0.9pre6; fix by boboper.
28595    - Fix a logic error in directory_fetches_from_authorities() that
28596      would cause all _non_-exits refusing single-hop-like circuits
28597      to fetch from authorities, when we wanted to have _exits_ fetch
28598      from authorities. Fixes more of 2097. Bugfix on 0.2.2.16-alpha;
28599      fix by boboper.
28600    - Fix a stream fairness bug that would cause newer streams on a given
28601      circuit to get preference when reading bytes from the origin or
28602      destination. Fixes bug 2210. Fix by Mashael AlSabah. This bug was
28603      introduced before the first Tor release, in svn revision r152.
28604
28605  o Directory authority changes:
28606    - Change IP address and ports for gabelmoo (v3 directory authority).
28607
28608  o Minor bugfixes:
28609    - Avoid crashes when AccountingMax is set on clients. Fixes bug 2235.
28610      Bugfix on 0.2.2.18-alpha. Diagnosed by boboper.
28611    - Fix an off-by-one error in calculating some controller command
28612      argument lengths. Fortunately, this mistake is harmless since
28613      the controller code does redundant NUL termination too. Found by
28614      boboper. Bugfix on 0.1.1.1-alpha.
28615    - Do not dereference NULL if a bridge fails to build its
28616      extra-info descriptor. Found by an anonymous commenter on
28617      Trac. Bugfix on 0.2.2.19-alpha.
28618
28619  o Minor features:
28620    - Update to the December 1 2010 Maxmind GeoLite Country database.
28621    - Directory authorities now reject relays running any versions of
28622      Tor between 0.2.1.3-alpha and 0.2.1.18 inclusive; they have
28623      known bugs that keep RELAY_EARLY cells from working on rendezvous
28624      circuits. Followup to fix for bug 2081.
28625    - Directory authorities now reject relays running any version of Tor
28626      older than 0.2.0.26-rc. That version is the earliest that fetches
28627      current directory information correctly. Fixes bug 2156.
28628    - Report only the top 10 ports in exit-port stats in order not to
28629      exceed the maximum extra-info descriptor length of 50 KB. Implements
28630      task 2196.
28631
28632
28633Changes in version 0.2.1.28 - 2010-12-17
28634  Tor 0.2.1.28 does some code cleanup to reduce the risk of remotely
28635  exploitable bugs. We also took this opportunity to change the IP address
28636  for one of our directory authorities, and to update the geoip database
28637  we ship.
28638
28639  o Major bugfixes:
28640    - Fix a remotely exploitable bug that could be used to crash instances
28641      of Tor remotely by overflowing on the heap. Remote-code execution
28642      hasn't been confirmed, but can't be ruled out. Everyone should
28643      upgrade. Bugfix on the 0.1.1 series and later.
28644
28645  o Directory authority changes:
28646    - Change IP address and ports for gabelmoo (v3 directory authority).
28647
28648  o Minor features:
28649    - Update to the December 1 2010 Maxmind GeoLite Country database.
28650
28651
28652Changes in version 0.2.1.27 - 2010-11-23
28653  Yet another OpenSSL security patch broke its compatibility with Tor:
28654  Tor 0.2.1.27 makes relays work with openssl 0.9.8p and 1.0.0.b. We
28655  also took this opportunity to fix several crash bugs, integrate a new
28656  directory authority, and update the bundled GeoIP database.
28657
28658  o Major bugfixes:
28659    - Resolve an incompatibility with OpenSSL 0.9.8p and OpenSSL 1.0.0b:
28660      No longer set the tlsext_host_name extension on server SSL objects;
28661      but continue to set it on client SSL objects. Our goal in setting
28662      it was to imitate a browser, not a vhosting server. Fixes bug 2204;
28663      bugfix on 0.2.1.1-alpha.
28664    - Do not log messages to the controller while shrinking buffer
28665      freelists. Doing so would sometimes make the controller connection
28666      try to allocate a buffer chunk, which would mess up the internals
28667      of the freelist and cause an assertion failure. Fixes bug 1125;
28668      fixed by Robert Ransom. Bugfix on 0.2.0.16-alpha.
28669    - Learn our external IP address when we're a relay or bridge, even if
28670      we set PublishServerDescriptor to 0. Bugfix on 0.2.0.3-alpha,
28671      where we introduced bridge relays that don't need to publish to
28672      be useful. Fixes bug 2050.
28673    - Do even more to reject (and not just ignore) annotations on
28674      router descriptors received anywhere but from the cache. Previously
28675      we would ignore such annotations at first, but cache them to disk
28676      anyway. Bugfix on 0.2.0.8-alpha. Found by piebeer.
28677    - When you're using bridges and your network goes away and your
28678      bridges get marked as down, recover when you attempt a new socks
28679      connection (if the network is back), rather than waiting up to an
28680      hour to try fetching new descriptors for your bridges. Bugfix on
28681      0.2.0.3-alpha; fixes bug 1981.
28682
28683  o Major features:
28684    - Move to the November 2010 Maxmind GeoLite country db (rather
28685      than the June 2009 ip-to-country GeoIP db) for our statistics that
28686      count how many users relays are seeing from each country. Now we'll
28687      have more accurate data, especially for many African countries.
28688
28689  o New directory authorities:
28690    - Set up maatuska (run by Linus Nordberg) as the eighth v3 directory
28691      authority.
28692
28693  o Minor bugfixes:
28694    - Fix an assertion failure that could occur in directory caches or
28695      bridge users when using a very short voting interval on a testing
28696      network. Diagnosed by Robert Hogan. Fixes bug 1141; bugfix on
28697      0.2.0.8-alpha.
28698    - Enforce multiplicity rules when parsing annotations. Bugfix on
28699      0.2.0.8-alpha. Found by piebeer.
28700    - Allow handshaking OR connections to take a full KeepalivePeriod
28701      seconds to handshake. Previously, we would close them after
28702      IDLE_OR_CONN_TIMEOUT (180) seconds, the same timeout as if they
28703      were open. Bugfix on 0.2.1.26; fixes bug 1840. Thanks to mingw-san
28704      for analysis help.
28705    - When building with --enable-gcc-warnings on OpenBSD, disable
28706      warnings in system headers. This makes --enable-gcc-warnings
28707      pass on OpenBSD 4.8.
28708
28709  o Minor features:
28710    - Exit nodes didn't recognize EHOSTUNREACH as a plausible error code,
28711      and so sent back END_STREAM_REASON_MISC. Clients now recognize a new
28712      stream ending reason for this case: END_STREAM_REASON_NOROUTE.
28713      Servers can start sending this code when enough clients recognize
28714      it. Bugfix on 0.1.0.1-rc; fixes part of bug 1793.
28715    - Build correctly on mingw with more recent versions of OpenSSL 0.9.8.
28716      Patch from mingw-san.
28717
28718  o Removed files:
28719    - Remove the old debian/ directory from the main Tor distribution.
28720      The official Tor-for-debian git repository lives at the URL
28721      https://git.torproject.org/debian/tor.git
28722    - Stop shipping the old doc/website/ directory in the tarball. We
28723      changed the website format in late 2010, and what we shipped in
28724      0.2.1.26 really wasn't that useful anyway.
28725
28726
28727Changes in version 0.2.2.19-alpha - 2010-11-22
28728  Yet another OpenSSL security patch broke its compatibility with Tor:
28729  Tor 0.2.2.19-alpha makes relays work with OpenSSL 0.9.8p and 1.0.0.b.
28730
28731  o Major bugfixes:
28732    - Resolve an incompatibility with OpenSSL 0.9.8p and OpenSSL 1.0.0b:
28733      No longer set the tlsext_host_name extension on server SSL objects;
28734      but continue to set it on client SSL objects. Our goal in setting
28735      it was to imitate a browser, not a vhosting server. Fixes bug 2204;
28736      bugfix on 0.2.1.1-alpha.
28737
28738  o Minor bugfixes:
28739    - Try harder not to exceed the maximum length of 50 KB when writing
28740      statistics to extra-info descriptors. This bug was triggered by very
28741      fast relays reporting exit-port, entry, and dirreq statistics.
28742      Reported by Olaf Selke. Bugfix on 0.2.2.1-alpha. Fixes bug 2183.
28743    - Publish a router descriptor even if generating an extra-info
28744      descriptor fails. Previously we would not publish a router
28745      descriptor without an extra-info descriptor; this can cause fast
28746      exit relays collecting exit-port statistics to drop from the
28747      consensus. Bugfix on 0.1.2.9-rc; fixes bug 2195.
28748
28749
28750Changes in version 0.2.2.18-alpha - 2010-11-16
28751  Tor 0.2.2.18-alpha fixes several crash bugs that have been nagging
28752  us lately, makes unpublished bridge relays able to detect their IP
28753  address, and fixes a wide variety of other bugs to get us much closer
28754  to a stable release.
28755
28756  o Major bugfixes:
28757    - Do even more to reject (and not just ignore) annotations on
28758      router descriptors received anywhere but from the cache. Previously
28759      we would ignore such annotations at first, but cache them to disk
28760      anyway. Bugfix on 0.2.0.8-alpha. Found by piebeer.
28761    - Do not log messages to the controller while shrinking buffer
28762      freelists. Doing so would sometimes make the controller connection
28763      try to allocate a buffer chunk, which would mess up the internals
28764      of the freelist and cause an assertion failure. Fixes bug 1125;
28765      fixed by Robert Ransom. Bugfix on 0.2.0.16-alpha.
28766    - Learn our external IP address when we're a relay or bridge, even if
28767      we set PublishServerDescriptor to 0. Bugfix on 0.2.0.3-alpha,
28768      where we introduced bridge relays that don't need to publish to
28769      be useful. Fixes bug 2050.
28770    - Maintain separate TLS contexts and certificates for incoming and
28771      outgoing connections in bridge relays. Previously we would use the
28772      same TLS contexts and certs for incoming and outgoing connections.
28773      Bugfix on 0.2.0.3-alpha; addresses bug 988.
28774    - Maintain separate identity keys for incoming and outgoing TLS
28775      contexts in bridge relays. Previously we would use the same
28776      identity keys for incoming and outgoing TLS contexts. Bugfix on
28777      0.2.0.3-alpha; addresses the other half of bug 988.
28778    - Avoid an assertion failure when we as an authority receive a
28779      duplicate upload of a router descriptor that we already have,
28780      but which we previously considered an obsolete descriptor.
28781      Fixes another case of bug 1776. Bugfix on 0.2.2.16-alpha.
28782    - Avoid a crash bug triggered by looking at a dangling pointer while
28783      setting the network status consensus. Found by Robert Ransom.
28784      Bugfix on 0.2.2.17-alpha. Fixes bug 2097.
28785    - Fix a logic error where servers that _didn't_ act as exits would
28786      try to keep their server lists more aggressively up to date than
28787      exits, when it was supposed to be the other way around. Bugfix
28788      on 0.2.2.17-alpha.
28789
28790  o Minor bugfixes (on Tor 0.2.1.x and earlier):
28791    - When we're trying to guess whether we know our IP address as
28792      a relay, we would log various ways that we failed to guess
28793      our address, but never log that we ended up guessing it
28794      successfully. Now add a log line to help confused and anxious
28795      relay operators. Bugfix on 0.1.2.1-alpha; fixes bug 1534.
28796    - Bring the logic that gathers routerinfos and assesses the
28797      acceptability of circuits into line. This prevents a Tor OP from
28798      getting locked in a cycle of choosing its local OR as an exit for a
28799      path (due to a .exit request) and then rejecting the circuit because
28800      its OR is not listed yet. It also prevents Tor clients from using an
28801      OR running in the same instance as an exit (due to a .exit request)
28802      if the OR does not meet the same requirements expected of an OR
28803      running elsewhere. Fixes bug 1859; bugfix on 0.1.0.1-rc.
28804    - Correctly describe errors that occur when generating a TLS object.
28805      Previously we would attribute them to a failure while generating a
28806      TLS context. Patch by Robert Ransom. Bugfix on 0.1.0.4-rc; fixes
28807      bug 1994.
28808    - Enforce multiplicity rules when parsing annotations. Bugfix on
28809      0.2.0.8-alpha. Found by piebeer.
28810    - Fix warnings that newer versions of autoconf produced during
28811      ./autogen.sh. These warnings appear to be harmless in our case,
28812      but they were extremely verbose. Fixes bug 2020.
28813
28814  o Minor bugfixes (on Tor 0.2.2.x):
28815    - Enable protection of small arrays whenever we build with gcc
28816      hardening features, not only when also building with warnings
28817      enabled. Fixes bug 2031; bugfix on 0.2.2.14-alpha. Reported by keb.
28818
28819  o Minor features:
28820    - Make hidden services work better in private Tor networks by not
28821      requiring any uptime to join the hidden service descriptor
28822      DHT. Implements ticket 2088.
28823    - Rate-limit the "your application is giving Tor only an IP address"
28824      warning. Addresses bug 2000; bugfix on 0.0.8pre2.
28825    - When AllowSingleHopExits is set, print a warning to explain to the
28826      relay operator why most clients are avoiding her relay.
28827    - Update to the November 1 2010 Maxmind GeoLite Country database.
28828
28829  o Code simplifications and refactoring:
28830    - When we fixed bug 1038 we had to put in a restriction not to send
28831      RELAY_EARLY cells on rend circuits. This was necessary as long
28832      as relays using Tor 0.2.1.3-alpha through 0.2.1.18-alpha were
28833      active. Now remove this obsolete check. Resolves bug 2081.
28834    - Some options used different conventions for uppercasing of acronyms
28835      when comparing manpage and source. Fix those in favor of the
28836      manpage, as it makes sense to capitalize acronyms.
28837    - Remove the torrc.complete file. It hasn't been kept up to date
28838      and users will have better luck checking out the manpage.
28839    - Remove the obsolete "NoPublish" option; it has been flagged
28840      as obsolete and has produced a warning since 0.1.1.18-rc.
28841    - Remove everything related to building the expert bundle for OS X.
28842      It has confused many users, doesn't work right on OS X 10.6,
28843      and is hard to get rid of once installed. Resolves bug 1274.
28844
28845
28846Changes in version 0.2.2.17-alpha - 2010-09-30
28847  Tor 0.2.2.17-alpha introduces a feature to make it harder for clients
28848  to use one-hop circuits (which can put the exit relays at higher risk,
28849  plus unbalance the network); fixes a big bug in bandwidth accounting
28850  for relays that want to limit their monthly bandwidth use; fixes a
28851  big pile of bugs in how clients tolerate temporary network failure;
28852  and makes our adaptive circuit build timeout feature (which improves
28853  client performance if your network is fast while not breaking things
28854  if your network is slow) better handle bad networks.
28855
28856  o Major features:
28857    - Exit relays now try harder to block exit attempts from unknown
28858      relays, to make it harder for people to use them as one-hop proxies
28859      a la tortunnel. Controlled by the refuseunknownexits consensus
28860      parameter (currently enabled), or you can override it on your
28861      relay with the RefuseUnknownExits torrc option. Resolves bug 1751.
28862
28863  o Major bugfixes (0.2.1.x and earlier):
28864    - Fix a bug in bandwidth accounting that could make us use twice
28865      the intended bandwidth when our interval start changes due to
28866      daylight saving time. Now we tolerate skew in stored vs computed
28867      interval starts: if the start of the period changes by no more than
28868      50% of the period's duration, we remember bytes that we transferred
28869      in the old period. Fixes bug 1511; bugfix on 0.0.9pre5.
28870    - Always search the Windows system directory for system DLLs, and
28871      nowhere else. Bugfix on 0.1.1.23; fixes bug 1954.
28872    - When you're using bridges and your network goes away and your
28873      bridges get marked as down, recover when you attempt a new socks
28874      connection (if the network is back), rather than waiting up to an
28875      hour to try fetching new descriptors for your bridges. Bugfix on
28876      0.2.0.3-alpha; fixes bug 1981.
28877
28878  o Major bugfixes (on 0.2.2.x):
28879    - Fix compilation on Windows. Bugfix on 0.2.2.16-alpha; related to
28880      bug 1797.
28881    - Fix a segfault that could happen when operating a bridge relay with
28882      no GeoIP database set. Fixes bug 1964; bugfix on 0.2.2.15-alpha.
28883    - The consensus bandwidth-weights (used by clients to choose fast
28884      relays) entered an unexpected edge case in September where
28885      Exits were much scarcer than Guards, resulting in bad weight
28886      recommendations. Now we compute them using new constraints that
28887      should succeed in all cases. Also alter directory authorities to
28888      not include the bandwidth-weights line if they fail to produce
28889      valid values. Fixes bug 1952; bugfix on 0.2.2.10-alpha.
28890    - When weighting bridges during path selection, we used to trust
28891      the bandwidths they provided in their descriptor, only capping them
28892      at 10MB/s. This turned out to be problematic for two reasons:
28893      Bridges could claim to handle a lot more traffic then they
28894      actually would, thus making more clients pick them and have a
28895      pretty effective DoS attack. The other issue is that new bridges
28896      that might not have a good estimate for their bw capacity yet
28897      would not get used at all unless no other bridges are available
28898      to a client. Fixes bug 1912; bugfix on 0.2.2.7-alpha.
28899
28900  o Major bugfixes (on the circuit build timeout feature, 0.2.2.x):
28901    - Ignore cannibalized circuits when recording circuit build times.
28902      This should provide for a minor performance improvement for hidden
28903      service users using 0.2.2.14-alpha, and should remove two spurious
28904      notice log messages. Bugfix on 0.2.2.14-alpha; fixes bug 1740.
28905    - Simplify the logic that causes us to decide if the network is
28906      unavailable for purposes of recording circuit build times. If we
28907      receive no cells whatsoever for the entire duration of a circuit's
28908      full measured lifetime, the network is probably down. Also ignore
28909      one-hop directory fetching circuit timeouts when calculating our
28910      circuit build times. These changes should hopefully reduce the
28911      cases where we see ridiculous circuit build timeouts for people
28912      with spotty wireless connections. Fixes part of bug 1772; bugfix
28913      on 0.2.2.2-alpha.
28914    - Prevent the circuit build timeout from becoming larger than
28915      the maximum build time we have ever seen. Also, prevent the time
28916      period for measurement circuits from becoming larger than twice that
28917      value. Fixes the other part of bug 1772; bugfix on 0.2.2.2-alpha.
28918
28919  o Minor features:
28920    - When we run out of directory information such that we can't build
28921      circuits, but then get enough that we can build circuits, log when
28922      we actually construct a circuit, so the user has a better chance of
28923      knowing what's going on. Fixes bug 1362.
28924    - Be more generous with how much bandwidth we'd use up (with
28925      accounting enabled) before entering "soft hibernation". Previously,
28926      we'd refuse new connections and circuits once we'd used up 95% of
28927      our allotment. Now, we use up 95% of our allotment, AND make sure
28928      that we have no more than 500MB (or 3 hours of expected traffic,
28929      whichever is lower) remaining before we enter soft hibernation.
28930    - If we've configured EntryNodes and our network goes away and/or all
28931      our entrynodes get marked down, optimistically retry them all when
28932      a new socks application request appears. Fixes bug 1882.
28933    - Add some more defensive programming for architectures that can't
28934      handle unaligned integer accesses. We don't know of any actual bugs
28935      right now, but that's the best time to fix them. Fixes bug 1943.
28936    - Support line continuations in the torrc config file. If a line
28937      ends with a single backslash character, the newline is ignored, and
28938      the configuration value is treated as continuing on the next line.
28939      Resolves bug 1929.
28940
28941  o Minor bugfixes (on 0.2.1.x and earlier):
28942    - For bandwidth accounting, calculate our expected bandwidth rate
28943      based on the time during which we were active and not in
28944      soft-hibernation during the last interval. Previously, we were
28945      also considering the time spent in soft-hibernation. If this
28946      was a long time, we would wind up underestimating our bandwidth
28947      by a lot, and skewing our wakeup time towards the start of the
28948      accounting interval. Fixes bug 1789. Bugfix on 0.0.9pre5.
28949
28950  o Minor bugfixes (on 0.2.2.x):
28951    - Resume generating CIRC FAILED REASON=TIMEOUT control port messages,
28952      which were disabled by the circuit build timeout changes in
28953      0.2.2.14-alpha. Bugfix on 0.2.2.14-alpha; fixes bug 1739.
28954    - Make sure we don't warn about missing bandwidth weights when
28955      choosing bridges or other relays not in the consensus. Bugfix on
28956      0.2.2.10-alpha; fixes bug 1805.
28957    - In our logs, do not double-report signatures from unrecognized
28958      authorities both as "from unknown authority" and "not
28959      present". Fixes bug 1956, bugfix on 0.2.2.16-alpha.
28960
28961
28962Changes in version 0.2.2.16-alpha - 2010-09-17
28963  Tor 0.2.2.16-alpha fixes a variety of old stream fairness bugs (most
28964  evident at exit relays), and also continues to resolve all the little
28965  bugs that have been filling up trac lately.
28966
28967  o Major bugfixes (stream-level fairness):
28968    - When receiving a circuit-level SENDME for a blocked circuit, try
28969      to package cells fairly from all the streams that had previously
28970      been blocked on that circuit. Previously, we had started with the
28971      oldest stream, and allowed each stream to potentially exhaust
28972      the circuit's package window. This gave older streams on any
28973      given circuit priority over newer ones. Fixes bug 1937. Detected
28974      originally by Camilo Viecco. This bug was introduced before the
28975      first Tor release, in svn commit r152: it is the new winner of
28976      the longest-lived bug prize.
28977    - When the exit relay got a circuit-level sendme cell, it started
28978      reading on the exit streams, even if had 500 cells queued in the
28979      circuit queue already, so the circuit queue just grew and grew in
28980      some cases. We fix this by not re-enabling reading on receipt of a
28981      sendme cell when the cell queue is blocked. Fixes bug 1653. Bugfix
28982      on 0.2.0.1-alpha. Detected by Mashael AlSabah. Original patch by
28983      "yetonetime".
28984    - Newly created streams were allowed to read cells onto circuits,
28985      even if the circuit's cell queue was blocked and waiting to drain.
28986      This created potential unfairness, as older streams would be
28987      blocked, but newer streams would gladly fill the queue completely.
28988      We add code to detect this situation and prevent any stream from
28989      getting more than one free cell. Bugfix on 0.2.0.1-alpha. Partially
28990      fixes bug 1298.
28991
28992  o Minor features:
28993    - Update to the September 1 2010 Maxmind GeoLite Country database.
28994    - Warn when CookieAuthFileGroupReadable is set but CookieAuthFile is
28995      not. This would lead to a cookie that is still not group readable.
28996      Closes bug 1843. Suggested by katmagic.
28997    - When logging a rate-limited warning, we now mention how many messages
28998      got suppressed since the last warning.
28999    - Add new "perconnbwrate" and "perconnbwburst" consensus params to
29000      do individual connection-level rate limiting of clients. The torrc
29001      config options with the same names trump the consensus params, if
29002      both are present. Replaces the old "bwconnrate" and "bwconnburst"
29003      consensus params which were broken from 0.2.2.7-alpha through
29004      0.2.2.14-alpha. Closes bug 1947.
29005    - When a router changes IP address or port, authorities now launch
29006      a new reachability test for it. Implements ticket 1899.
29007    - Make the formerly ugly "2 unknown, 7 missing key, 0 good, 0 bad,
29008      2 no signature, 4 required" messages about consensus signatures
29009      easier to read, and make sure they get logged at the same severity
29010      as the messages explaining which keys are which. Fixes bug 1290.
29011    - Don't warn when we have a consensus that we can't verify because
29012      of missing certificates, unless those certificates are ones
29013      that we have been trying and failing to download. Fixes bug 1145.
29014    - If you configure your bridge with a known identity fingerprint,
29015      and the bridge authority is unreachable (as it is in at least
29016      one country now), fall back to directly requesting the descriptor
29017      from the bridge. Finishes the feature started in 0.2.0.10-alpha;
29018      closes bug 1138.
29019    - When building with --enable-gcc-warnings on OpenBSD, disable
29020      warnings in system headers. This makes --enable-gcc-warnings
29021      pass on OpenBSD 4.8.
29022
29023  o Minor bugfixes (on 0.2.1.x and earlier):
29024    - Authorities will now attempt to download consensuses if their
29025      own efforts to make a live consensus have failed. This change
29026      means authorities that restart will fetch a valid consensus, and
29027      it means authorities that didn't agree with the current consensus
29028      will still fetch and serve it if it has enough signatures. Bugfix
29029      on 0.2.0.9-alpha; fixes bug 1300.
29030    - Ensure DNS requests launched by "RESOLVE" commands from the
29031      controller respect the __LeaveStreamsUnattached setconf options. The
29032      same goes for requests launched via DNSPort or transparent
29033      proxying. Bugfix on 0.2.0.1-alpha; fixes bug 1525.
29034    - Allow handshaking OR connections to take a full KeepalivePeriod
29035      seconds to handshake. Previously, we would close them after
29036      IDLE_OR_CONN_TIMEOUT (180) seconds, the same timeout as if they
29037      were open. Bugfix on 0.2.1.26; fixes bug 1840. Thanks to mingw-san
29038      for analysis help.
29039    - Rate-limit "Failed to hand off onionskin" warnings.
29040    - Never relay a cell for a circuit we have already destroyed.
29041      Between marking a circuit as closeable and finally closing it,
29042      it may have been possible for a few queued cells to get relayed,
29043      even though they would have been immediately dropped by the next
29044      OR in the circuit. Fixes bug 1184; bugfix on 0.2.0.1-alpha.
29045    - Never queue a cell for a circuit that's already been marked
29046      for close.
29047    - Never vote for a server as "Running" if we have a descriptor for
29048      it claiming to be hibernating, and that descriptor was published
29049      more recently than our last contact with the server. Bugfix on
29050      0.2.0.3-alpha; fixes bug 911.
29051    - Squash a compile warning on OpenBSD. Reported by Tas; fixes
29052      bug 1848.
29053
29054  o Minor bugfixes (on 0.2.2.x):
29055    - Fix a regression introduced in 0.2.2.7-alpha that marked relays
29056      down if a directory fetch fails and you've configured either
29057      bridges or EntryNodes. The intent was to mark the relay as down
29058      _unless_ you're using bridges or EntryNodes, since if you are
29059      then you could quickly run out of entry points.
29060    - Fix the Windows directory-listing code. A bug introduced in
29061      0.2.2.14-alpha could make Windows directory servers forget to load
29062      some of their cached v2 networkstatus files.
29063    - Really allow clients to use relays as bridges. Fixes bug 1776;
29064      bugfix on 0.2.2.15-alpha.
29065    - Demote a warn to info that happens when the CellStatistics option
29066      was just enabled. Bugfix on 0.2.2.15-alpha; fixes bug 1921.
29067      Reported by Moritz Bartl.
29068    - On Windows, build correctly either with or without Unicode support.
29069      This is necessary so that Tor can support fringe platforms like
29070      Windows 98 (which has no Unicode), or Windows CE (which has no
29071      non-Unicode). Bugfix on 0.2.2.14-alpha; fixes bug 1797.
29072
29073  o Testing
29074    - Add a unit test for cross-platform directory-listing code.
29075
29076
29077Changes in version 0.2.2.15-alpha - 2010-08-18
29078  Tor 0.2.2.15-alpha fixes a big bug in hidden service availability,
29079  fixes a variety of other bugs that were preventing performance
29080  experiments from moving forward, fixes several bothersome memory leaks,
29081  and generally closes a lot of smaller bugs that have been filling up
29082  trac lately.
29083
29084  o Major bugfixes:
29085    - Stop assigning the HSDir flag to relays that disable their
29086      DirPort (and thus will refuse to answer directory requests). This
29087      fix should dramatically improve the reachability of hidden services:
29088      hidden services and hidden service clients pick six HSDir relays
29089      to store and retrieve the hidden service descriptor, and currently
29090      about half of the HSDir relays will refuse to work. Bugfix on
29091      0.2.0.10-alpha; fixes part of bug 1693.
29092    - The PerConnBWRate and Burst config options, along with the
29093      bwconnrate and bwconnburst consensus params, initialized each conn's
29094      token bucket values only when the connection is established. Now we
29095      update them if the config options change, and update them every time
29096      we get a new consensus. Otherwise we can encounter an ugly edge
29097      case where we initialize an OR conn to client-level bandwidth,
29098      but then later the relay joins the consensus and we leave it
29099      throttled. Bugfix on 0.2.2.7-alpha; fixes bug 1830.
29100    - Fix a regression that caused Tor to rebind its ports if it receives
29101      SIGHUP while hibernating. Bugfix in 0.1.1.6-alpha; closes bug 919.
29102
29103  o Major features:
29104    - Lower the maximum weighted-fractional-uptime cutoff to 98%. This
29105      should give us approximately 40-50% more Guard-flagged nodes,
29106      improving the anonymity the Tor network can provide and also
29107      decreasing the dropoff in throughput that relays experience when
29108      they first get the Guard flag.
29109    - Allow enabling or disabling the *Statistics config options while
29110      Tor is running.
29111
29112  o Minor features:
29113    - Update to the August 1 2010 Maxmind GeoLite Country database.
29114    - Have the controller interface give a more useful message than
29115      "Internal Error" in response to failed GETINFO requests.
29116    - Warn when the same option is provided more than once in a torrc
29117      file, on the command line, or in a single SETCONF statement, and
29118      the option is one that only accepts a single line. Closes bug 1384.
29119    - Build correctly on mingw with more recent versions of OpenSSL 0.9.8.
29120      Patch from mingw-san.
29121    - Add support for the country code "{??}" in torrc options like
29122      ExcludeNodes, to indicate all routers of unknown country. Closes
29123      bug 1094.
29124    - Relays report the number of bytes spent on answering directory
29125      requests in extra-info descriptors similar to {read,write}-history.
29126      Implements enhancement 1790.
29127
29128  o Minor bugfixes (on 0.2.1.x and earlier):
29129    - Complain if PublishServerDescriptor is given multiple arguments that
29130      include 0 or 1. This configuration will be rejected in the future.
29131      Bugfix on 0.2.0.1-alpha; closes bug 1107.
29132    - Disallow BridgeRelay 1 and ORPort 0 at once in the configuration.
29133      Bugfix on 0.2.0.13-alpha; closes bug 928.
29134    - Change "Application request when we're believed to be offline."
29135      notice to "Application request when we haven't used client
29136      functionality lately.", to clarify that it's not an error. Bugfix
29137      on 0.0.9.3; fixes bug 1222.
29138    - Fix a bug in the controller interface where "GETINFO ns/asdaskljkl"
29139      would return "551 Internal error" rather than "552 Unrecognized key
29140      ns/asdaskljkl". Bugfix on 0.1.2.3-alpha.
29141    - Users can't configure a regular relay to be their bridge. It didn't
29142      work because when Tor fetched the bridge descriptor, it found
29143      that it already had it, and didn't realize that the purpose of the
29144      descriptor had changed. Now we replace routers with a purpose other
29145      than bridge with bridge descriptors when fetching them. Bugfix on
29146      0.1.1.9-alpha. Bug 1776 not yet fixed because now we immediately
29147      refetch the descriptor with router purpose 'general', disabling
29148      it as a bridge.
29149    - Fix a rare bug in rend_fn unit tests: we would fail a test when
29150      a randomly generated port is 0. Diagnosed by Matt Edman. Bugfix
29151      on 0.2.0.10-alpha; fixes bug 1808.
29152    - Exit nodes didn't recognize EHOSTUNREACH as a plausible error code,
29153      and so sent back END_STREAM_REASON_MISC. Clients now recognize a new
29154      stream ending reason for this case: END_STREAM_REASON_NOROUTE.
29155      Servers can start sending this code when enough clients recognize
29156      it. Also update the spec to reflect this new reason. Bugfix on
29157      0.1.0.1-rc; fixes part of bug 1793.
29158    - Delay geoip stats collection by bridges for 6 hours, not 2 hours,
29159      when we switch from being a public relay to a bridge. Otherwise
29160      there will still be clients that see the relay in their consensus,
29161      and the stats will end up wrong. Bugfix on 0.2.1.15-rc; fixes bug
29162      932 even more.
29163    - Instead of giving an assertion failure on an internal mismatch
29164      on estimated freelist size, just log a BUG warning and try later.
29165      Mitigates but does not fix bug 1125.
29166    - Fix an assertion failure that could occur in caches or bridge users
29167      when using a very short voting interval on a testing network.
29168      Diagnosed by Robert Hogan. Fixes bug 1141; bugfix on 0.2.0.8-alpha.
29169
29170  o Minor bugfixes (on 0.2.2.x):
29171    - Alter directory authorities to always consider Exit-flagged nodes
29172      as potential Guard nodes in their votes. The actual decision to
29173      use Exits as Guards is done in the consensus bandwidth weights.
29174      Fixes bug 1294; bugfix on 0.2.2.10-alpha.
29175    - When the controller is reporting the purpose of circuits that
29176      didn't finish building before the circuit build timeout, it was
29177      printing UNKNOWN_13. Now print EXPIRED. Bugfix on 0.2.2.14-alpha.
29178    - Our libevent version parsing code couldn't handle versions like
29179      1.4.14b-stable and incorrectly warned the user about using an
29180      old and broken version of libevent. Treat 1.4.14b-stable like
29181      1.4.14-stable when parsing the version. Fixes bug 1731; bugfix
29182      on 0.2.2.1-alpha.
29183    - Don't use substitution references like $(VAR:MOD) when
29184      $(asciidoc_files) is empty -- make(1) on NetBSD transforms
29185      '$(:x)' to 'x' rather than the empty string. This bites us in
29186      doc/ when configured with --disable-asciidoc. Bugfix on
29187      0.2.2.9-alpha; fixes bug 1773.
29188    - Remove a spurious hidden service server-side log notice about
29189      "Ancient non-dirty circuits". Bugfix on 0.2.2.14-alpha; fixes
29190      bug 1741.
29191    - Fix compilation with --with-dmalloc set. Bugfix on 0.2.2.6-alpha;
29192      fixes bug 1832.
29193    - Correctly report written bytes on linked connections. Found while
29194      implementing 1790. Bugfix on 0.2.2.4-alpha.
29195    - Fix three memory leaks: one in circuit_build_times_parse_state(),
29196      one in dirvote_add_signatures_to_pending_consensus(), and one every
29197      time we parse a v3 network consensus. Bugfixes on 0.2.2.14-alpha,
29198      0.2.2.6-alpha, and 0.2.2.10-alpha respectively; fixes bug 1831.
29199
29200  o Code simplifications and refactoring:
29201    - Take a first step towards making or.h smaller by splitting out
29202      function definitions for all source files in src/or/. Leave
29203      structures and defines in or.h for now.
29204    - Remove a bunch of unused function declarations as well as a block of
29205      #if 0'd code from the unit tests. Closes bug 1824.
29206    - New unit tests for exit-port history statistics; refactored exit
29207      statistics code to be more easily tested.
29208    - Remove the old debian/ directory from the main Tor distribution.
29209      The official Tor-for-debian git repository lives at the URL
29210      https://git.torproject.org/debian/tor.git
29211
29212
29213Changes in version 0.2.2.14-alpha - 2010-07-12
29214  Tor 0.2.2.14-alpha greatly improves client-side handling of
29215  circuit build timeouts, which are used to estimate speed and improve
29216  performance. We also move to a much better GeoIP database, port Tor to
29217  Windows CE, introduce new compile flags that improve code security,
29218  add an eighth v3 directory authority, and address a lot of more
29219  minor issues.
29220
29221  o Major bugfixes:
29222    - Tor directory authorities no longer crash when started with a
29223      cached-microdesc-consensus file in their data directory. Bugfix
29224      on 0.2.2.6-alpha; fixes bug 1532.
29225    - Treat an unset $HOME like an empty $HOME rather than triggering an
29226      assert. Bugfix on 0.0.8pre1; fixes bug 1522.
29227    - Ignore negative and large circuit build timeout values that can
29228      happen during a suspend or hibernate. These values caused various
29229      asserts to fire. Bugfix on 0.2.2.2-alpha; fixes bug 1245.
29230    - Alter calculation of Pareto distribution parameter 'Xm' for
29231      Circuit Build Timeout learning to use the weighted average of the
29232      top N=3 modes (because we have three entry guards). Considering
29233      multiple modes should improve the timeout calculation in some cases,
29234      and prevent extremely high timeout values. Bugfix on 0.2.2.2-alpha;
29235      fixes bug 1335.
29236    - Alter calculation of Pareto distribution parameter 'Alpha' to use a
29237      right censored distribution model. This approach improves over the
29238      synthetic timeout generation approach that was producing insanely
29239      high timeout values. Now we calculate build timeouts using truncated
29240      times. Bugfix on 0.2.2.2-alpha; fixes bugs 1245 and 1335.
29241    - Do not close circuits that are under construction when they reach
29242      the circuit build timeout. Instead, leave them building (but do not
29243      use them) for up until the time corresponding to the 95th percentile
29244      on the Pareto CDF or 60 seconds, whichever is greater. This is done
29245      to provide better data for the new Pareto model. This percentile
29246      can be controlled by the consensus.
29247
29248  o Major features:
29249    - Move to the June 2010 Maxmind GeoLite country db (rather than the
29250      June 2009 ip-to-country GeoIP db) for our statistics that count
29251      how many users relays are seeing from each country. Now we have
29252      more accurate data for many African countries.
29253    - Port Tor to build and run correctly on Windows CE systems, using
29254      the wcecompat library. Contributed by Valerio Lupi.
29255    - New "--enable-gcc-hardening" ./configure flag (off by default)
29256      to turn on gcc compile time hardening options. It ensures
29257      that signed ints have defined behavior (-fwrapv), enables
29258      -D_FORTIFY_SOURCE=2 (requiring -O2), adds stack smashing protection
29259      with canaries (-fstack-protector-all), turns on ASLR protection if
29260      supported by the kernel (-fPIE, -pie), and adds additional security
29261      related warnings. Verified to work on Mac OS X and Debian Lenny.
29262    - New "--enable-linker-hardening" ./configure flag (off by default)
29263      to turn on ELF specific hardening features (relro, now). This does
29264      not work with Mac OS X or any other non-ELF binary format.
29265
29266  o New directory authorities:
29267    - Set up maatuska (run by Linus Nordberg) as the eighth v3 directory
29268      authority.
29269
29270  o Minor features:
29271    - New config option "WarnUnsafeSocks 0" disables the warning that
29272      occurs whenever Tor receives a socks handshake using a version of
29273      the socks protocol that can only provide an IP address (rather
29274      than a hostname). Setups that do DNS locally over Tor are fine,
29275      and we shouldn't spam the logs in that case.
29276    - Convert the HACKING file to asciidoc, and add a few new sections
29277      to it, explaining how we use Git, how we make changelogs, and
29278      what should go in a patch.
29279    - Add a TIMEOUT_RATE keyword to the BUILDTIMEOUT_SET control port
29280      event, to give information on the current rate of circuit timeouts
29281      over our stored history.
29282    - Add ability to disable circuit build time learning via consensus
29283      parameter and via a LearnCircuitBuildTimeout config option. Also
29284      automatically disable circuit build time calculation if we are
29285      either a AuthoritativeDirectory, or if we fail to write our state
29286      file. Fixes bug 1296.
29287    - More gracefully handle corrupt state files, removing asserts
29288      in favor of saving a backup and resetting state.
29289    - Rename the "log.h" header to "torlog.h" so as to conflict with fewer
29290      system headers.
29291
29292  o Minor bugfixes:
29293    - Build correctly on OSX with zlib 1.2.4 and higher with all warnings
29294      enabled.
29295    - When a2x fails, mention that the user could disable manpages instead
29296      of trying to fix their asciidoc installation.
29297    - Where available, use Libevent 2.0's periodic timers so that our
29298      once-per-second cleanup code gets called even more closely to
29299      once per second than it would otherwise. Fixes bug 943.
29300    - If you run a bridge that listens on multiple IP addresses, and
29301      some user configures a bridge address that uses a different IP
29302      address than your bridge writes in its router descriptor, and the
29303      user doesn't specify an identity key, their Tor would discard the
29304      descriptor because "it isn't one of our configured bridges", and
29305      fail to bootstrap. Now believe the descriptor and bootstrap anyway.
29306      Bugfix on 0.2.0.3-alpha.
29307    - If OpenSSL fails to make a duplicate of a private or public key, log
29308      an error message and try to exit cleanly. May help with debugging
29309      if bug 1209 ever remanifests.
29310    - Save a couple bytes in memory allocation every time we escape
29311      certain characters in a string. Patch from Florian Zumbiehl.
29312    - Make it explicit that we don't cannibalize one-hop circuits. This
29313      happens in the wild, but doesn't turn out to be a problem because
29314      we fortunately don't use those circuits. Many thanks to outofwords
29315      for the initial analysis and to swissknife who confirmed that
29316      two-hop circuits are actually created.
29317    - Make directory mirrors report non-zero dirreq-v[23]-shares again.
29318      Fixes bug 1564; bugfix on 0.2.2.9-alpha.
29319    - Eliminate a case where a circuit build time warning was displayed
29320      after network connectivity resumed. Bugfix on 0.2.2.2-alpha.
29321
29322
29323Changes in version 0.2.1.26 - 2010-05-02
29324  Tor 0.2.1.26 addresses the recent connection and memory overload
29325  problems we've been seeing on relays, especially relays with their
29326  DirPort open. If your relay has been crashing, or you turned it off
29327  because it used too many resources, give this release a try.
29328
29329  This release also fixes yet another instance of broken OpenSSL libraries
29330  that was causing some relays to drop out of the consensus.
29331
29332  o Major bugfixes:
29333    - Teach relays to defend themselves from connection overload. Relays
29334      now close idle circuits early if it looks like they were intended
29335      for directory fetches. Relays are also more aggressive about closing
29336      TLS connections that have no circuits on them. Such circuits are
29337      unlikely to be re-used, and tens of thousands of them were piling
29338      up at the fast relays, causing the relays to run out of sockets
29339      and memory. Bugfix on 0.2.0.22-rc (where clients started tunneling
29340      their directory fetches over TLS).
29341    - Fix SSL renegotiation behavior on OpenSSL versions like on Centos
29342      that claim to be earlier than 0.9.8m, but which have in reality
29343      backported huge swaths of 0.9.8m or 0.9.8n renegotiation
29344      behavior. Possible fix for some cases of bug 1346.
29345    - Directory mirrors were fetching relay descriptors only from v2
29346      directory authorities, rather than v3 authorities like they should.
29347      Only 2 v2 authorities remain (compared to 7 v3 authorities), leading
29348      to a serious bottleneck. Bugfix on 0.2.0.9-alpha. Fixes bug 1324.
29349
29350  o Minor bugfixes:
29351    - Finally get rid of the deprecated and now harmful notion of "clique
29352      mode", where directory authorities maintain TLS connections to
29353      every other relay.
29354
29355  o Testsuite fixes:
29356    - In the util/threads test, no longer free the test_mutex before all
29357      worker threads have finished. Bugfix on 0.2.1.6-alpha.
29358    - The master thread could starve the worker threads quite badly on
29359      certain systems, causing them to run only partially in the allowed
29360      window. This resulted in test failures. Now the master thread sleeps
29361      occasionally for a few microseconds while the two worker-threads
29362      compete for the mutex. Bugfix on 0.2.0.1-alpha.
29363
29364
29365Changes in version 0.2.2.13-alpha - 2010-04-24
29366  Tor 0.2.2.13-alpha addresses the recent connection and memory overload
29367  problems we've been seeing on relays, especially relays with their
29368  DirPort open. If your relay has been crashing, or you turned it off
29369  because it used too many resources, give this release a try.
29370
29371  o Major bugfixes:
29372    - Teach relays to defend themselves from connection overload. Relays
29373      now close idle circuits early if it looks like they were intended
29374      for directory fetches. Relays are also more aggressive about closing
29375      TLS connections that have no circuits on them. Such circuits are
29376      unlikely to be re-used, and tens of thousands of them were piling
29377      up at the fast relays, causing the relays to run out of sockets
29378      and memory. Bugfix on 0.2.0.22-rc (where clients started tunneling
29379      their directory fetches over TLS).
29380
29381  o Minor features:
29382    - Finally get rid of the deprecated and now harmful notion of "clique
29383      mode", where directory authorities maintain TLS connections to
29384      every other relay.
29385    - Directory authorities now do an immediate reachability check as soon
29386      as they hear about a new relay. This change should slightly reduce
29387      the time between setting up a relay and getting listed as running
29388      in the consensus. It should also improve the time between setting
29389      up a bridge and seeing use by bridge users.
29390    - Directory authorities no longer launch a TLS connection to every
29391      relay as they startup. Now that we have 2k+ descriptors cached,
29392      the resulting network hiccup is becoming a burden. Besides,
29393      authorities already avoid voting about Running for the first half
29394      hour of their uptime.
29395
29396
29397Changes in version 0.2.2.12-alpha - 2010-04-20
29398  Tor 0.2.2.12-alpha fixes a critical bug in how directory authorities
29399  handle and vote on descriptors. It was causing relays to drop out of
29400  the consensus.
29401
29402  o Major bugfixes:
29403    - Many relays have been falling out of the consensus lately because
29404      not enough authorities know about their descriptor for them to get
29405      a majority of votes. When we deprecated the v2 directory protocol,
29406      we got rid of the only way that v3 authorities can hear from each
29407      other about other descriptors. Now authorities examine every v3
29408      vote for new descriptors, and fetch them from that authority. Bugfix
29409      on 0.2.1.23.
29410    - Fix two typos in tor_vasprintf() that broke the compile on Windows,
29411      and a warning in or.h related to bandwidth_weight_rule_t that
29412      prevented clean compile on OS X. Fixes bug 1363; bugfix on
29413      0.2.2.11-alpha.
29414    - Fix a segfault on relays when DirReqStatistics is enabled
29415      and 24 hours pass. Bug found by keb. Fixes bug 1365; bugfix on
29416      0.2.2.11-alpha.
29417
29418  o Minor bugfixes:
29419    - Demote a confusing TLS warning that relay operators might get when
29420      someone tries to talk to their OrPort. It is neither the operator's
29421      fault nor can they do anything about it. Fixes bug 1364; bugfix
29422      on 0.2.0.14-alpha.
29423
29424
29425Changes in version 0.2.2.11-alpha - 2010-04-15
29426  Tor 0.2.2.11-alpha fixes yet another instance of broken OpenSSL
29427  libraries that was causing some relays to drop out of the consensus.
29428
29429  o Major bugfixes:
29430    - Directory mirrors were fetching relay descriptors only from v2
29431      directory authorities, rather than v3 authorities like they should.
29432      Only 2 v2 authorities remain (compared to 7 v3 authorities), leading
29433      to a serious bottleneck. Bugfix on 0.2.0.9-alpha. Fixes bug 1324.
29434    - Fix a parsing error that made every possible value of
29435      CircPriorityHalflifeMsec get treated as "1 msec". Bugfix
29436      on 0.2.2.7-alpha. Rename CircPriorityHalflifeMsec to
29437      CircuitPriorityHalflifeMsec, so authorities can tell newer relays
29438      about the option without breaking older ones.
29439    - Fix SSL renegotiation behavior on OpenSSL versions like on Centos
29440      that claim to be earlier than 0.9.8m, but which have in reality
29441      backported huge swaths of 0.9.8m or 0.9.8n renegotiation
29442      behavior. Possible fix for some cases of bug 1346.
29443
29444  o Minor features:
29445    - Experiment with a more aggressive approach to preventing clients
29446      from making one-hop exit streams. Exit relays who want to try it
29447      out can set "RefuseUnknownExits 1" in their torrc, and then look
29448      for "Attempt by %s to open a stream" log messages. Let us know
29449      how it goes!
29450    - Add support for statically linking zlib by specifying
29451      --enable-static-zlib, to go with our support for statically linking
29452      openssl and libevent. Resolves bug 1358.
29453
29454  o Minor bugfixes:
29455    - Fix a segfault that happens whenever a Tor client that is using
29456      libevent2's bufferevents gets a hup signal. Bugfix on 0.2.2.5-alpha;
29457      fixes bug 1341.
29458    - When we cleaned up the contrib/tor-exit-notice.html file, we left
29459      out the first line. Fixes bug 1295.
29460    - When building the manpage from a tarball, we required asciidoc, but
29461      the asciidoc -> roff/html conversion was already done for the
29462      tarball. Make 'make' complain only when we need asciidoc (either
29463      because we're compiling directly from git, or because we altered
29464      the asciidoc manpage in the tarball). Bugfix on 0.2.2.9-alpha.
29465    - When none of the directory authorities vote on any params, Tor
29466      segfaulted when trying to make the consensus from the votes. We
29467      didn't trigger the bug in practice, because authorities do include
29468      params in their votes. Bugfix on 0.2.2.10-alpha; fixes bug 1322.
29469
29470  o Testsuite fixes:
29471    - In the util/threads test, no longer free the test_mutex before all
29472      worker threads have finished. Bugfix on 0.2.1.6-alpha.
29473    - The master thread could starve the worker threads quite badly on
29474      certain systems, causing them to run only partially in the allowed
29475      window. This resulted in test failures. Now the master thread sleeps
29476      occasionally for a few microseconds while the two worker-threads
29477      compete for the mutex. Bugfix on 0.2.0.1-alpha.
29478
29479
29480Changes in version 0.2.2.10-alpha - 2010-03-07
29481  Tor 0.2.2.10-alpha fixes a regression introduced in 0.2.2.9-alpha that
29482  could prevent relays from guessing their IP address correctly. It also
29483  starts the groundwork for another client-side performance boost, since
29484  currently we're not making efficient use of relays that have both the
29485  Guard flag and the Exit flag.
29486
29487  o Major bugfixes:
29488    - Fix a regression from our patch for bug 1244 that caused relays
29489      to guess their IP address incorrectly if they didn't set Address
29490      in their torrc and/or their address fails to resolve. Bugfix on
29491      0.2.2.9-alpha; fixes bug 1269.
29492
29493  o Major features (performance):
29494    - Directory authorities now compute consensus weightings that instruct
29495      clients how to weight relays flagged as Guard, Exit, Guard+Exit,
29496      and no flag. Clients that use these weightings will distribute
29497      network load more evenly across these different relay types. The
29498      weightings are in the consensus so we can change them globally in
29499      the future. Extra thanks to "outofwords" for finding some nasty
29500      security bugs in the first implementation of this feature.
29501
29502  o Minor features (performance):
29503    - Always perform router selections using weighted relay bandwidth,
29504      even if we don't need a high capacity circuit at the time. Non-fast
29505      circuits now only differ from fast ones in that they can use relays
29506      not marked with the Fast flag. This "feature" could turn out to
29507      be a horrible bug; we should investigate more before it goes into
29508      a stable release.
29509
29510  o Minor features:
29511    - Allow disabling building of the manpages. Skipping the manpage
29512      speeds up the build considerably.
29513
29514  o Minor bugfixes (on 0.2.2.x):
29515    - Fix a memleak in the EXTENDCIRCUIT logic. Spotted by coverity.
29516      Bugfix on 0.2.2.9-alpha.
29517    - Disallow values larger than INT32_MAX for PerConnBWRate|Burst
29518      config option. Bugfix on 0.2.2.7-alpha.
29519    - Ship the asciidoc-helper file in the tarball, so that people can
29520      build from source if they want to, and touching the .1.txt files
29521      doesn't break the build. Bugfix on 0.2.2.9-alpha.
29522
29523  o Minor bugfixes (on 0.2.1.x or earlier):
29524    - Fix a dereference-then-NULL-check sequence when publishing
29525      descriptors. Bugfix on 0.2.1.5-alpha. Discovered by ekir; fixes
29526      bug 1255.
29527    - Fix another dereference-then-NULL-check sequence. Bugfix on
29528      0.2.1.14-rc. Discovered by ekir; fixes bug 1256.
29529    - Make sure we treat potentially not NUL-terminated strings correctly.
29530      Bugfix on 0.1.1.13-alpha. Discovered by rieo; fixes bug 1257.
29531
29532  o Code simplifications and refactoring:
29533    - Fix some urls in the exit notice file and make it XHTML1.1 strict
29534      compliant. Based on a patch from Christian Kujau.
29535    - Don't use sed in asciidoc-helper anymore.
29536    - Make the build process fail if asciidoc cannot be found and
29537      building with asciidoc isn't disabled.
29538
29539
29540Changes in version 0.2.2.9-alpha - 2010-02-22
29541  Tor 0.2.2.9-alpha makes Tor work again on the latest OS X, updates the
29542  location of a directory authority, and cleans up a bunch of small bugs.
29543
29544  o Directory authority changes:
29545    - Change IP address for dannenberg (v3 directory authority), and
29546      remove moria2 (obsolete v1, v2 directory authority and v0 hidden
29547      service directory authority) from the list.
29548
29549  o Major bugfixes:
29550    - Make Tor work again on the latest OS X: when deciding whether to
29551      use strange flags to turn TLS renegotiation on, detect the OpenSSL
29552      version at run-time, not compile time. We need to do this because
29553      Apple doesn't update its dev-tools headers when it updates its
29554      libraries in a security patch.
29555    - Fix a potential buffer overflow in lookup_last_hid_serv_request()
29556      that could happen on 32-bit platforms with 64-bit time_t. Also fix
29557      a memory leak when requesting a hidden service descriptor we've
29558      requested before. Fixes bug 1242, bugfix on 0.2.0.18-alpha. Found
29559      by aakova.
29560    - Authorities could be tricked into giving out the Exit flag to relays
29561      that didn't allow exiting to any ports. This bug could screw
29562      with load balancing and stats. Bugfix on 0.1.1.6-alpha; fixes bug
29563      1238. Bug discovered by Martin Kowalczyk.
29564    - When freeing a session key, zero it out completely. We only zeroed
29565      the first ptrsize bytes. Bugfix on 0.0.2pre8. Discovered and
29566      patched by ekir. Fixes bug 1254.
29567
29568  o Minor bugfixes:
29569    - Fix static compilation by listing the openssl libraries in the right
29570      order. Bugfix on Tor 0.2.2.8-alpha; fixes bug 1237.
29571    - Resume handling .exit hostnames in a special way: originally we
29572      stripped the .exit part and used the requested exit relay. In
29573      0.2.2.1-alpha we stopped treating them in any special way, meaning
29574      if you use a .exit address then Tor will pass it on to the exit
29575      relay. Now we reject the .exit stream outright, since that behavior
29576      might be more expected by the user. Found and diagnosed by Scott
29577      Bennett and Downie on or-talk.
29578    - Don't spam the controller with events when we have no file
29579      descriptors available. Bugfix on 0.2.1.5-alpha. (Rate-limiting
29580      for log messages was already solved from bug 748.)
29581    - Avoid a bogus overlapped memcpy in tor_addr_copy(). Reported by
29582      "memcpyfail".
29583    - Make the DNSPort option work with libevent 2.x. Don't alter the
29584      behavior for libevent 1.x. Fixes bug 1143. Found by SwissTorExit.
29585    - Emit a GUARD DROPPED controller event for a case we missed.
29586    - Make more fields in the controller protocol case-insensitive, since
29587      control-spec.txt said they were.
29588    - Refactor resolve_my_address() to not use gethostbyname() anymore.
29589      Fixes bug 1244; bugfix on 0.0.2pre25. Reported by Mike Mestnik.
29590    - Fix a spec conformance issue: the network-status-version token
29591      must be the first token in a v3 consensus or vote. Discovered by
29592      parakeep. Bugfix on 0.2.0.3-alpha.
29593
29594  o Code simplifications and refactoring:
29595    - Generate our manpage and HTML documentation using Asciidoc. This
29596      change should make it easier to maintain the documentation, and
29597      produce nicer HTML.
29598    - Remove the --enable-iphone option. According to reports from Marco
29599      Bonetti, Tor builds fine without any special tweaking on recent
29600      iPhone SDK versions.
29601    - Removed some unnecessary files from the source distribution. The
29602      AUTHORS file has now been merged into the people page on the
29603      website. The roadmaps and design doc can now be found in the
29604      projects directory in svn.
29605    - Enabled various circuit build timeout constants to be controlled
29606      by consensus parameters. Also set better defaults for these
29607      parameters based on experimentation on broadband and simulated
29608      high latency links.
29609
29610  o Minor features:
29611    - The 'EXTENDCIRCUIT' control port command can now be used with
29612      a circ id of 0 and no path. This feature will cause Tor to build
29613      a new 'fast' general purpose circuit using its own path selection
29614      algorithms.
29615    - Added a BUILDTIMEOUT_SET controller event to describe changes
29616      to the circuit build timeout.
29617    - Future-proof the controller protocol a bit by ignoring keyword
29618      arguments we do not recognize.
29619    - Expand homedirs passed to tor-checkkey. This should silence a
29620      coverity complaint about passing a user-supplied string into
29621      open() without checking it.
29622
29623
29624Changes in version 0.2.1.25 - 2010-03-16
29625  Tor 0.2.1.25 fixes a regression introduced in 0.2.1.23 that could
29626  prevent relays from guessing their IP address correctly. It also fixes
29627  several minor potential security bugs.
29628
29629  o Major bugfixes:
29630    - Fix a regression from our patch for bug 1244 that caused relays
29631      to guess their IP address incorrectly if they didn't set Address
29632      in their torrc and/or their address fails to resolve. Bugfix on
29633      0.2.1.23; fixes bug 1269.
29634    - When freeing a session key, zero it out completely. We only zeroed
29635      the first ptrsize bytes. Bugfix on 0.0.2pre8. Discovered and
29636      patched by ekir. Fixes bug 1254.
29637
29638  o Minor bugfixes:
29639    - Fix a dereference-then-NULL-check sequence when publishing
29640      descriptors. Bugfix on 0.2.1.5-alpha. Discovered by ekir; fixes
29641      bug 1255.
29642    - Fix another dereference-then-NULL-check sequence. Bugfix on
29643      0.2.1.14-rc. Discovered by ekir; fixes bug 1256.
29644    - Make sure we treat potentially not NUL-terminated strings correctly.
29645      Bugfix on 0.1.1.13-alpha. Discovered by rieo; fixes bug 1257.
29646
29647
29648
29649Changes in version 0.2.1.24 - 2010-02-21
29650  Tor 0.2.1.24 makes Tor work again on the latest OS X -- this time
29651  for sure!
29652
29653  o Minor bugfixes:
29654    - Work correctly out-of-the-box with even more vendor-patched versions
29655      of OpenSSL. In particular, make it so Debian and OS X don't need
29656      customized patches to run/build.
29657
29658
29659Changes in version 0.2.1.23 - 2010-02-13
29660  Tor 0.2.1.23 fixes a huge client-side performance bug, makes Tor work
29661  again on the latest OS X, and updates the location of a directory
29662  authority.
29663
29664  o Major bugfixes (performance):
29665    - We were selecting our guards uniformly at random, and then weighting
29666      which of our guards we'd use uniformly at random. This imbalance
29667      meant that Tor clients were severely limited on throughput (and
29668      probably latency too) by the first hop in their circuit. Now we
29669      select guards weighted by currently advertised bandwidth. We also
29670      automatically discard guards picked using the old algorithm. Fixes
29671      bug 1217; bugfix on 0.2.1.3-alpha. Found by Mike Perry.
29672
29673  o Major bugfixes:
29674    - Make Tor work again on the latest OS X: when deciding whether to
29675      use strange flags to turn TLS renegotiation on, detect the OpenSSL
29676      version at run-time, not compile time. We need to do this because
29677      Apple doesn't update its dev-tools headers when it updates its
29678      libraries in a security patch.
29679    - Fix a potential buffer overflow in lookup_last_hid_serv_request()
29680      that could happen on 32-bit platforms with 64-bit time_t. Also fix
29681      a memory leak when requesting a hidden service descriptor we've
29682      requested before. Fixes bug 1242, bugfix on 0.2.0.18-alpha. Found
29683      by aakova.
29684
29685  o Directory authority changes:
29686    - Change IP address for dannenberg (v3 directory authority), and
29687      remove moria2 (obsolete v1, v2 directory authority and v0 hidden
29688      service directory authority) from the list.
29689
29690  o Minor bugfixes:
29691    - Refactor resolve_my_address() to not use gethostbyname() anymore.
29692      Fixes bug 1244; bugfix on 0.0.2pre25. Reported by Mike Mestnik.
29693
29694  o Minor features:
29695    - Avoid a mad rush at the beginning of each month when each client
29696      rotates half of its guards. Instead we spread the rotation out
29697      throughout the month, but we still avoid leaving a precise timestamp
29698      in the state file about when we first picked the guard. Improves
29699      over the behavior introduced in 0.1.2.17.
29700
29701
29702Changes in version 0.2.2.8-alpha - 2010-01-26
29703  Tor 0.2.2.8-alpha fixes a crash bug in 0.2.2.7-alpha that has been
29704  causing bridge relays to disappear. If you're running a bridge,
29705  please upgrade.
29706
29707  o Major bugfixes:
29708    - Fix a memory corruption bug on bridges that occurred during the
29709      inclusion of stats data in extra-info descriptors. Also fix the
29710      interface for geoip_get_bridge_stats* to prevent similar bugs in
29711      the future. Diagnosis by Tas, patch by Karsten and Sebastian.
29712      Fixes bug 1208; bugfix on 0.2.2.7-alpha.
29713
29714  o Minor bugfixes:
29715    - Ignore OutboundBindAddress when connecting to localhost.
29716      Connections to localhost need to come _from_ localhost, or else
29717      local servers (like DNS and outgoing HTTP/SOCKS proxies) will often
29718      refuse to listen.
29719
29720
29721Changes in version 0.2.2.7-alpha - 2010-01-19
29722  Tor 0.2.2.7-alpha fixes a huge client-side performance bug, as well
29723  as laying the groundwork for further relay-side performance fixes. It
29724  also starts cleaning up client behavior with respect to the EntryNodes,
29725  ExitNodes, and StrictNodes config options.
29726
29727  This release also rotates two directory authority keys, due to a
29728  security breach of some of the Torproject servers.
29729
29730  o Directory authority changes:
29731    - Rotate keys (both v3 identity and relay identity) for moria1
29732      and gabelmoo.
29733
29734  o Major features (performance):
29735    - We were selecting our guards uniformly at random, and then weighting
29736      which of our guards we'd use uniformly at random. This imbalance
29737      meant that Tor clients were severely limited on throughput (and
29738      probably latency too) by the first hop in their circuit. Now we
29739      select guards weighted by currently advertised bandwidth. We also
29740      automatically discard guards picked using the old algorithm. Fixes
29741      bug 1217; bugfix on 0.2.1.3-alpha. Found by Mike Perry.
29742    - When choosing which cells to relay first, relays can now favor
29743      circuits that have been quiet recently, to provide lower latency
29744      for low-volume circuits. By default, relays enable or disable this
29745      feature based on a setting in the consensus. You can override
29746      this default by using the new "CircuitPriorityHalflife" config
29747      option. Design and code by Ian Goldberg, Can Tang, and Chris
29748      Alexander.
29749    - Add separate per-conn write limiting to go with the per-conn read
29750      limiting. We added a global write limit in Tor 0.1.2.5-alpha,
29751      but never per-conn write limits.
29752    - New consensus params "bwconnrate" and "bwconnburst" to let us
29753      rate-limit client connections as they enter the network. It's
29754      controlled in the consensus so we can turn it on and off for
29755      experiments. It's starting out off. Based on proposal 163.
29756
29757  o Major features (relay selection options):
29758    - Switch to a StrictNodes config option, rather than the previous
29759      "StrictEntryNodes" / "StrictExitNodes" separation that was missing a
29760      "StrictExcludeNodes" option.
29761    - If EntryNodes, ExitNodes, ExcludeNodes, or ExcludeExitNodes
29762      change during a config reload, mark and discard all our origin
29763      circuits. This fix should address edge cases where we change the
29764      config options and but then choose a circuit that we created before
29765      the change.
29766    - If EntryNodes or ExitNodes are set, be more willing to use an
29767      unsuitable (e.g. slow or unstable) circuit. The user asked for it,
29768      they get it.
29769    - Make EntryNodes config option much more aggressive even when
29770      StrictNodes is not set. Before it would prepend your requested
29771      entrynodes to your list of guard nodes, but feel free to use others
29772      after that. Now it chooses only from your EntryNodes if any of
29773      those are available, and only falls back to others if a) they're
29774      all down and b) StrictNodes is not set.
29775    - Now we refresh your entry guards from EntryNodes at each consensus
29776      fetch -- rather than just at startup and then they slowly rot as
29777      the network changes.
29778
29779  o Major bugfixes:
29780    - Stop bridge directory authorities from answering dbg-stability.txt
29781      directory queries, which would let people fetch a list of all
29782      bridge identities they track. Bugfix on 0.2.1.6-alpha.
29783
29784  o Minor features:
29785    - Log a notice when we get a new control connection. Now it's easier
29786      for security-conscious users to recognize when a local application
29787      is knocking on their controller door. Suggested by bug 1196.
29788    - New config option "CircuitStreamTimeout" to override our internal
29789      timeout schedule for how many seconds until we detach a stream from
29790      a circuit and try a new circuit. If your network is particularly
29791      slow, you might want to set this to a number like 60.
29792    - New controller command "getinfo config-text". It returns the
29793      contents that Tor would write if you send it a SAVECONF command,
29794      so the controller can write the file to disk itself.
29795    - New options for SafeLogging to allow scrubbing only log messages
29796      generated while acting as a relay.
29797    - Ship the bridges spec file in the tarball too.
29798    - Avoid a mad rush at the beginning of each month when each client
29799      rotates half of its guards. Instead we spread the rotation out
29800      throughout the month, but we still avoid leaving a precise timestamp
29801      in the state file about when we first picked the guard. Improves
29802      over the behavior introduced in 0.1.2.17.
29803
29804  o Minor bugfixes (compiling):
29805    - Fix compilation on OS X 10.3, which has a stub mlockall() but
29806      hides it. Bugfix on 0.2.2.6-alpha.
29807    - Fix compilation on Solaris by removing support for the
29808      DisableAllSwap config option. Solaris doesn't have an rlimit for
29809      mlockall, so we cannot use it safely. Fixes bug 1198; bugfix on
29810      0.2.2.6-alpha.
29811
29812  o Minor bugfixes (crashes):
29813    - Do not segfault when writing buffer stats when we haven't observed
29814      a single circuit to report about. Found by Fabian Lanze. Bugfix on
29815      0.2.2.1-alpha.
29816    - If we're in the pathological case where there's no exit bandwidth
29817      but there is non-exit bandwidth, or no guard bandwidth but there
29818      is non-guard bandwidth, don't crash during path selection. Bugfix
29819      on 0.2.0.3-alpha.
29820    - Fix an impossible-to-actually-trigger buffer overflow in relay
29821      descriptor generation. Bugfix on 0.1.0.15.
29822
29823  o Minor bugfixes (privacy):
29824    - Fix an instance where a Tor directory mirror might accidentally
29825      log the IP address of a misbehaving Tor client. Bugfix on
29826      0.1.0.1-rc.
29827    - Don't list Windows capabilities in relay descriptors. We never made
29828      use of them, and maybe it's a bad idea to publish them. Bugfix
29829      on 0.1.1.8-alpha.
29830
29831  o Minor bugfixes (other):
29832    - Resolve an edge case in path weighting that could make us misweight
29833      our relay selection. Fixes bug 1203; bugfix on 0.0.8rc1.
29834    - Fix statistics on client numbers by country as seen by bridges that
29835      were broken in 0.2.2.1-alpha. Also switch to reporting full 24-hour
29836      intervals instead of variable 12-to-48-hour intervals.
29837    - After we free an internal connection structure, overwrite it
29838      with a different memory value than we use for overwriting a freed
29839      internal circuit structure. Should help with debugging. Suggested
29840      by bug 1055.
29841    - Update our OpenSSL 0.9.8l fix so that it works with OpenSSL 0.9.8m
29842      too.
29843
29844  o Removed features:
29845    - Remove the HSAuthorityRecordStats option that version 0 hidden
29846      service authorities could have used to track statistics of overall
29847      hidden service usage.
29848
29849
29850Changes in version 0.2.1.22 - 2010-01-19
29851  Tor 0.2.1.22 fixes a critical privacy problem in bridge directory
29852  authorities -- it would tell you its whole history of bridge descriptors
29853  if you make the right directory request. This stable update also
29854  rotates two of the seven v3 directory authority keys and locations.
29855
29856  o Directory authority changes:
29857    - Rotate keys (both v3 identity and relay identity) for moria1
29858      and gabelmoo.
29859
29860  o Major bugfixes:
29861    - Stop bridge directory authorities from answering dbg-stability.txt
29862      directory queries, which would let people fetch a list of all
29863      bridge identities they track. Bugfix on 0.2.1.6-alpha.
29864
29865
29866Changes in version 0.2.1.21 - 2009-12-21
29867  Tor 0.2.1.21 fixes an incompatibility with the most recent OpenSSL
29868  library. If you use Tor on Linux / Unix and you're getting SSL
29869  renegotiation errors, upgrading should help. We also recommend an
29870  upgrade if you're an exit relay.
29871
29872  o Major bugfixes:
29873    - Work around a security feature in OpenSSL 0.9.8l that prevents our
29874      handshake from working unless we explicitly tell OpenSSL that we
29875      are using SSL renegotiation safely. We are, of course, but OpenSSL
29876      0.9.8l won't work unless we say we are.
29877    - Avoid crashing if the client is trying to upload many bytes and the
29878      circuit gets torn down at the same time, or if the flip side
29879      happens on the exit relay. Bugfix on 0.2.0.1-alpha; fixes bug 1150.
29880
29881  o Minor bugfixes:
29882    - Do not refuse to learn about authority certs and v2 networkstatus
29883      documents that are older than the latest consensus. This bug might
29884      have degraded client bootstrapping. Bugfix on 0.2.0.10-alpha.
29885      Spotted and fixed by xmux.
29886    - Fix a couple of very-hard-to-trigger memory leaks, and one hard-to-
29887      trigger platform-specific option misparsing case found by Coverity
29888      Scan.
29889    - Fix a compilation warning on Fedora 12 by removing an impossible-to-
29890      trigger assert. Fixes bug 1173.
29891
29892
29893Changes in version 0.2.2.6-alpha - 2009-11-19
29894  Tor 0.2.2.6-alpha lays the groundwork for many upcoming features:
29895  support for the new lower-footprint "microdescriptor" directory design,
29896  future-proofing our consensus format against new hash functions or
29897  other changes, and an Android port. It also makes Tor compatible with
29898  the upcoming OpenSSL 0.9.8l release, and fixes a variety of bugs.
29899
29900  o Major features:
29901    - Directory authorities can now create, vote on, and serve multiple
29902      parallel formats of directory data as part of their voting process.
29903      Partially implements Proposal 162: "Publish the consensus in
29904      multiple flavors".
29905    - Directory authorities can now agree on and publish small summaries
29906      of router information that clients can use in place of regular
29907      server descriptors. This transition will eventually allow clients
29908      to use far less bandwidth for downloading information about the
29909      network. Begins the implementation of Proposal 158: "Clients
29910      download consensus + microdescriptors".
29911    - The directory voting system is now extensible to use multiple hash
29912      algorithms for signatures and resource selection. Newer formats
29913      are signed with SHA256, with a possibility for moving to a better
29914      hash algorithm in the future.
29915    - New DisableAllSwap option. If set to 1, Tor will attempt to lock all
29916      current and future memory pages via mlockall(). On supported
29917      platforms (modern Linux and probably BSD but not Windows or OS X),
29918      this should effectively disable any and all attempts to page out
29919      memory. This option requires that you start your Tor as root --
29920      if you use DisableAllSwap, please consider using the User option
29921      to properly reduce the privileges of your Tor.
29922    - Numerous changes, bugfixes, and workarounds from Nathan Freitas
29923      to help Tor build correctly for Android phones.
29924
29925  o Major bugfixes:
29926    - Work around a security feature in OpenSSL 0.9.8l that prevents our
29927      handshake from working unless we explicitly tell OpenSSL that we
29928      are using SSL renegotiation safely. We are, but OpenSSL 0.9.8l
29929      won't work unless we say we are.
29930
29931  o Minor bugfixes:
29932    - Fix a crash bug when trying to initialize the evdns module in
29933      Libevent 2. Bugfix on 0.2.1.16-rc.
29934    - Stop logging at severity 'warn' when some other Tor client tries
29935      to establish a circuit with us using weak DH keys. It's a protocol
29936      violation, but that doesn't mean ordinary users need to hear about
29937      it. Fixes the bug part of bug 1114. Bugfix on 0.1.0.13.
29938    - Do not refuse to learn about authority certs and v2 networkstatus
29939      documents that are older than the latest consensus. This bug might
29940      have degraded client bootstrapping. Bugfix on 0.2.0.10-alpha.
29941      Spotted and fixed by xmux.
29942    - Fix numerous small code-flaws found by Coverity Scan Rung 3.
29943    - If all authorities restart at once right before a consensus vote,
29944      nobody will vote about "Running", and clients will get a consensus
29945      with no usable relays. Instead, authorities refuse to build a
29946      consensus if this happens. Bugfix on 0.2.0.10-alpha; fixes bug 1066.
29947    - If your relay can't keep up with the number of incoming create
29948      cells, it would log one warning per failure into your logs. Limit
29949      warnings to 1 per minute. Bugfix on 0.0.2pre10; fixes bug 1042.
29950    - Bridges now use "reject *:*" as their default exit policy. Bugfix
29951      on 0.2.0.3-alpha; fixes bug 1113.
29952    - Fix a memory leak on directory authorities during voting that was
29953      introduced in 0.2.2.1-alpha. Found via valgrind.
29954
29955
29956Changes in version 0.2.1.20 - 2009-10-15
29957  Tor 0.2.1.20 fixes a crash bug when you're accessing many hidden
29958  services at once, prepares for more performance improvements, and
29959  fixes a bunch of smaller bugs.
29960
29961  The Windows and OS X bundles also include a more recent Vidalia,
29962  and switch from Privoxy to Polipo.
29963
29964  The OS X installers are now drag and drop. It's best to un-install
29965  Tor/Vidalia and then install this new bundle, rather than upgrade. If
29966  you want to upgrade, you'll need to update the paths for Tor and Polipo
29967  in the Vidalia Settings window.
29968
29969  o Major bugfixes:
29970    - Send circuit or stream sendme cells when our window has decreased
29971      by 100 cells, not when it has decreased by 101 cells. Bug uncovered
29972      by Karsten when testing the "reduce circuit window" performance
29973      patch. Bugfix on the 54th commit on Tor -- from July 2002,
29974      before the release of Tor 0.0.0. This is the new winner of the
29975      oldest-bug prize.
29976    - Fix a remotely triggerable memory leak when a consensus document
29977      contains more than one signature from the same voter. Bugfix on
29978      0.2.0.3-alpha.
29979    - Avoid segfault in rare cases when finishing an introduction circuit
29980      as a client and finding out that we don't have an introduction key
29981      for it. Fixes bug 1073. Reported by Aaron Swartz.
29982
29983  o Major features:
29984    - Tor now reads the "circwindow" parameter out of the consensus,
29985      and uses that value for its circuit package window rather than the
29986      default of 1000 cells. Begins the implementation of proposal 168.
29987
29988  o New directory authorities:
29989    - Set up urras (run by Jacob Appelbaum) as the seventh v3 directory
29990      authority.
29991    - Move moria1 and tonga to alternate IP addresses.
29992
29993  o Minor bugfixes:
29994    - Fix a signed/unsigned compile warning in 0.2.1.19.
29995    - Fix possible segmentation fault on directory authorities. Bugfix on
29996      0.2.1.14-rc.
29997    - Fix an extremely rare infinite recursion bug that could occur if
29998      we tried to log a message after shutting down the log subsystem.
29999      Found by Matt Edman. Bugfix on 0.2.0.16-alpha.
30000    - Fix an obscure bug where hidden services on 64-bit big-endian
30001      systems might mis-read the timestamp in v3 introduce cells, and
30002      refuse to connect back to the client. Discovered by "rotor".
30003      Bugfix on 0.2.1.6-alpha.
30004    - We were triggering a CLOCK_SKEW controller status event whenever
30005      we connect via the v2 connection protocol to any relay that has
30006      a wrong clock. Instead, we should only inform the controller when
30007      it's a trusted authority that claims our clock is wrong. Bugfix
30008      on 0.2.0.20-rc; starts to fix bug 1074. Reported by SwissTorExit.
30009    - We were telling the controller about CHECKING_REACHABILITY and
30010      REACHABILITY_FAILED status events whenever we launch a testing
30011      circuit or notice that one has failed. Instead, only tell the
30012      controller when we want to inform the user of overall success or
30013      overall failure. Bugfix on 0.1.2.6-alpha. Fixes bug 1075. Reported
30014      by SwissTorExit.
30015    - Don't warn when we're using a circuit that ends with a node
30016      excluded in ExcludeExitNodes, but the circuit is not used to access
30017      the outside world. This should help fix bug 1090. Bugfix on
30018      0.2.1.6-alpha.
30019    - Work around a small memory leak in some versions of OpenSSL that
30020      stopped the memory used by the hostname TLS extension from being
30021      freed.
30022
30023  o Minor features:
30024    - Add a "getinfo status/accepted-server-descriptor" controller
30025      command, which is the recommended way for controllers to learn
30026      whether our server descriptor has been successfully received by at
30027      least on directory authority. Un-recommend good-server-descriptor
30028      getinfo and status events until we have a better design for them.
30029
30030
30031Changes in version 0.2.2.5-alpha - 2009-10-11
30032  Tor 0.2.2.5-alpha fixes a few compile problems in 0.2.2.4-alpha.
30033
30034  o Major bugfixes:
30035    - Make the tarball compile again. Oops. Bugfix on 0.2.2.4-alpha.
30036
30037  o Directory authorities:
30038    - Temporarily (just for this release) move dizum to an alternate
30039      IP address.
30040
30041
30042Changes in version 0.2.2.4-alpha - 2009-10-10
30043  Tor 0.2.2.4-alpha fixes more crash bugs in 0.2.2.2-alpha. It also
30044  introduces a new unit test framework, shifts directry authority
30045  addresses around to reduce the impact from recent blocking events,
30046  and fixes a few smaller bugs.
30047
30048  o Major bugfixes:
30049    - Fix several more asserts in the circuit_build_times code, for
30050      example one that causes Tor to fail to start once we have
30051      accumulated 5000 build times in the state file. Bugfixes on
30052      0.2.2.2-alpha; fixes bug 1108.
30053
30054  o New directory authorities:
30055    - Move moria1 and Tonga to alternate IP addresses.
30056
30057  o Minor features:
30058    - Log SSL state transitions at debug level during handshake, and
30059      include SSL states in error messages. This may help debug future
30060      SSL handshake issues.
30061    - Add a new "Handshake" log domain for activities that happen
30062      during the TLS handshake.
30063    - Revert to the "June 3 2009" ip-to-country file. The September one
30064      seems to have removed most US IP addresses.
30065    - Directory authorities now reject Tor relays with versions less than
30066      0.1.2.14. This step cuts out four relays from the current network,
30067      none of which are very big.
30068
30069  o Minor bugfixes:
30070    - Fix a couple of smaller issues with gathering statistics. Bugfixes
30071      on 0.2.2.1-alpha.
30072    - Fix two memory leaks in the error case of
30073      circuit_build_times_parse_state(). Bugfix on 0.2.2.2-alpha.
30074    - Don't count one-hop circuits when we're estimating how long it
30075      takes circuits to build on average. Otherwise we'll set our circuit
30076      build timeout lower than we should. Bugfix on 0.2.2.2-alpha.
30077    - Directory authorities no longer change their opinion of, or vote on,
30078      whether a router is Running, unless they have themselves been
30079      online long enough to have some idea. Bugfix on 0.2.0.6-alpha.
30080      Fixes bug 1023.
30081
30082  o Code simplifications and refactoring:
30083    - Revise our unit tests to use the "tinytest" framework, so we
30084      can run tests in their own processes, have smarter setup/teardown
30085      code, and so on. The unit test code has moved to its own
30086      subdirectory, and has been split into multiple modules.
30087
30088
30089Changes in version 0.2.2.3-alpha - 2009-09-23
30090  Tor 0.2.2.3-alpha fixes a few crash bugs in 0.2.2.2-alpha.
30091
30092  o Major bugfixes:
30093    - Fix an overzealous assert in our new circuit build timeout code.
30094      Bugfix on 0.2.2.2-alpha; fixes bug 1103.
30095
30096  o Minor bugfixes:
30097    - If the networkstatus consensus tells us that we should use a
30098      negative circuit package window, ignore it. Otherwise we'll
30099      believe it and then trigger an assert. Bugfix on 0.2.2.2-alpha.
30100
30101
30102Changes in version 0.2.2.2-alpha - 2009-09-21
30103  Tor 0.2.2.2-alpha introduces our latest performance improvement for
30104  clients: Tor tracks the average time it takes to build a circuit, and
30105  avoids using circuits that take too long to build. For fast connections,
30106  this feature can cut your expected latency in half. For slow or flaky
30107  connections, it could ruin your Tor experience. Let us know if it does!
30108
30109  o Major features:
30110    - Tor now tracks how long it takes to build client-side circuits
30111      over time, and adapts its timeout to local network performance.
30112      Since a circuit that takes a long time to build will also provide
30113      bad performance, we get significant latency improvements by
30114      discarding the slowest 20% of circuits. Specifically, Tor creates
30115      circuits more aggressively than usual until it has enough data
30116      points for a good timeout estimate. Implements proposal 151.
30117      We are especially looking for reports (good and bad) from users with
30118      both EDGE and broadband connections that can move from broadband
30119      to EDGE and find out if the build-time data in the .tor/state gets
30120      reset without loss of Tor usability. You should also see a notice
30121      log message telling you that Tor has reset its timeout.
30122    - Directory authorities can now vote on arbitrary integer values as
30123      part of the consensus process. This is designed to help set
30124      network-wide parameters. Implements proposal 167.
30125    - Tor now reads the "circwindow" parameter out of the consensus,
30126      and uses that value for its circuit package window rather than the
30127      default of 1000 cells. Begins the implementation of proposal 168.
30128
30129  o Major bugfixes:
30130    - Fix a remotely triggerable memory leak when a consensus document
30131      contains more than one signature from the same voter. Bugfix on
30132      0.2.0.3-alpha.
30133
30134  o Minor bugfixes:
30135    - Fix an extremely rare infinite recursion bug that could occur if
30136      we tried to log a message after shutting down the log subsystem.
30137      Found by Matt Edman. Bugfix on 0.2.0.16-alpha.
30138    - Fix parsing for memory or time units given without a space between
30139      the number and the unit. Bugfix on 0.2.2.1-alpha; fixes bug 1076.
30140    - A networkstatus vote must contain exactly one signature. Spec
30141      conformance issue. Bugfix on 0.2.0.3-alpha.
30142    - Fix an obscure bug where hidden services on 64-bit big-endian
30143      systems might mis-read the timestamp in v3 introduce cells, and
30144      refuse to connect back to the client. Discovered by "rotor".
30145      Bugfix on 0.2.1.6-alpha.
30146    - We were triggering a CLOCK_SKEW controller status event whenever
30147      we connect via the v2 connection protocol to any relay that has
30148      a wrong clock. Instead, we should only inform the controller when
30149      it's a trusted authority that claims our clock is wrong. Bugfix
30150      on 0.2.0.20-rc; starts to fix bug 1074. Reported by SwissTorExit.
30151    - We were telling the controller about CHECKING_REACHABILITY and
30152      REACHABILITY_FAILED status events whenever we launch a testing
30153      circuit or notice that one has failed. Instead, only tell the
30154      controller when we want to inform the user of overall success or
30155      overall failure. Bugfix on 0.1.2.6-alpha. Fixes bug 1075. Reported
30156      by SwissTorExit.
30157    - Don't warn when we're using a circuit that ends with a node
30158      excluded in ExcludeExitNodes, but the circuit is not used to access
30159      the outside world. This should help fix bug 1090, but more problems
30160      remain. Bugfix on 0.2.1.6-alpha.
30161    - Work around a small memory leak in some versions of OpenSSL that
30162      stopped the memory used by the hostname TLS extension from being
30163      freed.
30164    - Make our 'torify' script more portable; if we have only one of
30165      'torsocks' or 'tsocks' installed, don't complain to the user;
30166      and explain our warning about tsocks better.
30167
30168  o Minor features:
30169    - Add a "getinfo status/accepted-server-descriptor" controller
30170      command, which is the recommended way for controllers to learn
30171      whether our server descriptor has been successfully received by at
30172      least on directory authority. Un-recommend good-server-descriptor
30173      getinfo and status events until we have a better design for them.
30174    - Update to the "September 4 2009" ip-to-country file.
30175
30176
30177Changes in version 0.2.2.1-alpha - 2009-08-26
30178  Tor 0.2.2.1-alpha disables ".exit" address notation by default, allows
30179  Tor clients to bootstrap on networks where only port 80 is reachable,
30180  makes it more straightforward to support hardware crypto accelerators,
30181  and starts the groundwork for gathering stats safely at relays.
30182
30183  o Security fixes:
30184    - Start the process of disabling ".exit" address notation, since it
30185      can be used for a variety of esoteric application-level attacks
30186      on users. To reenable it, set "AllowDotExit 1" in your torrc. Fix
30187      on 0.0.9rc5.
30188
30189  o New directory authorities:
30190    - Set up urras (run by Jacob Appelbaum) as the seventh v3 directory
30191      authority.
30192
30193  o Major features:
30194    - New AccelName and AccelDir options add support for dynamic OpenSSL
30195      hardware crypto acceleration engines.
30196    - Tor now supports tunneling all of its outgoing connections over
30197      a SOCKS proxy, using the SOCKS4Proxy and/or SOCKS5Proxy
30198      configuration options. Code by Christopher Davis.
30199
30200  o Major bugfixes:
30201    - Send circuit or stream sendme cells when our window has decreased
30202      by 100 cells, not when it has decreased by 101 cells. Bug uncovered
30203      by Karsten when testing the "reduce circuit window" performance
30204      patch. Bugfix on the 54th commit on Tor -- from July 2002,
30205      before the release of Tor 0.0.0. This is the new winner of the
30206      oldest-bug prize.
30207
30208  o New options for gathering stats safely:
30209    - Directory mirrors that set "DirReqStatistics 1" write statistics
30210      about directory requests to disk every 24 hours. As compared to the
30211      --enable-geoip-stats flag in 0.2.1.x, there are a few improvements:
30212      1) stats are written to disk exactly every 24 hours; 2) estimated
30213      shares of v2 and v3 requests are determined as mean values, not at
30214      the end of a measurement period; 3) unresolved requests are listed
30215      with country code '??'; 4) directories also measure download times.
30216    - Exit nodes that set "ExitPortStatistics 1" write statistics on the
30217      number of exit streams and transferred bytes per port to disk every
30218      24 hours.
30219    - Relays that set "CellStatistics 1" write statistics on how long
30220      cells spend in their circuit queues to disk every 24 hours.
30221    - Entry nodes that set "EntryStatistics 1" write statistics on the
30222      rough number and origins of connecting clients to disk every 24
30223      hours.
30224    - Relays that write any of the above statistics to disk and set
30225      "ExtraInfoStatistics 1" include the past 24 hours of statistics in
30226      their extra-info documents.
30227
30228  o Minor features:
30229    - New --digests command-line switch to output the digests of the
30230      source files Tor was built with.
30231    - The "torify" script now uses torsocks where available.
30232    - The memarea code now uses a sentinel value at the end of each area
30233      to make sure nothing writes beyond the end of an area. This might
30234      help debug some conceivable causes of bug 930.
30235    - Time and memory units in the configuration file can now be set to
30236      fractional units. For example, "2.5 GB" is now a valid value for
30237      AccountingMax.
30238    - Certain Tor clients (such as those behind check.torproject.org) may
30239      want to fetch the consensus in an extra early manner. To enable this
30240      a user may now set FetchDirInfoExtraEarly to 1. This also depends on
30241      setting FetchDirInfoEarly to 1. Previous behavior will stay the same
30242      as only certain clients who must have this information sooner should
30243      set this option.
30244    - Instead of adding the svn revision to the Tor version string, report
30245      the git commit (when we're building from a git checkout).
30246
30247  o Minor bugfixes:
30248    - If any of the v3 certs we download are unparseable, we should
30249      actually notice the failure so we don't retry indefinitely. Bugfix
30250      on 0.2.0.x; reported by "rotator".
30251    - If the cached cert file is unparseable, warn but don't exit.
30252    - Fix possible segmentation fault on directory authorities. Bugfix on
30253      0.2.1.14-rc.
30254    - When Tor fails to parse a descriptor of any kind, dump it to disk.
30255      Might help diagnosing bug 1051.
30256
30257  o Deprecated and removed features:
30258    - The controller no longer accepts the old obsolete "addr-mappings/"
30259      or "unregistered-servers-" GETINFO values.
30260    - Hidden services no longer publish version 0 descriptors, and clients
30261      do not request or use version 0 descriptors. However, the old hidden
30262      service authorities still accept and serve version 0 descriptors
30263      when contacted by older hidden services/clients.
30264    - The EXTENDED_EVENTS and VERBOSE_NAMES controller features are now
30265      always on; using them is necessary for correct forward-compatible
30266      controllers.
30267    - Remove support for .noconnect style addresses. Nobody was using
30268      them, and they provided another avenue for detecting Tor users
30269      via application-level web tricks.
30270
30271  o Packaging changes:
30272    - Upgrade Vidalia from 0.1.15 to 0.2.3 in the Windows and OS X
30273      installer bundles. See
30274      https://trac.vidalia-project.net/browser/vidalia/tags/vidalia-0.2.3/CHANGELOG
30275      for details of what's new in Vidalia 0.2.3.
30276    - Windows Vidalia Bundle: update Privoxy from 3.0.6 to 3.0.14-beta.
30277    - OS X Vidalia Bundle: move to Polipo 1.0.4 with Tor specific
30278      configuration file, rather than the old Privoxy.
30279    - OS X Vidalia Bundle: Vidalia, Tor, and Polipo are compiled as
30280      x86-only for better compatibility with OS X 10.6, aka Snow Leopard.
30281    - OS X Tor Expert Bundle: Tor is compiled as x86-only for
30282      better compatibility with OS X 10.6, aka Snow Leopard.
30283    - OS X Vidalia Bundle: The multi-package installer is now replaced
30284      by a simple drag and drop to the /Applications folder. This change
30285      occurred with the upgrade to Vidalia 0.2.3.
30286
30287
30288Changes in version 0.2.1.19 - 2009-07-28
30289  Tor 0.2.1.19 fixes a major bug with accessing and providing hidden
30290  services on Tor 0.2.1.3-alpha through 0.2.1.18.
30291
30292  o Major bugfixes:
30293    - Make accessing hidden services on 0.2.1.x work right again.
30294      Bugfix on 0.2.1.3-alpha; workaround for bug 1038. Diagnosis and
30295      part of patch provided by "optimist".
30296
30297  o Minor features:
30298    - When a relay/bridge is writing out its identity key fingerprint to
30299      the "fingerprint" file and to its logs, write it without spaces. Now
30300      it will look like the fingerprints in our bridges documentation,
30301      and confuse fewer users.
30302
30303  o Minor bugfixes:
30304    - Relays no longer publish a new server descriptor if they change
30305      their MaxAdvertisedBandwidth config option but it doesn't end up
30306      changing their advertised bandwidth numbers. Bugfix on 0.2.0.28-rc;
30307      fixes bug 1026. Patch from Sebastian.
30308    - Avoid leaking memory every time we get a create cell but we have
30309      so many already queued that we refuse it. Bugfix on 0.2.0.19-alpha;
30310      fixes bug 1034. Reported by BarkerJr.
30311
30312
30313Changes in version 0.2.1.18 - 2009-07-24
30314  Tor 0.2.1.18 lays the foundations for performance improvements,
30315  adds status events to help users diagnose bootstrap problems, adds
30316  optional authentication/authorization for hidden services, fixes a
30317  variety of potential anonymity problems, and includes a huge pile of
30318  other features and bug fixes.
30319
30320  o Build fixes:
30321    - Add LIBS=-lrt to Makefile.am so the Tor RPMs use a static libevent.
30322
30323
30324Changes in version 0.2.1.17-rc - 2009-07-07
30325  Tor 0.2.1.17-rc marks the fourth -- and hopefully last -- release
30326  candidate for the 0.2.1.x series. It lays the groundwork for further
30327  client performance improvements, and also fixes a big bug with directory
30328  authorities that were causing them to assign Guard and Stable flags
30329  poorly.
30330
30331  The Windows bundles also finally include the geoip database that we
30332  thought we'd been shipping since 0.2.0.x (oops), and the OS X bundles
30333  should actually install Torbutton rather than giving you a cryptic
30334  failure message (oops).
30335
30336  o Major features:
30337    - Clients now use the bandwidth values in the consensus, rather than
30338      the bandwidth values in each relay descriptor. This approach opens
30339      the door to more accurate bandwidth estimates once the directory
30340      authorities start doing active measurements. Implements more of
30341      proposal 141.
30342
30343  o Major bugfixes:
30344    - When Tor clients restart after 1-5 days, they discard all their
30345      cached descriptors as too old, but they still use the cached
30346      consensus document. This approach is good for robustness, but
30347      bad for performance: since they don't know any bandwidths, they
30348      end up choosing at random rather than weighting their choice by
30349      speed. Fixed by the above feature of putting bandwidths in the
30350      consensus. Bugfix on 0.2.0.x.
30351    - Directory authorities were neglecting to mark relays down in their
30352      internal histories if the relays fall off the routerlist without
30353      ever being found unreachable. So there were relays in the histories
30354      that haven't been seen for eight months, and are listed as being
30355      up for eight months. This wreaked havoc on the "median wfu"
30356      and "median mtbf" calculations, in turn making Guard and Stable
30357      flags very wrong, hurting network performance. Fixes bugs 696 and
30358      969. Bugfix on 0.2.0.6-alpha.
30359
30360  o Minor bugfixes:
30361    - Serve the DirPortFrontPage page even when we have been approaching
30362      our quotas recently. Fixes bug 1013; bugfix on 0.2.1.8-alpha.
30363    - The control port would close the connection before flushing long
30364      replies, such as the network consensus, if a QUIT command was issued
30365      before the reply had completed. Now, the control port flushes all
30366      pending replies before closing the connection. Also fixed a spurious
30367      warning when a QUIT command is issued after a malformed or rejected
30368      AUTHENTICATE command, but before the connection was closed. Patch
30369      by Marcus Griep. Bugfix on 0.2.0.x; fixes bugs 1015 and 1016.
30370    - When we can't find an intro key for a v2 hidden service descriptor,
30371      fall back to the v0 hidden service descriptor and log a bug message.
30372      Workaround for bug 1024.
30373    - Fix a log message that did not respect the SafeLogging option.
30374      Resolves bug 1027.
30375
30376  o Minor features:
30377    - If we're a relay and we change our IP address, be more verbose
30378      about the reason that made us change. Should help track down
30379      further bugs for relays on dynamic IP addresses.
30380
30381
30382Changes in version 0.2.0.35 - 2009-06-24
30383  o Security fix:
30384    - Avoid crashing in the presence of certain malformed descriptors.
30385      Found by lark, and by automated fuzzing.
30386    - Fix an edge case where a malicious exit relay could convince a
30387      controller that the client's DNS question resolves to an internal IP
30388      address. Bug found and fixed by "optimist"; bugfix on 0.1.2.8-beta.
30389
30390  o Major bugfixes:
30391    - Finally fix the bug where dynamic-IP relays disappear when their
30392      IP address changes: directory mirrors were mistakenly telling
30393      them their old address if they asked via begin_dir, so they
30394      never got an accurate answer about their new address, so they
30395      just vanished after a day. For belt-and-suspenders, relays that
30396      don't set Address in their config now avoid using begin_dir for
30397      all direct connections. Should fix bugs 827, 883, and 900.
30398    - Fix a timing-dependent, allocator-dependent, DNS-related crash bug
30399      that would occur on some exit nodes when DNS failures and timeouts
30400      occurred in certain patterns. Fix for bug 957.
30401
30402  o Minor bugfixes:
30403    - When starting with a cache over a few days old, do not leak
30404      memory for the obsolete router descriptors in it. Bugfix on
30405      0.2.0.33; fixes bug 672.
30406    - Hidden service clients didn't use a cached service descriptor that
30407      was older than 15 minutes, but wouldn't fetch a new one either,
30408      because there was already one in the cache. Now, fetch a v2
30409      descriptor unless the same descriptor was added to the cache within
30410      the last 15 minutes. Fixes bug 997; reported by Marcus Griep.
30411
30412
30413Changes in version 0.2.1.16-rc - 2009-06-20
30414  Tor 0.2.1.16-rc speeds up performance for fast exit relays, and fixes
30415  a bunch of minor bugs.
30416
30417  o Security fixes:
30418    - Fix an edge case where a malicious exit relay could convince a
30419      controller that the client's DNS question resolves to an internal IP
30420      address. Bug found and fixed by "optimist"; bugfix on 0.1.2.8-beta.
30421
30422  o Major performance improvements (on 0.2.0.x):
30423    - Disable and refactor some debugging checks that forced a linear scan
30424      over the whole server-side DNS cache. These accounted for over 50%
30425      of CPU time on a relatively busy exit node's gprof profile. Found
30426      by Jacob.
30427    - Disable some debugging checks that appeared in exit node profile
30428      data.
30429
30430  o Minor features:
30431    - Update to the "June 3 2009" ip-to-country file.
30432    - Do not have tor-resolve automatically refuse all .onion addresses;
30433      if AutomapHostsOnResolve is set in your torrc, this will work fine.
30434
30435  o Minor bugfixes (on 0.2.0.x):
30436    - Log correct error messages for DNS-related network errors on
30437      Windows.
30438    - Fix a race condition that could cause crashes or memory corruption
30439      when running as a server with a controller listening for log
30440      messages.
30441    - Avoid crashing when we have a policy specified in a DirPolicy or
30442      SocksPolicy or ReachableAddresses option with ports set on it,
30443      and we re-load the policy. May fix bug 996.
30444    - Hidden service clients didn't use a cached service descriptor that
30445      was older than 15 minutes, but wouldn't fetch a new one either,
30446      because there was already one in the cache. Now, fetch a v2
30447      descriptor unless the same descriptor was added to the cache within
30448      the last 15 minutes. Fixes bug 997; reported by Marcus Griep.
30449
30450  o Minor bugfixes (on 0.2.1.x):
30451    - Don't warn users about low port and hibernation mix when they
30452      provide a *ListenAddress directive to fix that. Bugfix on
30453      0.2.1.15-rc.
30454    - When switching back and forth between bridge mode, do not start
30455      gathering GeoIP data until two hours have passed.
30456    - Do not complain that the user has requested an excluded node as
30457      an exit when the node is not really an exit. This could happen
30458      because the circuit was for testing, or an introduction point.
30459      Fix for bug 984.
30460
30461
30462Changes in version 0.2.1.15-rc - 2009-05-25
30463  Tor 0.2.1.15-rc marks the second release candidate for the 0.2.1.x
30464  series. It fixes a major bug on fast exit relays, as well as a variety
30465  of more minor bugs.
30466
30467  o Major bugfixes (on 0.2.0.x):
30468    - Fix a timing-dependent, allocator-dependent, DNS-related crash bug
30469      that would occur on some exit nodes when DNS failures and timeouts
30470      occurred in certain patterns. Fix for bug 957.
30471
30472  o Minor bugfixes (on 0.2.0.x):
30473    - Actually return -1 in the error case for read_bandwidth_usage().
30474      Harmless bug, since we currently don't care about the return value
30475      anywhere. Bugfix on 0.2.0.9-alpha.
30476    - Provide a more useful log message if bug 977 (related to buffer
30477      freelists) ever reappears, and do not crash right away.
30478    - Fix an assertion failure on 64-bit platforms when we allocated
30479      memory right up to the end of a memarea, then realigned the memory
30480      one step beyond the end. Fixes a possible cause of bug 930.
30481    - Protect the count of open sockets with a mutex, so we can't
30482      corrupt it when two threads are closing or opening sockets at once.
30483      Fix for bug 939. Bugfix on 0.2.0.1-alpha.
30484    - Don't allow a bridge to publish its router descriptor to a
30485      non-bridge directory authority. Fixes part of bug 932.
30486    - When we change to or from being a bridge, reset our counts of
30487      client usage by country. Fixes bug 932.
30488    - Fix a bug that made stream bandwidth get misreported to the
30489      controller.
30490    - Stop using malloc_usable_size() to use more area than we had
30491      actually allocated: it was safe, but made valgrind really unhappy.
30492    - Fix a memory leak when v3 directory authorities load their keys
30493      and cert from disk. Bugfix on 0.2.0.1-alpha.
30494
30495  o Minor bugfixes (on 0.2.1.x):
30496    - Fix use of freed memory when deciding to mark a non-addable
30497      descriptor as never-downloadable. Bugfix on 0.2.1.9-alpha.
30498
30499
30500Changes in version 0.2.1.14-rc - 2009-04-12
30501  Tor 0.2.1.14-rc marks the first release candidate for the 0.2.1.x
30502  series. It begins fixing some major performance problems, and also
30503  finally addresses the bug that was causing relays on dynamic IP
30504  addresses to fall out of the directory.
30505
30506  o Major features:
30507    - Clients replace entry guards that were chosen more than a few months
30508      ago. This change should significantly improve client performance,
30509      especially once more people upgrade, since relays that have been
30510      a guard for a long time are currently overloaded.
30511
30512  o Major bugfixes (on 0.2.0):
30513    - Finally fix the bug where dynamic-IP relays disappear when their
30514      IP address changes: directory mirrors were mistakenly telling
30515      them their old address if they asked via begin_dir, so they
30516      never got an accurate answer about their new address, so they
30517      just vanished after a day. For belt-and-suspenders, relays that
30518      don't set Address in their config now avoid using begin_dir for
30519      all direct connections. Should fix bugs 827, 883, and 900.
30520    - Relays were falling out of the networkstatus consensus for
30521      part of a day if they changed their local config but the
30522      authorities discarded their new descriptor as "not sufficiently
30523      different". Now directory authorities accept a descriptor as changed
30524      if bandwidthrate or bandwidthburst changed. Partial fix for bug 962;
30525      patch by Sebastian.
30526    - Avoid crashing in the presence of certain malformed descriptors.
30527      Found by lark, and by automated fuzzing.
30528
30529  o Minor features:
30530    - When generating circuit events with verbose nicknames for
30531      controllers, try harder to look up nicknames for routers on a
30532      circuit. (Previously, we would look in the router descriptors we had
30533      for nicknames, but not in the consensus.) Partial fix for bug 941.
30534    - If the bridge config line doesn't specify a port, assume 443.
30535      This makes bridge lines a bit smaller and easier for users to
30536      understand.
30537    - Raise the minimum bandwidth to be a relay from 20000 bytes to 20480
30538      bytes (aka 20KB/s), to match our documentation. Also update
30539      directory authorities so they always assign the Fast flag to relays
30540      with 20KB/s of capacity. Now people running relays won't suddenly
30541      find themselves not seeing any use, if the network gets faster
30542      on average.
30543    - Update to the "April 3 2009" ip-to-country file.
30544
30545  o Minor bugfixes:
30546    - Avoid trying to print raw memory to the logs when we decide to
30547      give up on downloading a given relay descriptor. Bugfix on
30548      0.2.1.9-alpha.
30549    - In tor-resolve, when the Tor client to use is specified by
30550      <hostname>:<port>, actually use the specified port rather than
30551      defaulting to 9050. Bugfix on 0.2.1.6-alpha.
30552    - Make directory usage recording work again. Bugfix on 0.2.1.6-alpha.
30553    - When starting with a cache over a few days old, do not leak
30554      memory for the obsolete router descriptors in it. Bugfix on
30555      0.2.0.33.
30556    - Avoid double-free on list of successfully uploaded hidden
30557      service discriptors. Fix for bug 948. Bugfix on 0.2.1.6-alpha.
30558    - Change memarea_strndup() implementation to work even when
30559      duplicating a string at the end of a page. This bug was
30560      harmless for now, but could have meant crashes later. Fix by
30561      lark. Bugfix on 0.2.1.1-alpha.
30562    - Limit uploaded directory documents to be 16M rather than 500K.
30563      The directory authorities were refusing v3 consensus votes from
30564      other authorities, since the votes are now 504K. Fixes bug 959;
30565      bugfix on 0.0.2pre17 (where we raised it from 50K to 500K ;).
30566    - Directory authorities should never send a 503 "busy" response to
30567      requests for votes or keys. Bugfix on 0.2.0.8-alpha; exposed by
30568      bug 959.
30569
30570
30571Changes in version 0.2.1.13-alpha - 2009-03-09
30572  Tor 0.2.1.13-alpha includes another big pile of minor bugfixes and
30573  cleanups. We're finally getting close to a release candidate.
30574
30575  o Major bugfixes:
30576    - Correctly update the list of which countries we exclude as
30577      exits, when the GeoIP file is loaded or reloaded. Diagnosed by
30578      lark. Bugfix on 0.2.1.6-alpha.
30579
30580  o Minor bugfixes (on 0.2.0.x and earlier):
30581    - Automatically detect MacOSX versions earlier than 10.4.0, and
30582      disable kqueue from inside Tor when running with these versions.
30583      We previously did this from the startup script, but that was no
30584      help to people who didn't use the startup script. Resolves bug 863.
30585    - When we had picked an exit node for a connection, but marked it as
30586      "optional", and it turned out we had no onion key for the exit,
30587      stop wanting that exit and try again. This situation may not
30588      be possible now, but will probably become feasible with proposal
30589      158. Spotted by rovv. Fixes another case of bug 752.
30590    - Clients no longer cache certificates for authorities they do not
30591      recognize. Bugfix on 0.2.0.9-alpha.
30592    - When we can't transmit a DNS request due to a network error, retry
30593      it after a while, and eventually transmit a failing response to
30594      the RESOLVED cell. Bugfix on 0.1.2.5-alpha.
30595    - If the controller claimed responsibility for a stream, but that
30596      stream never finished making its connection, it would live
30597      forever in circuit_wait state. Now we close it after SocksTimeout
30598      seconds. Bugfix on 0.1.2.7-alpha; reported by Mike Perry.
30599    - Drop begin cells to a hidden service if they come from the middle
30600      of a circuit. Patch from lark.
30601    - When we erroneously receive two EXTEND cells for the same circuit
30602      ID on the same connection, drop the second. Patch from lark.
30603    - Fix a crash that occurs on exit nodes when a nameserver request
30604      timed out. Bugfix on 0.1.2.1-alpha; our CLEAR debugging code had
30605      been suppressing the bug since 0.1.2.10-alpha. Partial fix for
30606      bug 929.
30607    - Do not assume that a stack-allocated character array will be
30608      64-bit aligned on platforms that demand that uint64_t access is
30609      aligned. Possible fix for bug 604.
30610    - Parse dates and IPv4 addresses in a locale- and libc-independent
30611      manner, to avoid platform-dependent behavior on malformed input.
30612    - Build correctly when configured to build outside the main source
30613      path. Patch from Michael Gold.
30614    - We were already rejecting relay begin cells with destination port
30615      of 0. Now also reject extend cells with destination port or address
30616      of 0. Suggested by lark.
30617
30618  o Minor bugfixes (on 0.2.1.x):
30619    - Don't re-extend introduction circuits if we ran out of RELAY_EARLY
30620      cells. Bugfix on 0.2.1.3-alpha. Fixes more of bug 878.
30621    - If we're an exit node, scrub the IP address to which we are exiting
30622      in the logs. Bugfix on 0.2.1.8-alpha.
30623
30624  o Minor features:
30625    - On Linux, use the prctl call to re-enable core dumps when the user
30626      is option is set.
30627    - New controller event NEWCONSENSUS that lists the networkstatus
30628      lines for every recommended relay. Now controllers like Torflow
30629      can keep up-to-date on which relays they should be using.
30630    - Update to the "February 26 2009" ip-to-country file.
30631
30632
30633Changes in version 0.2.0.34 - 2009-02-08
30634  Tor 0.2.0.34 features several more security-related fixes. You should
30635  upgrade, especially if you run an exit relay (remote crash) or a
30636  directory authority (remote infinite loop), or you're on an older
30637  (pre-XP) or not-recently-patched Windows (remote exploit).
30638
30639  This release marks end-of-life for Tor 0.1.2.x. Those Tor versions
30640  have many known flaws, and nobody should be using them. You should
30641  upgrade. If you're using a Linux or BSD and its packages are obsolete,
30642  stop using those packages and upgrade anyway.
30643
30644  o Security fixes:
30645    - Fix an infinite-loop bug on handling corrupt votes under certain
30646      circumstances. Bugfix on 0.2.0.8-alpha.
30647    - Fix a temporary DoS vulnerability that could be performed by
30648      a directory mirror. Bugfix on 0.2.0.9-alpha; reported by lark.
30649    - Avoid a potential crash on exit nodes when processing malformed
30650      input. Remote DoS opportunity. Bugfix on 0.2.0.33.
30651    - Do not accept incomplete ipv4 addresses (like 192.168.0) as valid.
30652      Spec conformance issue. Bugfix on Tor 0.0.2pre27.
30653
30654  o Minor bugfixes:
30655    - Fix compilation on systems where time_t is a 64-bit integer.
30656      Patch from Matthias Drochner.
30657    - Don't consider expiring already-closed client connections. Fixes
30658      bug 893. Bugfix on 0.0.2pre20.
30659
30660
30661Changes in version 0.2.1.12-alpha - 2009-02-08
30662  Tor 0.2.1.12-alpha features several more security-related fixes. You
30663  should upgrade, especially if you run an exit relay (remote crash) or
30664  a directory authority (remote infinite loop), or you're on an older
30665  (pre-XP) or not-recently-patched Windows (remote exploit). It also
30666  includes a big pile of minor bugfixes and cleanups.
30667
30668  o Security fixes:
30669    - Fix an infinite-loop bug on handling corrupt votes under certain
30670      circumstances. Bugfix on 0.2.0.8-alpha.
30671    - Fix a temporary DoS vulnerability that could be performed by
30672      a directory mirror. Bugfix on 0.2.0.9-alpha; reported by lark.
30673    - Avoid a potential crash on exit nodes when processing malformed
30674      input. Remote DoS opportunity. Bugfix on 0.2.1.7-alpha.
30675
30676  o Minor bugfixes:
30677    - Let controllers actually ask for the "clients_seen" event for
30678      getting usage summaries on bridge relays. Bugfix on 0.2.1.10-alpha;
30679      reported by Matt Edman.
30680    - Fix a compile warning on OSX Panther. Fixes bug 913; bugfix against
30681      0.2.1.11-alpha.
30682    - Fix a bug in address parsing that was preventing bridges or hidden
30683      service targets from being at IPv6 addresses.
30684    - Solve a bug that kept hardware crypto acceleration from getting
30685      enabled when accounting was turned on. Fixes bug 907. Bugfix on
30686      0.0.9pre6.
30687    - Remove a bash-ism from configure.in to build properly on non-Linux
30688      platforms. Bugfix on 0.2.1.1-alpha.
30689    - Fix code so authorities _actually_ send back X-Descriptor-Not-New
30690      headers. Bugfix on 0.2.0.10-alpha.
30691    - Don't consider expiring already-closed client connections. Fixes
30692      bug 893. Bugfix on 0.0.2pre20.
30693    - Fix another interesting corner-case of bug 891 spotted by rovv:
30694      Previously, if two hosts had different amounts of clock drift, and
30695      one of them created a new connection with just the wrong timing,
30696      the other might decide to deprecate the new connection erroneously.
30697      Bugfix on 0.1.1.13-alpha.
30698    - Resolve a very rare crash bug that could occur when the user forced
30699      a nameserver reconfiguration during the middle of a nameserver
30700      probe. Fixes bug 526. Bugfix on 0.1.2.1-alpha.
30701    - Support changing value of ServerDNSRandomizeCase during SIGHUP.
30702      Bugfix on 0.2.1.7-alpha.
30703    - If we're using bridges and our network goes away, be more willing
30704      to forgive our bridges and try again when we get an application
30705      request. Bugfix on 0.2.0.x.
30706
30707  o Minor features:
30708    - Support platforms where time_t is 64 bits long. (Congratulations,
30709      NetBSD!) Patch from Matthias Drochner.
30710    - Add a 'getinfo status/clients-seen' controller command, in case
30711      controllers want to hear clients_seen events but connect late.
30712
30713  o Build changes:
30714    - Disable GCC's strict alias optimization by default, to avoid the
30715      likelihood of its introducing subtle bugs whenever our code violates
30716      the letter of C99's alias rules.
30717
30718
30719Changes in version 0.2.0.33 - 2009-01-21
30720  Tor 0.2.0.33 fixes a variety of bugs that were making relays less
30721  useful to users. It also finally fixes a bug where a relay or client
30722  that's been off for many days would take a long time to bootstrap.
30723
30724  This update also fixes an important security-related bug reported by
30725  Ilja van Sprundel. You should upgrade. (We'll send out more details
30726  about the bug once people have had some time to upgrade.)
30727
30728  o Security fixes:
30729    - Fix a heap-corruption bug that may be remotely triggerable on
30730      some platforms. Reported by Ilja van Sprundel.
30731
30732  o Major bugfixes:
30733    - When a stream at an exit relay is in state "resolving" or
30734      "connecting" and it receives an "end" relay cell, the exit relay
30735      would silently ignore the end cell and not close the stream. If
30736      the client never closes the circuit, then the exit relay never
30737      closes the TCP connection. Bug introduced in Tor 0.1.2.1-alpha;
30738      reported by "wood".
30739    - When sending CREATED cells back for a given circuit, use a 64-bit
30740      connection ID to find the right connection, rather than an addr:port
30741      combination. Now that we can have multiple OR connections between
30742      the same ORs, it is no longer possible to use addr:port to uniquely
30743      identify a connection.
30744    - Bridge relays that had DirPort set to 0 would stop fetching
30745      descriptors shortly after startup, and then briefly resume
30746      after a new bandwidth test and/or after publishing a new bridge
30747      descriptor. Bridge users that try to bootstrap from them would
30748      get a recent networkstatus but would get descriptors from up to
30749      18 hours earlier, meaning most of the descriptors were obsolete
30750      already. Reported by Tas; bugfix on 0.2.0.13-alpha.
30751    - Prevent bridge relays from serving their 'extrainfo' document
30752      to anybody who asks, now that extrainfo docs include potentially
30753      sensitive aggregated client geoip summaries. Bugfix on
30754      0.2.0.13-alpha.
30755    - If the cached networkstatus consensus is more than five days old,
30756      discard it rather than trying to use it. In theory it could be
30757      useful because it lists alternate directory mirrors, but in practice
30758      it just means we spend many minutes trying directory mirrors that
30759      are long gone from the network. Also discard router descriptors as
30760      we load them if they are more than five days old, since the onion
30761      key is probably wrong by now. Bugfix on 0.2.0.x. Fixes bug 887.
30762
30763  o Minor bugfixes:
30764    - Do not mark smartlist_bsearch_idx() function as ATTR_PURE. This bug
30765      could make gcc generate non-functional binary search code. Bugfix
30766      on 0.2.0.10-alpha.
30767    - Build correctly on platforms without socklen_t.
30768    - Compile without warnings on solaris.
30769    - Avoid potential crash on internal error during signature collection.
30770      Fixes bug 864. Patch from rovv.
30771    - Correct handling of possible malformed authority signing key
30772      certificates with internal signature types. Fixes bug 880.
30773      Bugfix on 0.2.0.3-alpha.
30774    - Fix a hard-to-trigger resource leak when logging credential status.
30775      CID 349.
30776    - When we can't initialize DNS because the network is down, do not
30777      automatically stop Tor from starting. Instead, we retry failed
30778      dns_init() every 10 minutes, and change the exit policy to reject
30779      *:* until one succeeds. Fixes bug 691.
30780    - Use 64 bits instead of 32 bits for connection identifiers used with
30781      the controller protocol, to greatly reduce risk of identifier reuse.
30782    - When we're choosing an exit node for a circuit, and we have
30783      no pending streams, choose a good general exit rather than one that
30784      supports "all the pending streams". Bugfix on 0.1.1.x. Fix by rovv.
30785    - Fix another case of assuming, when a specific exit is requested,
30786      that we know more than the user about what hosts it allows.
30787      Fixes one case of bug 752. Patch from rovv.
30788    - Clip the MaxCircuitDirtiness config option to a minimum of 10
30789      seconds. Warn the user if lower values are given in the
30790      configuration. Bugfix on 0.1.0.1-rc. Patch by Sebastian.
30791    - Clip the CircuitBuildTimeout to a minimum of 30 seconds. Warn the
30792      user if lower values are given in the configuration. Bugfix on
30793      0.1.1.17-rc. Patch by Sebastian.
30794    - Fix a memory leak when we decline to add a v2 rendezvous descriptor to
30795      the cache because we already had a v0 descriptor with the same ID.
30796      Bugfix on 0.2.0.18-alpha.
30797    - Fix a race condition when freeing keys shared between main thread
30798      and CPU workers that could result in a memory leak. Bugfix on
30799      0.1.0.1-rc. Fixes bug 889.
30800    - Send a valid END cell back when a client tries to connect to a
30801      nonexistent hidden service port. Bugfix on 0.1.2.15. Fixes bug
30802      840. Patch from rovv.
30803    - Check which hops rendezvous stream cells are associated with to
30804      prevent possible guess-the-streamid injection attacks from
30805      intermediate hops. Fixes another case of bug 446. Based on patch
30806      from rovv.
30807    - If a broken client asks a non-exit router to connect somewhere,
30808      do not even do the DNS lookup before rejecting the connection.
30809      Fixes another case of bug 619. Patch from rovv.
30810    - When a relay gets a create cell it can't decrypt (e.g. because it's
30811      using the wrong onion key), we were dropping it and letting the
30812      client time out. Now actually answer with a destroy cell. Fixes
30813      bug 904. Bugfix on 0.0.2pre8.
30814
30815  o Minor bugfixes (hidden services):
30816    - Do not throw away existing introduction points on SIGHUP. Bugfix on
30817      0.0.6pre1. Patch by Karsten. Fixes bug 874.
30818
30819  o Minor features:
30820    - Report the case where all signatures in a detached set are rejected
30821      differently than the case where there is an error handling the
30822      detached set.
30823    - When we realize that another process has modified our cached
30824      descriptors, print out a more useful error message rather than
30825      triggering an assertion. Fixes bug 885. Patch from Karsten.
30826    - Implement the 0x20 hack to better resist DNS poisoning: set the
30827      case on outgoing DNS requests randomly, and reject responses that do
30828      not match the case correctly. This logic can be disabled with the
30829      ServerDNSRandomizeCase setting, if you are using one of the 0.3%
30830      of servers that do not reliably preserve case in replies. See
30831      "Increased DNS Forgery Resistance through 0x20-Bit Encoding"
30832      for more info.
30833    - Check DNS replies for more matching fields to better resist DNS
30834      poisoning.
30835    - Never use OpenSSL compression: it wastes RAM and CPU trying to
30836      compress cells, which are basically all encrypted, compressed, or
30837      both.
30838
30839
30840Changes in version 0.2.1.11-alpha - 2009-01-20
30841  Tor 0.2.1.11-alpha finishes fixing the "if your Tor is off for a
30842  week it will take a long time to bootstrap again" bug. It also fixes
30843  an important security-related bug reported by Ilja van Sprundel. You
30844  should upgrade. (We'll send out more details about the bug once people
30845  have had some time to upgrade.)
30846
30847  o Security fixes:
30848    - Fix a heap-corruption bug that may be remotely triggerable on
30849      some platforms. Reported by Ilja van Sprundel.
30850
30851  o Major bugfixes:
30852    - Discard router descriptors as we load them if they are more than
30853      five days old. Otherwise if Tor is off for a long time and then
30854      starts with cached descriptors, it will try to use the onion
30855      keys in those obsolete descriptors when building circuits. Bugfix
30856      on 0.2.0.x. Fixes bug 887.
30857
30858  o Minor features:
30859    - Try to make sure that the version of Libevent we're running with
30860      is binary-compatible with the one we built with. May address bug
30861      897 and others.
30862    - Make setting ServerDNSRandomizeCase to 0 actually work. Bugfix
30863      for bug 905. Bugfix on 0.2.1.7-alpha.
30864    - Add a new --enable-local-appdata configuration switch to change
30865      the default location of the datadir on win32 from APPDATA to
30866      LOCAL_APPDATA. In the future, we should migrate to LOCAL_APPDATA
30867      entirely. Patch from coderman.
30868
30869  o Minor bugfixes:
30870    - Make outbound DNS packets respect the OutboundBindAddress setting.
30871      Fixes the bug part of bug 798. Bugfix on 0.1.2.2-alpha.
30872    - When our circuit fails at the first hop (e.g. we get a destroy
30873      cell back), avoid using that OR connection anymore, and also
30874      tell all the one-hop directory requests waiting for it that they
30875      should fail. Bugfix on 0.2.1.3-alpha.
30876    - In the torify(1) manpage, mention that tsocks will leak your
30877      DNS requests.
30878
30879
30880Changes in version 0.2.1.10-alpha - 2009-01-06
30881  Tor 0.2.1.10-alpha fixes two major bugs in bridge relays (one that
30882  would make the bridge relay not so useful if it had DirPort set to 0,
30883  and one that could let an attacker learn a little bit of information
30884  about the bridge's users), and a bug that would cause your Tor relay
30885  to ignore a circuit create request it can't decrypt (rather than reply
30886  with an error). It also fixes a wide variety of other bugs.
30887
30888  o Major bugfixes:
30889    - If the cached networkstatus consensus is more than five days old,
30890      discard it rather than trying to use it. In theory it could
30891      be useful because it lists alternate directory mirrors, but in
30892      practice it just means we spend many minutes trying directory
30893      mirrors that are long gone from the network. Helps bug 887 a bit;
30894      bugfix on 0.2.0.x.
30895    - Bridge relays that had DirPort set to 0 would stop fetching
30896      descriptors shortly after startup, and then briefly resume
30897      after a new bandwidth test and/or after publishing a new bridge
30898      descriptor. Bridge users that try to bootstrap from them would
30899      get a recent networkstatus but would get descriptors from up to
30900      18 hours earlier, meaning most of the descriptors were obsolete
30901      already. Reported by Tas; bugfix on 0.2.0.13-alpha.
30902    - Prevent bridge relays from serving their 'extrainfo' document
30903      to anybody who asks, now that extrainfo docs include potentially
30904      sensitive aggregated client geoip summaries. Bugfix on
30905      0.2.0.13-alpha.
30906
30907  o Minor features:
30908    - New controller event "clients_seen" to report a geoip-based summary
30909      of which countries we've seen clients from recently. Now controllers
30910      like Vidalia can show bridge operators that they're actually making
30911      a difference.
30912    - Build correctly against versions of OpenSSL 0.9.8 or later built
30913      without support for deprecated functions.
30914    - Update to the "December 19 2008" ip-to-country file.
30915
30916  o Minor bugfixes (on 0.2.0.x):
30917    - Authorities now vote for the Stable flag for any router whose
30918      weighted MTBF is at least 5 days, regardless of the mean MTBF.
30919    - Do not remove routers as too old if we do not have any consensus
30920      document. Bugfix on 0.2.0.7-alpha.
30921    - Do not accept incomplete ipv4 addresses (like 192.168.0) as valid.
30922      Spec conformance issue. Bugfix on Tor 0.0.2pre27.
30923    - When an exit relay resolves a stream address to a local IP address,
30924      do not just keep retrying that same exit relay over and
30925      over. Instead, just close the stream. Addresses bug 872. Bugfix
30926      on 0.2.0.32. Patch from rovv.
30927    - If a hidden service sends us an END cell, do not consider
30928      retrying the connection; just close it. Patch from rovv.
30929    - When we made bridge authorities stop serving bridge descriptors over
30930      unencrypted links, we also broke DirPort reachability testing for
30931      bridges. So bridges with a non-zero DirPort were printing spurious
30932      warns to their logs. Bugfix on 0.2.0.16-alpha. Fixes bug 709.
30933    - When a relay gets a create cell it can't decrypt (e.g. because it's
30934      using the wrong onion key), we were dropping it and letting the
30935      client time out. Now actually answer with a destroy cell. Fixes
30936      bug 904. Bugfix on 0.0.2pre8.
30937    - Squeeze 2-5% out of client performance (according to oprofile) by
30938      improving the implementation of some policy-manipulation functions.
30939
30940  o Minor bugfixes (on 0.2.1.x):
30941    - Make get_interface_address() function work properly again; stop
30942      guessing the wrong parts of our address as our address.
30943    - Do not cannibalize a circuit if we're out of RELAY_EARLY cells to
30944      send on that circuit. Otherwise we might violate the proposal-110
30945      limit. Bugfix on 0.2.1.3-alpha. Partial fix for bug 878. Diagnosis
30946      thanks to Karsten.
30947    - When we're sending non-EXTEND cells to the first hop in a circuit,
30948      for example to use an encrypted directory connection, we don't need
30949      to use RELAY_EARLY cells: the first hop knows what kind of cell
30950      it is, and nobody else can even see the cell type. Conserving
30951      RELAY_EARLY cells makes it easier to cannibalize circuits like
30952      this later.
30953    - Stop logging nameserver addresses in reverse order.
30954    - If we are retrying a directory download slowly over and over, do
30955      not automatically give up after the 254th failure. Bugfix on
30956      0.2.1.9-alpha.
30957    - Resume reporting accurate "stream end" reasons to the local control
30958      port. They were lost in the changes for Proposal 148. Bugfix on
30959      0.2.1.9-alpha.
30960
30961  o Deprecated and removed features:
30962    - The old "tor --version --version" command, which would print out
30963      the subversion "Id" of most of the source files, is now removed. It
30964      turned out to be less useful than we'd expected, and harder to
30965      maintain.
30966
30967  o Code simplifications and refactoring:
30968    - Change our header file guard macros to be less likely to conflict
30969      with system headers. Adam Langley noticed that we were conflicting
30970      with log.h on Android.
30971    - Tool-assisted documentation cleanup. Nearly every function or
30972      static variable in Tor should have its own documentation now.
30973
30974
30975Changes in version 0.2.1.9-alpha - 2008-12-25
30976  Tor 0.2.1.9-alpha fixes many more bugs, some of them security-related.
30977
30978  o New directory authorities:
30979    - gabelmoo (the authority run by Karsten Loesing) now has a new
30980      IP address.
30981
30982  o Security fixes:
30983    - Never use a connection with a mismatched address to extend a
30984      circuit, unless that connection is canonical. A canonical
30985      connection is one whose address is authenticated by the router's
30986      identity key, either in a NETINFO cell or in a router descriptor.
30987    - Avoid a possible memory corruption bug when receiving hidden service
30988      descriptors. Bugfix on 0.2.1.6-alpha.
30989
30990  o Major bugfixes:
30991    - Fix a logic error that would automatically reject all but the first
30992      configured DNS server. Bugfix on 0.2.1.5-alpha. Possible fix for
30993      part of bug 813/868. Bug spotted by coderman.
30994    - When a stream at an exit relay is in state "resolving" or
30995      "connecting" and it receives an "end" relay cell, the exit relay
30996      would silently ignore the end cell and not close the stream. If
30997      the client never closes the circuit, then the exit relay never
30998      closes the TCP connection. Bug introduced in 0.1.2.1-alpha;
30999      reported by "wood".
31000    - When we can't initialize DNS because the network is down, do not
31001      automatically stop Tor from starting. Instead, retry failed
31002      dns_init() every 10 minutes, and change the exit policy to reject
31003      *:* until one succeeds. Fixes bug 691.
31004
31005  o Minor features:
31006    - Give a better error message when an overzealous init script says
31007      "sudo -u username tor --user username". Makes Bug 882 easier for
31008      users to diagnose.
31009    - When a directory authority gives us a new guess for our IP address,
31010      log which authority we used. Hopefully this will help us debug
31011      the recent complaints about bad IP address guesses.
31012    - Detect svn revision properly when we're using git-svn.
31013    - Try not to open more than one descriptor-downloading connection
31014      to an authority at once. This should reduce load on directory
31015      authorities. Fixes bug 366.
31016    - Add cross-certification to newly generated certificates, so that
31017      a signing key is enough information to look up a certificate.
31018      Partial implementation of proposal 157.
31019    - Start serving certificates by <identity digest, signing key digest>
31020      pairs. Partial implementation of proposal 157.
31021    - Clients now never report any stream end reason except 'MISC'.
31022      Implements proposal 148.
31023    - On platforms with a maximum syslog string length, truncate syslog
31024      messages to that length ourselves, rather than relying on the
31025      system to do it for us.
31026    - Optimize out calls to time(NULL) that occur for every IO operation,
31027      or for every cell. On systems where time() is a slow syscall,
31028      this fix will be slightly helpful.
31029    - Exit servers can now answer resolve requests for ip6.arpa addresses.
31030    - When we download a descriptor that we then immediately (as
31031      a directory authority) reject, do not retry downloading it right
31032      away. Should save some bandwidth on authorities. Fix for bug
31033      888. Patch by Sebastian Hahn.
31034    - When a download gets us zero good descriptors, do not notify
31035      Tor that new directory information has arrived.
31036    - Avoid some nasty corner cases in the logic for marking connections
31037      as too old or obsolete or noncanonical for circuits. Partial
31038      bugfix on bug 891.
31039
31040  o Minor features (controller):
31041    - New CONSENSUS_ARRIVED event to note when a new consensus has
31042      been fetched and validated.
31043    - When we realize that another process has modified our cached
31044      descriptors file, print out a more useful error message rather
31045      than triggering an assertion. Fixes bug 885. Patch from Karsten.
31046    - Add an internal-use-only __ReloadTorrcOnSIGHUP option for
31047      controllers to prevent SIGHUP from reloading the
31048      configuration. Fixes bug 856.
31049
31050  o Minor bugfixes:
31051    - Resume using the correct "REASON=" stream when telling the
31052      controller why we closed a stream. Bugfix in 0.2.1.1-alpha.
31053    - When a canonical connection appears later in our internal list
31054      than a noncanonical one for a given OR ID, always use the
31055      canonical one. Bugfix on 0.2.0.12-alpha. Fixes bug 805.
31056      Spotted by rovv.
31057    - Clip the MaxCircuitDirtiness config option to a minimum of 10
31058      seconds. Warn the user if lower values are given in the
31059      configuration. Bugfix on 0.1.0.1-rc. Patch by Sebastian.
31060    - Clip the CircuitBuildTimeout to a minimum of 30 seconds. Warn the
31061      user if lower values are given in the configuration. Bugfix on
31062      0.1.1.17-rc. Patch by Sebastian.
31063    - Fix a race condition when freeing keys shared between main thread
31064      and CPU workers that could result in a memory leak. Bugfix on
31065      0.1.0.1-rc. Fixes bug 889.
31066
31067  o Minor bugfixes (hidden services):
31068    - Do not throw away existing introduction points on SIGHUP (bugfix on
31069      0.0.6pre1); also, do not stall hidden services because we're
31070      throwing away introduction points; bugfix on 0.2.1.7-alpha. Spotted
31071      by John Brooks. Patch by Karsten. Fixes bug 874.
31072    - Fix a memory leak when we decline to add a v2 rendezvous
31073      descriptor to the cache because we already had a v0 descriptor
31074      with the same ID. Bugfix on 0.2.0.18-alpha.
31075
31076  o Deprecated and removed features:
31077    - RedirectExits has been removed. It was deprecated since
31078      0.2.0.3-alpha.
31079    - Finally remove deprecated "EXTENDED_FORMAT" controller feature. It
31080      has been called EXTENDED_EVENTS since 0.1.2.4-alpha.
31081    - Cell pools are now always enabled; --disable-cell-pools is ignored.
31082
31083  o Code simplifications and refactoring:
31084    - Rename the confusing or_is_obsolete field to the more appropriate
31085      is_bad_for_new_circs, and move it to or_connection_t where it
31086      belongs.
31087    - Move edge-only flags from connection_t to edge_connection_t: not
31088      only is this better coding, but on machines of plausible alignment,
31089      it should save 4-8 bytes per connection_t. "Every little bit helps."
31090    - Rename ServerDNSAllowBrokenResolvConf to ServerDNSAllowBrokenConfig
31091      for consistency; keep old option working for backward compatibility.
31092    - Simplify the code for finding connections to use for a circuit.
31093
31094
31095Changes in version 0.2.1.8-alpha - 2008-12-08
31096  Tor 0.2.1.8-alpha fixes some crash bugs in earlier alpha releases,
31097  builds better on unusual platforms like Solaris and old OS X, and
31098  fixes a variety of other issues.
31099
31100  o Major features:
31101    - New DirPortFrontPage option that takes an html file and publishes
31102      it as "/" on the DirPort. Now relay operators can provide a
31103      disclaimer without needing to set up a separate webserver. There's
31104      a sample disclaimer in contrib/tor-exit-notice.html.
31105
31106  o Security fixes:
31107    - When the client is choosing entry guards, now it selects at most
31108      one guard from a given relay family. Otherwise we could end up with
31109      all of our entry points into the network run by the same operator.
31110      Suggested by Camilo Viecco. Fix on 0.1.1.11-alpha.
31111
31112  o Major bugfixes:
31113    - Fix a DOS opportunity during the voting signature collection process
31114      at directory authorities. Spotted by rovv. Bugfix on 0.2.0.x.
31115    - Fix a possible segfault when establishing an exit connection. Bugfix
31116      on 0.2.1.5-alpha.
31117
31118  o Minor bugfixes:
31119    - Get file locking working on win32. Bugfix on 0.2.1.6-alpha. Fixes
31120      bug 859.
31121    - Made Tor a little less aggressive about deleting expired
31122      certificates. Partial fix for bug 854.
31123    - Stop doing unaligned memory access that generated bus errors on
31124      sparc64. Bugfix on 0.2.0.10-alpha. Fix for bug 862.
31125    - Fix a crash bug when changing EntryNodes from the controller. Bugfix
31126      on 0.2.1.6-alpha. Fix for bug 867. Patched by Sebastian.
31127    - Make USR2 log-level switch take effect immediately. Bugfix on
31128      0.1.2.8-beta.
31129    - If one win32 nameserver fails to get added, continue adding the
31130      rest, and don't automatically fail.
31131    - Use fcntl() for locking when flock() is not available. Should fix
31132      compilation on Solaris. Should fix Bug 873. Bugfix on 0.2.1.6-alpha.
31133    - Do not mark smartlist_bsearch_idx() function as ATTR_PURE. This bug
31134      could make gcc generate non-functional binary search code. Bugfix
31135      on 0.2.0.10-alpha.
31136    - Build correctly on platforms without socklen_t.
31137    - Avoid potential crash on internal error during signature collection.
31138      Fixes bug 864. Patch from rovv.
31139    - Do not use C's stdio library for writing to log files. This will
31140      improve logging performance by a minute amount, and will stop
31141      leaking fds when our disk is full. Fixes bug 861.
31142    - Stop erroneous use of O_APPEND in cases where we did not in fact
31143      want to re-seek to the end of a file before every last write().
31144    - Correct handling of possible malformed authority signing key
31145      certificates with internal signature types. Fixes bug 880. Bugfix
31146      on 0.2.0.3-alpha.
31147    - Fix a hard-to-trigger resource leak when logging credential status.
31148      CID 349.
31149
31150  o Minor features:
31151    - Directory mirrors no longer fetch the v1 directory or
31152      running-routers files. They are obsolete, and nobody asks for them
31153      anymore. This is the first step to making v1 authorities obsolete.
31154
31155  o Minor features (controller):
31156    - Return circuit purposes in response to GETINFO circuit-status. Fixes
31157      bug 858.
31158
31159
31160Changes in version 0.2.0.32 - 2008-11-20
31161  Tor 0.2.0.32 fixes a major security problem in Debian and Ubuntu
31162  packages (and maybe other packages) noticed by Theo de Raadt, fixes
31163  a smaller security flaw that might allow an attacker to access local
31164  services, further improves hidden service performance, and fixes a
31165  variety of other issues.
31166
31167  o Security fixes:
31168    - The "User" and "Group" config options did not clear the
31169      supplementary group entries for the Tor process. The "User" option
31170      is now more robust, and we now set the groups to the specified
31171      user's primary group. The "Group" option is now ignored. For more
31172      detailed logging on credential switching, set CREDENTIAL_LOG_LEVEL
31173      in common/compat.c to LOG_NOTICE or higher. Patch by Jacob Appelbaum
31174      and Steven Murdoch. Bugfix on 0.0.2pre14. Fixes bug 848 and 857.
31175    - The "ClientDNSRejectInternalAddresses" config option wasn't being
31176      consistently obeyed: if an exit relay refuses a stream because its
31177      exit policy doesn't allow it, we would remember what IP address
31178      the relay said the destination address resolves to, even if it's
31179      an internal IP address. Bugfix on 0.2.0.7-alpha; patch by rovv.
31180
31181  o Major bugfixes:
31182    - Fix a DOS opportunity during the voting signature collection process
31183      at directory authorities. Spotted by rovv. Bugfix on 0.2.0.x.
31184
31185  o Major bugfixes (hidden services):
31186    - When fetching v0 and v2 rendezvous service descriptors in parallel,
31187      we were failing the whole hidden service request when the v0
31188      descriptor fetch fails, even if the v2 fetch is still pending and
31189      might succeed. Similarly, if the last v2 fetch fails, we were
31190      failing the whole hidden service request even if a v0 fetch is
31191      still pending. Fixes bug 814. Bugfix on 0.2.0.10-alpha.
31192    - When extending a circuit to a hidden service directory to upload a
31193      rendezvous descriptor using a BEGIN_DIR cell, almost 1/6 of all
31194      requests failed, because the router descriptor has not been
31195      downloaded yet. In these cases, do not attempt to upload the
31196      rendezvous descriptor, but wait until the router descriptor is
31197      downloaded and retry. Likewise, do not attempt to fetch a rendezvous
31198      descriptor from a hidden service directory for which the router
31199      descriptor has not yet been downloaded. Fixes bug 767. Bugfix
31200      on 0.2.0.10-alpha.
31201
31202  o Minor bugfixes:
31203    - Fix several infrequent memory leaks spotted by Coverity.
31204    - When testing for libevent functions, set the LDFLAGS variable
31205      correctly. Found by Riastradh.
31206    - Avoid a bug where the FastFirstHopPK 0 option would keep Tor from
31207      bootstrapping with tunneled directory connections. Bugfix on
31208      0.1.2.5-alpha. Fixes bug 797. Found by Erwin Lam.
31209    - When asked to connect to A.B.exit:80, if we don't know the IP for A
31210      and we know that server B rejects most-but-not all connections to
31211      port 80, we would previously reject the connection. Now, we assume
31212      the user knows what they were asking for. Fixes bug 752. Bugfix
31213      on 0.0.9rc5. Diagnosed by BarkerJr.
31214    - If we overrun our per-second write limits a little, count this as
31215      having used up our write allocation for the second, and choke
31216      outgoing directory writes. Previously, we had only counted this when
31217      we had met our limits precisely. Fixes bug 824. Patch from by rovv.
31218      Bugfix on 0.2.0.x (??).
31219    - Remove the old v2 directory authority 'lefkada' from the default
31220      list. It has been gone for many months.
31221    - Stop doing unaligned memory access that generated bus errors on
31222      sparc64. Bugfix on 0.2.0.10-alpha. Fixes bug 862.
31223    - Make USR2 log-level switch take effect immediately. Bugfix on
31224      0.1.2.8-beta.
31225
31226  o Minor bugfixes (controller):
31227    - Make DNS resolved events into "CLOSED", not "FAILED". Bugfix on
31228      0.1.2.5-alpha. Fix by Robert Hogan. Resolves bug 807.
31229
31230
31231Changes in version 0.2.1.7-alpha - 2008-11-08
31232  Tor 0.2.1.7-alpha fixes a major security problem in Debian and Ubuntu
31233  packages (and maybe other packages) noticed by Theo de Raadt, fixes
31234  a smaller security flaw that might allow an attacker to access local
31235  services, adds better defense against DNS poisoning attacks on exit
31236  relays, further improves hidden service performance, and fixes a
31237  variety of other issues.
31238
31239  o Security fixes:
31240    - The "ClientDNSRejectInternalAddresses" config option wasn't being
31241      consistently obeyed: if an exit relay refuses a stream because its
31242      exit policy doesn't allow it, we would remember what IP address
31243      the relay said the destination address resolves to, even if it's
31244      an internal IP address. Bugfix on 0.2.0.7-alpha; patch by rovv.
31245    - The "User" and "Group" config options did not clear the
31246      supplementary group entries for the Tor process. The "User" option
31247      is now more robust, and we now set the groups to the specified
31248      user's primary group. The "Group" option is now ignored. For more
31249      detailed logging on credential switching, set CREDENTIAL_LOG_LEVEL
31250      in common/compat.c to LOG_NOTICE or higher. Patch by Jacob Appelbaum
31251      and Steven Murdoch. Bugfix on 0.0.2pre14. Fixes bug 848.
31252    - Do not use or believe expired v3 authority certificates. Patch
31253      from Karsten. Bugfix in 0.2.0.x. Fixes bug 851.
31254
31255  o Minor features:
31256    - Now NodeFamily and MyFamily config options allow spaces in
31257      identity fingerprints, so it's easier to paste them in.
31258      Suggested by Lucky Green.
31259    - Implement the 0x20 hack to better resist DNS poisoning: set the
31260      case on outgoing DNS requests randomly, and reject responses that do
31261      not match the case correctly. This logic can be disabled with the
31262      ServerDNSRandomizeCase setting, if you are using one of the 0.3%
31263      of servers that do not reliably preserve case in replies. See
31264      "Increased DNS Forgery Resistance through 0x20-Bit Encoding"
31265      for more info.
31266    - Preserve case in replies to DNSPort requests in order to support
31267      the 0x20 hack for resisting DNS poisoning attacks.
31268
31269  o Hidden service performance improvements:
31270    - When the client launches an introduction circuit, retry with a
31271      new circuit after 30 seconds rather than 60 seconds.
31272    - Launch a second client-side introduction circuit in parallel
31273      after a delay of 15 seconds (based on work by Christian Wilms).
31274    - Hidden services start out building five intro circuits rather
31275      than three, and when the first three finish they publish a service
31276      descriptor using those. Now we publish our service descriptor much
31277      faster after restart.
31278
31279  o Minor bugfixes:
31280    - Minor fix in the warning messages when you're having problems
31281      bootstrapping; also, be more forgiving of bootstrap problems when
31282      we're still making incremental progress on a given bootstrap phase.
31283    - When we're choosing an exit node for a circuit, and we have
31284      no pending streams, choose a good general exit rather than one that
31285      supports "all the pending streams". Bugfix on 0.1.1.x. Fix by rovv.
31286    - Send a valid END cell back when a client tries to connect to a
31287      nonexistent hidden service port. Bugfix on 0.1.2.15. Fixes bug
31288      840. Patch from rovv.
31289    - If a broken client asks a non-exit router to connect somewhere,
31290      do not even do the DNS lookup before rejecting the connection.
31291      Fixes another case of bug 619. Patch from rovv.
31292    - Fix another case of assuming, when a specific exit is requested,
31293      that we know more than the user about what hosts it allows.
31294      Fixes another case of bug 752. Patch from rovv.
31295    - Check which hops rendezvous stream cells are associated with to
31296      prevent possible guess-the-streamid injection attacks from
31297      intermediate hops. Fixes another case of bug 446. Based on patch
31298      from rovv.
31299    - Avoid using a negative right-shift when comparing 32-bit
31300      addresses. Possible fix for bug 845 and bug 811.
31301    - Make the assert_circuit_ok() function work correctly on circuits that
31302      have already been marked for close.
31303    - Fix read-off-the-end-of-string error in unit tests when decoding
31304      introduction points.
31305    - Fix uninitialized size field for memory area allocation: may improve
31306      memory performance during directory parsing.
31307    - Treat duplicate certificate fetches as failures, so that we do
31308      not try to re-fetch an expired certificate over and over and over.
31309    - Do not say we're fetching a certificate when we'll in fact skip it
31310      because of a pending download.
31311
31312
31313Changes in version 0.2.1.6-alpha - 2008-09-30
31314  Tor 0.2.1.6-alpha further improves performance and robustness of
31315  hidden services, starts work on supporting per-country relay selection,
31316  and fixes a variety of smaller issues.
31317
31318  o Major features:
31319    - Implement proposal 121: make it possible to build hidden services
31320      that only certain clients are allowed to connect to. This is
31321      enforced at several points, so that unauthorized clients are unable
31322      to send INTRODUCE cells to the service, or even (depending on the
31323      type of authentication) to learn introduction points. This feature
31324      raises the bar for certain kinds of active attacks against hidden
31325      services. Code by Karsten Loesing.
31326    - Relays now store and serve v2 hidden service descriptors by default,
31327      i.e., the new default value for HidServDirectoryV2 is 1. This is
31328      the last step in proposal 114, which aims to make hidden service
31329      lookups more reliable.
31330    - Start work to allow node restrictions to include country codes. The
31331      syntax to exclude nodes in a country with country code XX is
31332      "ExcludeNodes {XX}". Patch from Robert Hogan. It still needs some
31333      refinement to decide what config options should take priority if
31334      you ask to both use a particular node and exclude it.
31335    - Allow ExitNodes list to include IP ranges and country codes, just
31336      like the Exclude*Nodes lists. Patch from Robert Hogan.
31337
31338  o Major bugfixes:
31339    - Fix a bug when parsing ports in tor_addr_port_parse() that caused
31340      Tor to fail to start if you had it configured to use a bridge
31341      relay. Fixes bug 809. Bugfix on 0.2.1.5-alpha.
31342    - When extending a circuit to a hidden service directory to upload a
31343      rendezvous descriptor using a BEGIN_DIR cell, almost 1/6 of all
31344      requests failed, because the router descriptor had not been
31345      downloaded yet. In these cases, we now wait until the router
31346      descriptor is downloaded, and then retry. Likewise, clients
31347      now skip over a hidden service directory if they don't yet have
31348      its router descriptor, rather than futilely requesting it and
31349      putting mysterious complaints in the logs. Fixes bug 767. Bugfix
31350      on 0.2.0.10-alpha.
31351    - When fetching v0 and v2 rendezvous service descriptors in parallel,
31352      we were failing the whole hidden service request when the v0
31353      descriptor fetch fails, even if the v2 fetch is still pending and
31354      might succeed. Similarly, if the last v2 fetch fails, we were
31355      failing the whole hidden service request even if a v0 fetch is
31356      still pending. Fixes bug 814. Bugfix on 0.2.0.10-alpha.
31357    - DNS replies need to have names matching their requests, but
31358      these names should be in the questions section, not necessarily
31359      in the answers section. Fixes bug 823. Bugfix on 0.2.1.5-alpha.
31360
31361  o Minor features:
31362    - Update to the "September 1 2008" ip-to-country file.
31363    - Allow ports 465 and 587 in the default exit policy again. We had
31364      rejected them in 0.1.0.15, because back in 2005 they were commonly
31365      misconfigured and ended up as spam targets. We hear they are better
31366      locked down these days.
31367    - Use a lockfile to make sure that two Tor processes are not
31368      simultaneously running with the same datadir.
31369    - Serve the latest v3 networkstatus consensus via the control
31370      port. Use "getinfo dir/status-vote/current/consensus" to fetch it.
31371    - Better logging about stability/reliability calculations on directory
31372      servers.
31373    - Drop the requirement to have an open dir port for storing and
31374      serving v2 hidden service descriptors.
31375    - Directory authorities now serve a /tor/dbg-stability.txt URL to
31376      help debug WFU and MTBF calculations.
31377    - Implement most of Proposal 152: allow specialized servers to permit
31378      single-hop circuits, and clients to use those servers to build
31379      single-hop circuits when using a specialized controller. Patch
31380      from Josh Albrecht. Resolves feature request 768.
31381    - Add a -p option to tor-resolve for specifying the SOCKS port: some
31382      people find host:port too confusing.
31383    - Make TrackHostExit mappings expire a while after their last use, not
31384      after their creation. Patch from Robert Hogan.
31385    - Provide circuit purposes along with circuit events to the controller.
31386
31387  o Minor bugfixes:
31388    - Fix compile on OpenBSD 4.4-current. Bugfix on 0.2.1.5-alpha.
31389      Reported by Tas.
31390    - Fixed some memory leaks -- some quite frequent, some almost
31391      impossible to trigger -- based on results from Coverity.
31392    - When testing for libevent functions, set the LDFLAGS variable
31393      correctly. Found by Riastradh.
31394    - Fix an assertion bug in parsing policy-related options; possible fix
31395      for bug 811.
31396    - Catch and report a few more bootstrapping failure cases when Tor
31397      fails to establish a TCP connection. Cleanup on 0.2.1.x.
31398    - Avoid a bug where the FastFirstHopPK 0 option would keep Tor from
31399      bootstrapping with tunneled directory connections. Bugfix on
31400      0.1.2.5-alpha. Fixes bug 797. Found by Erwin Lam.
31401    - When asked to connect to A.B.exit:80, if we don't know the IP for A
31402      and we know that server B rejects most-but-not all connections to
31403      port 80, we would previously reject the connection. Now, we assume
31404      the user knows what they were asking for. Fixes bug 752. Bugfix
31405      on 0.0.9rc5. Diagnosed by BarkerJr.
31406    - If we are not using BEGIN_DIR cells, don't attempt to contact hidden
31407      service directories if they have no advertised dir port. Bugfix
31408      on 0.2.0.10-alpha.
31409    - If we overrun our per-second write limits a little, count this as
31410      having used up our write allocation for the second, and choke
31411      outgoing directory writes. Previously, we had only counted this when
31412      we had met our limits precisely. Fixes bug 824. Patch by rovv.
31413      Bugfix on 0.2.0.x (??).
31414    - Avoid a "0 divided by 0" calculation when calculating router uptime
31415      at directory authorities. Bugfix on 0.2.0.8-alpha.
31416    - Make DNS resolved controller events into "CLOSED", not
31417      "FAILED". Bugfix on 0.1.2.5-alpha. Fix by Robert Hogan. Resolves
31418      bug 807.
31419    - Fix a bug where an unreachable relay would establish enough
31420      reachability testing circuits to do a bandwidth test -- if
31421      we already have a connection to the middle hop of the testing
31422      circuit, then it could establish the last hop by using the existing
31423      connection. Bugfix on 0.1.2.2-alpha, exposed when we made testing
31424      circuits no longer use entry guards in 0.2.1.3-alpha.
31425    - If we have correct permissions on $datadir, we complain to stdout
31426      and fail to start. But dangerous permissions on
31427      $datadir/cached-status/ would cause us to open a log and complain
31428      there. Now complain to stdout and fail to start in both cases. Fixes
31429      bug 820, reported by seeess.
31430    - Remove the old v2 directory authority 'lefkada' from the default
31431      list. It has been gone for many months.
31432
31433  o Code simplifications and refactoring:
31434    - Revise the connection_new functions so that a more typesafe variant
31435      exists. This will work better with Coverity, and let us find any
31436      actual mistakes we're making here.
31437    - Refactor unit testing logic so that dmalloc can be used sensibly
31438      with unit tests to check for memory leaks.
31439    - Move all hidden-service related fields from connection and circuit
31440      structure to substructures: this way they won't eat so much memory.
31441
31442
31443Changes in version 0.2.0.31 - 2008-09-03
31444  Tor 0.2.0.31 addresses two potential anonymity issues, starts to fix
31445  a big bug we're seeing where in rare cases traffic from one Tor stream
31446  gets mixed into another stream, and fixes a variety of smaller issues.
31447
31448  o Major bugfixes:
31449    - Make sure that two circuits can never exist on the same connection
31450      with the same circuit ID, even if one is marked for close. This
31451      is conceivably a bugfix for bug 779. Bugfix on 0.1.0.4-rc.
31452    - Relays now reject risky extend cells: if the extend cell includes
31453      a digest of all zeroes, or asks to extend back to the relay that
31454      sent the extend cell, tear down the circuit. Ideas suggested
31455      by rovv.
31456    - If not enough of our entry guards are available so we add a new
31457      one, we might use the new one even if it overlapped with the
31458      current circuit's exit relay (or its family). Anonymity bugfix
31459      pointed out by rovv.
31460
31461  o Minor bugfixes:
31462    - Recover 3-7 bytes that were wasted per memory chunk. Fixes bug
31463      794; bug spotted by rovv. Bugfix on 0.2.0.1-alpha.
31464    - Correctly detect the presence of the linux/netfilter_ipv4.h header
31465      when building against recent kernels. Bugfix on 0.1.2.1-alpha.
31466    - Pick size of default geoip filename string correctly on windows.
31467      Fixes bug 806. Bugfix on 0.2.0.30.
31468    - Make the autoconf script accept the obsolete --with-ssl-dir
31469      option as an alias for the actually-working --with-openssl-dir
31470      option. Fix the help documentation to recommend --with-openssl-dir.
31471      Based on a patch by "Dave". Bugfix on 0.2.0.1-alpha.
31472    - When using the TransPort option on OpenBSD, and using the User
31473      option to change UID and drop privileges, make sure to open
31474      /dev/pf before dropping privileges. Fixes bug 782. Patch from
31475      Christopher Davis. Bugfix on 0.1.2.1-alpha.
31476    - Try to attach connections immediately upon receiving a RENDEZVOUS2
31477      or RENDEZVOUS_ESTABLISHED cell. This can save a second or two
31478      on the client side when connecting to a hidden service. Bugfix
31479      on 0.0.6pre1. Found and fixed by Christian Wilms; resolves bug 743.
31480    - When closing an application-side connection because its circuit is
31481      getting torn down, generate the stream event correctly. Bugfix on
31482      0.1.2.x. Anonymous patch.
31483
31484
31485Changes in version 0.2.1.5-alpha - 2008-08-31
31486  Tor 0.2.1.5-alpha moves us closer to handling IPv6 destinations, puts
31487  in a lot of the infrastructure for adding authorization to hidden
31488  services, lays the groundwork for having clients read their load
31489  balancing information out of the networkstatus consensus rather than
31490  the individual router descriptors, addresses two potential anonymity
31491  issues, and fixes a variety of smaller issues.
31492
31493  o Major features:
31494    - Convert many internal address representations to optionally hold
31495      IPv6 addresses.
31496    - Generate and accept IPv6 addresses in many protocol elements.
31497    - Make resolver code handle nameservers located at ipv6 addresses.
31498    - Begin implementation of proposal 121 ("Client authorization for
31499      hidden services"): configure hidden services with client
31500      authorization, publish descriptors for them, and configure
31501      authorization data for hidden services at clients. The next
31502      step is to actually access hidden services that perform client
31503      authorization.
31504    - More progress toward proposal 141: Network status consensus
31505      documents and votes now contain bandwidth information for each
31506      router and a summary of that router's exit policy. Eventually this
31507      will be used by clients so that they do not have to download every
31508      known descriptor before building circuits.
31509
31510  o Major bugfixes (on 0.2.0.x and before):
31511    - When sending CREATED cells back for a given circuit, use a 64-bit
31512      connection ID to find the right connection, rather than an addr:port
31513      combination. Now that we can have multiple OR connections between
31514      the same ORs, it is no longer possible to use addr:port to uniquely
31515      identify a connection.
31516    - Relays now reject risky extend cells: if the extend cell includes
31517      a digest of all zeroes, or asks to extend back to the relay that
31518      sent the extend cell, tear down the circuit. Ideas suggested
31519      by rovv.
31520    - If not enough of our entry guards are available so we add a new
31521      one, we might use the new one even if it overlapped with the
31522      current circuit's exit relay (or its family). Anonymity bugfix
31523      pointed out by rovv.
31524
31525  o Minor bugfixes:
31526    - Recover 3-7 bytes that were wasted per memory chunk. Fixes bug
31527      794; bug spotted by rovv. Bugfix on 0.2.0.1-alpha.
31528    - When using the TransPort option on OpenBSD, and using the User
31529      option to change UID and drop privileges, make sure to open /dev/pf
31530      before dropping privileges. Fixes bug 782. Patch from Christopher
31531      Davis. Bugfix on 0.1.2.1-alpha.
31532    - Correctly detect the presence of the linux/netfilter_ipv4.h header
31533      when building against recent kernels. Bugfix on 0.1.2.1-alpha.
31534    - Add a missing safe_str() call for a debug log message.
31535    - Use 64 bits instead of 32 bits for connection identifiers used with
31536      the controller protocol, to greatly reduce risk of identifier reuse.
31537    - Make the autoconf script accept the obsolete --with-ssl-dir
31538      option as an alias for the actually-working --with-openssl-dir
31539      option. Fix the help documentation to recommend --with-openssl-dir.
31540      Based on a patch by "Dave". Bugfix on 0.2.0.1-alpha.
31541
31542  o Minor features:
31543    - Rate-limit too-many-sockets messages: when they happen, they happen
31544      a lot. Resolves bug 748.
31545    - Resist DNS poisoning a little better by making sure that names in
31546      answer sections match.
31547    - Print the SOCKS5 error message string as well as the error code
31548      when a tor-resolve request fails. Patch from Jacob.
31549
31550
31551Changes in version 0.2.1.4-alpha - 2008-08-04
31552  Tor 0.2.1.4-alpha fixes a pair of crash bugs in 0.2.1.3-alpha.
31553
31554  o Major bugfixes:
31555    - The address part of exit policies was not correctly written
31556      to router descriptors. This generated router descriptors that failed
31557      their self-checks. Noticed by phobos, fixed by Karsten. Bugfix
31558      on 0.2.1.3-alpha.
31559    - Tor triggered a false assert when extending a circuit to a relay
31560      but we already have a connection open to that relay. Noticed by
31561      phobos, fixed by Karsten. Bugfix on 0.2.1.3-alpha.
31562
31563  o Minor bugfixes:
31564    - Fix a hidden service logging bug: in some edge cases, the router
31565      descriptor of a previously picked introduction point becomes
31566      obsolete and we need to give up on it rather than continually
31567      complaining that it has become obsolete. Observed by xiando. Bugfix
31568      on 0.2.1.3-alpha.
31569
31570  o Removed features:
31571    - Take out the TestVia config option, since it was a workaround for
31572      a bug that was fixed in Tor 0.1.1.21.
31573
31574
31575Changes in version 0.2.1.3-alpha - 2008-08-03
31576  Tor 0.2.1.3-alpha implements most of the pieces to prevent
31577  infinite-length circuit attacks (see proposal 110); fixes a bug that
31578  might cause exit relays to corrupt streams they send back; allows
31579  address patterns (e.g. 255.128.0.0/16) to appear in ExcludeNodes and
31580  ExcludeExitNodes config options; and fixes a big pile of bugs.
31581
31582  o Bootstrapping bugfixes (on 0.2.1.x-alpha):
31583    - Send a bootstrap problem "warn" event on the first problem if the
31584      reason is NO_ROUTE (that is, our network is down).
31585
31586  o Major features:
31587    - Implement most of proposal 110: The first K cells to be sent
31588      along a circuit are marked as special "early" cells; only K "early"
31589      cells will be allowed. Once this code is universal, we can block
31590      certain kinds of DOS attack by requiring that EXTEND commands must
31591      be sent using an "early" cell.
31592
31593  o Major bugfixes:
31594    - Try to attach connections immediately upon receiving a RENDEZVOUS2
31595      or RENDEZVOUS_ESTABLISHED cell. This can save a second or two
31596      on the client side when connecting to a hidden service. Bugfix
31597      on 0.0.6pre1. Found and fixed by Christian Wilms; resolves bug 743.
31598    - Ensure that two circuits can never exist on the same connection
31599      with the same circuit ID, even if one is marked for close. This
31600      is conceivably a bugfix for bug 779; fixes a bug on 0.1.0.4-rc.
31601
31602  o Minor features:
31603    - When relays do their initial bandwidth measurement, don't limit
31604      to just our entry guards for the test circuits. Otherwise we tend
31605      to have multiple test circuits going through a single entry guard,
31606      which makes our bandwidth test less accurate. Fixes part of bug 654;
31607      patch contributed by Josh Albrecht.
31608    - Add an ExcludeExitNodes option so users can list a set of nodes
31609      that should be be excluded from the exit node position, but
31610      allowed elsewhere. Implements proposal 151.
31611    - Allow address patterns (e.g., 255.128.0.0/16) to appear in
31612      ExcludeNodes and ExcludeExitNodes lists.
31613    - Change the implementation of ExcludeNodes and ExcludeExitNodes to
31614      be more efficient. Formerly it was quadratic in the number of
31615      servers; now it should be linear. Fixes bug 509.
31616    - Save 16-22 bytes per open circuit by moving the n_addr, n_port,
31617      and n_conn_id_digest fields into a separate structure that's
31618      only needed when the circuit has not yet attached to an n_conn.
31619
31620  o Minor bugfixes:
31621    - Change the contrib/tor.logrotate script so it makes the new
31622      logs as "_tor:_tor" rather than the default, which is generally
31623      "root:wheel". Fixes bug 676, reported by Serge Koksharov.
31624    - Stop using __attribute__((nonnull)) with GCC: it can give us useful
31625      warnings (occasionally), but it can also cause the compiler to
31626      eliminate error-checking code. Suggested by Peter Gutmann.
31627    - When a hidden service is giving up on an introduction point candidate
31628      that was not included in the last published rendezvous descriptor,
31629      don't reschedule publication of the next descriptor. Fixes bug 763.
31630      Bugfix on 0.0.9.3.
31631    - Mark RendNodes, RendExcludeNodes, HiddenServiceNodes, and
31632      HiddenServiceExcludeNodes as obsolete: they never worked properly,
31633      and nobody claims to be using them. Fixes bug 754. Bugfix on
31634      0.1.0.1-rc. Patch from Christian Wilms.
31635    - Fix a small alignment and memory-wasting bug on buffer chunks.
31636      Spotted by rovv.
31637
31638  o Minor bugfixes (controller):
31639    - When closing an application-side connection because its circuit
31640      is getting torn down, generate the stream event correctly.
31641      Bugfix on 0.1.2.x. Anonymous patch.
31642
31643  o Removed features:
31644    - Remove all backward-compatibility code to support relays running
31645      versions of Tor so old that they no longer work at all on the
31646      Tor network.
31647
31648
31649Changes in version 0.2.0.30 - 2008-07-15
31650  o Minor bugfixes:
31651    - Stop using __attribute__((nonnull)) with GCC: it can give us useful
31652      warnings (occasionally), but it can also cause the compiler to
31653      eliminate error-checking code. Suggested by Peter Gutmann.
31654
31655
31656Changes in version 0.2.0.29-rc - 2008-07-08
31657  Tor 0.2.0.29-rc fixes two big bugs with using bridges, fixes more
31658  hidden-service performance bugs, and fixes a bunch of smaller bugs.
31659
31660  o Major bugfixes:
31661    - If you have more than one bridge but don't know their keys,
31662      you would only launch a request for the descriptor of the first one
31663      on your list. (Tor considered launching requests for the others, but
31664      found that it already had a connection on the way for $0000...0000
31665      so it didn't open another.) Bugfix on 0.2.0.x.
31666    - If you have more than one bridge but don't know their keys, and the
31667      connection to one of the bridges failed, you would cancel all
31668      pending bridge connections. (After all, they all have the same
31669      digest.) Bugfix on 0.2.0.x.
31670    - When a hidden service was trying to establish an introduction point,
31671      and Tor had built circuits preemptively for such purposes, we
31672      were ignoring all the preemptive circuits and launching a new one
31673      instead. Bugfix on 0.2.0.14-alpha.
31674    - When a hidden service was trying to establish an introduction point,
31675      and Tor *did* manage to reuse one of the preemptively built
31676      circuits, it didn't correctly remember which one it used,
31677      so it asked for another one soon after, until there were no
31678      more preemptive circuits, at which point it launched one from
31679      scratch. Bugfix on 0.0.9.x.
31680    - Make directory servers include the X-Your-Address-Is: http header in
31681      their responses even for begin_dir conns. Now clients who only
31682      ever use begin_dir connections still have a way to learn their IP
31683      address. Fixes bug 737; bugfix on 0.2.0.22-rc. Reported by goldy.
31684
31685  o Minor bugfixes:
31686    - Fix a macro/CPP interaction that was confusing some compilers:
31687      some GCCs don't like #if/#endif pairs inside macro arguments.
31688      Fixes bug 707.
31689    - Fix macro collision between OpenSSL 0.9.8h and Windows headers.
31690      Fixes bug 704; fix from Steven Murdoch.
31691    - When opening /dev/null in finish_daemonize(), do not pass the
31692      O_CREAT flag. Fortify was complaining, and correctly so. Fixes
31693      bug 742; fix from Michael Scherer. Bugfix on 0.0.2pre19.
31694    - Correctly detect transparent proxy support on Linux hosts that
31695      require in.h to be included before netfilter_ipv4.h. Patch
31696      from coderman.
31697    - Disallow session resumption attempts during the renegotiation
31698      stage of the v2 handshake protocol. Clients should never be trying
31699      session resumption at this point, but apparently some did, in
31700      ways that caused the handshake to fail. Bugfix on 0.2.0.20-rc. Bug
31701      found by Geoff Goodell.
31702
31703
31704Changes in version 0.2.1.2-alpha - 2008-06-20
31705  Tor 0.2.1.2-alpha includes a new "TestingTorNetwork" config option to
31706  make it easier to set up your own private Tor network; fixes several
31707  big bugs with using more than one bridge relay; fixes a big bug with
31708  offering hidden services quickly after Tor starts; and uses a better
31709  API for reporting potential bootstrapping problems to the controller.
31710
31711  o Major features:
31712    - New TestingTorNetwork config option to allow adjustment of
31713      previously constant values that, while reasonable, could slow
31714      bootstrapping. Implements proposal 135. Patch from Karsten.
31715
31716  o Major bugfixes:
31717    - If you have more than one bridge but don't know their digests,
31718      you would only learn a request for the descriptor of the first one
31719      on your list. (Tor considered launching requests for the others, but
31720      found that it already had a connection on the way for $0000...0000
31721      so it didn't open another.) Bugfix on 0.2.0.x.
31722    - If you have more than one bridge but don't know their digests,
31723      and the connection to one of the bridges failed, you would cancel
31724      all pending bridge connections. (After all, they all have the
31725      same digest.) Bugfix on 0.2.0.x.
31726    - When establishing a hidden service, introduction points that
31727      originate from cannibalized circuits are completely ignored and not
31728      included in rendezvous service descriptors. This might be another
31729      reason for delay in making a hidden service available. Bugfix
31730      from long ago (0.0.9.x?)
31731
31732  o Minor features:
31733    - Allow OpenSSL to use dynamic locks if it wants.
31734    - When building a consensus, do not include routers that are down.
31735      This will cut down 30% to 40% on consensus size. Implements
31736      proposal 138.
31737    - In directory authorities' approved-routers files, allow
31738      fingerprints with or without space.
31739    - Add a "GETINFO /status/bootstrap-phase" controller option, so the
31740      controller can query our current bootstrap state in case it attaches
31741      partway through and wants to catch up.
31742    - Send an initial "Starting" bootstrap status event, so we have a
31743      state to start out in.
31744
31745  o Minor bugfixes:
31746    - Asking for a conditional consensus at .../consensus/<fingerprints>
31747      would crash a dirserver if it did not already have a
31748      consensus. Bugfix on 0.2.1.1-alpha.
31749    - Clean up some macro/CPP interactions: some GCC versions don't like
31750      #if/#endif pairs inside macro arguments. Fixes bug 707. Bugfix on
31751      0.2.0.x.
31752
31753  o Bootstrapping bugfixes (on 0.2.1.1-alpha):
31754    - Directory authorities shouldn't complain about bootstrapping
31755      problems just because they do a lot of reachability testing and
31756      some of the connection attempts fail.
31757    - Start sending "count" and "recommendation" key/value pairs in
31758      bootstrap problem status events, so the controller can hear about
31759      problems even before Tor decides they're worth reporting for sure.
31760    - If you're using bridges, generate "bootstrap problem" warnings
31761      as soon as you run out of working bridges, rather than waiting
31762      for ten failures -- which will never happen if you have less than
31763      ten bridges.
31764    - If we close our OR connection because there's been a circuit
31765      pending on it for too long, we were telling our bootstrap status
31766      events "REASON=NONE". Now tell them "REASON=TIMEOUT".
31767
31768
31769Changes in version 0.2.1.1-alpha - 2008-06-13
31770  Tor 0.2.1.1-alpha fixes a lot of memory fragmentation problems that
31771  were making the Tor process bloat especially on Linux; makes our TLS
31772  handshake blend in better; sends "bootstrap phase" status events to
31773  the controller, so it can keep the user informed of progress (and
31774  problems) fetching directory information and establishing circuits;
31775  and adds a variety of smaller features.
31776
31777  o Major features:
31778    - More work on making our TLS handshake blend in: modify the list
31779      of ciphers advertised by OpenSSL in client mode to even more
31780      closely resemble a common web browser. We cheat a little so that
31781      we can advertise ciphers that the locally installed OpenSSL doesn't
31782      know about.
31783    - Start sending "bootstrap phase" status events to the controller,
31784      so it can keep the user informed of progress fetching directory
31785      information and establishing circuits. Also inform the controller
31786      if we think we're stuck at a particular bootstrap phase. Implements
31787      proposal 137.
31788    - Resume using OpenSSL's RAND_poll() for better (and more portable)
31789      cross-platform entropy collection again. We used to use it, then
31790      stopped using it because of a bug that could crash systems that
31791      called RAND_poll when they had a lot of fds open. It looks like the
31792      bug got fixed in late 2006. Our new behavior is to call RAND_poll()
31793      at startup, and to call RAND_poll() when we reseed later only if
31794      we have a non-buggy OpenSSL version.
31795
31796  o Major bugfixes:
31797    - When we choose to abandon a new entry guard because we think our
31798      older ones might be better, close any circuits pending on that
31799      new entry guard connection. This fix should make us recover much
31800      faster when our network is down and then comes back. Bugfix on
31801      0.1.2.8-beta; found by lodger.
31802
31803  o Memory fixes and improvements:
31804    - Add a malloc_good_size implementation to OpenBSD_malloc_linux.c,
31805      to avoid unused RAM in buffer chunks and memory pools.
31806    - Speed up parsing and cut down on memory fragmentation by using
31807      stack-style allocations for parsing directory objects. Previously,
31808      this accounted for over 40% of allocations from within Tor's code
31809      on a typical directory cache.
31810    - Use a Bloom filter rather than a digest-based set to track which
31811      descriptors we need to keep around when we're cleaning out old
31812      router descriptors. This speeds up the computation significantly,
31813      and may reduce fragmentation.
31814    - Reduce the default smartlist size from 32 to 16; it turns out that
31815      most smartlists hold around 8-12 elements tops.
31816    - Make dumpstats() log the fullness and size of openssl-internal
31817      buffers.
31818    - If the user has applied the experimental SSL_MODE_RELEASE_BUFFERS
31819      patch to their OpenSSL, turn it on to save memory on servers. This
31820      patch will (with any luck) get included in a mainline distribution
31821      before too long.
31822    - Never use OpenSSL compression: it wastes RAM and CPU trying to
31823      compress cells, which are basically all encrypted, compressed,
31824      or both.
31825
31826  o Minor bugfixes:
31827    - Stop reloading the router list from disk for no reason when we
31828      run out of reachable directory mirrors. Once upon a time reloading
31829      it would set the 'is_running' flag back to 1 for them. It hasn't
31830      done that for a long time.
31831    - In very rare situations new hidden service descriptors were
31832      published earlier than 30 seconds after the last change to the
31833      service. (We currently think that a hidden service descriptor
31834      that's been stable for 30 seconds is worth publishing.)
31835
31836  o Minor features:
31837    - Allow separate log levels to be configured for different logging
31838      domains. For example, this allows one to log all notices, warnings,
31839      or errors, plus all memory management messages of level debug or
31840      higher, with: Log [MM] debug-err [*] notice-err file /var/log/tor.
31841    - Add a couple of extra warnings to --enable-gcc-warnings for GCC 4.3,
31842      and stop using a warning that had become unfixably verbose under
31843      GCC 4.3.
31844    - New --hush command-line option similar to --quiet. While --quiet
31845      disables all logging to the console on startup, --hush limits the
31846      output to messages of warning and error severity.
31847    - Servers support a new URL scheme for consensus downloads that
31848      allows the client to specify which authorities are trusted.
31849      The server then only sends the consensus if the client will trust
31850      it. Otherwise a 404 error is sent back. Clients use this
31851      new scheme when the server supports it (meaning it's running
31852      0.2.1.1-alpha or later). Implements proposal 134.
31853    - New configure/torrc options (--enable-geoip-stats,
31854      DirRecordUsageByCountry) to record how many IPs we've served
31855      directory info to in each country code, how many status documents
31856      total we've sent to each country code, and what share of the total
31857      directory requests we should expect to see.
31858    - Use the TLS1 hostname extension to more closely resemble browser
31859      behavior.
31860    - Lots of new unit tests.
31861    - Add a macro to implement the common pattern of iterating through
31862      two parallel lists in lockstep.
31863
31864
31865Changes in version 0.2.0.28-rc - 2008-06-13
31866  Tor 0.2.0.28-rc fixes an anonymity-related bug, fixes a hidden-service
31867  performance bug, and fixes a bunch of smaller bugs.
31868
31869  o Anonymity fixes:
31870    - Fix a bug where, when we were choosing the 'end stream reason' to
31871      put in our relay end cell that we send to the exit relay, Tor
31872      clients on Windows were sometimes sending the wrong 'reason'. The
31873      anonymity problem is that exit relays may be able to guess whether
31874      the client is running Windows, thus helping partition the anonymity
31875      set. Down the road we should stop sending reasons to exit relays,
31876      or otherwise prevent future versions of this bug.
31877
31878  o Major bugfixes:
31879    - While setting up a hidden service, some valid introduction circuits
31880      were overlooked and abandoned. This might be the reason for
31881      the long delay in making a hidden service available. Bugfix on
31882      0.2.0.14-alpha.
31883
31884  o Minor features:
31885    - Update to the "June 9 2008" ip-to-country file.
31886    - Run 'make test' as part of 'make dist', so we stop releasing so
31887      many development snapshots that fail their unit tests.
31888
31889  o Minor bugfixes:
31890    - When we're checking if we have enough dir info for each relay
31891      to begin establishing circuits, make sure that we actually have
31892      the descriptor listed in the consensus, not just any descriptor.
31893      Bugfix on 0.1.2.x.
31894    - Bridge relays no longer print "xx=0" in their extrainfo document
31895      for every single country code in the geoip db. Bugfix on
31896      0.2.0.27-rc.
31897    - Only warn when we fail to load the geoip file if we were planning to
31898      include geoip stats in our extrainfo document. Bugfix on 0.2.0.27-rc.
31899    - If we change our MaxAdvertisedBandwidth and then reload torrc,
31900      Tor won't realize it should publish a new relay descriptor. Fixes
31901      bug 688, reported by mfr. Bugfix on 0.1.2.x.
31902    - When we haven't had any application requests lately, don't bother
31903      logging that we have expired a bunch of descriptors. Bugfix
31904      on 0.1.2.x.
31905    - Make relay cells written on a connection count as non-padding when
31906      tracking how long a connection has been in use. Bugfix on
31907      0.2.0.1-alpha. Spotted by lodger.
31908    - Fix unit tests in 0.2.0.27-rc.
31909    - Fix compile on Windows.
31910
31911
31912Changes in version 0.2.0.27-rc - 2008-06-03
31913  Tor 0.2.0.27-rc adds a few features we left out of the earlier
31914  release candidates. In particular, we now include an IP-to-country
31915  GeoIP database, so controllers can easily look up what country a
31916  given relay is in, and so bridge relays can give us some sanitized
31917  summaries about which countries are making use of bridges. (See proposal
31918  126-geoip-fetching.txt for details.)
31919
31920  o Major features:
31921    - Include an IP-to-country GeoIP file in the tarball, so bridge
31922      relays can report sanitized summaries of the usage they're seeing.
31923
31924  o Minor features:
31925    - Add a "PURPOSE=" argument to "STREAM NEW" events, as suggested by
31926      Robert Hogan. Fixes the first part of bug 681.
31927    - Make bridge authorities never serve extrainfo docs.
31928    - Add support to detect Libevent versions in the 1.4.x series
31929      on mingw.
31930    - Fix build on gcc 4.3 with --enable-gcc-warnings set.
31931    - Include a new contrib/tor-exit-notice.html file that exit relay
31932      operators can put on their website to help reduce abuse queries.
31933
31934  o Minor bugfixes:
31935    - When tunneling an encrypted directory connection, and its first
31936      circuit fails, do not leave it unattached and ask the controller
31937      to deal. Fixes the second part of bug 681.
31938    - Make bridge authorities correctly expire old extrainfo documents
31939      from time to time.
31940
31941
31942Changes in version 0.2.0.26-rc - 2008-05-13
31943  Tor 0.2.0.26-rc fixes a major security vulnerability caused by a bug
31944  in Debian's OpenSSL packages. All users running any 0.2.0.x version
31945  should upgrade, whether they're running Debian or not.
31946
31947  o Major security fixes:
31948    - Use new V3 directory authority keys on the tor26, gabelmoo, and
31949      moria1 V3 directory authorities. The old keys were generated with
31950      a vulnerable version of Debian's OpenSSL package, and must be
31951      considered compromised. Other authorities' keys were not generated
31952      with an affected version of OpenSSL.
31953
31954  o Major bugfixes:
31955    - List authority signatures as "unrecognized" based on DirServer
31956      lines, not on cert cache. Bugfix on 0.2.0.x.
31957
31958  o Minor features:
31959    - Add a new V3AuthUseLegacyKey option to make it easier for
31960      authorities to change their identity keys if they have to.
31961
31962
31963Changes in version 0.2.0.25-rc - 2008-04-23
31964  Tor 0.2.0.25-rc makes Tor work again on OS X and certain BSDs.
31965
31966  o Major bugfixes:
31967    - Remember to initialize threading before initializing logging.
31968      Otherwise, many BSD-family implementations will crash hard on
31969      startup. Fixes bug 671. Bugfix on 0.2.0.24-rc.
31970
31971  o Minor bugfixes:
31972    - Authorities correctly free policies on bad servers on
31973      exit. Fixes bug 672. Bugfix on 0.2.0.x.
31974
31975
31976Changes in version 0.2.0.24-rc - 2008-04-22
31977  Tor 0.2.0.24-rc adds dizum (run by Alex de Joode) as the new sixth
31978  v3 directory authority, makes relays with dynamic IP addresses and no
31979  DirPort notice more quickly when their IP address changes, fixes a few
31980  rare crashes and memory leaks, and fixes a few other miscellaneous bugs.
31981
31982  o New directory authorities:
31983    - Take lefkada out of the list of v3 directory authorities, since
31984      it has been down for months.
31985    - Set up dizum (run by Alex de Joode) as the new sixth v3 directory
31986      authority.
31987
31988  o Major bugfixes:
31989    - Detect address changes more quickly on non-directory mirror
31990      relays. Bugfix on 0.2.0.18-alpha; fixes bug 652.
31991
31992  o Minor features (security):
31993    - Reject requests for reverse-dns lookup of names that are in
31994      a private address space. Patch from lodger.
31995    - Non-exit relays no longer allow DNS requests. Fixes bug 619. Patch
31996      from lodger.
31997
31998  o Minor bugfixes (crashes):
31999    - Avoid a rare assert that can trigger when Tor doesn't have much
32000      directory information yet and it tries to fetch a v2 hidden
32001      service descriptor. Fixes bug 651, reported by nwf.
32002    - Initialize log mutex before initializing dmalloc. Otherwise,
32003      running with dmalloc would crash. Bugfix on 0.2.0.x-alpha.
32004    - Use recursive pthread mutexes in order to avoid deadlock when
32005      logging debug-level messages to a controller. Bug spotted by nwf,
32006      bugfix on 0.2.0.16-alpha.
32007
32008  o Minor bugfixes (resource management):
32009    - Keep address policies from leaking memory: start their refcount
32010      at 1, not 2. Bugfix on 0.2.0.16-alpha.
32011    - Free authority certificates on exit, so they don't look like memory
32012      leaks. Bugfix on 0.2.0.19-alpha.
32013    - Free static hashtables for policy maps and for TLS connections on
32014      shutdown, so they don't look like memory leaks. Bugfix on 0.2.0.x.
32015    - Avoid allocating extra space when computing consensuses on 64-bit
32016      platforms. Bug spotted by aakova.
32017
32018  o Minor bugfixes (misc):
32019    - Do not read the configuration file when we've only been told to
32020      generate a password hash. Fixes bug 643. Bugfix on 0.0.9pre5. Fix
32021      based on patch from Sebastian Hahn.
32022    - Exit relays that are used as a client can now reach themselves
32023      using the .exit notation, rather than just launching an infinite
32024      pile of circuits. Fixes bug 641. Reported by Sebastian Hahn.
32025    - When attempting to open a logfile fails, tell us why.
32026    - Fix a dumb bug that was preventing us from knowing that we should
32027      preemptively build circuits to handle expected directory requests.
32028      Fixes bug 660. Bugfix on 0.1.2.x.
32029    - Warn less verbosely about clock skew from netinfo cells from
32030      untrusted sources. Fixes bug 663.
32031    - Make controller stream events for DNS requests more consistent,
32032      by adding "new stream" events for DNS requests, and removing
32033      spurious "stream closed" events" for cached reverse resolves.
32034      Patch from mwenge. Fixes bug 646.
32035    - Correctly notify one-hop connections when a circuit build has
32036      failed. Possible fix for bug 669. Found by lodger.
32037
32038
32039Changes in version 0.2.0.23-rc - 2008-03-24
32040  Tor 0.2.0.23-rc is the fourth release candidate for the 0.2.0 series. It
32041  makes bootstrapping faster if the first directory mirror you contact
32042  is down. The bundles also include the new Vidalia 0.1.2 release.
32043
32044  o Major bugfixes:
32045    - When a tunneled directory request is made to a directory server
32046      that's down, notice after 30 seconds rather than 120 seconds. Also,
32047      fail any begindir streams that are pending on it, so they can
32048      retry elsewhere. This was causing multi-minute delays on bootstrap.
32049
32050
32051Changes in version 0.2.0.22-rc - 2008-03-18
32052  Tor 0.2.0.22-rc is the third release candidate for the 0.2.0 series. It
32053  enables encrypted directory connections by default for non-relays, fixes
32054  some broken TLS behavior we added in 0.2.0.20-rc, and resolves many
32055  other bugs. The bundles also include Vidalia 0.1.1 and Torbutton 1.1.17.
32056
32057  o Major features:
32058    - Enable encrypted directory connections by default for non-relays,
32059      so censor tools that block Tor directory connections based on their
32060      plaintext patterns will no longer work. This means Tor works in
32061      certain censored countries by default again.
32062
32063  o Major bugfixes:
32064    - Make sure servers always request certificates from clients during
32065      TLS renegotiation. Reported by lodger; bugfix on 0.2.0.20-rc.
32066    - Do not enter a CPU-eating loop when a connection is closed in
32067      the middle of client-side TLS renegotiation. Fixes bug 622. Bug
32068      diagnosed by lodger; bugfix on 0.2.0.20-rc.
32069    - Fix assertion failure that could occur when a blocked circuit
32070      became unblocked, and it had pending client DNS requests. Bugfix
32071      on 0.2.0.1-alpha. Fixes bug 632.
32072
32073  o Minor bugfixes (on 0.1.2.x):
32074    - Generate "STATUS_SERVER" events rather than misspelled
32075      "STATUS_SEVER" events. Caught by mwenge.
32076    - When counting the number of bytes written on a TLS connection,
32077      look at the BIO actually used for writing to the network, not
32078      at the BIO used (sometimes) to buffer data for the network.
32079      Looking at different BIOs could result in write counts on the
32080      order of ULONG_MAX. Fixes bug 614.
32081    - On Windows, correctly detect errors when listing the contents of
32082      a directory. Fix from lodger.
32083
32084  o Minor bugfixes (on 0.2.0.x):
32085    - Downgrade "sslv3 alert handshake failure" message to INFO.
32086    - If we set RelayBandwidthRate and RelayBandwidthBurst very high but
32087      left BandwidthRate and BandwidthBurst at the default, we would be
32088      silently limited by those defaults. Now raise them to match the
32089      RelayBandwidth* values.
32090    - Fix the SVK version detection logic to work correctly on a branch.
32091    - Make --enable-openbsd-malloc work correctly on Linux with alpha
32092      CPUs. Fixes bug 625.
32093    - Logging functions now check that the passed severity is sane.
32094    - Use proper log levels in the testsuite call of
32095      get_interface_address6().
32096    - When using a nonstandard malloc, do not use the platform values for
32097      HAVE_MALLOC_GOOD_SIZE or HAVE_MALLOC_USABLE_SIZE.
32098    - Make the openbsd malloc code use 8k pages on alpha CPUs and
32099      16k pages on ia64.
32100    - Detect mismatched page sizes when using --enable-openbsd-malloc.
32101    - Avoid double-marked-for-close warning when certain kinds of invalid
32102      .in-addr.arpa addresses are passed to the DNSPort. Part of a fix
32103      for bug 617. Bugfix on 0.2.0.1-alpha.
32104    - Make sure that the "NULL-means-reject *:*" convention is followed by
32105      all the policy manipulation functions, avoiding some possible crash
32106      bugs. Bug found by lodger. Bugfix on 0.2.0.16-alpha.
32107    - Fix the implementation of ClientDNSRejectInternalAddresses so that it
32108      actually works, and doesn't warn about every single reverse lookup.
32109      Fixes the other part of bug 617. Bugfix on 0.2.0.1-alpha.
32110
32111  o Minor features:
32112    - Only log guard node status when guard node status has changed.
32113    - Downgrade the 3 most common "INFO" messages to "DEBUG". This will
32114      make "INFO" 75% less verbose.
32115
32116
32117Changes in version 0.2.0.21-rc - 2008-03-02
32118  Tor 0.2.0.21-rc is the second release candidate for the 0.2.0 series. It
32119  makes Tor work well with Vidalia again, fixes a rare assert bug,
32120  and fixes a pair of more minor bugs. The bundles also include Vidalia
32121  0.1.0 and Torbutton 1.1.16.
32122
32123  o Major bugfixes:
32124    - The control port should declare that it requires password auth
32125      when HashedControlSessionPassword is set too. Patch from Matt Edman;
32126      bugfix on 0.2.0.20-rc. Fixes bug 615.
32127    - Downgrade assert in connection_buckets_decrement() to a log message.
32128      This may help us solve bug 614, and in any case will make its
32129      symptoms less severe. Bugfix on 0.2.0.20-rc. Reported by fredzupy.
32130    - We were sometimes miscounting the number of bytes read from the
32131      network, causing our rate limiting to not be followed exactly.
32132      Bugfix on 0.2.0.16-alpha. Reported by lodger.
32133
32134  o Minor bugfixes:
32135    - Fix compilation with OpenSSL 0.9.8 and 0.9.8a. All other supported
32136      OpenSSL versions should have been working fine. Diagnosis and patch
32137      from lodger, Karsten Loesing, and Sebastian Hahn. Fixes bug 616.
32138      Bugfix on 0.2.0.20-rc.
32139
32140
32141Changes in version 0.2.0.20-rc - 2008-02-24
32142  Tor 0.2.0.20-rc is the first release candidate for the 0.2.0 series. It
32143  makes more progress towards normalizing Tor's TLS handshake, makes
32144  hidden services work better again, helps relays bootstrap if they don't
32145  know their IP address, adds optional support for linking in openbsd's
32146  allocator or tcmalloc, allows really fast relays to scale past 15000
32147  sockets, and fixes a bunch of minor bugs reported by Veracode.
32148
32149  o Major features:
32150    - Enable the revised TLS handshake based on the one designed by
32151      Steven Murdoch in proposal 124, as revised in proposal 130. It
32152      includes version negotiation for OR connections as described in
32153      proposal 105. The new handshake is meant to be harder for censors
32154      to fingerprint, and it adds the ability to detect certain kinds of
32155      man-in-the-middle traffic analysis attacks. The version negotiation
32156      feature will allow us to improve Tor's link protocol more safely
32157      in the future.
32158    - Choose which bridge to use proportional to its advertised bandwidth,
32159      rather than uniformly at random. This should speed up Tor for
32160      bridge users. Also do this for people who set StrictEntryNodes.
32161    - When a TrackHostExits-chosen exit fails too many times in a row,
32162      stop using it. Bugfix on 0.1.2.x; fixes bug 437.
32163
32164  o Major bugfixes:
32165    - Resolved problems with (re-)fetching hidden service descriptors.
32166      Patch from Karsten Loesing; fixes problems with 0.2.0.18-alpha
32167      and 0.2.0.19-alpha.
32168    - If we only ever used Tor for hidden service lookups or posts, we
32169      would stop building circuits and start refusing connections after
32170      24 hours, since we falsely believed that Tor was dormant. Reported
32171      by nwf; bugfix on 0.1.2.x.
32172    - Servers that don't know their own IP address should go to the
32173      authorities for their first directory fetch, even if their DirPort
32174      is off or if they don't know they're reachable yet. This will help
32175      them bootstrap better. Bugfix on 0.2.0.18-alpha; fixes bug 609.
32176    - When counting the number of open sockets, count not only the number
32177      of sockets we have received from the socket() call, but also
32178      the number we've gotten from accept() and socketpair(). This bug
32179      made us fail to count all sockets that we were using for incoming
32180      connections. Bugfix on 0.2.0.x.
32181    - Fix code used to find strings within buffers, when those strings
32182      are not in the first chunk of the buffer. Bugfix on 0.2.0.x.
32183    - Fix potential segfault when parsing HTTP headers. Bugfix on 0.2.0.x.
32184    - Add a new __HashedControlSessionPassword option for controllers
32185      to use for one-off session password hashes that shouldn't get
32186      saved to disk by SAVECONF --- Vidalia users were accumulating a
32187      pile of HashedControlPassword lines in their torrc files, one for
32188      each time they had restarted Tor and then clicked Save. Make Tor
32189      automatically convert "HashedControlPassword" to this new option but
32190      only when it's given on the command line. Partial fix for bug 586.
32191
32192  o Minor features (performance):
32193    - Tune parameters for cell pool allocation to minimize amount of
32194      RAM overhead used.
32195    - Add OpenBSD malloc code from phk as an optional malloc
32196      replacement on Linux: some glibc libraries do very poorly
32197      with Tor's memory allocation patterns. Pass
32198      --enable-openbsd-malloc to get the replacement malloc code.
32199    - Add a --with-tcmalloc option to the configure script to link
32200      against tcmalloc (if present). Does not yet search for
32201      non-system include paths.
32202    - Stop imposing an arbitrary maximum on the number of file descriptors
32203      used for busy servers. Bug reported by Olaf Selke; patch from
32204      Sebastian Hahn.
32205
32206  o Minor features (other):
32207    - When SafeLogging is disabled, log addresses along with all TLS
32208      errors.
32209    - When building with --enable-gcc-warnings, check for whether Apple's
32210      warning "-Wshorten-64-to-32" is available.
32211    - Add a --passphrase-fd argument to the tor-gencert command for
32212      scriptability.
32213
32214  o Minor bugfixes (memory leaks and code problems):
32215    - We were leaking a file descriptor if Tor started with a zero-length
32216      cached-descriptors file. Patch by freddy77; bugfix on 0.1.2.
32217    - Detect size overflow in zlib code. Reported by Justin Ferguson and
32218      Dan Kaminsky.
32219    - We were comparing the raw BridgePassword entry with a base64'ed
32220      version of it, when handling a "/tor/networkstatus-bridges"
32221      directory request. Now compare correctly. Noticed by Veracode.
32222    - Recover from bad tracked-since value in MTBF-history file.
32223      Should fix bug 537.
32224    - Alter the code that tries to recover from unhandled write
32225      errors, to not try to flush onto a socket that's given us
32226      unhandled errors. Bugfix on 0.1.2.x.
32227    - Make Unix controlsockets work correctly on OpenBSD. Patch from
32228      tup. Bugfix on 0.2.0.3-alpha.
32229
32230  o Minor bugfixes (other):
32231    - If we have an extra-info document for our server, always make
32232      it available on the control port, even if we haven't gotten
32233      a copy of it from an authority yet. Patch from mwenge.
32234    - Log the correct memory chunk sizes for empty RAM chunks in mempool.c.
32235    - Directory mirrors no longer include a guess at the client's IP
32236      address if the connection appears to be coming from the same /24
32237      network; it was producing too many wrong guesses.
32238    - Make the new hidden service code respect the SafeLogging setting.
32239      Bugfix on 0.2.0.x. Patch from Karsten.
32240    - When starting as an authority, do not overwrite all certificates
32241      cached from other authorities. Bugfix on 0.2.0.x. Fixes bug 606.
32242    - If we're trying to flush the last bytes on a connection (for
32243      example, when answering a directory request), reset the
32244      time-to-give-up timeout every time we manage to write something
32245      on the socket. Bugfix on 0.1.2.x.
32246    - Change the behavior of "getinfo status/good-server-descriptor"
32247      so it doesn't return failure when any authority disappears.
32248    - Even though the man page said that "TrackHostExits ." should
32249      work, nobody had ever implemented it. Bugfix on 0.1.0.x.
32250    - Report TLS "zero return" case as a "clean close" and "IO error"
32251      as a "close". Stop calling closes "unexpected closes": existing
32252      Tors don't use SSL_close(), so having a connection close without
32253      the TLS shutdown handshake is hardly unexpected.
32254    - Send NAMESERVER_STATUS messages for a single failed nameserver
32255      correctly.
32256
32257  o Code simplifications and refactoring:
32258    - Remove the tor_strpartition function: its logic was confused,
32259      and it was only used for one thing that could be implemented far
32260      more easily.
32261
32262
32263Changes in version 0.2.0.19-alpha - 2008-02-09
32264  Tor 0.2.0.19-alpha makes more progress towards normalizing Tor's TLS
32265  handshake, makes path selection for relays more secure and IP address
32266  guessing more robust, and generally fixes a lot of bugs in preparation
32267  for calling the 0.2.0 branch stable.
32268
32269  o Major features:
32270    - Do not include recognizeable strings in the commonname part of
32271      Tor's x509 certificates.
32272
32273  o Major bugfixes:
32274    - If we're a relay, avoid picking ourselves as an introduction point,
32275      a rendezvous point, or as the final hop for internal circuits. Bug
32276      reported by taranis and lodger. Bugfix on 0.1.2.x.
32277    - Patch from "Andrew S. Lists" to catch when we contact a directory
32278      mirror at IP address X and he says we look like we're coming from
32279      IP address X. Bugfix on 0.1.2.x.
32280
32281  o Minor features (security):
32282    - Be more paranoid about overwriting sensitive memory on free(),
32283      as a defensive programming tactic to ensure forward secrecy.
32284
32285  o Minor features (directory authority):
32286    - Actually validate the options passed to AuthDirReject,
32287      AuthDirInvalid, AuthDirBadDir, and AuthDirBadExit.
32288    - Reject router descriptors with out-of-range bandwidthcapacity or
32289      bandwidthburst values.
32290
32291  o Minor features (controller):
32292    - Reject controller commands over 1MB in length. This keeps rogue
32293      processes from running us out of memory.
32294
32295  o Minor features (misc):
32296    - Give more descriptive well-formedness errors for out-of-range
32297      hidden service descriptor/protocol versions.
32298    - Make memory debugging information describe more about history
32299      of cell allocation, so we can help reduce our memory use.
32300
32301  o Deprecated features (controller):
32302    - The status/version/num-versioning and status/version/num-concurring
32303      GETINFO options are no longer useful in the v3 directory protocol:
32304      treat them as deprecated, and warn when they're used.
32305
32306  o Minor bugfixes:
32307    - When our consensus networkstatus has been expired for a while, stop
32308      being willing to build circuits using it. Fixes bug 401. Bugfix
32309      on 0.1.2.x.
32310    - Directory caches now fetch certificates from all authorities
32311      listed in a networkstatus consensus, even when they do not
32312      recognize them. Fixes bug 571. Bugfix on 0.2.0.x.
32313    - When connecting to a bridge without specifying its key, insert
32314      the connection into the identity-to-connection map as soon as
32315      a key is learned. Fixes bug 574. Bugfix on 0.2.0.x.
32316    - Detect versions of OS X where malloc_good_size() is present in the
32317      library but never actually declared. Resolves bug 587. Bugfix
32318      on 0.2.0.x.
32319    - Stop incorrectly truncating zlib responses to directory authority
32320      signature download requests. Fixes bug 593. Bugfix on 0.2.0.x.
32321    - Stop recommending that every server operator send mail to tor-ops.
32322      Resolves bug 597. Bugfix on 0.1.2.x.
32323    - Don't trigger an assert if we start a directory authority with a
32324      private IP address (like 127.0.0.1).
32325    - Avoid possible failures when generating a directory with routers
32326      with over-long versions strings, or too many flags set. Bugfix
32327      on 0.1.2.x.
32328    - If an attempt to launch a DNS resolve request over the control
32329      port fails because we have overrun the limit on the number of
32330      connections, tell the controller that the request has failed.
32331    - Avoid using too little bandwidth when our clock skips a few
32332      seconds. Bugfix on 0.1.2.x.
32333    - Fix shell error when warning about missing packages in configure
32334      script, on Fedora or Red Hat machines. Bugfix on 0.2.0.x.
32335    - Do not become confused when receiving a spurious VERSIONS-like
32336      cell from a confused v1 client. Bugfix on 0.2.0.x.
32337    - Re-fetch v2 (as well as v0) rendezvous descriptors when all
32338      introduction points for a hidden service have failed. Patch from
32339      Karsten Loesing. Bugfix on 0.2.0.x.
32340
32341  o Code simplifications and refactoring:
32342    - Remove some needless generality from cpuworker code, for improved
32343      type-safety.
32344    - Stop overloading the circuit_t.onionskin field for both "onionskin
32345      from a CREATE cell that we are waiting for a cpuworker to be
32346      assigned" and "onionskin from an EXTEND cell that we are going to
32347      send to an OR as soon as we are connected". Might help with bug 600.
32348    - Add an in-place version of aes_crypt() so that we can avoid doing a
32349      needless memcpy() call on each cell payload.
32350
32351
32352Changes in version 0.2.0.18-alpha - 2008-01-25
32353  Tor 0.2.0.18-alpha adds a sixth v3 directory authority run by CCC,
32354  fixes a big memory leak in 0.2.0.17-alpha, and adds new config options
32355  that can warn or reject connections to ports generally associated with
32356  vulnerable-plaintext protocols.
32357
32358  o New directory authorities:
32359    - Set up dannenberg (run by CCC) as the sixth v3 directory
32360      authority.
32361
32362  o Major bugfixes:
32363    - Fix a major memory leak when attempting to use the v2 TLS
32364      handshake code. Bugfix on 0.2.0.x; fixes bug 589.
32365    - We accidentally enabled the under-development v2 TLS handshake
32366      code, which was causing log entries like "TLS error while
32367      renegotiating handshake". Disable it again. Resolves bug 590.
32368    - We were computing the wrong Content-Length: header for directory
32369      responses that need to be compressed on the fly, causing clients
32370      asking for those items to always fail. Bugfix on 0.2.0.x; partially
32371      fixes bug 593.
32372
32373  o Major features:
32374    - Avoid going directly to the directory authorities even if you're a
32375      relay, if you haven't found yourself reachable yet or if you've
32376      decided not to advertise your dirport yet. Addresses bug 556.
32377    - If we've gone 12 hours since our last bandwidth check, and we
32378      estimate we have less than 50KB bandwidth capacity but we could
32379      handle more, do another bandwidth test.
32380    - New config options WarnPlaintextPorts and RejectPlaintextPorts so
32381      Tor can warn and/or refuse connections to ports commonly used with
32382      vulnerable-plaintext protocols. Currently we warn on ports 23,
32383      109, 110, and 143, but we don't reject any.
32384
32385  o Minor bugfixes:
32386    - When we setconf ClientOnly to 1, close any current OR and Dir
32387      listeners. Reported by mwenge.
32388    - When we get a consensus that's been signed by more people than
32389      we expect, don't log about it; it's not a big deal. Reported
32390      by Kyle Williams.
32391
32392  o Minor features:
32393    - Don't answer "/tor/networkstatus-bridges" directory requests if
32394      the request isn't encrypted.
32395    - Make "ClientOnly 1" config option disable directory ports too.
32396    - Patches from Karsten Loesing to make v2 hidden services more
32397      robust: work even when there aren't enough HSDir relays available;
32398      retry when a v2 rend desc fetch fails; but don't retry if we
32399      already have a usable v0 rend desc.
32400
32401
32402Changes in version 0.2.0.17-alpha - 2008-01-17
32403  Tor 0.2.0.17-alpha makes the tarball build cleanly again (whoops).
32404
32405  o Compile fixes:
32406    - Make the tor-gencert man page get included correctly in the tarball.
32407
32408
32409Changes in version 0.2.0.16-alpha - 2008-01-17
32410  Tor 0.2.0.16-alpha adds a fifth v3 directory authority run by Karsten
32411  Loesing, and generally cleans up a lot of features and minor bugs.
32412
32413  o New directory authorities:
32414    - Set up gabelmoo (run by Karsten Loesing) as the fifth v3 directory
32415      authority.
32416
32417  o Major performance improvements:
32418    - Switch our old ring buffer implementation for one more like that
32419      used by free Unix kernels. The wasted space in a buffer with 1mb
32420      of data will now be more like 8k than 1mb. The new implementation
32421      also avoids realloc();realloc(); patterns that can contribute to
32422      memory fragmentation.
32423
32424  o Minor features:
32425    - Configuration files now accept C-style strings as values. This
32426      helps encode characters not allowed in the current configuration
32427      file format, such as newline or #. Addresses bug 557.
32428    - Although we fixed bug 539 (where servers would send HTTP status 503
32429      responses _and_ send a body too), there are still servers out
32430      there that haven't upgraded. Therefore, make clients parse such
32431      bodies when they receive them.
32432    - When we're not serving v2 directory information, there is no reason
32433      to actually keep any around. Remove the obsolete files and directory
32434      on startup if they are very old and we aren't going to serve them.
32435
32436  o Minor performance improvements:
32437    - Reference-count and share copies of address policy entries; only 5%
32438      of them were actually distinct.
32439    - Never walk through the list of logs if we know that no log is
32440      interested in a given message.
32441
32442  o Minor bugfixes:
32443    - When an authority has not signed a consensus, do not try to
32444      download a nonexistent "certificate with key 00000000". Bugfix
32445      on 0.2.0.x. Fixes bug 569.
32446    - Fix a rare assert error when we're closing one of our threads:
32447      use a mutex to protect the list of logs, so we never write to the
32448      list as it's being freed. Bugfix on 0.1.2.x. Fixes the very rare
32449      bug 575, which is kind of the revenge of bug 222.
32450    - Patch from Karsten Loesing to complain less at both the client
32451      and the relay when a relay used to have the HSDir flag but doesn't
32452      anymore, and we try to upload a hidden service descriptor.
32453    - Stop leaking one cert per TLS context. Fixes bug 582. Bugfix on
32454      0.2.0.15-alpha.
32455    - Do not try to download missing certificates until we have tried
32456      to check our fallback consensus. Fixes bug 583.
32457    - Make bridges round reported GeoIP stats info up to the nearest
32458      estimate, not down. Now we can distinguish between "0 people from
32459      this country" and "1 person from this country".
32460    - Avoid a spurious free on base64 failure. Bugfix on 0.1.2.
32461    - Avoid possible segfault if key generation fails in
32462      crypto_pk_hybrid_encrypt. Bugfix on 0.2.0.
32463    - Avoid segfault in the case where a badly behaved v2 versioning
32464      directory sends a signed networkstatus with missing client-versions.
32465      Bugfix on 0.1.2.
32466    - Avoid segfaults on certain complex invocations of
32467      router_get_by_hexdigest(). Bugfix on 0.1.2.
32468    - Correct bad index on array access in parse_http_time(). Bugfix
32469      on 0.2.0.
32470    - Fix possible bug in vote generation when server versions are present
32471      but client versions are not.
32472    - Fix rare bug on REDIRECTSTREAM control command when called with no
32473      port set: it could erroneously report an error when none had
32474      happened.
32475    - Avoid bogus crash-prone, leak-prone tor_realloc when we're
32476      compressing large objects and find ourselves with more than 4k
32477      left over. Bugfix on 0.2.0.
32478    - Fix a small memory leak when setting up a hidden service.
32479    - Fix a few memory leaks that could in theory happen under bizarre
32480      error conditions.
32481    - Fix an assert if we post a general-purpose descriptor via the
32482      control port but that descriptor isn't mentioned in our current
32483      network consensus. Bug reported by Jon McLachlan; bugfix on
32484      0.2.0.9-alpha.
32485
32486  o Minor features (controller):
32487    - Get NS events working again. Patch from tup.
32488    - The GETCONF command now escapes and quotes configuration values
32489      that don't otherwise fit into the torrc file.
32490    - The SETCONF command now handles quoted values correctly.
32491
32492  o Minor features (directory authorities):
32493    - New configuration options to override default maximum number of
32494      servers allowed on a single IP address. This is important for
32495      running a test network on a single host.
32496    - Actually implement the -s option to tor-gencert.
32497    - Add a manual page for tor-gencert.
32498
32499  o Minor features (bridges):
32500    - Bridge authorities no longer serve bridge descriptors over
32501      unencrypted connections.
32502
32503  o Minor features (other):
32504    - Add hidden services and DNSPorts to the list of things that make
32505      Tor accept that it has running ports. Change starting Tor with no
32506      ports from a fatal error to a warning; we might change it back if
32507      this turns out to confuse anybody. Fixes bug 579.
32508
32509
32510Changes in version 0.1.2.19 - 2008-01-17
32511  Tor 0.1.2.19 fixes a huge memory leak on exit relays, makes the default
32512  exit policy a little bit more conservative so it's safer to run an
32513  exit relay on a home system, and fixes a variety of smaller issues.
32514
32515  o Security fixes:
32516    - Exit policies now reject connections that are addressed to a
32517      relay's public (external) IP address too, unless
32518      ExitPolicyRejectPrivate is turned off. We do this because too
32519      many relays are running nearby to services that trust them based
32520      on network address.
32521
32522  o Major bugfixes:
32523    - When the clock jumps forward a lot, do not allow the bandwidth
32524      buckets to become negative. Fixes bug 544.
32525    - Fix a memory leak on exit relays; we were leaking a cached_resolve_t
32526      on every successful resolve. Reported by Mike Perry.
32527    - Purge old entries from the "rephist" database and the hidden
32528      service descriptor database even when DirPort is zero.
32529    - Stop thinking that 0.1.2.x directory servers can handle "begin_dir"
32530      requests. Should ease bugs 406 and 419 where 0.1.2.x relays are
32531      crashing or mis-answering these requests.
32532    - When we decide to send a 503 response to a request for servers, do
32533      not then also send the server descriptors: this defeats the whole
32534      purpose. Fixes bug 539.
32535
32536  o Minor bugfixes:
32537    - Changing the ExitPolicyRejectPrivate setting should cause us to
32538      rebuild our server descriptor.
32539    - Fix handling of hex nicknames when answering controller requests for
32540      networkstatus by name, or when deciding whether to warn about
32541      unknown routers in a config option. (Patch from mwenge.)
32542    - Fix a couple of hard-to-trigger autoconf problems that could result
32543      in really weird results on platforms whose sys/types.h files define
32544      nonstandard integer types.
32545    - Don't try to create the datadir when running --verify-config or
32546      --hash-password. Resolves bug 540.
32547    - If we were having problems getting a particular descriptor from the
32548      directory caches, and then we learned about a new descriptor for
32549      that router, we weren't resetting our failure count. Reported
32550      by lodger.
32551    - Although we fixed bug 539 (where servers would send HTTP status 503
32552      responses _and_ send a body too), there are still servers out there
32553      that haven't upgraded. Therefore, make clients parse such bodies
32554      when they receive them.
32555    - Run correctly on systems where rlim_t is larger than unsigned long.
32556      This includes some 64-bit systems.
32557    - Run correctly on platforms (like some versions of OS X 10.5) where
32558      the real limit for number of open files is OPEN_FILES, not rlim_max
32559      from getrlimit(RLIMIT_NOFILES).
32560    - Avoid a spurious free on base64 failure.
32561    - Avoid segfaults on certain complex invocations of
32562      router_get_by_hexdigest().
32563    - Fix rare bug on REDIRECTSTREAM control command when called with no
32564      port set: it could erroneously report an error when none had
32565      happened.
32566
32567
32568Changes in version 0.2.0.15-alpha - 2007-12-25
32569  Tor 0.2.0.14-alpha and 0.2.0.15-alpha fix a bunch of bugs with the
32570  features added in 0.2.0.13-alpha.
32571
32572  o Major bugfixes:
32573    - Fix several remotely triggerable asserts based on DirPort requests
32574      for a v2 or v3 networkstatus object before we were prepared. This
32575      was particularly bad for 0.2.0.13 and later bridge relays, who
32576      would never have a v2 networkstatus and would thus always crash
32577      when used. Bugfixes on 0.2.0.x.
32578    - Estimate the v3 networkstatus size more accurately, rather than
32579      estimating it at zero bytes and giving it artificially high priority
32580      compared to other directory requests. Bugfix on 0.2.0.x.
32581
32582  o Minor bugfixes:
32583    - Fix configure.in logic for cross-compilation.
32584    - When we load a bridge descriptor from the cache, and it was
32585      previously unreachable, mark it as retriable so we won't just
32586      ignore it. Also, try fetching a new copy immediately. Bugfixes
32587      on 0.2.0.13-alpha.
32588    - The bridge GeoIP stats were counting other relays, for example
32589      self-reachability and authority-reachability tests.
32590
32591  o Minor features:
32592    - Support compilation to target iPhone; patch from cjacker huang.
32593      To build for iPhone, pass the --enable-iphone option to configure.
32594
32595
32596Changes in version 0.2.0.14-alpha - 2007-12-23
32597  o Major bugfixes:
32598    - Fix a crash on startup if you install Tor 0.2.0.13-alpha fresh
32599      without a datadirectory from a previous Tor install. Reported
32600      by Zax.
32601    - Fix a crash when we fetch a descriptor that turns out to be
32602      unexpected (it used to be in our networkstatus when we started
32603      fetching it, but it isn't in our current networkstatus), and we
32604      aren't using bridges. Bugfix on 0.2.0.x.
32605    - Fix a crash when accessing hidden services: it would work the first
32606      time you use a given introduction point for your service, but
32607      on subsequent requests we'd be using garbage memory. Fixed by
32608      Karsten Loesing. Bugfix on 0.2.0.13-alpha.
32609    - Fix a crash when we load a bridge descriptor from disk but we don't
32610      currently have a Bridge line for it in our torrc. Bugfix on
32611      0.2.0.13-alpha.
32612
32613  o Major features:
32614    - If bridge authorities set BridgePassword, they will serve a
32615      snapshot of known bridge routerstatuses from their DirPort to
32616      anybody who knows that password. Unset by default.
32617
32618  o Minor bugfixes:
32619    - Make the unit tests build again.
32620    - Make "GETINFO/desc-annotations/id/<OR digest>" actually work.
32621    - Make PublishServerDescriptor default to 1, so the default doesn't
32622      have to change as we invent new directory protocol versions.
32623    - Fix test for rlim_t on OSX 10.3: sys/resource.h doesn't want to
32624      be included unless sys/time.h is already included. Fixes
32625      bug 553. Bugfix on 0.2.0.x.
32626    - If we receive a general-purpose descriptor and then receive an
32627      identical bridge-purpose descriptor soon after, don't discard
32628      the next one as a duplicate.
32629
32630  o Minor features:
32631    - If BridgeRelay is set to 1, then the default for
32632      PublishServerDescriptor is now "bridge" rather than "v2,v3".
32633    - If the user sets RelayBandwidthRate but doesn't set
32634      RelayBandwidthBurst, then make them equal rather than erroring out.
32635
32636
32637Changes in version 0.2.0.13-alpha - 2007-12-21
32638  Tor 0.2.0.13-alpha adds a fourth v3 directory authority run by Geoff
32639  Goodell, fixes many more bugs, and adds a lot of infrastructure for
32640  upcoming features.
32641
32642  o New directory authorities:
32643    - Set up lefkada (run by Geoff Goodell) as the fourth v3 directory
32644      authority.
32645
32646  o Major bugfixes:
32647    - Only update guard status (usable / not usable) once we have
32648      enough directory information. This was causing us to always pick
32649      two new guards on startup (bugfix on 0.2.0.9-alpha), and it was
32650      causing us to discard all our guards on startup if we hadn't been
32651      running for a few weeks (bugfix on 0.1.2.x). Fixes bug 448.
32652    - Purge old entries from the "rephist" database and the hidden
32653      service descriptor databases even when DirPort is zero. Bugfix
32654      on 0.1.2.x.
32655    - We were ignoring our RelayBandwidthRate for the first 30 seconds
32656      after opening a circuit -- even a relayed circuit. Bugfix on
32657      0.2.0.3-alpha.
32658    - Stop thinking that 0.1.2.x directory servers can handle "begin_dir"
32659      requests. Should ease bugs 406 and 419 where 0.1.2.x relays are
32660      crashing or mis-answering these types of requests.
32661    - Relays were publishing their server descriptor to v1 and v2
32662      directory authorities, but they didn't try publishing to v3-only
32663      authorities. Fix this; and also stop publishing to v1 authorities.
32664      Bugfix on 0.2.0.x.
32665    - When we were reading router descriptors from cache, we were ignoring
32666      the annotations -- so for example we were reading in bridge-purpose
32667      descriptors as general-purpose descriptors. Bugfix on 0.2.0.8-alpha.
32668    - When we decided to send a 503 response to a request for servers, we
32669      were then also sending the server descriptors: this defeats the
32670      whole purpose. Fixes bug 539; bugfix on 0.1.2.x.
32671
32672  o Major features:
32673    - Bridge relays now behave like clients with respect to time
32674      intervals for downloading new consensus documents -- otherwise they
32675      stand out. Bridge users now wait until the end of the interval,
32676      so their bridge relay will be sure to have a new consensus document.
32677    - Three new config options (AlternateDirAuthority,
32678      AlternateBridgeAuthority, and AlternateHSAuthority) that let the
32679      user selectively replace the default directory authorities by type,
32680      rather than the all-or-nothing replacement that DirServer offers.
32681    - Tor can now be configured to read a GeoIP file from disk in one
32682      of two formats. This can be used by controllers to map IP addresses
32683      to countries. Eventually, it may support exit-by-country.
32684    - When possible, bridge relays remember which countries users
32685      are coming from, and report aggregate information in their
32686      extra-info documents, so that the bridge authorities can learn
32687      where Tor is blocked.
32688    - Bridge directory authorities now do reachability testing on the
32689      bridges they know. They provide router status summaries to the
32690      controller via "getinfo ns/purpose/bridge", and also dump summaries
32691      to a file periodically.
32692    - Stop fetching directory info so aggressively if your DirPort is
32693      on but your ORPort is off; stop fetching v2 dir info entirely.
32694      You can override these choices with the new FetchDirInfoEarly
32695      config option.
32696
32697  o Minor bugfixes:
32698    - The fix in 0.2.0.12-alpha cleared the "hsdir" flag in v3 network
32699      consensus documents when there are too many relays at a single
32700      IP address. Now clear it in v2 network status documents too, and
32701      also clear it in routerinfo_t when the relay is no longer listed
32702      in the relevant networkstatus document.
32703    - Don't crash if we get an unexpected value for the
32704      PublishServerDescriptor config option. Reported by Matt Edman;
32705      bugfix on 0.2.0.9-alpha.
32706    - Our new v2 hidden service descriptor format allows descriptors
32707      that have no introduction points. But Tor crashed when we tried
32708      to build a descriptor with no intro points (and it would have
32709      crashed if we had tried to parse one). Bugfix on 0.2.0.x; patch
32710      by Karsten Loesing.
32711    - Fix building with dmalloc 5.5.2 with glibc.
32712    - Reject uploaded descriptors and extrainfo documents if they're
32713      huge. Otherwise we'll cache them all over the network and it'll
32714      clog everything up. Reported by Aljosha Judmayer.
32715    - Check for presence of s6_addr16 and s6_addr32 fields in in6_addr
32716      via autoconf. Should fix compile on solaris. Bugfix on 0.2.0.x.
32717    - When the DANGEROUS_VERSION controller status event told us we're
32718      running an obsolete version, it used the string "OLD" to describe
32719      it. Yet the "getinfo" interface used the string "OBSOLETE". Now use
32720      "OBSOLETE" in both cases. Bugfix on 0.1.2.x.
32721    - If we can't expand our list of entry guards (e.g. because we're
32722      using bridges or we have StrictEntryNodes set), don't mark relays
32723      down when they fail a directory request. Otherwise we're too quick
32724      to mark all our entry points down. Bugfix on 0.1.2.x.
32725    - Fix handling of hex nicknames when answering controller requests for
32726      networkstatus by name, or when deciding whether to warn about unknown
32727      routers in a config option. Bugfix on 0.1.2.x. (Patch from mwenge.)
32728    - Fix a couple of hard-to-trigger autoconf problems that could result
32729      in really weird results on platforms whose sys/types.h files define
32730      nonstandard integer types. Bugfix on 0.1.2.x.
32731    - Fix compilation with --disable-threads set. Bugfix on 0.2.0.x.
32732    - Don't crash on name lookup when we have no current consensus. Fixes
32733      bug 538; bugfix on 0.2.0.x.
32734    - Only Tors that want to mirror the v2 directory info should
32735      create the "cached-status" directory in their datadir. (All Tors
32736      used to create it.) Bugfix on 0.2.0.9-alpha.
32737    - Directory authorities should only automatically download Extra Info
32738      documents if they're v1, v2, or v3 authorities. Bugfix on 0.1.2.x.
32739
32740  o Minor features:
32741    - On the USR1 signal, when dmalloc is in use, log the top 10 memory
32742      consumers. (We already do this on HUP.)
32743    - Authorities and caches fetch the v2 networkstatus documents
32744      less often, now that v3 is encouraged.
32745    - Add a new config option BridgeRelay that specifies you want to
32746      be a bridge relay. Right now the only difference is that it makes
32747      you answer begin_dir requests, and it makes you cache dir info,
32748      even if your DirPort isn't on.
32749    - Add "GETINFO/desc-annotations/id/<OR digest>" so controllers can
32750      ask about source, timestamp of arrival, purpose, etc. We need
32751      something like this to help Vidalia not do GeoIP lookups on bridge
32752      addresses.
32753    - Allow multiple HashedControlPassword config lines, to support
32754      multiple controller passwords.
32755    - Authorities now decide whether they're authoritative for a given
32756      router based on the router's purpose.
32757    - New config options AuthDirBadDir and AuthDirListBadDirs for
32758      authorities to mark certain relays as "bad directories" in the
32759      networkstatus documents. Also supports the "!baddir" directive in
32760      the approved-routers file.
32761
32762
32763Changes in version 0.2.0.12-alpha - 2007-11-16
32764  This twelfth development snapshot fixes some more build problems as
32765  well as a few minor bugs.
32766
32767  o Compile fixes:
32768    - Make it build on OpenBSD again. Patch from tup.
32769    - Substitute BINDIR and LOCALSTATEDIR in scripts. Fixes
32770      package-building for Red Hat, OS X, etc.
32771
32772  o Minor bugfixes (on 0.1.2.x):
32773    - Changing the ExitPolicyRejectPrivate setting should cause us to
32774      rebuild our server descriptor.
32775
32776  o Minor bugfixes (on 0.2.0.x):
32777    - When we're lacking a consensus, don't try to perform rendezvous
32778      operations. Reported by Karsten Loesing.
32779    - Fix a small memory leak whenever we decide against using a
32780      newly picked entry guard. Reported by Mike Perry.
32781    - When authorities detected more than two relays running on the same
32782      IP address, they were clearing all the status flags but forgetting
32783      to clear the "hsdir" flag. So clients were being told that a
32784      given relay was the right choice for a v2 hsdir lookup, yet they
32785      never had its descriptor because it was marked as 'not running'
32786      in the consensus.
32787    - If we're trying to fetch a bridge descriptor and there's no way
32788      the bridge authority could help us (for example, we don't know
32789      a digest, or there is no bridge authority), don't be so eager to
32790      fall back to asking the bridge authority.
32791    - If we're using bridges or have strictentrynodes set, and our
32792      chosen exit is in the same family as all our bridges/entry guards,
32793      then be flexible about families.
32794
32795  o Minor features:
32796    - When we negotiate a v2 link-layer connection (not yet implemented),
32797      accept RELAY_EARLY cells and turn them into RELAY cells if we've
32798      negotiated a v1 connection for their next step. Initial code for
32799      proposal 110.
32800
32801
32802Changes in version 0.2.0.11-alpha - 2007-11-12
32803  This eleventh development snapshot fixes some build problems with
32804  the previous snapshot. It also includes a more secure-by-default exit
32805  policy for relays, fixes an enormous memory leak for exit relays, and
32806  fixes another bug where servers were falling out of the directory list.
32807
32808  o Security fixes:
32809    - Exit policies now reject connections that are addressed to a
32810      relay's public (external) IP address too, unless
32811      ExitPolicyRejectPrivate is turned off. We do this because too
32812      many relays are running nearby to services that trust them based
32813      on network address. Bugfix on 0.1.2.x.
32814
32815  o Major bugfixes:
32816    - Fix a memory leak on exit relays; we were leaking a cached_resolve_t
32817      on every successful resolve. Reported by Mike Perry; bugfix
32818      on 0.1.2.x.
32819    - On authorities, never downgrade to old router descriptors simply
32820      because they're listed in the consensus. This created a catch-22
32821      where we wouldn't list a new descriptor because there was an
32822      old one in the consensus, and we couldn't get the new one in the
32823      consensus because we wouldn't list it. Possible fix for bug 548.
32824      Also, this might cause bug 543 to appear on authorities; if so,
32825      we'll need a band-aid for that. Bugfix on 0.2.0.9-alpha.
32826
32827  o Packaging fixes on 0.2.0.10-alpha:
32828    - We were including instructions about what to do with the
32829      src/config/fallback-consensus file, but we weren't actually
32830      including it in the tarball. Disable all of that for now.
32831
32832  o Minor features:
32833    - Allow people to say PreferTunnelledDirConns rather than
32834      PreferTunneledDirConns, for those alternate-spellers out there.
32835
32836  o Minor bugfixes:
32837    - Don't reevaluate all the information from our consensus document
32838      just because we've downloaded a v2 networkstatus that we intend
32839      to cache. Fixes bug 545; bugfix on 0.2.0.x.
32840
32841
32842Changes in version 0.2.0.10-alpha - 2007-11-10
32843  This tenth development snapshot adds a third v3 directory authority
32844  run by Mike Perry, adds most of Karsten Loesing's new hidden service
32845  descriptor format, fixes a bad crash bug and new bridge bugs introduced
32846  in 0.2.0.9-alpha, fixes many bugs with the v3 directory implementation,
32847  fixes some minor memory leaks in previous 0.2.0.x snapshots, and
32848  addresses many more minor issues.
32849
32850  o New directory authorities:
32851    - Set up ides (run by Mike Perry) as the third v3 directory authority.
32852
32853  o Major features:
32854    - Allow tunnelled directory connections to ask for an encrypted
32855      "begin_dir" connection or an anonymized "uses a full Tor circuit"
32856      connection independently. Now we can make anonymized begin_dir
32857      connections for (e.g.) more secure hidden service posting and
32858      fetching.
32859    - More progress on proposal 114: code from Karsten Loesing to
32860      implement new hidden service descriptor format.
32861    - Raise the default BandwidthRate/BandwidthBurst to 5MB/10MB, to
32862      accommodate the growing number of servers that use the default
32863      and are reaching it.
32864    - Directory authorities use a new formula for selecting which nodes
32865      to advertise as Guards: they must be in the top 7/8 in terms of
32866      how long we have known about them, and above the median of those
32867      nodes in terms of weighted fractional uptime.
32868    - Make "not enough dir info yet" warnings describe *why* Tor feels
32869      it doesn't have enough directory info yet.
32870
32871  o Major bugfixes:
32872    - Stop servers from crashing if they set a Family option (or
32873      maybe in other situations too). Bugfix on 0.2.0.9-alpha; reported
32874      by Fabian Keil.
32875    - Make bridge users work again -- the move to v3 directories in
32876      0.2.0.9-alpha had introduced a number of bugs that made bridges
32877      no longer work for clients.
32878    - When the clock jumps forward a lot, do not allow the bandwidth
32879      buckets to become negative. Bugfix on 0.1.2.x; fixes bug 544.
32880
32881  o Major bugfixes (v3 dir, bugfixes on 0.2.0.9-alpha):
32882    - When the consensus lists a router descriptor that we previously were
32883      mirroring, but that we considered non-canonical, reload the
32884      descriptor as canonical. This fixes bug 543 where Tor servers
32885      would start complaining after a few days that they don't have
32886      enough directory information to build a circuit.
32887    - Consider replacing the current consensus when certificates arrive
32888      that make the pending consensus valid. Previously, we were only
32889      considering replacement when the new certs _didn't_ help.
32890    - Fix an assert error on startup if we didn't already have the
32891      consensus and certs cached in our datadirectory: we were caching
32892      the consensus in consensus_waiting_for_certs but then free'ing it
32893      right after.
32894    - Avoid sending a request for "keys/fp" (for which we'll get a 400 Bad
32895      Request) if we need more v3 certs but we've already got pending
32896      requests for all of them.
32897    - Correctly back off from failing certificate downloads. Fixes
32898      bug 546.
32899    - Authorities don't vote on the Running flag if they have been running
32900      for less than 30 minutes themselves. Fixes bug 547, where a newly
32901      started authority would vote that everyone was down.
32902
32903  o New requirements:
32904    - Drop support for OpenSSL version 0.9.6. Just about nobody was using
32905      it, it had no AES, and it hasn't seen any security patches since
32906      2004.
32907
32908  o Minor features:
32909    - Clients now hold circuitless TLS connections open for 1.5 times
32910      MaxCircuitDirtiness (15 minutes), since it is likely that they'll
32911      rebuild a new circuit over them within that timeframe. Previously,
32912      they held them open only for KeepalivePeriod (5 minutes).
32913    - Use "If-Modified-Since" to avoid retrieving consensus
32914      networkstatuses that we already have.
32915    - When we have no consensus, check FallbackNetworkstatusFile (defaults
32916      to $PREFIX/share/tor/fallback-consensus) for a consensus. This way
32917      we start knowing some directory caches.
32918    - When we receive a consensus from the future, warn about skew.
32919    - Improve skew reporting: try to give the user a better log message
32920      about how skewed they are, and how much this matters.
32921    - When we have a certificate for an authority, believe that
32922      certificate's claims about the authority's IP address.
32923    - New --quiet command-line option to suppress the default console log.
32924      Good in combination with --hash-password.
32925    - Authorities send back an X-Descriptor-Not-New header in response to
32926      an accepted-but-discarded descriptor upload. Partially implements
32927      fix for bug 535.
32928    - Make the log message for "tls error. breaking." more useful.
32929    - Better log messages about certificate downloads, to attempt to
32930      track down the second incarnation of bug 546.
32931
32932  o Minor features (bridges):
32933    - If bridge users set UpdateBridgesFromAuthority, but the digest
32934      they ask for is a 404 from the bridge authority, they now fall
32935      back to trying the bridge directly.
32936    - Bridges now use begin_dir to publish their server descriptor to
32937      the bridge authority, even when they haven't set TunnelDirConns.
32938
32939  o Minor features (controller):
32940    - When reporting clock skew, and we know that the clock is _at least
32941      as skewed_ as some value, but we don't know the actual value,
32942      report the value as a "minimum skew."
32943
32944  o Utilities:
32945    - Update linux-tor-prio.sh script to allow QoS based on the uid of
32946      the Tor process. Patch from Marco Bonetti with tweaks from Mike
32947      Perry.
32948
32949  o Minor bugfixes:
32950    - Refuse to start if both ORPort and UseBridges are set. Bugfix
32951      on 0.2.0.x, suggested by Matt Edman.
32952    - Don't stop fetching descriptors when FetchUselessDescriptors is
32953      set, even if we stop asking for circuits. Bugfix on 0.1.2.x;
32954      reported by tup and ioerror.
32955    - Better log message on vote from unknown authority.
32956    - Don't log "Launching 0 request for 0 router" message.
32957
32958  o Minor bugfixes (memory leaks):
32959    - Stop leaking memory every time we parse a v3 certificate. Bugfix
32960      on 0.2.0.1-alpha.
32961    - Stop leaking memory every time we load a v3 certificate. Bugfix
32962      on 0.2.0.1-alpha. Fixes bug 536.
32963    - Stop leaking a cached networkstatus on exit. Bugfix on
32964      0.2.0.3-alpha.
32965    - Stop leaking voter information every time we free a consensus.
32966      Bugfix on 0.2.0.3-alpha.
32967    - Stop leaking signed data every time we check a voter signature.
32968      Bugfix on 0.2.0.3-alpha.
32969    - Stop leaking a signature every time we fail to parse a consensus or
32970      a vote. Bugfix on 0.2.0.3-alpha.
32971    - Stop leaking v2_download_status_map on shutdown. Bugfix on
32972      0.2.0.9-alpha.
32973    - Stop leaking conn->nickname every time we make a connection to a
32974      Tor relay without knowing its expected identity digest (e.g. when
32975      using bridges). Bugfix on 0.2.0.3-alpha.
32976
32977  - Minor bugfixes (portability):
32978    - Run correctly on platforms where rlim_t is larger than unsigned
32979      long, and/or where the real limit for number of open files is
32980      OPEN_FILES, not rlim_max from getrlimit(RLIMIT_NOFILES). In
32981      particular, these may be needed for OS X 10.5.
32982
32983
32984Changes in version 0.1.2.18 - 2007-10-28
32985  Tor 0.1.2.18 fixes many problems including crash bugs, problems with
32986  hidden service introduction that were causing huge delays, and a big
32987  bug that was causing some servers to disappear from the network status
32988  lists for a few hours each day.
32989
32990  o Major bugfixes (crashes):
32991    - If a connection is shut down abruptly because of something that
32992      happened inside connection_flushed_some(), do not call
32993      connection_finished_flushing(). Should fix bug 451:
32994      "connection_stop_writing: Assertion conn->write_event failed"
32995      Bugfix on 0.1.2.7-alpha.
32996    - Fix possible segfaults in functions called from
32997      rend_process_relay_cell().
32998
32999  o Major bugfixes (hidden services):
33000    - Hidden services were choosing introduction points uniquely by
33001      hexdigest, but when constructing the hidden service descriptor
33002      they merely wrote the (potentially ambiguous) nickname.
33003    - Clients now use the v2 intro format for hidden service
33004      connections: they specify their chosen rendezvous point by identity
33005      digest rather than by (potentially ambiguous) nickname. These
33006      changes could speed up hidden service connections dramatically.
33007
33008  o Major bugfixes (other):
33009    - Stop publishing a new server descriptor just because we get a
33010      HUP signal. This led (in a roundabout way) to some servers getting
33011      dropped from the networkstatus lists for a few hours each day.
33012    - When looking for a circuit to cannibalize, consider family as well
33013      as identity. Fixes bug 438. Bugfix on 0.1.0.x (which introduced
33014      circuit cannibalization).
33015    - When a router wasn't listed in a new networkstatus, we were leaving
33016      the flags for that router alone -- meaning it remained Named,
33017      Running, etc -- even though absence from the networkstatus means
33018      that it shouldn't be considered to exist at all anymore. Now we
33019      clear all the flags for routers that fall out of the networkstatus
33020      consensus. Fixes bug 529.
33021
33022  o Minor bugfixes:
33023    - Don't try to access (or alter) the state file when running
33024      --list-fingerprint or --verify-config or --hash-password. Resolves
33025      bug 499.
33026    - When generating information telling us how to extend to a given
33027      router, do not try to include the nickname if it is
33028      absent. Resolves bug 467.
33029    - Fix a user-triggerable segfault in expand_filename(). (There isn't
33030      a way to trigger this remotely.)
33031    - When sending a status event to the controller telling it that an
33032      OR address is reachable, set the port correctly. (Previously we
33033      were reporting the dir port.)
33034    - Fix a minor memory leak whenever a controller sends the PROTOCOLINFO
33035      command. Bugfix on 0.1.2.17.
33036    - When loading bandwidth history, do not believe any information in
33037      the future. Fixes bug 434.
33038    - When loading entry guard information, do not believe any information
33039      in the future.
33040    - When we have our clock set far in the future and generate an
33041      onion key, then re-set our clock to be correct, we should not stop
33042      the onion key from getting rotated.
33043    - On some platforms, accept() can return a broken address. Detect
33044      this more quietly, and deal accordingly. Fixes bug 483.
33045    - It's not actually an error to find a non-pending entry in the DNS
33046      cache when canceling a pending resolve. Don't log unless stuff
33047      is fishy. Resolves bug 463.
33048    - Don't reset trusted dir server list when we set a configuration
33049      option. Patch from Robert Hogan.
33050    - Don't try to create the datadir when running --verify-config or
33051      --hash-password. Resolves bug 540.
33052
33053
33054Changes in version 0.2.0.9-alpha - 2007-10-24
33055  This ninth development snapshot switches clients to the new v3 directory
33056  system; allows servers to be listed in the network status even when they
33057  have the same nickname as a registered server; and fixes many other
33058  bugs including a big one that was causing some servers to disappear
33059  from the network status lists for a few hours each day.
33060
33061  o Major features (directory system):
33062    - Clients now download v3 consensus networkstatus documents instead
33063      of v2 networkstatus documents. Clients and caches now base their
33064      opinions about routers on these consensus documents. Clients only
33065      download router descriptors listed in the consensus.
33066    - Authorities now list servers who have the same nickname as
33067      a different named server, but list them with a new flag,
33068      "Unnamed". Now we can list servers that happen to pick the same
33069      nickname as a server that registered two years ago and then
33070      disappeared. Partially implements proposal 122.
33071    - If the consensus lists a router as "Unnamed", the name is assigned
33072      to a different router: do not identify the router by that name.
33073      Partially implements proposal 122.
33074    - Authorities can now come to a consensus on which method to use to
33075      compute the consensus. This gives us forward compatibility.
33076
33077  o Major bugfixes:
33078    - Stop publishing a new server descriptor just because we HUP or
33079      when we find our DirPort to be reachable but won't actually publish
33080      it. New descriptors without any real changes are dropped by the
33081      authorities, and can screw up our "publish every 18 hours" schedule.
33082      Bugfix on 0.1.2.x.
33083    - When a router wasn't listed in a new networkstatus, we were leaving
33084      the flags for that router alone -- meaning it remained Named,
33085      Running, etc -- even though absence from the networkstatus means
33086      that it shouldn't be considered to exist at all anymore. Now we
33087      clear all the flags for routers that fall out of the networkstatus
33088      consensus. Fixes bug 529; bugfix on 0.1.2.x.
33089    - Fix awful behavior in DownloadExtraInfo option where we'd fetch
33090      extrainfo documents and then discard them immediately for not
33091      matching the latest router. Bugfix on 0.2.0.1-alpha.
33092
33093  o Minor features (v3 directory protocol):
33094    - Allow tor-gencert to generate a new certificate without replacing
33095      the signing key.
33096    - Allow certificates to include an address.
33097    - When we change our directory-cache settings, reschedule all voting
33098      and download operations.
33099    - Reattempt certificate downloads immediately on failure, as long as
33100      we haven't failed a threshold number of times yet.
33101    - Delay retrying consensus downloads while we're downloading
33102      certificates to verify the one we just got. Also, count getting a
33103      consensus that we already have (or one that isn't valid) as a failure,
33104      and count failing to get the certificates after 20 minutes as a
33105      failure.
33106    - Build circuits and download descriptors even if our consensus is a
33107      little expired. (This feature will go away once authorities are
33108      more reliable.)
33109
33110  o Minor features (router descriptor cache):
33111    - If we find a cached-routers file that's been sitting around for more
33112      than 28 days unmodified, then most likely it's a leftover from
33113      when we upgraded to 0.2.0.8-alpha. Remove it. It has no good
33114      routers anyway.
33115    - When we (as a cache) download a descriptor because it was listed
33116      in a consensus, remember when the consensus was supposed to expire,
33117      and don't expire the descriptor until then.
33118
33119  o Minor features (performance):
33120    - Call routerlist_remove_old_routers() much less often. This should
33121      speed startup, especially on directory caches.
33122    - Don't try to launch new descriptor downloads quite so often when we
33123      already have enough directory information to build circuits.
33124    - Base64 decoding was actually showing up on our profile when parsing
33125      the initial descriptor file; switch to an in-process all-at-once
33126      implementation that's about 3.5x times faster than calling out to
33127      OpenSSL.
33128
33129  o Minor features (compilation):
33130    - Detect non-ASCII platforms (if any still exist) and refuse to
33131      build there: some of our code assumes that 'A' is 65 and so on.
33132
33133  o Minor bugfixes (v3 directory authorities, bugfixes on 0.2.0.x):
33134    - Make the "next period" votes into "current period" votes immediately
33135      after publishing the consensus; avoid a heisenbug that made them
33136      stick around indefinitely.
33137    - When we discard a vote as a duplicate, do not report this as
33138      an error.
33139    - Treat missing v3 keys or certificates as an error when running as a
33140      v3 directory authority.
33141    - When we're configured to be a v3 authority, but we're only listed
33142      as a non-v3 authority in our DirServer line for ourself, correct
33143      the listing.
33144    - If an authority doesn't have a qualified hostname, just put
33145      its address in the vote. This fixes the problem where we referred to
33146      "moria on moria:9031."
33147    - Distinguish between detached signatures for the wrong period, and
33148      detached signatures for a divergent vote.
33149    - Fix a small memory leak when computing a consensus.
33150    - When there's no consensus, we were forming a vote every 30
33151      minutes, but writing the "valid-after" line in our vote based
33152      on our configured V3AuthVotingInterval: so unless the intervals
33153      matched up, we immediately rejected our own vote because it didn't
33154      start at the voting interval that caused us to construct a vote.
33155
33156  o Minor bugfixes (v3 directory protocol, bugfixes on 0.2.0.x):
33157    - Delete unverified-consensus when the real consensus is set.
33158    - Consider retrying a consensus networkstatus fetch immediately
33159      after one fails: don't wait 60 seconds to notice.
33160    - When fetching a consensus as a cache, wait until a newer consensus
33161      should exist before trying to replace the current one.
33162    - Use a more forgiving schedule for retrying failed consensus
33163      downloads than for other types.
33164
33165  o Minor bugfixes (other directory issues):
33166    - Correct the implementation of "download votes by digest." Bugfix on
33167      0.2.0.8-alpha.
33168    - Authorities no longer send back "400 you're unreachable please fix
33169      it" errors to Tor servers that aren't online all the time. We're
33170      supposed to tolerate these servers now. Bugfix on 0.1.2.x.
33171
33172  o Minor bugfixes (controller):
33173    - Don't reset trusted dir server list when we set a configuration
33174      option. Patch from Robert Hogan; bugfix on 0.1.2.x.
33175    - Respond to INT and TERM SIGNAL commands before we execute the
33176      signal, in case the signal shuts us down. We had a patch in
33177      0.1.2.1-alpha that tried to do this by queueing the response on
33178      the connection's buffer before shutting down, but that really
33179      isn't the same thing at all. Bug located by Matt Edman.
33180
33181  o Minor bugfixes (misc):
33182    - Correctly check for bad options to the "PublishServerDescriptor"
33183      config option. Bugfix on 0.2.0.1-alpha; reported by Matt Edman.
33184    - Stop leaking memory on failing case of base32_decode, and make
33185      it accept upper-case letters. Bugfixes on 0.2.0.7-alpha.
33186    - Don't try to download extrainfo documents when we're trying to
33187      fetch enough directory info to build a circuit: having enough
33188      info should get priority. Bugfix on 0.2.0.x.
33189    - Don't complain that "your server has not managed to confirm that its
33190      ports are reachable" if we haven't been able to build any circuits
33191      yet. Bug found by spending four hours without a v3 consensus. Bugfix
33192      on 0.1.2.x.
33193    - Detect the reason for failing to mmap a descriptor file we just
33194      wrote, and give a more useful log message. Fixes bug 533. Bugfix
33195      on 0.1.2.x.
33196
33197  o Code simplifications and refactoring:
33198    - Remove support for the old bw_accounting file: we've been storing
33199      bandwidth accounting information in the state file since
33200      0.1.2.5-alpha. This may result in bandwidth accounting errors
33201      if you try to upgrade from 0.1.1.x or earlier, or if you try to
33202      downgrade to 0.1.1.x or earlier.
33203    - New convenience code to locate a file within the DataDirectory.
33204    - Move non-authority functionality out of dirvote.c.
33205    - Refactor the arguments for router_pick_{directory_|trusteddir}server
33206      so that they all take the same named flags.
33207
33208  o Utilities
33209    - Include the "tor-ctrl.sh" bash script by Stefan Behte to provide
33210      Unix users an easy way to script their Tor process (e.g. by
33211      adjusting bandwidth based on the time of the day).
33212
33213
33214Changes in version 0.2.0.8-alpha - 2007-10-12
33215  This eighth development snapshot fixes a crash bug that's been bothering
33216  us since February 2007, lets bridge authorities store a list of bridge
33217  descriptors they've seen, gets v3 directory voting closer to working,
33218  starts caching v3 directory consensus documents on directory mirrors,
33219  and fixes a variety of smaller issues including some minor memory leaks.
33220
33221  o Major features (router descriptor cache):
33222    - Store routers in a file called cached-descriptors instead of in
33223      cached-routers. Initialize cached-descriptors from cached-routers
33224      if the old format is around. The new format allows us to store
33225      annotations along with descriptors.
33226    - Use annotations to record the time we received each descriptor, its
33227      source, and its purpose.
33228    - Disable the SETROUTERPURPOSE controller command: it is now
33229      obsolete.
33230    - Controllers should now specify cache=no or cache=yes when using
33231      the +POSTDESCRIPTOR command.
33232    - Bridge authorities now write bridge descriptors to disk, meaning
33233      we can export them to other programs and begin distributing them
33234      to blocked users.
33235
33236  o Major features (directory authorities):
33237    - When a v3 authority is missing votes or signatures, it now tries
33238      to fetch them.
33239    - Directory authorities track weighted fractional uptime as well as
33240      weighted mean-time-between failures. WFU is suitable for deciding
33241      whether a node is "usually up", while MTBF is suitable for deciding
33242      whether a node is "likely to stay up." We need both, because
33243      "usually up" is a good requirement for guards, while "likely to
33244      stay up" is a good requirement for long-lived connections.
33245
33246  o Major features (v3 directory system):
33247    - Caches now download v3 network status documents as needed,
33248      and download the descriptors listed in them.
33249    - All hosts now attempt to download and keep fresh v3 authority
33250      certificates, and re-attempt after failures.
33251    - More internal-consistency checks for vote parsing.
33252
33253  o Major bugfixes (crashes):
33254    - If a connection is shut down abruptly because of something that
33255      happened inside connection_flushed_some(), do not call
33256      connection_finished_flushing(). Should fix bug 451. Bugfix on
33257      0.1.2.7-alpha.
33258
33259  o Major bugfixes (performance):
33260    - Fix really bad O(n^2) performance when parsing a long list of
33261      routers: Instead of searching the entire list for an "extra-info "
33262      string which usually wasn't there, once for every routerinfo
33263      we read, just scan lines forward until we find one we like.
33264      Bugfix on 0.2.0.1.
33265    - When we add data to a write buffer in response to the data on that
33266      write buffer getting low because of a flush, do not consider the
33267      newly added data as a candidate for immediate flushing, but rather
33268      make it wait until the next round of writing. Otherwise, we flush
33269      and refill recursively, and a single greedy TLS connection can
33270      eat all of our bandwidth. Bugfix on 0.1.2.7-alpha.
33271
33272  o Minor features (v3 authority system):
33273    - Add more ways for tools to download the votes that lead to the
33274      current consensus.
33275    - Send a 503 when low on bandwidth and a vote, consensus, or
33276      certificate is requested.
33277    - If-modified-since is now implemented properly for all kinds of
33278      certificate requests.
33279
33280  o Minor bugfixes (network statuses):
33281    - Tweak the implementation of proposal 109 slightly: allow at most
33282      two Tor servers on the same IP address, except if it's the location
33283      of a directory authority, in which case allow five. Bugfix on
33284      0.2.0.3-alpha.
33285
33286  o Minor bugfixes (controller):
33287    - When sending a status event to the controller telling it that an
33288      OR address is reachable, set the port correctly. (Previously we
33289      were reporting the dir port.) Bugfix on 0.1.2.x.
33290
33291  o Minor bugfixes (v3 directory system):
33292    - Fix logic to look up a cert by its signing key digest. Bugfix on
33293      0.2.0.7-alpha.
33294    - Only change the reply to a vote to "OK" if it's not already
33295      set. This gets rid of annoying "400 OK" log messages, which may
33296      have been masking some deeper issue. Bugfix on 0.2.0.7-alpha.
33297    - When we get a valid consensus, recompute the voting schedule.
33298    - Base the valid-after time of a vote on the consensus voting
33299      schedule, not on our preferred schedule.
33300    - Make the return values and messages from signature uploads and
33301      downloads more sensible.
33302    - Fix a memory leak when serving votes and consensus documents, and
33303      another when serving certificates.
33304
33305  o Minor bugfixes (performance):
33306    - Use a slightly simpler string hashing algorithm (copying Python's
33307      instead of Java's) and optimize our digest hashing algorithm to take
33308      advantage of 64-bit platforms and to remove some possibly-costly
33309      voodoo.
33310    - Fix a minor memory leak whenever we parse guards from our state
33311      file. Bugfix on 0.2.0.7-alpha.
33312    - Fix a minor memory leak whenever we write out a file. Bugfix on
33313      0.2.0.7-alpha.
33314    - Fix a minor memory leak whenever a controller sends the PROTOCOLINFO
33315      command. Bugfix on 0.2.0.5-alpha.
33316
33317  o Minor bugfixes (portability):
33318    - On some platforms, accept() can return a broken address. Detect
33319      this more quietly, and deal accordingly. Fixes bug 483.
33320    - Stop calling tor_strlower() on uninitialized memory in some cases.
33321      Bugfix in 0.2.0.7-alpha.
33322
33323  o Minor bugfixes (usability):
33324    - Treat some 403 responses from directory servers as INFO rather than
33325      WARN-severity events.
33326    - It's not actually an error to find a non-pending entry in the DNS
33327      cache when canceling a pending resolve. Don't log unless stuff is
33328      fishy. Resolves bug 463.
33329
33330  o Minor bugfixes (anonymity):
33331    - Never report that we've used more bandwidth than we're willing to
33332      relay: it leaks how much non-relay traffic we're using. Resolves
33333      bug 516.
33334    - When looking for a circuit to cannibalize, consider family as well
33335      as identity. Fixes bug 438. Bugfix on 0.1.0.x (which introduced
33336      circuit cannibalization).
33337
33338  o Code simplifications and refactoring:
33339    - Make a bunch of functions static. Remove some dead code.
33340    - Pull out about a third of the really big routerlist.c; put it in a
33341      new module, networkstatus.c.
33342    - Merge the extra fields in local_routerstatus_t back into
33343      routerstatus_t: we used to need one routerstatus_t for each
33344      authority's opinion, plus a local_routerstatus_t for the locally
33345      computed consensus opinion. To save space, we put the locally
33346      modified fields into local_routerstatus_t, and only the common
33347      stuff into routerstatus_t. But once v3 directories are in use,
33348      clients and caches will no longer need to hold authority opinions;
33349      thus, the rationale for keeping the types separate is now gone.
33350    - Make the code used to reschedule and reattempt downloads more
33351      uniform.
33352    - Turn all 'Are we a directory server/mirror?' logic into a call to
33353      dirserver_mode().
33354    - Remove the code to generate the oldest (v1) directory format.
33355      The code has been disabled since 0.2.0.5-alpha.
33356
33357
33358Changes in version 0.2.0.7-alpha - 2007-09-21
33359  This seventh development snapshot makes bridges work again, makes bridge
33360  authorities work for the first time, fixes two huge performance flaws
33361  in hidden services, and fixes a variety of minor issues.
33362
33363  o New directory authorities:
33364    - Set up moria1 and tor26 as the first v3 directory authorities. See
33365      doc/spec/dir-spec.txt for details on the new directory design.
33366
33367  o Major bugfixes (crashes):
33368    - Fix possible segfaults in functions called from
33369      rend_process_relay_cell(). Bugfix on 0.1.2.x.
33370
33371  o Major bugfixes (bridges):
33372    - Fix a bug that made servers send a "404 Not found" in response to
33373      attempts to fetch their server descriptor. This caused Tor servers
33374      to take many minutes to establish reachability for their DirPort,
33375      and it totally crippled bridges. Bugfix on 0.2.0.5-alpha.
33376    - Make "UpdateBridgesFromAuthority" torrc option work: when bridge
33377      users configure that and specify a bridge with an identity
33378      fingerprint, now they will lookup the bridge descriptor at the
33379      default bridge authority via a one-hop tunnel, but once circuits
33380      are established they will switch to a three-hop tunnel for later
33381      connections to the bridge authority. Bugfix in 0.2.0.3-alpha.
33382
33383  o Major bugfixes (hidden services):
33384    - Hidden services were choosing introduction points uniquely by
33385      hexdigest, but when constructing the hidden service descriptor
33386      they merely wrote the (potentially ambiguous) nickname.
33387    - Clients now use the v2 intro format for hidden service
33388      connections: they specify their chosen rendezvous point by identity
33389      digest rather than by (potentially ambiguous) nickname. Both
33390      are bugfixes on 0.1.2.x, and they could speed up hidden service
33391      connections dramatically. Thanks to Karsten Loesing.
33392
33393  o Minor features (security):
33394    - As a client, do not believe any server that tells us that an
33395      address maps to an internal address space.
33396    - Make it possible to enable HashedControlPassword and
33397      CookieAuthentication at the same time.
33398
33399  o Minor features (guard nodes):
33400    - Tag every guard node in our state file with the version that
33401      we believe added it, or with our own version if we add it. This way,
33402      if a user temporarily runs an old version of Tor and then switches
33403      back to a new one, she doesn't automatically lose her guards.
33404
33405  o Minor features (speed):
33406    - When implementing AES counter mode, update only the portions of the
33407      counter buffer that need to change, and don't keep separate
33408      network-order and host-order counters when they are the same (i.e.,
33409      on big-endian hosts.)
33410
33411  o Minor features (controller):
33412    - Accept LF instead of CRLF on controller, since some software has a
33413      hard time generating real Internet newlines.
33414    - Add GETINFO values for the server status events
33415      "REACHABILITY_SUCCEEDED" and "GOOD_SERVER_DESCRIPTOR". Patch from
33416      Robert Hogan.
33417
33418  o Removed features:
33419     - Routers no longer include bandwidth-history lines in their
33420       descriptors; this information is already available in extra-info
33421       documents, and including it in router descriptors took up 60%
33422       (!) of compressed router descriptor downloads. Completes
33423       implementation of proposal 104.
33424     - Remove the contrib scripts ExerciseServer.py, PathDemo.py,
33425       and TorControl.py, as they use the old v0 controller protocol,
33426       and are obsoleted by TorFlow anyway.
33427     - Drop support for v1 rendezvous descriptors, since we never used
33428       them anyway, and the code has probably rotted by now. Based on
33429       patch from Karsten Loesing.
33430     - On OSX, stop warning the user that kqueue support in libevent is
33431      "experimental", since it seems to have worked fine for ages.
33432
33433  o Minor bugfixes:
33434    - When generating information telling us how to extend to a given
33435      router, do not try to include the nickname if it is absent. Fixes
33436      bug 467. Bugfix on 0.2.0.3-alpha.
33437    - Fix a user-triggerable (but not remotely-triggerable) segfault
33438      in expand_filename(). Bugfix on 0.1.2.x.
33439    - Fix a memory leak when freeing incomplete requests from DNSPort.
33440      Found by Niels Provos with valgrind. Bugfix on 0.2.0.1-alpha.
33441    - Don't try to access (or alter) the state file when running
33442      --list-fingerprint or --verify-config or --hash-password. (Resolves
33443      bug 499.) Bugfix on 0.1.2.x.
33444    - Servers used to decline to publish their DirPort if their
33445      BandwidthRate, RelayBandwidthRate, or MaxAdvertisedBandwidth
33446      were below a threshold. Now they only look at BandwidthRate and
33447      RelayBandwidthRate. Bugfix on 0.1.2.x.
33448    - Remove an optimization in the AES counter-mode code that assumed
33449      that the counter never exceeded 2^68. When the counter can be set
33450      arbitrarily as an IV (as it is by Karsten's new hidden services
33451      code), this assumption no longer holds. Bugfix on 0.1.2.x.
33452    - Resume listing "AUTHORITY" flag for authorities in network status.
33453      Bugfix on 0.2.0.3-alpha; reported by Alex de Joode.
33454
33455  o Code simplifications and refactoring:
33456    - Revamp file-writing logic so we don't need to have the entire
33457      contents of a file in memory at once before we write to disk. Tor,
33458      meet stdio.
33459    - Turn "descriptor store" into a full-fledged type.
33460    - Move all NT services code into a separate source file.
33461    - Unify all code that computes medians, percentile elements, etc.
33462    - Get rid of a needless malloc when parsing address policies.
33463
33464
33465Changes in version 0.1.2.17 - 2007-08-30
33466  Tor 0.1.2.17 features a new Vidalia version in the Windows and OS
33467  X bundles. Vidalia 0.0.14 makes authentication required for the
33468  ControlPort in the default configuration, which addresses important
33469  security risks. Everybody who uses Vidalia (or another controller)
33470  should upgrade.
33471
33472  In addition, this Tor update fixes major load balancing problems with
33473  path selection, which should speed things up a lot once many people
33474  have upgraded.
33475
33476  o Major bugfixes (security):
33477    - We removed support for the old (v0) control protocol. It has been
33478      deprecated since Tor 0.1.1.1-alpha, and keeping it secure has
33479      become more of a headache than it's worth.
33480
33481  o Major bugfixes (load balancing):
33482    - When choosing nodes for non-guard positions, weight guards
33483      proportionally less, since they already have enough load. Patch
33484      from Mike Perry.
33485    - Raise the "max believable bandwidth" from 1.5MB/s to 10MB/s. This
33486      will allow fast Tor servers to get more attention.
33487    - When we're upgrading from an old Tor version, forget our current
33488      guards and pick new ones according to the new weightings. These
33489      three load balancing patches could raise effective network capacity
33490      by a factor of four. Thanks to Mike Perry for measurements.
33491
33492  o Major bugfixes (stream expiration):
33493    - Expire not-yet-successful application streams in all cases if
33494      they've been around longer than SocksTimeout. Right now there are
33495      some cases where the stream will live forever, demanding a new
33496      circuit every 15 seconds. Fixes bug 454; reported by lodger.
33497
33498  o Minor features (controller):
33499    - Add a PROTOCOLINFO controller command. Like AUTHENTICATE, it
33500      is valid before any authentication has been received. It tells
33501      a controller what kind of authentication is expected, and what
33502      protocol is spoken. Implements proposal 119.
33503
33504  o Minor bugfixes (performance):
33505    - Save on most routerlist_assert_ok() calls in routerlist.c, thus
33506      greatly speeding up loading cached-routers from disk on startup.
33507    - Disable sentinel-based debugging for buffer code: we squashed all
33508      the bugs that this was supposed to detect a long time ago, and now
33509      its only effect is to change our buffer sizes from nice powers of
33510      two (which platform mallocs tend to like) to values slightly over
33511      powers of two (which make some platform mallocs sad).
33512
33513  o Minor bugfixes (misc):
33514    - If exit bandwidth ever exceeds one third of total bandwidth, then
33515      use the correct formula to weight exit nodes when choosing paths.
33516      Based on patch from Mike Perry.
33517    - Choose perfectly fairly among routers when choosing by bandwidth and
33518      weighting by fraction of bandwidth provided by exits. Previously, we
33519      would choose with only approximate fairness, and correct ourselves
33520      if we ran off the end of the list.
33521    - If we require CookieAuthentication but we fail to write the
33522      cookie file, we would warn but not exit, and end up in a state
33523      where no controller could authenticate. Now we exit.
33524    - If we require CookieAuthentication, stop generating a new cookie
33525      every time we change any piece of our config.
33526    - Refuse to start with certain directory authority keys, and
33527      encourage people using them to stop.
33528    - Terminate multi-line control events properly. Original patch
33529      from tup.
33530    - Fix a minor memory leak when we fail to find enough suitable
33531      servers to choose a circuit.
33532    - Stop leaking part of the descriptor when we run into a particularly
33533      unparseable piece of it.
33534
33535
33536Changes in version 0.2.0.6-alpha - 2007-08-26
33537  This sixth development snapshot features a new Vidalia version in the
33538  Windows and OS X bundles. Vidalia 0.0.14 makes authentication required for
33539  the ControlPort in the default configuration, which addresses important
33540  security risks.
33541
33542  In addition, this snapshot fixes major load balancing problems
33543  with path selection, which should speed things up a lot once many
33544  people have upgraded. The directory authorities also use a new
33545  mean-time-between-failure approach to tracking which servers are stable,
33546  rather than just looking at the most recent uptime.
33547
33548  o New directory authorities:
33549    - Set up Tonga as the default bridge directory authority.
33550
33551  o Major features:
33552    - Directory authorities now track servers by weighted
33553      mean-times-between-failures. When we have 4 or more days of data,
33554      use measured MTBF rather than declared uptime to decide whether
33555      to call a router Stable. Implements proposal 108.
33556
33557  o Major bugfixes (load balancing):
33558    - When choosing nodes for non-guard positions, weight guards
33559      proportionally less, since they already have enough load. Patch
33560      from Mike Perry.
33561    - Raise the "max believable bandwidth" from 1.5MB/s to 10MB/s. This
33562      will allow fast Tor servers to get more attention.
33563    - When we're upgrading from an old Tor version, forget our current
33564      guards and pick new ones according to the new weightings. These
33565      three load balancing patches could raise effective network capacity
33566      by a factor of four. Thanks to Mike Perry for measurements.
33567
33568  o Major bugfixes (descriptor parsing):
33569    - Handle unexpected whitespace better in malformed descriptors. Bug
33570      found using Benedikt Boss's new Tor fuzzer! Bugfix on 0.2.0.x.
33571
33572  o Minor features:
33573    - There is now an ugly, temporary "desc/all-recent-extrainfo-hack"
33574      GETINFO for Torstat to use until it can switch to using extrainfos.
33575    - Optionally (if built with -DEXPORTMALLINFO) export the output
33576      of mallinfo via http, as tor/mallinfo.txt. Only accessible
33577      from localhost.
33578
33579  o Minor bugfixes:
33580    - Do not intermix bridge routers with controller-added
33581      routers. (Bugfix on 0.2.0.x)
33582    - Do not fail with an assert when accept() returns an unexpected
33583      address family. Addresses but does not wholly fix bug 483. (Bugfix
33584      on 0.2.0.x)
33585    - Let directory authorities startup even when they can't generate
33586      a descriptor immediately, e.g. because they don't know their
33587      address.
33588    - Stop putting the authentication cookie in a file called "0"
33589      in your working directory if you don't specify anything for the
33590      new CookieAuthFile option. Reported by Matt Edman.
33591    - Make it possible to read the PROTOCOLINFO response in a way that
33592      conforms to our control-spec. Reported by Matt Edman.
33593    - Fix a minor memory leak when we fail to find enough suitable
33594      servers to choose a circuit. Bugfix on 0.1.2.x.
33595    - Stop leaking part of the descriptor when we run into a particularly
33596      unparseable piece of it. Bugfix on 0.1.2.x.
33597    - Unmap the extrainfo cache file on exit.
33598
33599
33600Changes in version 0.2.0.5-alpha - 2007-08-19
33601  This fifth development snapshot fixes compilation on Windows again;
33602  fixes an obnoxious client-side bug that slowed things down and put
33603  extra load on the network; gets us closer to using the v3 directory
33604  voting scheme; makes it easier for Tor controllers to use cookie-based
33605  authentication; and fixes a variety of other bugs.
33606
33607  o Removed features:
33608    - Version 1 directories are no longer generated in full. Instead,
33609      authorities generate and serve "stub" v1 directories that list
33610      no servers. This will stop Tor versions 0.1.0.x and earlier from
33611      working, but (for security reasons) nobody should be running those
33612      versions anyway.
33613
33614  o Major bugfixes (compilation, 0.2.0.x):
33615    - Try to fix Win32 compilation again: improve checking for IPv6 types.
33616    - Try to fix MSVC compilation: build correctly on platforms that do
33617      not define s6_addr16 or s6_addr32.
33618    - Fix compile on platforms without getaddrinfo: bug found by Li-Hui
33619      Zhou.
33620
33621  o Major bugfixes (stream expiration):
33622    - Expire not-yet-successful application streams in all cases if
33623      they've been around longer than SocksTimeout. Right now there are
33624      some cases where the stream will live forever, demanding a new
33625      circuit every 15 seconds. Bugfix on 0.1.2.7-alpha; fixes bug 454;
33626      reported by lodger.
33627
33628  o Minor features (directory servers):
33629    - When somebody requests a list of statuses or servers, and we have
33630      none of those, return a 404 rather than an empty 200.
33631
33632  o Minor features (directory voting):
33633    - Store v3 consensus status consensuses on disk, and reload them
33634      on startup.
33635
33636  o Minor features (security):
33637    - Warn about unsafe ControlPort configurations.
33638    - Refuse to start with certain directory authority keys, and
33639      encourage people using them to stop.
33640
33641  o Minor features (controller):
33642    - Add a PROTOCOLINFO controller command. Like AUTHENTICATE, it
33643      is valid before any authentication has been received. It tells
33644      a controller what kind of authentication is expected, and what
33645      protocol is spoken. Implements proposal 119.
33646    - New config option CookieAuthFile to choose a new location for the
33647      cookie authentication file, and config option
33648      CookieAuthFileGroupReadable to make it group-readable.
33649
33650  o Minor features (unit testing):
33651    - Add command-line arguments to unit-test executable so that we can
33652      invoke any chosen test from the command line rather than having
33653      to run the whole test suite at once; and so that we can turn on
33654      logging for the unit tests.
33655
33656  o Minor bugfixes (on 0.1.2.x):
33657    - If we require CookieAuthentication but we fail to write the
33658      cookie file, we would warn but not exit, and end up in a state
33659      where no controller could authenticate. Now we exit.
33660    - If we require CookieAuthentication, stop generating a new cookie
33661      every time we change any piece of our config.
33662    - When loading bandwidth history, do not believe any information in
33663      the future. Fixes bug 434.
33664    - When loading entry guard information, do not believe any information
33665      in the future.
33666    - When we have our clock set far in the future and generate an
33667      onion key, then re-set our clock to be correct, we should not stop
33668      the onion key from getting rotated.
33669    - Clean up torrc sample config file.
33670    - Do not automatically run configure from autogen.sh. This
33671      non-standard behavior tended to annoy people who have built other
33672      programs.
33673
33674  o Minor bugfixes (on 0.2.0.x):
33675    - Fix a bug with AutomapHostsOnResolve that would always cause
33676      the second request to fail. Bug reported by Kate. Bugfix on
33677      0.2.0.3-alpha.
33678    - Fix a bug in ADDRMAP controller replies that would sometimes
33679      try to print a NULL. Patch from tup.
33680    - Read v3 directory authority keys from the right location.
33681    - Numerous bugfixes to directory voting code.
33682
33683
33684Changes in version 0.1.2.16 - 2007-08-01
33685  Tor 0.1.2.16 fixes a critical security vulnerability that allows a
33686  remote attacker in certain situations to rewrite the user's torrc
33687  configuration file. This can completely compromise anonymity of users
33688  in most configurations, including those running the Vidalia bundles,
33689  TorK, etc. Or worse.
33690
33691  o Major security fixes:
33692    - Close immediately after missing authentication on control port;
33693      do not allow multiple authentication attempts.
33694
33695
33696Changes in version 0.2.0.4-alpha - 2007-08-01
33697  This fourth development snapshot fixes a critical security vulnerability
33698  for most users, specifically those running Vidalia, TorK, etc. Everybody
33699  should upgrade to either 0.1.2.16 or 0.2.0.4-alpha.
33700
33701  o Major security fixes:
33702    - Close immediately after missing authentication on control port;
33703      do not allow multiple authentication attempts.
33704
33705  o Major bugfixes (compilation):
33706    - Fix win32 compilation: apparently IN_ADDR and IN6_ADDR are already
33707      defined there.
33708
33709  o Minor features (performance):
33710    - Be even more aggressive about releasing RAM from small
33711      empty buffers. Thanks to our free-list code, this shouldn't be too
33712      performance-intensive.
33713    - Disable sentinel-based debugging for buffer code: we squashed all
33714      the bugs that this was supposed to detect a long time ago, and
33715      now its only effect is to change our buffer sizes from nice
33716      powers of two (which platform mallocs tend to like) to values
33717      slightly over powers of two (which make some platform mallocs sad).
33718    - Log malloc statistics from mallinfo() on platforms where it
33719      exists.
33720
33721
33722Changes in version 0.2.0.3-alpha - 2007-07-29
33723  This third development snapshot introduces new experimental
33724  blocking-resistance features and a preliminary version of the v3
33725  directory voting design, and includes many other smaller features
33726  and bugfixes.
33727
33728  o Major features:
33729    - The first pieces of our "bridge" design for blocking-resistance
33730      are implemented. People can run bridge directory authorities;
33731      people can run bridges; and people can configure their Tor clients
33732      with a set of bridges to use as the first hop into the Tor network.
33733      See http://archives.seul.org/or/talk/Jul-2007/msg00249.html for
33734      details.
33735    - Create listener connections before we setuid to the configured
33736      User and Group. Now non-Windows users can choose port values
33737      under 1024, start Tor as root, and have Tor bind those ports
33738      before it changes to another UID. (Windows users could already
33739      pick these ports.)
33740    - Added a new ConstrainedSockets config option to set SO_SNDBUF and
33741      SO_RCVBUF on TCP sockets. Hopefully useful for Tor servers running
33742      on "vserver" accounts. (Patch from coderman.)
33743    - Be even more aggressive about separating local traffic from relayed
33744      traffic when RelayBandwidthRate is set. (Refines proposal 111.)
33745
33746  o Major features (experimental):
33747    - First cut of code for "v3 dir voting": directory authorities will
33748      vote on a common network status document rather than each publishing
33749      their own opinion. This code needs more testing and more corner-case
33750      handling before it's ready for use.
33751
33752  o Security fixes:
33753    - Directory authorities now call routers Fast if their bandwidth is
33754      at least 100KB/s, and consider their bandwidth adequate to be a
33755      Guard if it is at least 250KB/s, no matter the medians. This fix
33756      complements proposal 107. [Bugfix on 0.1.2.x]
33757    - Directory authorities now never mark more than 3 servers per IP as
33758      Valid and Running. (Implements proposal 109, by Kevin Bauer and
33759      Damon McCoy.)
33760    - Minor change to organizationName and commonName generation
33761      procedures in TLS certificates during Tor handshakes, to invalidate
33762      some earlier censorware approaches. This is not a long-term
33763      solution, but applying it will give us a bit of time to look into
33764      the epidemiology of countermeasures as they spread.
33765
33766  o Major bugfixes (directory):
33767    - Rewrite directory tokenization code to never run off the end of
33768      a string. Fixes bug 455. Patch from croup. [Bugfix on 0.1.2.x]
33769
33770  o Minor features (controller):
33771    - Add a SOURCE_ADDR field to STREAM NEW events so that controllers can
33772      match requests to applications. (Patch from Robert Hogan.)
33773    - Report address and port correctly on connections to DNSPort. (Patch
33774      from Robert Hogan.)
33775    - Add a RESOLVE command to launch hostname lookups. (Original patch
33776      from Robert Hogan.)
33777    - Add GETINFO status/enough-dir-info to let controllers tell whether
33778      Tor has downloaded sufficient directory information. (Patch
33779      from Tup.)
33780    - You can now use the ControlSocket option to tell Tor to listen for
33781      controller connections on Unix domain sockets on systems that
33782      support them. (Patch from Peter Palfrader.)
33783    - STREAM NEW events are generated for DNSPort requests and for
33784      tunneled directory connections. (Patch from Robert Hogan.)
33785    - New "GETINFO address-mappings/*" command to get address mappings
33786      with expiry information. "addr-mappings/*" is now deprecated.
33787      (Patch from Tup.)
33788
33789  o Minor features (misc):
33790    - Merge in some (as-yet-unused) IPv6 address manipulation code. (Patch
33791      from croup.)
33792    - The tor-gencert tool for v3 directory authorities now creates all
33793      files as readable to the file creator only, and write-protects
33794      the authority identity key.
33795    - When dumping memory usage, list bytes used in buffer memory
33796      free-lists.
33797    - When running with dmalloc, dump more stats on hup and on exit.
33798    - Directory authorities now fail quickly and (relatively) harmlessly
33799      if they generate a network status document that is somehow
33800      malformed.
33801
33802  o Traffic load balancing improvements:
33803    - If exit bandwidth ever exceeds one third of total bandwidth, then
33804      use the correct formula to weight exit nodes when choosing paths.
33805      (Based on patch from Mike Perry.)
33806    - Choose perfectly fairly among routers when choosing by bandwidth and
33807      weighting by fraction of bandwidth provided by exits. Previously, we
33808      would choose with only approximate fairness, and correct ourselves
33809      if we ran off the end of the list. [Bugfix on 0.1.2.x]
33810
33811  o Performance improvements:
33812    - Be more aggressive with freeing buffer RAM or putting it on the
33813      memory free lists.
33814    - Use Critical Sections rather than Mutexes for synchronizing threads
33815      on win32; Mutexes are heavier-weight, and designed for synchronizing
33816      between processes.
33817
33818  o Deprecated and removed features:
33819    - RedirectExits is now deprecated.
33820    - Stop allowing address masks that do not correspond to bit prefixes.
33821      We have warned about these for a really long time; now it's time
33822      to reject them. (Patch from croup.)
33823
33824  o Minor bugfixes (directory):
33825    - Fix another crash bug related to extra-info caching. (Bug found by
33826      Peter Palfrader.) [Bugfix on 0.2.0.2-alpha]
33827    - Directories no longer return a "304 not modified" when they don't
33828      have the networkstatus the client asked for. Also fix a memory
33829      leak when returning 304 not modified. [Bugfixes on 0.2.0.2-alpha]
33830    - We had accidentally labelled 0.1.2.x directory servers as not
33831      suitable for begin_dir requests, and had labelled no directory
33832      servers as suitable for uploading extra-info documents. [Bugfix
33833      on 0.2.0.1-alpha]
33834
33835  o Minor bugfixes (dns):
33836    - Fix a crash when DNSPort is set more than once. (Patch from Robert
33837      Hogan.) [Bugfix on 0.2.0.2-alpha]
33838    - Add DNSPort connections to the global connection list, so that we
33839      can time them out correctly. (Bug found by Robert Hogan.) [Bugfix
33840      on 0.2.0.2-alpha]
33841    - Fix a dangling reference that could lead to a crash when DNSPort is
33842      changed or closed (Patch from Robert Hogan.) [Bugfix on
33843      0.2.0.2-alpha]
33844
33845  o Minor bugfixes (controller):
33846    - Provide DNS expiry times in GMT, not in local time. For backward
33847      compatibility, ADDRMAP events only provide GMT expiry in an extended
33848      field. "GETINFO address-mappings" always does the right thing.
33849    - Use CRLF line endings properly in NS events.
33850    - Terminate multi-line control events properly. (Original patch
33851      from tup.) [Bugfix on 0.1.2.x-alpha]
33852    - Do not include spaces in SOURCE_ADDR fields in STREAM
33853      events. Resolves bug 472. [Bugfix on 0.2.0.x-alpha]
33854
33855
33856Changes in version 0.1.2.15 - 2007-07-17
33857  Tor 0.1.2.15 fixes several crash bugs, fixes some anonymity-related
33858  problems, fixes compilation on BSD, and fixes a variety of other
33859  bugs. Everybody should upgrade.
33860
33861  o Major bugfixes (compilation):
33862    - Fix compile on FreeBSD/NetBSD/OpenBSD. Oops.
33863
33864  o Major bugfixes (crashes):
33865    - Try even harder not to dereference the first character after
33866      an mmap(). Reported by lodger.
33867    - Fix a crash bug in directory authorities when we re-number the
33868      routerlist while inserting a new router.
33869    - When the cached-routers file is an even multiple of the page size,
33870      don't run off the end and crash. (Fixes bug 455; based on idea
33871      from croup.)
33872    - Fix eventdns.c behavior on Solaris: It is critical to include
33873      orconfig.h _before_ sys/types.h, so that we can get the expected
33874      definition of _FILE_OFFSET_BITS.
33875
33876  o Major bugfixes (security):
33877    - Fix a possible buffer overrun when using BSD natd support. Bug
33878      found by croup.
33879    - When sending destroy cells from a circuit's origin, don't include
33880      the reason for tearing down the circuit. The spec says we didn't,
33881      and now we actually don't. Reported by lodger.
33882    - Keep streamids from different exits on a circuit separate. This
33883      bug may have allowed other routers on a given circuit to inject
33884      cells into streams. Reported by lodger; fixes bug 446.
33885    - If there's a never-before-connected-to guard node in our list,
33886      never choose any guards past it. This way we don't expand our
33887      guard list unless we need to.
33888
33889  o Minor bugfixes (guard nodes):
33890    - Weight guard selection by bandwidth, so that low-bandwidth nodes
33891      don't get overused as guards.
33892
33893  o Minor bugfixes (directory):
33894    - Correctly count the number of authorities that recommend each
33895      version. Previously, we were under-counting by 1.
33896    - Fix a potential crash bug when we load many server descriptors at
33897      once and some of them make others of them obsolete. Fixes bug 458.
33898
33899  o Minor bugfixes (hidden services):
33900    - Stop tearing down the whole circuit when the user asks for a
33901      connection to a port that the hidden service didn't configure.
33902      Resolves bug 444.
33903
33904  o Minor bugfixes (misc):
33905    - On Windows, we were preventing other processes from reading
33906      cached-routers while Tor was running. Reported by janbar.
33907    - Fix a possible (but very unlikely) bug in picking routers by
33908      bandwidth. Add a log message to confirm that it is in fact
33909      unlikely. Patch from lodger.
33910    - Backport a couple of memory leak fixes.
33911    - Backport miscellaneous cosmetic bugfixes.
33912
33913
33914Changes in version 0.2.0.2-alpha - 2007-06-02
33915  o Major bugfixes on 0.2.0.1-alpha:
33916    - Fix an assertion failure related to servers without extra-info digests.
33917      Resolves bugs 441 and 442.
33918
33919  o Minor features (directory):
33920    - Support "If-Modified-Since" when answering HTTP requests for
33921      directories, running-routers documents, and network-status documents.
33922      (There's no need to support it for router descriptors, since those
33923      are downloaded by descriptor digest.)
33924
33925  o Minor build issues:
33926    - Clear up some MIPSPro compiler warnings.
33927    - When building from a tarball on a machine that happens to have SVK
33928      installed, report the micro-revision as whatever version existed
33929      in the tarball, not as "x".
33930
33931
33932Changes in version 0.2.0.1-alpha - 2007-06-01
33933  This early development snapshot provides new features for people running
33934  Tor as both a client and a server (check out the new RelayBandwidth
33935  config options); lets Tor run as a DNS proxy; and generally moves us
33936  forward on a lot of fronts.
33937
33938  o Major features, server usability:
33939    - New config options RelayBandwidthRate and RelayBandwidthBurst:
33940      a separate set of token buckets for relayed traffic. Right now
33941      relayed traffic is defined as answers to directory requests, and
33942      OR connections that don't have any local circuits on them.
33943
33944  o Major features, client usability:
33945    - A client-side DNS proxy feature to replace the need for
33946      dns-proxy-tor: Just set "DNSPort 9999", and Tor will now listen
33947      for DNS requests on port 9999, use the Tor network to resolve them
33948      anonymously, and send the reply back like a regular DNS server.
33949      The code still only implements a subset of DNS.
33950    - Make PreferTunneledDirConns and TunnelDirConns work even when
33951      we have no cached directory info. This means Tor clients can now
33952      do all of their connections protected by TLS.
33953
33954  o Major features, performance and efficiency:
33955    - Directory authorities accept and serve "extra info" documents for
33956      routers. These documents contain fields from router descriptors
33957      that aren't usually needed, and that use a lot of excess
33958      bandwidth. Once these fields are removed from router descriptors,
33959      the bandwidth savings should be about 60%. [Partially implements
33960      proposal 104.]
33961    - Servers upload extra-info documents to any authority that accepts
33962      them. Authorities (and caches that have been configured to download
33963      extra-info documents) download them as needed. [Partially implements
33964      proposal 104.]
33965    - Change the way that Tor buffers data that it is waiting to write.
33966      Instead of queueing data cells in an enormous ring buffer for each
33967      client->OR or OR->OR connection, we now queue cells on a separate
33968      queue for each circuit. This lets us use less slack memory, and
33969      will eventually let us be smarter about prioritizing different kinds
33970      of traffic.
33971    - Use memory pools to allocate cells with better speed and memory
33972      efficiency, especially on platforms where malloc() is inefficient.
33973    - Stop reading on edge connections when their corresponding circuit
33974      buffers are full; start again as the circuits empty out.
33975
33976  o Major features, other:
33977    - Add an HSAuthorityRecordStats option that hidden service authorities
33978      can use to track statistics of overall hidden service usage without
33979      logging information that would be very useful to an attacker.
33980    - Start work implementing multi-level keys for directory authorities:
33981      Add a standalone tool to generate key certificates. (Proposal 103.)
33982
33983  o Security fixes:
33984    - Directory authorities now call routers Stable if they have an
33985      uptime of at least 30 days, even if that's not the median uptime
33986      in the network. Implements proposal 107, suggested by Kevin Bauer
33987      and Damon McCoy.
33988
33989  o Minor fixes (resource management):
33990    - Count the number of open sockets separately from the number
33991      of active connection_t objects. This will let us avoid underusing
33992      our allocated connection limit.
33993    - We no longer use socket pairs to link an edge connection to an
33994      anonymous directory connection or a DirPort test connection.
33995      Instead, we track the link internally and transfer the data
33996      in-process. This saves two sockets per "linked" connection (at the
33997      client and at the server), and avoids the nasty Windows socketpair()
33998      workaround.
33999    - Keep unused 4k and 16k buffers on free lists, rather than wasting 8k
34000      for every single inactive connection_t. Free items from the
34001      4k/16k-buffer free lists when they haven't been used for a while.
34002
34003  o Minor features (build):
34004    - Make autoconf search for libevent, openssl, and zlib consistently.
34005    - Update deprecated macros in configure.in.
34006    - When warning about missing headers, tell the user to let us
34007      know if the compile succeeds anyway, so we can downgrade the
34008      warning.
34009    - Include the current subversion revision as part of the version
34010      string: either fetch it directly if we're in an SVN checkout, do
34011      some magic to guess it if we're in an SVK checkout, or use
34012      the last-detected version if we're building from a .tar.gz.
34013      Use this version consistently in log messages.
34014
34015  o Minor features (logging):
34016    - Always prepend "Bug: " to any log message about a bug.
34017    - Put a platform string (e.g. "Linux i686") in the startup log
34018      message, so when people paste just their logs, we know if it's
34019      OpenBSD or Windows or what.
34020    - When logging memory usage, break down memory used in buffers by
34021      buffer type.
34022
34023  o Minor features (directory system):
34024    - New config option V2AuthoritativeDirectory that all directory
34025      authorities should set. This will let future authorities choose
34026      not to serve V2 directory information.
34027    - Directory authorities allow multiple router descriptors and/or extra
34028      info documents to be uploaded in a single go. This will make
34029      implementing proposal 104 simpler.
34030
34031  o Minor features (controller):
34032    - Add a new config option __DisablePredictedCircuits designed for
34033      use by the controller, when we don't want Tor to build any circuits
34034      preemptively.
34035    - Let the controller specify HOP=%d as an argument to ATTACHSTREAM,
34036      so we can exit from the middle of the circuit.
34037    - Implement "getinfo status/circuit-established".
34038    - Implement "getinfo status/version/..." so a controller can tell
34039      whether the current version is recommended, and whether any versions
34040      are good, and how many authorities agree. (Patch from shibz.)
34041
34042  o Minor features (hidden services):
34043    - Allow multiple HiddenServicePort directives with the same virtual
34044      port; when they occur, the user is sent round-robin to one
34045      of the target ports chosen at random. Partially fixes bug 393 by
34046      adding limited ad-hoc round-robining.
34047
34048  o Minor features (other):
34049    - More unit tests.
34050    - Add a new AutomapHostsOnResolve option: when it is enabled, any
34051      resolve request for hosts matching a given pattern causes Tor to
34052      generate an internal virtual address mapping for that host. This
34053      allows DNSPort to work sensibly with hidden service users. By
34054      default, .exit and .onion addresses are remapped; the list of
34055      patterns can be reconfigured with AutomapHostsSuffixes.
34056    - Add an "-F" option to tor-resolve to force a resolve for a .onion
34057      address. Thanks to the AutomapHostsOnResolve option, this is no
34058      longer a completely silly thing to do.
34059    - If Tor is invoked from something that isn't a shell (e.g. Vidalia),
34060      now we expand "-f ~/.tor/torrc" correctly. Suggested by Matt Edman.
34061    - Treat "2gb" when given in torrc for a bandwidth as meaning 2gb,
34062      minus 1 byte: the actual maximum declared bandwidth.
34063
34064  o Removed features:
34065    - Removed support for the old binary "version 0" controller protocol.
34066      This has been deprecated since 0.1.1, and warnings have been issued
34067      since 0.1.2. When we encounter a v0 control message, we now send
34068      back an error and close the connection.
34069    - Remove the old "dns worker" server DNS code: it hasn't been default
34070      since 0.1.2.2-alpha, and all the servers seem to be using the new
34071      eventdns code.
34072
34073  o Minor bugfixes (portability):
34074    - Even though Windows is equally happy with / and \ as path separators,
34075      try to use \ consistently on Windows and / consistently on Unix: it
34076      makes the log messages nicer.
34077    - Correctly report platform name on Windows 95 OSR2 and Windows 98 SE.
34078    - Read resolv.conf files correctly on platforms where read() returns
34079      partial results on small file reads.
34080
34081  o Minor bugfixes (directory):
34082    - Correctly enforce that elements of directory objects do not appear
34083      more often than they are allowed to appear.
34084    - When we are reporting the DirServer line we just parsed, we were
34085      logging the second stanza of the key fingerprint, not the first.
34086
34087  o Minor bugfixes (logging):
34088    - When we hit an EOF on a log (probably because we're shutting down),
34089      don't try to remove the log from the list: just mark it as
34090      unusable. (Bulletproofs against bug 222.)
34091
34092  o Minor bugfixes (other):
34093    - In the exitlist script, only consider the most recently published
34094      server descriptor for each server. Also, when the user requests
34095      a list of servers that _reject_ connections to a given address,
34096      explicitly exclude the IPs that also have servers that accept
34097      connections to that address. (Resolves bug 405.)
34098    - Stop allowing hibernating servers to be "stable" or "fast".
34099    - On Windows, we were preventing other processes from reading
34100      cached-routers while Tor was running. (Reported by janbar)
34101    - Make the NodeFamilies config option work. (Reported by
34102      lodger -- it has never actually worked, even though we added it
34103      in Oct 2004.)
34104    - Check return values from pthread_mutex functions.
34105    - Don't save non-general-purpose router descriptors to the disk cache,
34106      because we have no way of remembering what their purpose was when
34107      we restart.
34108    - Add even more asserts to hunt down bug 417.
34109    - Build without verbose warnings even on (not-yet-released) gcc 4.2.
34110    - Fix a possible (but very unlikely) bug in picking routers by bandwidth.
34111      Add a log message to confirm that it is in fact unlikely.
34112
34113  o Minor bugfixes (controller):
34114    - Make 'getinfo fingerprint' return a 551 error if we're not a
34115      server, so we match what the control spec claims we do. Reported
34116      by daejees.
34117    - Fix a typo in an error message when extendcircuit fails that
34118      caused us to not follow the \r\n-based delimiter protocol. Reported
34119      by daejees.
34120
34121  o Code simplifications and refactoring:
34122    - Stop passing around circuit_t and crypt_path_t pointers that are
34123      implicit in other procedure arguments.
34124    - Drop the old code to choke directory connections when the
34125      corresponding OR connections got full: thanks to the cell queue
34126      feature, OR conns don't get full any more.
34127    - Make dns_resolve() handle attaching connections to circuits
34128      properly, so the caller doesn't have to.
34129    - Rename wants_to_read and wants_to_write to read/write_blocked_on_bw.
34130    - Keep the connection array as a dynamic smartlist_t, rather than as
34131      a fixed-sized array. This is important, as the number of connections
34132      is becoming increasingly decoupled from the number of sockets.
34133
34134
34135Changes in version 0.1.2.14 - 2007-05-25
34136  Tor 0.1.2.14 changes the addresses of two directory authorities (this
34137  change especially affects those who serve or use hidden services),
34138  and fixes several other crash- and security-related bugs.
34139
34140  o Directory authority changes:
34141    - Two directory authorities (moria1 and moria2) just moved to new
34142      IP addresses. This change will particularly affect those who serve
34143      or use hidden services.
34144
34145  o Major bugfixes (crashes):
34146    - If a directory server runs out of space in the connection table
34147      as it's processing a begin_dir request, it will free the exit stream
34148      but leave it attached to the circuit, leading to unpredictable
34149      behavior. (Reported by seeess, fixes bug 425.)
34150    - Fix a bug in dirserv_remove_invalid() that would cause authorities
34151      to corrupt memory under some really unlikely scenarios.
34152    - Tighten router parsing rules. (Bugs reported by Benedikt Boss.)
34153    - Avoid segfaults when reading from mmaped descriptor file. (Reported
34154      by lodger.)
34155
34156  o Major bugfixes (security):
34157    - When choosing an entry guard for a circuit, avoid using guards
34158      that are in the same family as the chosen exit -- not just guards
34159      that are exactly the chosen exit. (Reported by lodger.)
34160
34161  o Major bugfixes (resource management):
34162    - If a directory authority is down, skip it when deciding where to get
34163      networkstatus objects or descriptors. Otherwise we keep asking
34164      every 10 seconds forever. Fixes bug 384.
34165    - Count it as a failure if we fetch a valid network-status but we
34166      don't want to keep it. Otherwise we'll keep fetching it and keep
34167      not wanting to keep it. Fixes part of bug 422.
34168    - If all of our dirservers have given us bad or no networkstatuses
34169      lately, then stop hammering them once per minute even when we
34170      think they're failed. Fixes another part of bug 422.
34171
34172  o Minor bugfixes:
34173    - Actually set the purpose correctly for descriptors inserted with
34174      purpose=controller.
34175    - When we have k non-v2 authorities in our DirServer config,
34176      we ignored the last k authorities in the list when updating our
34177      network-statuses.
34178    - Correctly back-off from requesting router descriptors that we are
34179      having a hard time downloading.
34180    - Read resolv.conf files correctly on platforms where read() returns
34181      partial results on small file reads.
34182    - Don't rebuild the entire router store every time we get 32K of
34183      routers: rebuild it when the journal gets very large, or when
34184      the gaps in the store get very large.
34185
34186  o Minor features:
34187    - When routers publish SVN revisions in their router descriptors,
34188      authorities now include those versions correctly in networkstatus
34189      documents.
34190    - Warn when using a version of libevent before 1.3b to run a server on
34191      OSX or BSD: these versions interact badly with userspace threads.
34192
34193
34194Changes in version 0.1.2.13 - 2007-04-24
34195  This release features some major anonymity fixes, such as safer path
34196  selection; better client performance; faster bootstrapping, better
34197  address detection, and better DNS support for servers; write limiting as
34198  well as read limiting to make servers easier to run; and a huge pile of
34199  other features and bug fixes. The bundles also ship with Vidalia 0.0.11.
34200
34201  Tor 0.1.2.13 is released in memory of Rob Levin (1955-2006), aka lilo
34202  of the Freenode IRC network, remembering his patience and vision for
34203  free speech on the Internet.
34204
34205  o Minor fixes:
34206    - Fix a memory leak when we ask for "all" networkstatuses and we
34207      get one we don't recognize.
34208    - Add more asserts to hunt down bug 417.
34209    - Disable kqueue on OS X 10.3 and earlier, to fix bug 371.
34210
34211
34212Changes in version 0.1.2.12-rc - 2007-03-16
34213  o Major bugfixes:
34214    - Fix an infinite loop introduced in 0.1.2.7-alpha when we serve
34215      directory information requested inside Tor connections (i.e. via
34216      begin_dir cells). It only triggered when the same connection was
34217      serving other data at the same time. Reported by seeess.
34218
34219  o Minor bugfixes:
34220    - When creating a circuit via the controller, send a 'launched'
34221      event when we're done, so we follow the spec better.
34222
34223
34224Changes in version 0.1.2.11-rc - 2007-03-15
34225  o Minor bugfixes (controller), reported by daejees:
34226    - Correct the control spec to match how the code actually responds
34227      to 'getinfo addr-mappings/*'.
34228    - The control spec described a GUARDS event, but the code
34229      implemented a GUARD event. Standardize on GUARD, but let people
34230      ask for GUARDS too.
34231
34232
34233Changes in version 0.1.2.10-rc - 2007-03-07
34234  o Major bugfixes (Windows):
34235    - Do not load the NT services library functions (which may not exist)
34236      just to detect if we're a service trying to shut down. Now we run
34237      on Win98 and friends again.
34238
34239  o Minor bugfixes (other):
34240    - Clarify a couple of log messages.
34241    - Fix a misleading socks5 error number.
34242
34243
34244Changes in version 0.1.2.9-rc - 2007-03-02
34245  o Major bugfixes (Windows):
34246    - On MinGW, use "%I64u" to printf/scanf 64-bit integers, instead
34247      of the usual GCC "%llu". This prevents a bug when saving 64-bit
34248      int configuration values: the high-order 32 bits would get
34249      truncated. In particular, we were being bitten by the default
34250      MaxAdvertisedBandwidth of 128 TB turning into 0. (Fixes bug 400
34251      and maybe also bug 397.)
34252
34253  o Minor bugfixes (performance):
34254    - Use OpenSSL's AES implementation on platforms where it's faster.
34255      This could save us as much as 10% CPU usage.
34256
34257  o Minor bugfixes (server):
34258    - Do not rotate onion key immediately after setting it for the first
34259      time.
34260
34261  o Minor bugfixes (directory authorities):
34262    - Stop calling servers that have been hibernating for a long time
34263      "stable". Also, stop letting hibernating or obsolete servers affect
34264      uptime and bandwidth cutoffs.
34265    - Stop listing hibernating servers in the v1 directory.
34266
34267  o Minor bugfixes (hidden services):
34268    - Upload hidden service descriptors slightly less often, to reduce
34269      load on authorities.
34270
34271  o Minor bugfixes (other):
34272    - Fix an assert that could trigger if a controller quickly set then
34273      cleared EntryNodes. Bug found by Udo van den Heuvel.
34274    - On architectures where sizeof(int)>4, still clamp declarable bandwidth
34275      to INT32_MAX.
34276    - Fix a potential race condition in the rpm installer. Found by
34277      Stefan Nordhausen.
34278    - Try to fix eventdns warnings once and for all: do not treat a dns rcode
34279      of 2 as indicating that the server is completely bad; it sometimes
34280      means that the server is just bad for the request in question. (may fix
34281      the last of bug 326.)
34282    - Disable encrypted directory connections when we don't have a server
34283      descriptor for the destination. We'll get this working again in
34284      the 0.2.0 branch.
34285
34286
34287Changes in version 0.1.2.8-beta - 2007-02-26
34288  o Major bugfixes (crashes):
34289    - Stop crashing when the controller asks us to resetconf more than
34290      one config option at once. (Vidalia 0.0.11 does this.)
34291    - Fix a crash that happened on Win98 when we're given command-line
34292      arguments: don't try to load NT service functions from advapi32.dll
34293      except when we need them. (Bug introduced in 0.1.2.7-alpha;
34294      resolves bug 389.)
34295    - Fix a longstanding obscure crash bug that could occur when
34296      we run out of DNS worker processes. (Resolves bug 390.)
34297
34298  o Major bugfixes (hidden services):
34299    - Correctly detect whether hidden service descriptor downloads are
34300      in-progress. (Suggested by Karsten Loesing; fixes bug 399.)
34301
34302  o Major bugfixes (accounting):
34303    - When we start during an accounting interval before it's time to wake
34304      up, remember to wake up at the correct time. (May fix bug 342.)
34305
34306  o Minor bugfixes (controller):
34307    - Give the controller END_STREAM_REASON_DESTROY events _before_ we
34308      clear the corresponding on_circuit variable, and remember later
34309      that we don't need to send a redundant CLOSED event. Resolves part
34310      3 of bug 367.
34311    - Report events where a resolve succeeded or where we got a socks
34312      protocol error correctly, rather than calling both of them
34313      "INTERNAL".
34314    - Change reported stream target addresses to IP consistently when
34315      we finally get the IP from an exit node.
34316    - Send log messages to the controller even if they happen to be very
34317      long.
34318
34319  o Minor bugfixes (other):
34320    - Display correct results when reporting which versions are
34321      recommended, and how recommended they are. (Resolves bug 383.)
34322    - Improve our estimates for directory bandwidth to be less random:
34323      guess that an unrecognized directory will have the average bandwidth
34324      from all known directories, not that it will have the average
34325      bandwidth from those directories earlier than it on the list.
34326    - If we start a server with ClientOnly 1, then set ClientOnly to 0
34327      and hup, stop triggering an assert based on an empty onion_key.
34328    - On platforms with no working mmap() equivalent, don't warn the
34329      user when cached-routers doesn't exist.
34330    - Warn the user when mmap() [or its equivalent] fails for some reason
34331      other than file-not-found.
34332    - Don't warn the user when cached-routers.new doesn't exist: that's
34333      perfectly fine when starting up for the first time.
34334    - When EntryNodes are configured, rebuild the guard list to contain,
34335      in order: the EntryNodes that were guards before; the rest of the
34336      EntryNodes; the nodes that were guards before.
34337    - Mask out all signals in sub-threads; only the libevent signal
34338      handler should be processing them. This should prevent some crashes
34339      on some machines using pthreads. (Patch from coderman.)
34340    - Fix switched arguments on memset in the implementation of
34341      tor_munmap() for systems with no mmap() call.
34342    - When Tor receives a router descriptor that it asked for, but
34343      no longer wants (because it has received fresh networkstatuses
34344      in the meantime), do not warn the user. Cache the descriptor if
34345      we're a cache; drop it if we aren't.
34346    - Make earlier entry guards _really_ get retried when the network
34347      comes back online.
34348    - On a malformed DNS reply, always give an error to the corresponding
34349      DNS request.
34350    - Build with recent libevents on platforms that do not define the
34351      nonstandard types "u_int8_t" and friends.
34352
34353  o Minor features (controller):
34354    - Warn the user when an application uses the obsolete binary v0
34355      control protocol. We're planning to remove support for it during
34356      the next development series, so it's good to give people some
34357      advance warning.
34358    - Add STREAM_BW events to report per-entry-stream bandwidth
34359      use. (Patch from Robert Hogan.)
34360    - Rate-limit SIGNEWNYM signals in response to controllers that
34361      impolitely generate them for every single stream. (Patch from
34362      mwenge; closes bug 394.)
34363    - Make REMAP stream events have a SOURCE (cache or exit), and
34364      make them generated in every case where we get a successful
34365      connected or resolved cell.
34366
34367  o Minor bugfixes (performance):
34368    - Call router_have_min_dir_info half as often. (This is showing up in
34369      some profiles, but not others.)
34370    - When using GCC, make log_debug never get called at all, and its
34371      arguments never get evaluated, when no debug logs are configured.
34372      (This is showing up in some profiles, but not others.)
34373
34374  o Minor features:
34375    - Remove some never-implemented options. Mark PathlenCoinWeight as
34376      obsolete.
34377    - Implement proposal 106: Stop requiring clients to have well-formed
34378      certificates; stop checking nicknames in certificates. (Clients
34379      have certificates so that they can look like Tor servers, but in
34380      the future we might want to allow them to look like regular TLS
34381      clients instead. Nicknames in certificates serve no purpose other
34382      than making our protocol easier to recognize on the wire.)
34383    - Revise messages on handshake failure again to be even more clear about
34384      which are incoming connections and which are outgoing.
34385    - Discard any v1 directory info that's over 1 month old (for
34386      directories) or over 1 week old (for running-routers lists).
34387    - Do not warn when individual nodes in the configuration's EntryNodes,
34388      ExitNodes, etc are down: warn only when all possible nodes
34389      are down. (Fixes bug 348.)
34390    - Always remove expired routers and networkstatus docs before checking
34391      whether we have enough information to build circuits. (Fixes
34392      bug 373.)
34393    - Put a lower-bound on MaxAdvertisedBandwidth.
34394
34395
34396Changes in version 0.1.2.7-alpha - 2007-02-06
34397  o Major bugfixes (rate limiting):
34398    - Servers decline directory requests much more aggressively when
34399      they're low on bandwidth. Otherwise they end up queueing more and
34400      more directory responses, which can't be good for latency.
34401    - But never refuse directory requests from local addresses.
34402    - Fix a memory leak when sending a 503 response for a networkstatus
34403      request.
34404    - Be willing to read or write on local connections (e.g. controller
34405      connections) even when the global rate limiting buckets are empty.
34406    - If our system clock jumps back in time, don't publish a negative
34407      uptime in the descriptor. Also, don't let the global rate limiting
34408      buckets go absurdly negative.
34409    - Flush local controller connection buffers periodically as we're
34410      writing to them, so we avoid queueing 4+ megabytes of data before
34411      trying to flush.
34412
34413  o Major bugfixes (NT services):
34414    - Install as NT_AUTHORITY\LocalService rather than as SYSTEM; add a
34415      command-line flag so that admins can override the default by saying
34416      "tor --service install --user "SomeUser"". This will not affect
34417      existing installed services. Also, warn the user that the service
34418      will look for its configuration file in the service user's
34419      %appdata% directory. (We can't do the 'hardwire the user's appdata
34420      directory' trick any more, since we may not have read access to that
34421      directory.)
34422
34423  o Major bugfixes (other):
34424    - Previously, we would cache up to 16 old networkstatus documents
34425      indefinitely, if they came from nontrusted authorities. Now we
34426      discard them if they are more than 10 days old.
34427    - Fix a crash bug in the presence of DNS hijacking (reported by Andrew
34428      Del Vecchio).
34429    - Detect and reject malformed DNS responses containing circular
34430      pointer loops.
34431    - If exits are rare enough that we're not marking exits as guards,
34432      ignore exit bandwidth when we're deciding the required bandwidth
34433      to become a guard.
34434    - When we're handling a directory connection tunneled over Tor,
34435      don't fill up internal memory buffers with all the data we want
34436      to tunnel; instead, only add it if the OR connection that will
34437      eventually receive it has some room for it. (This can lead to
34438      slowdowns in tunneled dir connections; a better solution will have
34439      to wait for 0.2.0.)
34440
34441  o Minor bugfixes (dns):
34442    - Add some defensive programming to eventdns.c in an attempt to catch
34443      possible memory-stomping bugs.
34444    - Detect and reject DNS replies containing IPv4 or IPv6 records with
34445      an incorrect number of bytes. (Previously, we would ignore the
34446      extra bytes.)
34447    - Fix as-yet-unused reverse IPv6 lookup code so it sends nybbles
34448      in the correct order, and doesn't crash.
34449    - Free memory held in recently-completed DNS lookup attempts on exit.
34450      This was not a memory leak, but may have been hiding memory leaks.
34451    - Handle TTL values correctly on reverse DNS lookups.
34452    - Treat failure to parse resolv.conf as an error.
34453
34454  o Minor bugfixes (other):
34455    - Fix crash with "tor --list-fingerprint" (reported by seeess).
34456    - When computing clock skew from directory HTTP headers, consider what
34457      time it was when we finished asking for the directory, not what
34458      time it is now.
34459    - Expire socks connections if they spend too long waiting for the
34460      handshake to finish. Previously we would let them sit around for
34461      days, if the connecting application didn't close them either.
34462    - And if the socks handshake hasn't started, don't send a
34463      "DNS resolve socks failed" handshake reply; just close it.
34464    - Stop using C functions that OpenBSD's linker doesn't like.
34465    - Don't launch requests for descriptors unless we have networkstatuses
34466      from at least half of the authorities. This delays the first
34467      download slightly under pathological circumstances, but can prevent
34468      us from downloading a bunch of descriptors we don't need.
34469    - Do not log IPs with TLS failures for incoming TLS
34470      connections. (Fixes bug 382.)
34471    - If the user asks to use invalid exit nodes, be willing to use
34472      unstable ones.
34473    - Stop using the reserved ac_cv namespace in our configure script.
34474    - Call stat() slightly less often; use fstat() when possible.
34475    - Refactor the way we handle pending circuits when an OR connection
34476      completes or fails, in an attempt to fix a rare crash bug.
34477    - Only rewrite a conn's address based on X-Forwarded-For: headers
34478      if it's a parseable public IP address; and stop adding extra quotes
34479      to the resulting address.
34480
34481  o Major features:
34482    - Weight directory requests by advertised bandwidth. Now we can
34483      let servers enable write limiting but still allow most clients to
34484      succeed at their directory requests. (We still ignore weights when
34485      choosing a directory authority; I hope this is a feature.)
34486
34487  o Minor features:
34488    - Create a new file ReleaseNotes which was the old ChangeLog. The
34489      new ChangeLog file now includes the summaries for all development
34490      versions too.
34491    - Check for addresses with invalid characters at the exit as well
34492      as at the client, and warn less verbosely when they fail. You can
34493      override this by setting ServerDNSAllowNonRFC953Addresses to 1.
34494    - Adapt a patch from goodell to let the contrib/exitlist script
34495      take arguments rather than require direct editing.
34496    - Inform the server operator when we decide not to advertise a
34497      DirPort due to AccountingMax enabled or a low BandwidthRate. It
34498      was confusing Zax, so now we're hopefully more helpful.
34499    - Bring us one step closer to being able to establish an encrypted
34500      directory tunnel without knowing a descriptor first. Still not
34501      ready yet. As part of the change, now assume we can use a
34502      create_fast cell if we don't know anything about a router.
34503    - Allow exit nodes to use nameservers running on ports other than 53.
34504    - Servers now cache reverse DNS replies.
34505    - Add an --ignore-missing-torrc command-line option so that we can
34506      get the "use sensible defaults if the configuration file doesn't
34507      exist" behavior even when specifying a torrc location on the command
34508      line.
34509
34510  o Minor features (controller):
34511    - Track reasons for OR connection failure; make these reasons
34512      available via the controller interface. (Patch from Mike Perry.)
34513    - Add a SOCKS_BAD_HOSTNAME client status event so controllers
34514      can learn when clients are sending malformed hostnames to Tor.
34515    - Clean up documentation for controller status events.
34516    - Add a REMAP status to stream events to note that a stream's
34517      address has changed because of a cached address or a MapAddress
34518      directive.
34519
34520
34521Changes in version 0.1.2.6-alpha - 2007-01-09
34522  o Major bugfixes:
34523    - Fix an assert error introduced in 0.1.2.5-alpha: if a single TLS
34524      connection handles more than 4 gigs in either direction, we crash.
34525    - Fix an assert error introduced in 0.1.2.5-alpha: if we're an
34526      advertised exit node, somebody might try to exit from us when
34527      we're bootstrapping and before we've built our descriptor yet.
34528      Refuse the connection rather than crashing.
34529
34530  o Minor bugfixes:
34531    - Warn if we (as a server) find that we've resolved an address that we
34532      weren't planning to resolve.
34533    - Warn that using select() on any libevent version before 1.1 will be
34534      unnecessarily slow (even for select()).
34535    - Flush ERR-level controller status events just like we currently
34536      flush ERR-level log events, so that a Tor shutdown doesn't prevent
34537      the controller from learning about current events.
34538
34539  o Minor features (more controller status events):
34540    - Implement EXTERNAL_ADDRESS server status event so controllers can
34541      learn when our address changes.
34542    - Implement BAD_SERVER_DESCRIPTOR server status event so controllers
34543      can learn when directories reject our descriptor.
34544    - Implement SOCKS_UNKNOWN_PROTOCOL client status event so controllers
34545      can learn when a client application is speaking a non-socks protocol
34546      to our SocksPort.
34547    - Implement DANGEROUS_SOCKS client status event so controllers
34548      can learn when a client application is leaking DNS addresses.
34549    - Implement BUG general status event so controllers can learn when
34550      Tor is unhappy about its internal invariants.
34551    - Implement CLOCK_SKEW general status event so controllers can learn
34552      when Tor thinks the system clock is set incorrectly.
34553    - Implement GOOD_SERVER_DESCRIPTOR and ACCEPTED_SERVER_DESCRIPTOR
34554      server status events so controllers can learn when their descriptors
34555      are accepted by a directory.
34556    - Implement CHECKING_REACHABILITY and REACHABILITY_{SUCCEEDED|FAILED}
34557      server status events so controllers can learn about Tor's progress in
34558      deciding whether it's reachable from the outside.
34559    - Implement BAD_LIBEVENT general status event so controllers can learn
34560      when we have a version/method combination in libevent that needs to
34561      be changed.
34562    - Implement NAMESERVER_STATUS, NAMESERVER_ALL_DOWN, DNS_HIJACKED,
34563      and DNS_USELESS server status events so controllers can learn
34564      about changes to DNS server status.
34565
34566  o Minor features (directory):
34567    - Authorities no longer recommend exits as guards if this would shift
34568      too much load to the exit nodes.
34569
34570
34571Changes in version 0.1.2.5-alpha - 2007-01-06
34572  o Major features:
34573    - Enable write limiting as well as read limiting. Now we sacrifice
34574      capacity if we're pushing out lots of directory traffic, rather
34575      than overrunning the user's intended bandwidth limits.
34576    - Include TLS overhead when counting bandwidth usage; previously, we
34577      would count only the bytes sent over TLS, but not the bytes used
34578      to send them.
34579    - Support running the Tor service with a torrc not in the same
34580      directory as tor.exe and default to using the torrc located in
34581      the %appdata%\Tor\ of the user who installed the service. Patch
34582      from Matt Edman.
34583    - Servers now check for the case when common DNS requests are going to
34584      wildcarded addresses (i.e. all getting the same answer), and change
34585      their exit policy to reject *:* if it's happening.
34586    - Implement BEGIN_DIR cells, so we can connect to the directory
34587      server via TLS to do encrypted directory requests rather than
34588      plaintext. Enable via the TunnelDirConns and PreferTunneledDirConns
34589      config options if you like.
34590
34591  o Minor features (config and docs):
34592    - Start using the state file to store bandwidth accounting data:
34593      the bw_accounting file is now obsolete. We'll keep generating it
34594      for a while for people who are still using 0.1.2.4-alpha.
34595    - Try to batch changes to the state file so that we do as few
34596      disk writes as possible while still storing important things in
34597      a timely fashion.
34598    - The state file and the bw_accounting file get saved less often when
34599      the AvoidDiskWrites config option is set.
34600    - Make PIDFile work on Windows (untested).
34601    - Add internal descriptions for a bunch of configuration options:
34602      accessible via controller interface and in comments in saved
34603      options files.
34604    - Reject *:563 (NNTPS) in the default exit policy. We already reject
34605      NNTP by default, so this seems like a sensible addition.
34606    - Clients now reject hostnames with invalid characters. This should
34607      avoid some inadvertent info leaks. Add an option
34608      AllowNonRFC953Hostnames to disable this behavior, in case somebody
34609      is running a private network with hosts called @, !, and #.
34610    - Add a maintainer script to tell us which options are missing
34611      documentation: "make check-docs".
34612    - Add a new address-spec.txt document to describe our special-case
34613      addresses: .exit, .onion, and .noconnnect.
34614
34615  o Minor features (DNS):
34616    - Ongoing work on eventdns infrastructure: now it has dns server
34617      and ipv6 support. One day Tor will make use of it.
34618    - Add client-side caching for reverse DNS lookups.
34619    - Add support to tor-resolve tool for reverse lookups and SOCKS5.
34620    - When we change nameservers or IP addresses, reset and re-launch
34621      our tests for DNS hijacking.
34622
34623  o Minor features (directory):
34624    - Authorities now specify server versions in networkstatus. This adds
34625      about 2% to the size of compressed networkstatus docs, and allows
34626      clients to tell which servers support BEGIN_DIR and which don't.
34627      The implementation is forward-compatible with a proposed future
34628      protocol version scheme not tied to Tor versions.
34629    - DirServer configuration lines now have an orport= option so
34630      clients can open encrypted tunnels to the authorities without
34631      having downloaded their descriptors yet. Enabled for moria1,
34632      moria2, tor26, and lefkada now in the default configuration.
34633    - Directory servers are more willing to send a 503 "busy" if they
34634      are near their write limit, especially for v1 directory requests.
34635      Now they can use their limited bandwidth for actual Tor traffic.
34636    - Clients track responses with status 503 from dirservers. After a
34637      dirserver has given us a 503, we try not to use it until an hour has
34638      gone by, or until we have no dirservers that haven't given us a 503.
34639    - When we get a 503 from a directory, and we're not a server, we don't
34640      count the failure against the total number of failures allowed
34641      for the thing we're trying to download.
34642    - Report X-Your-Address-Is correctly from tunneled directory
34643      connections; don't report X-Your-Address-Is when it's an internal
34644      address; and never believe reported remote addresses when they're
34645      internal.
34646    - Protect against an unlikely DoS attack on directory servers.
34647    - Add a BadDirectory flag to network status docs so that authorities
34648      can (eventually) tell clients about caches they believe to be
34649      broken.
34650
34651  o Minor features (controller):
34652    - Have GETINFO dir/status/* work on hosts with DirPort disabled.
34653    - Reimplement GETINFO so that info/names stays in sync with the
34654      actual keys.
34655    - Implement "GETINFO fingerprint".
34656    - Implement "SETEVENTS GUARD" so controllers can get updates on
34657      entry guard status as it changes.
34658
34659  o Minor features (clean up obsolete pieces):
34660    - Remove some options that have been deprecated since at least
34661      0.1.0.x: AccountingMaxKB, LogFile, DebugLogFile, LogLevel, and
34662      SysLog. Use AccountingMax instead of AccountingMaxKB, and use Log
34663      to set log options.
34664    - We no longer look for identity and onion keys in "identity.key" and
34665      "onion.key" -- these were replaced by secret_id_key and
34666      secret_onion_key in 0.0.8pre1.
34667    - We no longer require unrecognized directory entries to be
34668      preceded by "opt".
34669
34670  o Major bugfixes (security):
34671    - Stop sending the HttpProxyAuthenticator string to directory
34672      servers when directory connections are tunnelled through Tor.
34673    - Clients no longer store bandwidth history in the state file.
34674    - Do not log introduction points for hidden services if SafeLogging
34675      is set.
34676    - When generating bandwidth history, round down to the nearest
34677      1k. When storing accounting data, round up to the nearest 1k.
34678    - When we're running as a server, remember when we last rotated onion
34679      keys, so that we will rotate keys once they're a week old even if
34680      we never stay up for a week ourselves.
34681
34682  o Major bugfixes (other):
34683    - Fix a longstanding bug in eventdns that prevented the count of
34684      timed-out resolves from ever being reset. This bug caused us to
34685      give up on a nameserver the third time it timed out, and try it
34686      10 seconds later... and to give up on it every time it timed out
34687      after that.
34688    - Take out the '5 second' timeout from the connection retry
34689      schedule. Now the first connect attempt will wait a full 10
34690      seconds before switching to a new circuit. Perhaps this will help
34691      a lot. Based on observations from Mike Perry.
34692    - Fix a bug on the Windows implementation of tor_mmap_file() that
34693      would prevent the cached-routers file from ever loading. Reported
34694      by John Kimble.
34695
34696  o Minor bugfixes:
34697    - Fix an assert failure when a directory authority sets
34698      AuthDirRejectUnlisted and then receives a descriptor from an
34699      unlisted router. Reported by seeess.
34700    - Avoid a double-free when parsing malformed DirServer lines.
34701    - Fix a bug when a BSD-style PF socket is first used. Patch from
34702      Fabian Keil.
34703    - Fix a bug in 0.1.2.2-alpha that prevented clients from asking
34704      to resolve an address at a given exit node even when they ask for
34705      it by name.
34706    - Servers no longer ever list themselves in their "family" line,
34707      even if configured to do so. This makes it easier to configure
34708      family lists conveniently.
34709    - When running as a server, don't fall back to 127.0.0.1 when no
34710      nameservers are configured in /etc/resolv.conf; instead, make the
34711      user fix resolv.conf or specify nameservers explicitly. (Resolves
34712      bug 363.)
34713    - Stop accepting certain malformed ports in configured exit policies.
34714    - Don't re-write the fingerprint file every restart, unless it has
34715      changed.
34716    - Stop warning when a single nameserver fails: only warn when _all_ of
34717      our nameservers have failed. Also, when we only have one nameserver,
34718      raise the threshold for deciding that the nameserver is dead.
34719    - Directory authorities now only decide that routers are reachable
34720      if their identity keys are as expected.
34721    - When the user uses bad syntax in the Log config line, stop
34722      suggesting other bad syntax as a replacement.
34723    - Correctly detect ipv6 DNS capability on OpenBSD.
34724
34725  o Minor bugfixes (controller):
34726    - Report the circuit number correctly in STREAM CLOSED events. Bug
34727      reported by Mike Perry.
34728    - Do not report bizarre values for results of accounting GETINFOs
34729      when the last second's write or read exceeds the allotted bandwidth.
34730    - Report "unrecognized key" rather than an empty string when the
34731      controller tries to fetch a networkstatus that doesn't exist.
34732
34733
34734Changes in version 0.1.1.26 - 2006-12-14
34735  o Security bugfixes:
34736    - Stop sending the HttpProxyAuthenticator string to directory
34737      servers when directory connections are tunnelled through Tor.
34738    - Clients no longer store bandwidth history in the state file.
34739    - Do not log introduction points for hidden services if SafeLogging
34740      is set.
34741
34742  o Minor bugfixes:
34743    - Fix an assert failure when a directory authority sets
34744      AuthDirRejectUnlisted and then receives a descriptor from an
34745      unlisted router (reported by seeess).
34746
34747
34748Changes in version 0.1.2.4-alpha - 2006-12-03
34749  o Major features:
34750    - Add support for using natd; this allows FreeBSDs earlier than
34751      5.1.2 to have ipfw send connections through Tor without using
34752      SOCKS. (Patch from Zajcev Evgeny with tweaks from tup.)
34753
34754  o Minor features:
34755    - Make all connections to addresses of the form ".noconnect"
34756      immediately get closed. This lets application/controller combos
34757      successfully test whether they're talking to the same Tor by
34758      watching for STREAM events.
34759    - Make cross.sh cross-compilation script work even when autogen.sh
34760      hasn't been run. (Patch from Michael Mohr.)
34761    - Statistics dumped by -USR2 now include a breakdown of public key
34762      operations, for profiling.
34763
34764  o Major bugfixes:
34765    - Fix a major leak when directory authorities parse their
34766      approved-routers list, a minor memory leak when we fail to pick
34767      an exit node, and a few rare leaks on errors.
34768    - Handle TransPort connections even when the server sends data before
34769      the client sends data. Previously, the connection would just hang
34770      until the client sent data. (Patch from tup based on patch from
34771      Zajcev Evgeny.)
34772    - Avoid assert failure when our cached-routers file is empty on
34773      startup.
34774
34775  o Minor bugfixes:
34776    - Don't log spurious warnings when we see a circuit close reason we
34777      don't recognize; it's probably just from a newer version of Tor.
34778    - Have directory authorities allow larger amounts of drift in uptime
34779      without replacing the server descriptor: previously, a server that
34780      restarted every 30 minutes could have 48 "interesting" descriptors
34781      per day.
34782    - Start linking to the Tor specification and Tor reference manual
34783      correctly in the Windows installer.
34784    - Add Vidalia to the OS X uninstaller script, so when we uninstall
34785      Tor/Privoxy we also uninstall Vidalia.
34786    - Resume building on Irix64, and fix a lot of warnings from its
34787      MIPSpro C compiler.
34788    - Don't corrupt last_guessed_ip in router_new_address_suggestion()
34789      when we're running as a client.
34790
34791
34792Changes in version 0.1.1.25 - 2006-11-04
34793  o Major bugfixes:
34794    - When a client asks us to resolve (rather than connect to)
34795      an address, and we have a cached answer, give them the cached
34796      answer. Previously, we would give them no answer at all.
34797    - We were building exactly the wrong circuits when we predict
34798      hidden service requirements, meaning Tor would have to build all
34799      its circuits on demand.
34800    - If none of our live entry guards have a high uptime, but we
34801      require a guard with a high uptime, try adding a new guard before
34802      we give up on the requirement. This patch should make long-lived
34803      connections more stable on average.
34804    - When testing reachability of our DirPort, don't launch new
34805      tests when there's already one in progress -- unreachable
34806      servers were stacking up dozens of testing streams.
34807
34808  o Security bugfixes:
34809    - When the user sends a NEWNYM signal, clear the client-side DNS
34810      cache too. Otherwise we continue to act on previous information.
34811
34812  o Minor bugfixes:
34813    - Avoid a memory corruption bug when creating a hash table for
34814      the first time.
34815    - Avoid possibility of controller-triggered crash when misusing
34816      certain commands from a v0 controller on platforms that do not
34817      handle printf("%s",NULL) gracefully.
34818    - Avoid infinite loop on unexpected controller input.
34819    - Don't log spurious warnings when we see a circuit close reason we
34820      don't recognize; it's probably just from a newer version of Tor.
34821    - Add Vidalia to the OS X uninstaller script, so when we uninstall
34822      Tor/Privoxy we also uninstall Vidalia.
34823
34824
34825Changes in version 0.1.2.3-alpha - 2006-10-29
34826  o Minor features:
34827    - Prepare for servers to publish descriptors less often: never
34828      discard a descriptor simply for being too old until either it is
34829      recommended by no authorities, or until we get a better one for
34830      the same router. Make caches consider retaining old recommended
34831      routers for even longer.
34832    - If most authorities set a BadExit flag for a server, clients
34833      don't think of it as a general-purpose exit. Clients only consider
34834      authorities that advertise themselves as listing bad exits.
34835    - Directory servers now provide 'Pragma: no-cache' and 'Expires'
34836      headers for content, so that we can work better in the presence of
34837      caching HTTP proxies.
34838    - Allow authorities to list nodes as bad exits by fingerprint or by
34839      address.
34840
34841  o Minor features, controller:
34842    - Add a REASON field to CIRC events; for backward compatibility, this
34843      field is sent only to controllers that have enabled the extended
34844      event format. Also, add additional reason codes to explain why
34845      a given circuit has been destroyed or truncated. (Patches from
34846      Mike Perry)
34847    - Add a REMOTE_REASON field to extended CIRC events to tell the
34848      controller about why a remote OR told us to close a circuit.
34849    - Stream events also now have REASON and REMOTE_REASON fields,
34850      working much like those for circuit events.
34851    - There's now a GETINFO ns/... field so that controllers can ask Tor
34852      about the current status of a router.
34853    - A new event type "NS" to inform a controller when our opinion of
34854      a router's status has changed.
34855    - Add a GETINFO events/names and GETINFO features/names so controllers
34856      can tell which events and features are supported.
34857    - A new CLEARDNSCACHE signal to allow controllers to clear the
34858      client-side DNS cache without expiring circuits.
34859
34860  o Security bugfixes:
34861    - When the user sends a NEWNYM signal, clear the client-side DNS
34862      cache too. Otherwise we continue to act on previous information.
34863
34864  o Minor bugfixes:
34865    - Avoid sending junk to controllers or segfaulting when a controller
34866      uses EVENT_NEW_DESC with verbose nicknames.
34867    - Stop triggering asserts if the controller tries to extend hidden
34868      service circuits (reported by mwenge).
34869    - Avoid infinite loop on unexpected controller input.
34870    - When the controller does a "GETINFO network-status", tell it
34871      about even those routers whose descriptors are very old, and use
34872      long nicknames where appropriate.
34873    - Change NT service functions to be loaded on demand. This lets us
34874      build with MinGW without breaking Tor for Windows 98 users.
34875    - Do DirPort reachability tests less often, since a single test
34876      chews through many circuits before giving up.
34877    - In the hidden service example in torrc.sample, stop recommending
34878      esoteric and discouraged hidden service options.
34879    - When stopping an NT service, wait up to 10 sec for it to actually
34880      stop. Patch from Matt Edman; resolves bug 295.
34881    - Fix handling of verbose nicknames with ORCONN controller events:
34882      make them show up exactly when requested, rather than exactly when
34883      not requested.
34884    - When reporting verbose nicknames in entry_guards_getinfo(), avoid
34885      printing a duplicate "$" in the keys we send (reported by mwenge).
34886    - Correctly set maximum connection limit on Cygwin. (This time
34887      for sure!)
34888    - Try to detect Windows correctly when cross-compiling.
34889    - Detect the size of the routers file correctly even if it is
34890      corrupted (on systems without mmap) or not page-aligned (on systems
34891      with mmap). This bug was harmless.
34892    - Sometimes we didn't bother sending a RELAY_END cell when an attempt
34893      to open a stream fails; now we do in more cases. This should
34894      make clients able to find a good exit faster in some cases, since
34895      unhandleable requests will now get an error rather than timing out.
34896    - Resolve two memory leaks when rebuilding the on-disk router cache
34897      (reported by fookoowa).
34898    - Clean up minor code warnings suggested by the MIPSpro C compiler,
34899      and reported by some Centos users.
34900    - Controller signals now work on non-Unix platforms that don't define
34901      SIGUSR1 and SIGUSR2 the way we expect.
34902    - Patch from Michael Mohr to contrib/cross.sh, so it checks more
34903      values before failing, and always enables eventdns.
34904    - Libevent-1.2 exports, but does not define in its headers, strlcpy.
34905      Try to fix this in configure.in by checking for most functions
34906      before we check for libevent.
34907
34908
34909Changes in version 0.1.2.2-alpha - 2006-10-07
34910  o Major features:
34911    - Make our async eventdns library on-by-default for Tor servers,
34912      and plan to deprecate the separate dnsworker threads.
34913    - Add server-side support for "reverse" DNS lookups (using PTR
34914      records so clients can determine the canonical hostname for a given
34915      IPv4 address). Only supported by servers using eventdns; servers
34916      now announce in their descriptors whether they support eventdns.
34917    - Specify and implement client-side SOCKS5 interface for reverse DNS
34918      lookups (see doc/socks-extensions.txt).
34919    - Add a BEGIN_DIR relay cell type for an easier in-protocol way to
34920      connect to directory servers through Tor. Previously, clients needed
34921      to find Tor exits to make private connections to directory servers.
34922    - Avoid choosing Exit nodes for entry or middle hops when the
34923      total bandwidth available from non-Exit nodes is much higher than
34924      the total bandwidth available from Exit nodes.
34925    - Workaround for name servers (like Earthlink's) that hijack failing
34926      DNS requests and replace the no-such-server answer with a "helpful"
34927      redirect to an advertising-driven search portal. Also work around
34928      DNS hijackers who "helpfully" decline to hijack known-invalid
34929      RFC2606 addresses. Config option "ServerDNSDetectHijacking 0"
34930      lets you turn it off.
34931    - Send out a burst of long-range padding cells once we've established
34932      that we're reachable. Spread them over 4 circuits, so hopefully
34933      a few will be fast. This exercises our bandwidth and bootstraps
34934      us into the directory more quickly.
34935
34936  o New/improved config options:
34937    - Add new config option "ResolvConf" to let the server operator
34938      choose an alternate resolve.conf file when using eventdns.
34939    - Add an "EnforceDistinctSubnets" option to control our "exclude
34940      servers on the same /16" behavior. It's still on by default; this
34941      is mostly for people who want to operate private test networks with
34942      all the machines on the same subnet.
34943    - If one of our entry guards is on the ExcludeNodes list, or the
34944      directory authorities don't think it's a good guard, treat it as
34945      if it were unlisted: stop using it as a guard, and throw it off
34946      the guards list if it stays that way for a long time.
34947    - Allow directory authorities to be marked separately as authorities
34948      for the v1 directory protocol, the v2 directory protocol, and
34949      as hidden service directories, to make it easier to retire old
34950      authorities. V1 authorities should set "HSAuthoritativeDir 1"
34951      to continue being hidden service authorities too.
34952    - Remove 8888 as a LongLivedPort, and add 6697 (IRCS).
34953
34954  o Minor features, controller:
34955    - Fix CIRC controller events so that controllers can learn the
34956      identity digests of non-Named servers used in circuit paths.
34957    - Let controllers ask for more useful identifiers for servers. Instead
34958      of learning identity digests for un-Named servers and nicknames
34959      for Named servers, the new identifiers include digest, nickname,
34960      and indication of Named status. Off by default; see control-spec.txt
34961      for more information.
34962    - Add a "getinfo address" controller command so it can display Tor's
34963      best guess to the user.
34964    - New controller event to alert the controller when our server
34965      descriptor has changed.
34966    - Give more meaningful errors on controller authentication failure.
34967
34968  o Minor features, other:
34969    - When asked to resolve a hostname, don't use non-exit servers unless
34970      requested to do so. This allows servers with broken DNS to be
34971      useful to the network.
34972    - Divide eventdns log messages into warn and info messages.
34973    - Reserve the nickname "Unnamed" for routers that can't pick
34974      a hostname: any router can call itself Unnamed; directory
34975      authorities will never allocate Unnamed to any particular router;
34976      clients won't believe that any router is the canonical Unnamed.
34977    - Only include function names in log messages for info/debug messages.
34978      For notice/warn/err, the content of the message should be clear on
34979      its own, and printing the function name only confuses users.
34980    - Avoid some false positives during reachability testing: don't try
34981      to test via a server that's on the same /24 as us.
34982    - If we fail to build a circuit to an intended enclave, and it's
34983      not mandatory that we use that enclave, stop wanting it.
34984    - When eventdns is enabled, allow multithreaded builds on NetBSD and
34985      OpenBSD. (We had previously disabled threads on these platforms
34986      because they didn't have working thread-safe resolver functions.)
34987
34988  o Major bugfixes, anonymity/security:
34989    - If a client asked for a server by name, and there's a named server
34990      in our network-status but we don't have its descriptor yet, we
34991      could return an unnamed server instead.
34992    - Fix NetBSD bug that could allow someone to force uninitialized RAM
34993      to be sent to a server's DNS resolver. This only affects NetBSD
34994      and other platforms that do not bounds-check tolower().
34995    - Reject (most) attempts to use Tor circuits with length one. (If
34996      many people start using Tor as a one-hop proxy, exit nodes become
34997      a more attractive target for compromise.)
34998    - Just because your DirPort is open doesn't mean people should be
34999      able to remotely teach you about hidden service descriptors. Now
35000      only accept rendezvous posts if you've got HSAuthoritativeDir set.
35001
35002  o Major bugfixes, other:
35003    - Don't crash on race condition in dns.c: tor_assert(!resolve->expire)
35004    - When a client asks the server to resolve (not connect to)
35005      an address, and it has a cached answer, give them the cached answer.
35006      Previously, the server would give them no answer at all.
35007    - Allow really slow clients to not hang up five minutes into their
35008      directory downloads (suggested by Adam J. Richter).
35009    - We were building exactly the wrong circuits when we anticipated
35010      hidden service requirements, meaning Tor would have to build all
35011      its circuits on demand.
35012    - Avoid crashing when we mmap a router cache file of size 0.
35013    - When testing reachability of our DirPort, don't launch new
35014      tests when there's already one in progress -- unreachable
35015      servers were stacking up dozens of testing streams.
35016
35017  o Minor bugfixes, correctness:
35018    - If we're a directory mirror and we ask for "all" network status
35019      documents, we would discard status documents from authorities
35020      we don't recognize.
35021    - Avoid a memory corruption bug when creating a hash table for
35022      the first time.
35023    - Avoid controller-triggered crash when misusing certain commands
35024      from a v0 controller on platforms that do not handle
35025      printf("%s",NULL) gracefully.
35026    - Don't crash when a controller sends a third argument to an
35027      "extendcircuit" request.
35028    - Controller protocol fixes: fix encoding in "getinfo addr-mappings"
35029      response; fix error code when "getinfo dir/status/" fails.
35030    - Avoid crash when telling controller stream-status and a stream
35031      is detached.
35032    - Patch from Adam Langley to fix assert() in eventdns.c.
35033    - Fix a debug log message in eventdns to say "X resolved to Y"
35034      instead of "X resolved to X".
35035    - Make eventdns give strings for DNS errors, not just error numbers.
35036    - Track unreachable entry guards correctly: don't conflate
35037      'unreachable by us right now' with 'listed as down by the directory
35038      authorities'. With the old code, if a guard was unreachable by
35039      us but listed as running, it would clog our guard list forever.
35040    - Behave correctly in case we ever have a network with more than
35041      2GB/s total advertised capacity.
35042    - Make TrackExitHosts case-insensitive, and fix the behavior of
35043      ".suffix" TrackExitHosts items to avoid matching in the middle of
35044      an address.
35045    - Finally fix the openssl warnings from newer gccs that believe that
35046      ignoring a return value is okay, but casting a return value and
35047      then ignoring it is a sign of madness.
35048    - Prevent the contrib/exitlist script from printing the same
35049      result more than once.
35050    - Patch from Steve Hildrey: Generate network status correctly on
35051      non-versioning dirservers.
35052    - Don't listen to the X-Your-Address-Is hint if you did the lookup
35053      via Tor; otherwise you'll think you're the exit node's IP address.
35054
35055  o Minor bugfixes, performance:
35056    - Two small performance improvements on parsing descriptors.
35057    - Major performance improvement on inserting descriptors: change
35058      algorithm from O(n^2) to O(n).
35059    - Make the common memory allocation path faster on machines where
35060      malloc(0) returns a pointer.
35061    - Start remembering X-Your-Address-Is directory hints even if you're
35062      a client, so you can become a server more smoothly.
35063    - Avoid duplicate entries on MyFamily line in server descriptor.
35064
35065  o Packaging, features:
35066    - Remove architecture from OS X builds. The official builds are
35067      now universal binaries.
35068    - The Debian package now uses --verify-config when (re)starting,
35069      to distinguish configuration errors from other errors.
35070    - Update RPMs to require libevent 1.1b.
35071
35072  o Packaging, bugfixes:
35073    - Patches so Tor builds with MinGW on Windows.
35074    - Patches so Tor might run on Cygwin again.
35075    - Resume building on non-gcc compilers and ancient gcc. Resume
35076      building with the -O0 compile flag. Resume building cleanly on
35077      Debian woody.
35078    - Run correctly on OS X platforms with case-sensitive filesystems.
35079    - Correct includes for net/if.h and net/pfvar.h on OpenBSD (from Tup).
35080    - Add autoconf checks so Tor can build on Solaris x86 again.
35081
35082  o Documentation
35083    - Documented (and renamed) ServerDNSSearchDomains and
35084      ServerDNSResolvConfFile options.
35085    - Be clearer that the *ListenAddress directives can be repeated
35086      multiple times.
35087
35088
35089Changes in version 0.1.1.24 - 2006-09-29
35090  o Major bugfixes:
35091    - Allow really slow clients to not hang up five minutes into their
35092      directory downloads (suggested by Adam J. Richter).
35093    - Fix major performance regression from 0.1.0.x: instead of checking
35094      whether we have enough directory information every time we want to
35095      do something, only check when the directory information has changed.
35096      This should improve client CPU usage by 25-50%.
35097    - Don't crash if, after a server has been running for a while,
35098      it can't resolve its hostname.
35099
35100  o Minor bugfixes:
35101    - Allow Tor to start when RunAsDaemon is set but no logs are set.
35102    - Don't crash when the controller receives a third argument to an
35103      "extendcircuit" request.
35104    - Controller protocol fixes: fix encoding in "getinfo addr-mappings"
35105      response; fix error code when "getinfo dir/status/" fails.
35106    - Fix configure.in to not produce broken configure files with
35107      more recent versions of autoconf. Thanks to Clint for his auto*
35108      voodoo.
35109    - Fix security bug on NetBSD that could allow someone to force
35110      uninitialized RAM to be sent to a server's DNS resolver. This
35111      only affects NetBSD and other platforms that do not bounds-check
35112      tolower().
35113    - Warn user when using libevent 1.1a or earlier with win32 or kqueue
35114      methods: these are known to be buggy.
35115    - If we're a directory mirror and we ask for "all" network status
35116      documents, we would discard status documents from authorities
35117      we don't recognize.
35118
35119
35120Changes in version 0.1.2.1-alpha - 2006-08-27
35121  o Major features:
35122    - Add "eventdns" async dns library from Adam Langley, tweaked to
35123      build on OSX and Windows. Only enabled if you pass the
35124      --enable-eventdns argument to configure.
35125    - Allow servers with no hostname or IP address to learn their
35126      IP address by asking the directory authorities. This code only
35127      kicks in when you would normally have exited with a "no address"
35128      error. Nothing's authenticated, so use with care.
35129    - Rather than waiting a fixed amount of time between retrying
35130      application connections, we wait only 5 seconds for the first,
35131      10 seconds for the second, and 15 seconds for each retry after
35132      that. Hopefully this will improve the expected user experience.
35133    - Patch from Tup to add support for transparent AP connections:
35134      this basically bundles the functionality of trans-proxy-tor
35135      into the Tor mainline. Now hosts with compliant pf/netfilter
35136      implementations can redirect TCP connections straight to Tor
35137      without diverting through SOCKS. Needs docs.
35138    - Busy directory servers save lots of memory by spooling server
35139      descriptors, v1 directories, and v2 networkstatus docs to buffers
35140      as needed rather than en masse. Also mmap the cached-routers
35141      files, so we don't need to keep the whole thing in memory too.
35142    - Automatically avoid picking more than one node from the same
35143      /16 network when constructing a circuit.
35144    - Revise and clean up the torrc.sample that we ship with; add
35145      a section for BandwidthRate and BandwidthBurst.
35146
35147  o Minor features:
35148    - Split circuit_t into origin_circuit_t and or_circuit_t, and
35149      split connection_t into edge, or, dir, control, and base structs.
35150      These will save quite a bit of memory on busy servers, and they'll
35151      also help us track down bugs in the code and bugs in the spec.
35152    - Experimentally re-enable kqueue on OSX when using libevent 1.1b
35153      or later. Log when we are doing this, so we can diagnose it when
35154      it fails. (Also, recommend libevent 1.1b for kqueue and
35155      win32 methods; deprecate libevent 1.0b harder; make libevent
35156      recommendation system saner.)
35157    - Start being able to build universal binaries on OS X (thanks
35158      to Phobos).
35159    - Export the default exit policy via the control port, so controllers
35160      don't need to guess what it is / will be later.
35161    - Add a man page entry for ProtocolWarnings.
35162    - Add TestVia config option to the man page.
35163    - Remove even more protocol-related warnings from Tor server logs,
35164      such as bad TLS handshakes and malformed begin cells.
35165    - Stop fetching descriptors if you're not a dir mirror and you
35166      haven't tried to establish any circuits lately. [This currently
35167      causes some dangerous behavior, because when you start up again
35168      you'll use your ancient server descriptors.]
35169    - New DirPort behavior: if you have your dirport set, you download
35170      descriptors aggressively like a directory mirror, whether or not
35171      your ORPort is set.
35172    - Get rid of the router_retry_connections notion. Now routers
35173      no longer try to rebuild long-term connections to directory
35174      authorities, and directory authorities no longer try to rebuild
35175      long-term connections to all servers. We still don't hang up
35176      connections in these two cases though -- we need to look at it
35177      more carefully to avoid flapping, and we likely need to wait til
35178      0.1.1.x is obsolete.
35179    - Drop compatibility with obsolete Tors that permit create cells
35180      to have the wrong circ_id_type.
35181    - Re-enable per-connection rate limiting. Get rid of the "OP
35182      bandwidth" concept. Lay groundwork for "bandwidth classes" --
35183      separate global buckets that apply depending on what sort of conn
35184      it is.
35185    - Start publishing one minute or so after we find our ORPort
35186      to be reachable. This will help reduce the number of descriptors
35187      we have for ourselves floating around, since it's quite likely
35188      other things (e.g. DirPort) will change during that minute too.
35189    - Fork the v1 directory protocol into its own spec document,
35190      and mark dir-spec.txt as the currently correct (v2) spec.
35191
35192  o Major bugfixes:
35193    - When we find our DirPort to be reachable, publish a new descriptor
35194      so we'll tell the world (reported by pnx).
35195    - Publish a new descriptor after we hup/reload. This is important
35196      if our config has changed such that we'll want to start advertising
35197      our DirPort now, etc.
35198    - Allow Tor to start when RunAsDaemon is set but no logs are set.
35199    - When we have a state file we cannot parse, tell the user and
35200      move it aside. Now we avoid situations where the user starts
35201      Tor in 1904, Tor writes a state file with that timestamp in it,
35202      the user fixes her clock, and Tor refuses to start.
35203    - Fix configure.in to not produce broken configure files with
35204      more recent versions of autoconf. Thanks to Clint for his auto*
35205      voodoo.
35206    - "tor --verify-config" now exits with -1(255) or 0 depending on
35207      whether the config options are bad or good.
35208    - Resolve bug 321 when using dnsworkers: append a period to every
35209      address we resolve at the exit node, so that we do not accidentally
35210      pick up local addresses, and so that failing searches are retried
35211      in the resolver search domains. (This is already solved for
35212      eventdns.) (This breaks Blossom servers for now.)
35213    - If we are using an exit enclave and we can't connect, e.g. because
35214      its webserver is misconfigured to not listen on localhost, then
35215      back off and try connecting from somewhere else before we fail.
35216
35217  o Minor bugfixes:
35218    - Start compiling on MinGW on Windows (patches from Mike Chiussi).
35219    - Start compiling on MSVC6 on Windows (patches from Frediano Ziglio).
35220    - Fix bug 314: Tor clients issued "unsafe socks" warnings even
35221      when the IP address is mapped through MapAddress to a hostname.
35222    - Start passing "ipv4" hints to getaddrinfo(), so servers don't do
35223      useless IPv6 DNS resolves.
35224    - Patch suggested by Karsten Loesing: respond to SIGNAL command
35225      before we execute the signal, in case the signal shuts us down.
35226    - Clean up AllowInvalidNodes man page entry.
35227    - Claim a commonname of Tor, rather than TOR, in TLS handshakes.
35228    - Add more asserts to track down an assert error on a windows Tor
35229      server with connection_add being called with socket == -1.
35230    - Handle reporting OR_CONN_EVENT_NEW events to the controller.
35231    - Fix misleading log messages: an entry guard that is "unlisted",
35232      as well as not known to be "down" (because we've never heard
35233      of it), is not therefore "up".
35234    - Remove code to special-case "-cvs" ending, since it has not
35235      actually mattered since 0.0.9.
35236    - Make our socks5 handling more robust to broken socks clients:
35237      throw out everything waiting on the buffer in between socks
35238      handshake phases, since they can't possibly (so the theory
35239      goes) have predicted what we plan to respond to them.
35240
35241
35242Changes in version 0.1.1.23 - 2006-07-30
35243  o Major bugfixes:
35244    - Fast Tor servers, especially exit nodes, were triggering asserts
35245      due to a bug in handling the list of pending DNS resolves. Some
35246      bugs still remain here; we're hunting them.
35247    - Entry guards could crash clients by sending unexpected input.
35248    - More fixes on reachability testing: if you find yourself reachable,
35249      then don't ever make any client requests (so you stop predicting
35250      circuits), then hup or have your clock jump, then later your IP
35251      changes, you won't think circuits are working, so you won't try to
35252      test reachability, so you won't publish.
35253
35254  o Minor bugfixes:
35255    - Avoid a crash if the controller does a resetconf firewallports
35256      and then a setconf fascistfirewall=1.
35257    - Avoid an integer underflow when the dir authority decides whether
35258      a router is stable: we might wrongly label it stable, and compute
35259      a slightly wrong median stability, when a descriptor is published
35260      later than now.
35261    - Fix a place where we might trigger an assert if we can't build our
35262      own server descriptor yet.
35263
35264
35265Changes in version 0.1.1.22 - 2006-07-05
35266  o Major bugfixes:
35267    - Fix a big bug that was causing servers to not find themselves
35268      reachable if they changed IP addresses. Since only 0.1.1.22+
35269      servers can do reachability testing correctly, now we automatically
35270      make sure to test via one of these.
35271    - Fix to allow clients and mirrors to learn directory info from
35272      descriptor downloads that get cut off partway through.
35273    - Directory authorities had a bug in deciding if a newly published
35274      descriptor was novel enough to make everybody want a copy -- a few
35275      servers seem to be publishing new descriptors many times a minute.
35276  o Minor bugfixes:
35277    - Fix a rare bug that was causing some servers to complain about
35278      "closing wedged cpuworkers" and skip some circuit create requests.
35279    - Make the Exit flag in directory status documents actually work.
35280
35281
35282Changes in version 0.1.1.21 - 2006-06-10
35283  o Crash and assert fixes from 0.1.1.20:
35284    - Fix a rare crash on Tor servers that have enabled hibernation.
35285    - Fix a seg fault on startup for Tor networks that use only one
35286      directory authority.
35287    - Fix an assert from a race condition that occurs on Tor servers
35288      while exiting, where various threads are trying to log that they're
35289      exiting, and delete the logs, at the same time.
35290    - Make our unit tests pass again on certain obscure platforms.
35291
35292  o Other fixes:
35293    - Add support for building SUSE RPM packages.
35294    - Speed up initial bootstrapping for clients: if we are making our
35295      first ever connection to any entry guard, then don't mark it down
35296      right after that.
35297    - When only one Tor server in the network is labelled as a guard,
35298      and we've already picked him, we would cycle endlessly picking him
35299      again, being unhappy about it, etc. Now we specifically exclude
35300      current guards when picking a new guard.
35301    - Servers send create cells more reliably after the TLS connection
35302      is established: we were sometimes forgetting to send half of them
35303      when we had more than one pending.
35304    - If we get a create cell that asks us to extend somewhere, but the
35305      Tor server there doesn't match the expected digest, we now send
35306      a destroy cell back, rather than silently doing nothing.
35307    - Make options->RedirectExit work again.
35308    - Make cookie authentication for the controller work again.
35309    - Stop being picky about unusual characters in the arguments to
35310      mapaddress. It's none of our business.
35311    - Add a new config option "TestVia" that lets you specify preferred
35312      middle hops to use for test circuits. Perhaps this will let me
35313      debug the reachability problems better.
35314
35315  o Log / documentation fixes:
35316    - If we're a server and some peer has a broken TLS certificate, don't
35317      log about it unless ProtocolWarnings is set, i.e., we want to hear
35318      about protocol violations by others.
35319    - Fix spelling of VirtualAddrNetwork in man page.
35320    - Add a better explanation at the top of the autogenerated torrc file
35321      about what happened to our old torrc.
35322
35323
35324Changes in version 0.1.1.20 - 2006-05-23
35325  o Bugfixes:
35326    - Downgrade a log severity where servers complain that they're
35327      invalid.
35328    - Avoid a compile warning on FreeBSD.
35329    - Remove string size limit on NEWDESC messages; solve bug 291.
35330    - Correct the RunAsDaemon entry in the man page; ignore RunAsDaemon
35331      more thoroughly when we're running on windows.
35332
35333
35334Changes in version 0.1.1.19-rc - 2006-05-03
35335  o Minor bugs:
35336    - Regenerate our local descriptor if it's dirty and we try to use
35337      it locally (e.g. if it changes during reachability detection).
35338    - If we setconf our ORPort to 0, we continued to listen on the
35339      old ORPort and receive connections.
35340    - Avoid a second warning about machine/limits.h on Debian
35341      GNU/kFreeBSD.
35342    - Be willing to add our own routerinfo into the routerlist.
35343      Now authorities will include themselves in their directories
35344      and network-statuses.
35345    - Stop trying to upload rendezvous descriptors to every
35346      directory authority: only try the v1 authorities.
35347    - Servers no longer complain when they think they're not
35348      registered with the directory authorities. There were too many
35349      false positives.
35350    - Backport dist-rpm changes so rpms can be built without errors.
35351
35352  o Features:
35353    - Implement an option, VirtualAddrMask, to set which addresses
35354      get handed out in response to mapaddress requests. This works
35355      around a bug in tsocks where 127.0.0.0/8 is never socksified.
35356
35357
35358Changes in version 0.1.1.18-rc - 2006-04-10
35359  o Major fixes:
35360    - Work harder to download live network-statuses from all the
35361      directory authorities we know about. Improve the threshold
35362      decision logic so we're more robust to edge cases.
35363    - When fetching rendezvous descriptors, we were willing to ask
35364      v2 authorities too, which would always return 404.
35365
35366  o Minor fixes:
35367    - Stop listing down or invalid nodes in the v1 directory. This will
35368      reduce its bulk by about 1/3, and reduce load on directory
35369      mirrors.
35370    - When deciding whether a router is Fast or Guard-worthy, consider
35371      his advertised BandwidthRate and not just the BandwidthCapacity.
35372    - No longer ship INSTALL and README files -- they are useless now.
35373    - Force rpmbuild to behave and honor target_cpu.
35374    - Avoid warnings about machine/limits.h on Debian GNU/kFreeBSD.
35375    - Start to include translated versions of the tor-doc-*.html
35376      files, along with the screenshots. Still needs more work.
35377    - Start sending back 512 and 451 errors if mapaddress fails,
35378      rather than not sending anything back at all.
35379    - When we fail to bind or listen on an incoming or outgoing
35380      socket, we should close it before failing. otherwise we just
35381      leak it. (thanks to weasel for finding.)
35382    - Allow "getinfo dir/status/foo" to work, as long as your DirPort
35383      is enabled. (This is a hack, and will be fixed in 0.1.2.x.)
35384    - Make NoPublish (even though deprecated) work again.
35385    - Fix a minor security flaw where a versioning auth dirserver
35386      could list a recommended version many times in a row to make
35387      clients more convinced that it's recommended.
35388    - Fix crash bug if there are two unregistered servers running
35389      with the same nickname, one of them is down, and you ask for
35390      them by nickname in your EntryNodes or ExitNodes. Also, try
35391      to pick the one that's running rather than an arbitrary one.
35392    - Fix an infinite loop we could hit if we go offline for too long.
35393    - Complain when we hit WSAENOBUFS on recv() or write() too.
35394      Perhaps this will help us hunt the bug.
35395    - If you're not a versioning dirserver, don't put the string
35396      "client-versions \nserver-versions \n" in your network-status.
35397    - Lower the minimum required number of file descriptors to 1000,
35398      so we can have some overhead for Valgrind on Linux, where the
35399      default ulimit -n is 1024.
35400
35401  o New features:
35402    - Add tor.dizum.com as the fifth authoritative directory server.
35403    - Add a new config option FetchUselessDescriptors, off by default,
35404      for when you plan to run "exitlist" on your client and you want
35405      to know about even the non-running descriptors.
35406
35407
35408Changes in version 0.1.1.17-rc - 2006-03-28
35409  o Major fixes:
35410    - Clients and servers since 0.1.1.10-alpha have been expiring
35411      connections whenever they are idle for 5 minutes and they *do*
35412      have circuits on them. Oops. With this new version, clients will
35413      discard their previous entry guard choices and avoid choosing
35414      entry guards running these flawed versions.
35415    - Fix memory leak when uncompressing concatenated zlib streams. This
35416      was causing substantial leaks over time on Tor servers.
35417    - The v1 directory was including servers as much as 48 hours old,
35418      because that's how the new routerlist->routers works. Now only
35419      include them if they're 20 hours old or less.
35420
35421  o Minor fixes:
35422    - Resume building on irix64, netbsd 2.0, etc.
35423    - On non-gcc compilers (e.g. solaris), use "-g -O" instead of
35424      "-Wall -g -O2".
35425    - Stop writing the "router.desc" file, ever. Nothing uses it anymore,
35426      and it is confusing some users.
35427    - Mirrors stop caching the v1 directory so often.
35428    - Make the max number of old descriptors that a cache will hold
35429      rise with the number of directory authorities, so we can scale.
35430    - Change our win32 uname() hack to be more forgiving about what
35431      win32 versions it thinks it's found.
35432
35433  o New features:
35434    - Add lefkada.eecs.harvard.edu as a fourth authoritative directory
35435      server.
35436    - When the controller's *setconf commands fail, collect an error
35437      message in a string and hand it back to the controller.
35438    - Make the v2 dir's "Fast" flag based on relative capacity, just
35439      like "Stable" is based on median uptime. Name everything in the
35440      top 7/8 Fast, and only the top 1/2 gets to be a Guard.
35441    - Log server fingerprint on startup, so new server operators don't
35442      have to go hunting around their filesystem for it.
35443    - Return a robots.txt on our dirport to discourage google indexing.
35444    - Let the controller ask for GETINFO dir/status/foo so it can ask
35445      directly rather than connecting to the dir port. Only works when
35446      dirport is set for now.
35447
35448  o New config options rather than constants in the code:
35449    - SocksTimeout: How long do we let a socks connection wait
35450      unattached before we fail it?
35451    - CircuitBuildTimeout: Cull non-open circuits that were born
35452      at least this many seconds ago.
35453    - CircuitIdleTimeout: Cull open clean circuits that were born
35454      at least this many seconds ago.
35455
35456
35457Changes in version 0.1.1.16-rc - 2006-03-18
35458  o Bugfixes on 0.1.1.15-rc:
35459    - Fix assert when the controller asks to attachstream a connect-wait
35460      or resolve-wait stream.
35461    - Now do address rewriting when the controller asks us to attach
35462      to a particular circuit too. This will let Blossom specify
35463      "moria2.exit" without having to learn what moria2's IP address is.
35464    - Make the "tor --verify-config" command-line work again, so people
35465      can automatically check if their torrc will parse.
35466    - Authoritative dirservers no longer require an open connection from
35467      a server to consider him "reachable". We need this change because
35468      when we add new auth dirservers, old servers won't know not to
35469      hang up on them.
35470    - Let Tor build on Sun CC again.
35471    - Fix an off-by-one buffer size in dirserv.c that magically never
35472      hit our three authorities but broke sjmurdoch's own tor network.
35473    - If we as a directory mirror don't know of any v1 directory
35474      authorities, then don't try to cache any v1 directories.
35475    - Stop warning about unknown servers in our family when they are
35476      given as hex digests.
35477    - Stop complaining as quickly to the server operator that he
35478      hasn't registered his nickname/key binding.
35479    - Various cleanups so we can add new V2 Auth Dirservers.
35480    - Change "AllowUnverifiedNodes" to "AllowInvalidNodes", to
35481      reflect the updated flags in our v2 dir protocol.
35482    - Resume allowing non-printable characters for exit streams (both
35483      for connecting and for resolving). Now we tolerate applications
35484      that don't follow the RFCs. But continue to block malformed names
35485      at the socks side.
35486
35487  o Bugfixes on 0.1.0.x:
35488    - Fix assert bug in close_logs(): when we close and delete logs,
35489      remove them all from the global "logfiles" list.
35490    - Fix minor integer overflow in calculating when we expect to use up
35491      our bandwidth allocation before hibernating.
35492    - Fix a couple of bugs in OpenSSL detection. Also, deal better when
35493      there are multiple SSLs installed with different versions.
35494    - When we try to be a server and Address is not explicitly set and
35495      our hostname resolves to a private IP address, try to use an
35496      interface address if it has a public address. Now Windows machines
35497      that think of themselves as localhost can work by default.
35498
35499  o New features:
35500    - Let the controller ask for GETINFO dir/server/foo so it can ask
35501      directly rather than connecting to the dir port.
35502    - Let the controller tell us about certain router descriptors
35503      that it doesn't want Tor to use in circuits. Implement
35504      SETROUTERPURPOSE and modify +POSTDESCRIPTOR to do this.
35505    - New config option SafeSocks to reject all application connections
35506      using unsafe socks protocols. Defaults to off.
35507
35508
35509Changes in version 0.1.1.15-rc - 2006-03-11
35510  o Bugfixes and cleanups:
35511    - When we're printing strings from the network, don't try to print
35512      non-printable characters. This protects us against shell escape
35513      sequence exploits, and also against attacks to fool humans into
35514      misreading their logs.
35515    - Fix a bug where Tor would fail to establish any connections if you
35516      left it off for 24 hours and then started it: we were happy with
35517      the obsolete network statuses, but they all referred to router
35518      descriptors that were too old to fetch, so we ended up with no
35519      valid router descriptors.
35520    - Fix a seg fault in the controller's "getinfo orconn-status"
35521      command while listing status on incoming handshaking connections.
35522      Introduce a status name "NEW" for these connections.
35523    - If we get a linelist or linelist_s config option from the torrc
35524      (e.g. ExitPolicy) and it has no value, warn and skip rather than
35525      silently resetting it to its default.
35526    - Don't abandon entry guards until they've been down or gone for
35527      a whole month.
35528    - Cleaner and quieter log messages.
35529
35530  o New features:
35531    - New controller signal NEWNYM that makes new application requests
35532      use clean circuits.
35533    - Add a new circuit purpose 'controller' to let the controller ask
35534      for a circuit that Tor won't try to use. Extend the EXTENDCIRCUIT
35535      controller command to let you specify the purpose if you're
35536      starting a new circuit. Add a new SETCIRCUITPURPOSE controller
35537      command to let you change a circuit's purpose after it's been
35538      created.
35539    - Accept "private:*" in routerdesc exit policies; not generated yet
35540      because older Tors do not understand it.
35541    - Add BSD-style contributed startup script "rc.subr" from Peter
35542      Thoenen.
35543
35544
35545Changes in version 0.1.1.14-alpha - 2006-02-20
35546  o Bugfixes on 0.1.1.x:
35547    - Don't die if we ask for a stdout or stderr log (even implicitly)
35548      and we're set to RunAsDaemon -- just warn.
35549    - We still had a few bugs in the OR connection rotation code that
35550      caused directory servers to slowly aggregate connections to other
35551      fast Tor servers. This time for sure!
35552    - Make log entries on Win32 include the name of the function again.
35553    - We were treating a pair of exit policies if they were equal even
35554      if one said accept and the other said reject -- causing us to
35555      not always publish a new descriptor since we thought nothing
35556      had changed.
35557    - Retry pending server downloads as well as pending networkstatus
35558      downloads when we unexpectedly get a socks request.
35559    - We were ignoring the IS_FAST flag in the directory status,
35560      meaning we were willing to pick trivial-bandwidth nodes for "fast"
35561      connections.
35562    - If the controller's SAVECONF command fails (e.g. due to file
35563      permissions), let the controller know that it failed.
35564
35565  o Features:
35566    - If we're trying to be a Tor server and running Windows 95/98/ME
35567      as a server, explain that we'll likely crash.
35568    - When we're a server, a client asks for an old-style directory,
35569      and our write bucket is empty, don't give it to him. This way
35570      small servers can continue to serve the directory *sometimes*,
35571      without getting overloaded.
35572    - Compress exit policies even more -- look for duplicate lines
35573      and remove them.
35574    - Clients now honor the "guard" flag in the router status when
35575      picking entry guards, rather than looking at is_fast or is_stable.
35576    - Retain unrecognized lines in $DATADIR/state file, so that we can
35577      be forward-compatible.
35578    - Generate 18.0.0.0/8 address policy format in descs when we can;
35579      warn when the mask is not reducible to a bit-prefix.
35580    - Let the user set ControlListenAddress in the torrc. This can be
35581      dangerous, but there are some cases (like a secured LAN) where it
35582      makes sense.
35583    - Split ReachableAddresses into ReachableDirAddresses and
35584      ReachableORAddresses, so we can restrict Dir conns to port 80
35585      and OR conns to port 443.
35586    - Now we can target arch and OS in rpm builds (contributed by
35587      Phobos). Also make the resulting dist-rpm filename match the
35588      target arch.
35589    - New config options to help controllers: FetchServerDescriptors
35590      and FetchHidServDescriptors for whether to fetch server
35591      info and hidserv info or let the controller do it, and
35592      PublishServerDescriptor and PublishHidServDescriptors.
35593    - Also let the controller set the __AllDirActionsPrivate config
35594      option if you want all directory fetches/publishes to happen via
35595      Tor (it assumes your controller bootstraps your circuits).
35596
35597
35598Changes in version 0.1.0.17 - 2006-02-17
35599  o Crash bugfixes on 0.1.0.x:
35600    - When servers with a non-zero DirPort came out of hibernation,
35601      sometimes they would trigger an assert.
35602
35603  o Other important bugfixes:
35604    - On platforms that don't have getrlimit (like Windows), we were
35605      artificially constraining ourselves to a max of 1024
35606      connections. Now just assume that we can handle as many as 15000
35607      connections. Hopefully this won't cause other problems.
35608
35609  o Backported features:
35610    - When we're a server, a client asks for an old-style directory,
35611      and our write bucket is empty, don't give it to him. This way
35612      small servers can continue to serve the directory *sometimes*,
35613      without getting overloaded.
35614    - Whenever you get a 503 in response to a directory fetch, try
35615      once more. This will become important once servers start sending
35616      503's whenever they feel busy.
35617    - Fetch a new directory every 120 minutes, not every 40 minutes.
35618      Now that we have hundreds of thousands of users running the old
35619      directory algorithm, it's starting to hurt a lot.
35620    - Bump up the period for forcing a hidden service descriptor upload
35621      from 20 minutes to 1 hour.
35622
35623
35624Changes in version 0.1.1.13-alpha - 2006-02-09
35625  o Crashes in 0.1.1.x:
35626    - When you tried to setconf ORPort via the controller, Tor would
35627      crash. So people using TorCP to become a server were sad.
35628    - Solve (I hope) the stack-smashing bug that we were seeing on fast
35629      servers. The problem appears to be something do with OpenSSL's
35630      random number generation, or how we call it, or something. Let me
35631      know if the crashes continue.
35632    - Turn crypto hardware acceleration off by default, until we find
35633      somebody smart who can test it for us. (It appears to produce
35634      seg faults in at least some cases.)
35635    - Fix a rare assert error when we've tried all intro points for
35636      a hidden service and we try fetching the service descriptor again:
35637      "Assertion conn->state != AP_CONN_STATE_RENDDESC_WAIT failed"
35638
35639  o Major fixes:
35640    - Fix a major load balance bug: we were round-robining in 16 KB
35641      chunks, and servers with bandwidthrate of 20 KB, while downloading
35642      a 600 KB directory, would starve their other connections. Now we
35643      try to be a bit more fair.
35644    - Dir authorities and mirrors were never expiring the newest
35645      descriptor for each server, causing memory and directory bloat.
35646    - Fix memory-bloating and connection-bloating bug on servers: We
35647      were never closing any connection that had ever had a circuit on
35648      it, because we were checking conn->n_circuits == 0, yet we had a
35649      bug that let it go negative.
35650    - Make Tor work using squid as your http proxy again -- squid
35651      returns an error if you ask for a URL that's too long, and it uses
35652      a really generic error message. Plus, many people are behind a
35653      transparent squid so they don't even realize it.
35654    - On platforms that don't have getrlimit (like Windows), we were
35655      artificially constraining ourselves to a max of 1024
35656      connections. Now just assume that we can handle as many as 15000
35657      connections. Hopefully this won't cause other problems.
35658    - Add a new config option ExitPolicyRejectPrivate which defaults to
35659      1. This means all exit policies will begin with rejecting private
35660      addresses, unless the server operator explicitly turns it off.
35661
35662  o Major features:
35663    - Clients no longer download descriptors for non-running
35664      descriptors.
35665    - Before we add new directory authorities, we should make it
35666      clear that only v1 authorities should receive/publish hidden
35667      service descriptors.
35668
35669  o Minor features:
35670    - As soon as we've fetched some more directory info, immediately
35671      try to download more server descriptors. This way we don't have
35672      a 10 second pause during initial bootstrapping.
35673    - Remove even more loud log messages that the server operator can't
35674      do anything about.
35675    - When we're running an obsolete or un-recommended version, make
35676      the log message more clear about what the problem is and what
35677      versions *are* still recommended.
35678    - Provide a more useful warn message when our onion queue gets full:
35679      the CPU is too slow or the exit policy is too liberal.
35680    - Don't warn when we receive a 503 from a dirserver/cache -- this
35681      will pave the way for them being able to refuse if they're busy.
35682    - When we fail to bind a listener, try to provide a more useful
35683      log message: e.g., "Is Tor already running?"
35684    - Adjust tor-spec to parameterize cell and key lengths. Now Ian
35685      Goldberg can prove things about our handshake protocol more
35686      easily.
35687    - MaxConn has been obsolete for a while now. Document the ConnLimit
35688      config option, which is a *minimum* number of file descriptors
35689      that must be available else Tor refuses to start.
35690    - Apply Matt Ghali's --with-syslog-facility patch to ./configure
35691      if you log to syslog and want something other than LOG_DAEMON.
35692    - Make dirservers generate a separate "guard" flag to mean,
35693      "would make a good entry guard". Make clients parse it and vote
35694      on it. Not used by clients yet.
35695    - Implement --with-libevent-dir option to ./configure. Also, improve
35696      search techniques to find libevent, and use those for openssl too.
35697    - Bump the default bandwidthrate to 3 MB, and burst to 6 MB
35698    - Only start testing reachability once we've established a
35699      circuit. This will make startup on dirservers less noisy.
35700    - Don't try to upload hidden service descriptors until we have
35701      established a circuit.
35702    - Fix the controller's "attachstream 0" command to treat conn like
35703      it just connected, doing address remapping, handling .exit and
35704      .onion idioms, and so on. Now we're more uniform in making sure
35705      that the controller hears about new and closing connections.
35706
35707
35708Changes in version 0.1.1.12-alpha - 2006-01-11
35709  o Bugfixes on 0.1.1.x:
35710    - The fix to close duplicate server connections was closing all
35711      Tor client connections if they didn't establish a circuit
35712      quickly enough. Oops.
35713    - Fix minor memory issue (double-free) that happened on exit.
35714
35715  o Bugfixes on 0.1.0.x:
35716    - Tor didn't warn when it failed to open a log file.
35717
35718
35719Changes in version 0.1.1.11-alpha - 2006-01-10
35720  o Crashes in 0.1.1.x:
35721    - Include all the assert/crash fixes from 0.1.0.16.
35722    - If you start Tor and then quit very quickly, there were some
35723      races that tried to free things that weren't allocated yet.
35724    - Fix a rare memory stomp if you're running hidden services.
35725    - Fix segfault when specifying DirServer in config without nickname.
35726    - Fix a seg fault when you finish connecting to a server but at
35727      that moment you dump his server descriptor.
35728    - Extendcircuit and Attachstream controller commands would
35729      assert/crash if you don't give them enough arguments.
35730    - Fix an assert error when we're out of space in the connection_list
35731      and we try to post a hidden service descriptor (reported by weasel).
35732    - If you specify a relative torrc path and you set RunAsDaemon in
35733      your torrc, then it chdir()'s to the new directory. If you HUP,
35734      it tries to load the new torrc location, fails, and exits.
35735      The fix: no longer allow a relative path to torrc using -f.
35736
35737  o Major features:
35738    - Implement "entry guards": automatically choose a handful of entry
35739      nodes and stick with them for all circuits. Only pick new guards
35740      when the ones you have are unsuitable, and if the old guards
35741      become suitable again, switch back. This will increase security
35742      dramatically against certain end-point attacks. The EntryNodes
35743      config option now provides some hints about which entry guards you
35744      want to use most; and StrictEntryNodes means to only use those.
35745    - New directory logic: download by descriptor digest, not by
35746      fingerprint. Caches try to download all listed digests from
35747      authorities; clients try to download "best" digests from caches.
35748      This avoids partitioning and isolating attacks better.
35749    - Make the "stable" router flag in network-status be the median of
35750      the uptimes of running valid servers, and make clients pay
35751      attention to the network-status flags. Thus the cutoff adapts
35752      to the stability of the network as a whole, making IRC, IM, etc
35753      connections more reliable.
35754
35755  o Major fixes:
35756    - Tor servers with dynamic IP addresses were needing to wait 18
35757      hours before they could start doing reachability testing using
35758      the new IP address and ports. This is because they were using
35759      the internal descriptor to learn what to test, yet they were only
35760      rebuilding the descriptor once they decided they were reachable.
35761    - Tor 0.1.1.9 and 0.1.1.10 had a serious bug that caused clients
35762      to download certain server descriptors, throw them away, and then
35763      fetch them again after 30 minutes. Now mirrors throw away these
35764      server descriptors so clients can't get them.
35765    - We were leaving duplicate connections to other ORs open for a week,
35766      rather than closing them once we detect a duplicate. This only
35767      really affected authdirservers, but it affected them a lot.
35768    - Spread the authdirservers' reachability testing over the entire
35769      testing interval, so we don't try to do 500 TLS's at once every
35770      20 minutes.
35771
35772  o Minor fixes:
35773    - If the network is down, and we try to connect to a conn because
35774      we have a circuit in mind, and we timeout (30 seconds) because the
35775      network never answers, we were expiring the circuit, but we weren't
35776      obsoleting the connection or telling the entry_guards functions.
35777    - Some Tor servers process billions of cells per day. These statistics
35778      need to be uint64_t's.
35779    - Check for integer overflows in more places, when adding elements
35780      to smartlists. This could possibly prevent a buffer overflow
35781      on malicious huge inputs. I don't see any, but I haven't looked
35782      carefully.
35783    - ReachableAddresses kept growing new "reject *:*" lines on every
35784      setconf/reload.
35785    - When you "setconf log" via the controller, it should remove all
35786      logs. We were automatically adding back in a "log notice stdout".
35787    - Newly bootstrapped Tor networks couldn't establish hidden service
35788      circuits until they had nodes with high uptime. Be more tolerant.
35789    - We were marking servers down when they could not answer every piece
35790      of the directory request we sent them. This was far too harsh.
35791    - Fix the torify (tsocks) config file to not use Tor for localhost
35792      connections.
35793    - Directory authorities now go to the proper authority when asking for
35794      a networkstatus, even when they want a compressed one.
35795    - Fix a harmless bug that was causing Tor servers to log
35796      "Got an end because of misc error, but we're not an AP. Closing."
35797    - Authorities were treating their own descriptor changes as cosmetic,
35798      meaning the descriptor available in the network-status and the
35799      descriptor that clients downloaded were different.
35800    - The OS X installer was adding a symlink for tor_resolve but
35801      the binary was called tor-resolve (reported by Thomas Hardly).
35802    - Workaround a problem with some http proxies where they refuse GET
35803      requests that specify "Content-Length: 0" (reported by Adrian).
35804    - Fix wrong log message when you add a "HiddenServiceNodes" config
35805      line without any HiddenServiceDir line (reported by Chris Thomas).
35806
35807  o Minor features:
35808    - Write the TorVersion into the state file so we have a prayer of
35809      keeping forward and backward compatibility.
35810    - Revive the FascistFirewall config option rather than eliminating it:
35811      now it's a synonym for ReachableAddresses *:80,*:443.
35812    - Clients choose directory servers from the network status lists,
35813      not from their internal list of router descriptors. Now they can
35814      go to caches directly rather than needing to go to authorities
35815      to bootstrap.
35816    - Directory authorities ignore router descriptors that have only
35817      cosmetic differences: do this for 0.1.0.x servers now too.
35818    - Add a new flag to network-status indicating whether the server
35819      can answer v2 directory requests too.
35820    - Authdirs now stop whining so loudly about bad descriptors that
35821      they fetch from other dirservers. So when there's a log complaint,
35822      it's for sure from a freshly uploaded descriptor.
35823    - Reduce memory requirements in our structs by changing the order
35824      of fields.
35825    - There used to be two ways to specify your listening ports in a
35826      server descriptor: on the "router" line and with a separate "ports"
35827      line. Remove support for the "ports" line.
35828    - New config option "AuthDirRejectUnlisted" for auth dirservers as
35829      a panic button: if we get flooded with unusable servers we can
35830      revert to only listing servers in the approved-routers file.
35831    - Auth dir servers can now mark a fingerprint as "!reject" or
35832      "!invalid" in the approved-routers file (as its nickname), to
35833      refuse descriptors outright or include them but marked as invalid.
35834    - Servers store bandwidth history across restarts/crashes.
35835    - Add reasons to DESTROY and RELAY_TRUNCATED cells, so clients can
35836      get a better idea of why their circuits failed. Not used yet.
35837    - Directory mirrors now cache up to 16 unrecognized network-status
35838      docs. Now we can add new authdirservers and they'll be cached too.
35839    - When picking a random directory, prefer non-authorities if any
35840      are known.
35841    - New controller option "getinfo desc/all-recent" to fetch the
35842      latest server descriptor for every router that Tor knows about.
35843
35844
35845Changes in version 0.1.0.16 - 2006-01-02
35846  o Crash bugfixes on 0.1.0.x:
35847    - On Windows, build with a libevent patch from "I-M Weasel" to avoid
35848      corrupting the heap, losing FDs, or crashing when we need to resize
35849      the fd_sets. (This affects the Win32 binaries, not Tor's sources.)
35850    - It turns out sparc64 platforms crash on unaligned memory access
35851      too -- so detect and avoid this.
35852    - Handle truncated compressed data correctly (by detecting it and
35853      giving an error).
35854    - Fix possible-but-unlikely free(NULL) in control.c.
35855    - When we were closing connections, there was a rare case that
35856      stomped on memory, triggering seg faults and asserts.
35857    - Avoid potential infinite recursion when building a descriptor. (We
35858      don't know that it ever happened, but better to fix it anyway.)
35859    - We were neglecting to unlink marked circuits from soon-to-close OR
35860      connections, which caused some rare scribbling on freed memory.
35861    - Fix a memory stomping race bug when closing the joining point of two
35862      rendezvous circuits.
35863    - Fix an assert in time parsing found by Steven Murdoch.
35864
35865  o Other bugfixes on 0.1.0.x:
35866    - When we're doing reachability testing, provide more useful log
35867      messages so the operator knows what to expect.
35868    - Do not check whether DirPort is reachable when we are suppressing
35869      advertising it because of hibernation.
35870    - When building with -static or on Solaris, we sometimes needed -ldl.
35871    - When we're deciding whether a stream has enough circuits around
35872      that can handle it, count the freshly dirty ones and not the ones
35873      that are so dirty they won't be able to handle it.
35874    - When we're expiring old circuits, we had a logic error that caused
35875      us to close new rendezvous circuits rather than old ones.
35876    - Give a more helpful log message when you try to change ORPort via
35877      the controller: you should upgrade Tor if you want that to work.
35878    - We were failing to parse Tor versions that start with "Tor ".
35879    - Tolerate faulty streams better: when a stream fails for reason
35880      exitpolicy, stop assuming that the router is lying about his exit
35881      policy. When a stream fails for reason misc, allow it to retry just
35882      as if it was resolvefailed. When a stream has failed three times,
35883      reset its failure count so we can try again and get all three tries.
35884
35885
35886Changes in version 0.1.1.10-alpha - 2005-12-11
35887  o Correctness bugfixes on 0.1.0.x:
35888    - On Windows, build with a libevent patch from "I-M Weasel" to avoid
35889      corrupting the heap, losing FDs, or crashing when we need to resize
35890      the fd_sets. (This affects the Win32 binaries, not Tor's sources.)
35891    - Stop doing the complex voodoo overkill checking for insecure
35892      Diffie-Hellman keys. Just check if it's in [2,p-2] and be happy.
35893    - When we were closing connections, there was a rare case that
35894      stomped on memory, triggering seg faults and asserts.
35895    - We were neglecting to unlink marked circuits from soon-to-close OR
35896      connections, which caused some rare scribbling on freed memory.
35897    - When we're deciding whether a stream has enough circuits around
35898      that can handle it, count the freshly dirty ones and not the ones
35899      that are so dirty they won't be able to handle it.
35900    - Recover better from TCP connections to Tor servers that are
35901      broken but don't tell you (it happens!); and rotate TLS
35902      connections once a week.
35903    - When we're expiring old circuits, we had a logic error that caused
35904      us to close new rendezvous circuits rather than old ones.
35905    - Fix a scary-looking but apparently harmless bug where circuits
35906      would sometimes start out in state CIRCUIT_STATE_OR_WAIT at
35907      servers, and never switch to state CIRCUIT_STATE_OPEN.
35908    - When building with -static or on Solaris, we sometimes needed to
35909      build with -ldl.
35910    - Give a useful message when people run Tor as the wrong user,
35911      rather than telling them to start chowning random directories.
35912    - We were failing to inform the controller about new .onion streams.
35913
35914  o Security bugfixes on 0.1.0.x:
35915    - Refuse server descriptors if the fingerprint line doesn't match
35916      the included identity key. Tor doesn't care, but other apps (and
35917      humans) might actually be trusting the fingerprint line.
35918    - We used to kill the circuit when we receive a relay command we
35919      don't recognize. Now we just drop it.
35920    - Start obeying our firewall options more rigorously:
35921      . If we can't get to a dirserver directly, try going via Tor.
35922      . Don't ever try to connect (as a client) to a place our
35923        firewall options forbid.
35924      . If we specify a proxy and also firewall options, obey the
35925        firewall options even when we're using the proxy: some proxies
35926        can only proxy to certain destinations.
35927    - Fix a bug found by Lasse Overlier: when we were making internal
35928      circuits (intended to be cannibalized later for rendezvous and
35929      introduction circuits), we were picking them so that they had
35930      useful exit nodes. There was no need for this, and it actually
35931      aids some statistical attacks.
35932    - Start treating internal circuits and exit circuits separately.
35933      It's important to keep them separate because internal circuits
35934      have their last hops picked like middle hops, rather than like
35935      exit hops. So exiting on them will break the user's expectations.
35936
35937  o Bugfixes on 0.1.1.x:
35938    - Take out the mis-feature where we tried to detect IP address
35939      flapping for people with DynDNS, and chose not to upload a new
35940      server descriptor sometimes.
35941    - Try to be compatible with OpenSSL 0.9.6 again.
35942    - Log fix: when the controller is logging about .onion addresses,
35943      sometimes it didn't include the ".onion" part of the address.
35944    - Don't try to modify options->DirServers internally -- if the
35945      user didn't specify any, just add the default ones directly to
35946      the trusted dirserver list. This fixes a bug where people running
35947      controllers would use SETCONF on some totally unrelated config
35948      option, and Tor would start yelling at them about changing their
35949      DirServer lines.
35950    - Let the controller's redirectstream command specify a port, in
35951      case the controller wants to change that too.
35952    - When we requested a pile of server descriptors, we sometimes
35953      accidentally launched a duplicate request for the first one.
35954    - Bugfix for trackhostexits: write down the fingerprint of the
35955      chosen exit, not its nickname, because the chosen exit might not
35956      be verified.
35957    - When parsing foo.exit, if foo is unknown, and we are leaving
35958      circuits unattached, set the chosen_exit field and leave the
35959      address empty. This matters because controllers got confused
35960      otherwise.
35961    - Directory authorities no longer try to download server
35962      descriptors that they know they will reject.
35963
35964  o Features and updates:
35965    - Replace balanced trees with hash tables: this should make stuff
35966      significantly faster.
35967    - Resume using the AES counter-mode implementation that we ship,
35968      rather than OpenSSL's. Ours is significantly faster.
35969    - Many other CPU and memory improvements.
35970    - Add a new config option FastFirstHopPK (on by default) so clients
35971      do a trivial crypto handshake for their first hop, since TLS has
35972      already taken care of confidentiality and authentication.
35973    - Add a new config option TestSocks so people can see if their
35974      applications are using socks4, socks4a, socks5-with-ip, or
35975      socks5-with-hostname. This way they don't have to keep mucking
35976      with tcpdump and wondering if something got cached somewhere.
35977    - Warn when listening on a public address for socks. I suspect a
35978      lot of people are setting themselves up as open socks proxies,
35979      and they have no idea that jerks on the Internet are using them,
35980      since they simply proxy the traffic into the Tor network.
35981    - Add "private:*" as an alias in configuration for policies. Now
35982      you can simplify your exit policy rather than needing to list
35983      every single internal or nonroutable network space.
35984    - Add a new controller event type that allows controllers to get
35985      all server descriptors that were uploaded to a router in its role
35986      as authoritative dirserver.
35987    - Start shipping socks-extensions.txt, tor-doc-unix.html,
35988      tor-doc-server.html, and stylesheet.css in the tarball.
35989    - Stop shipping tor-doc.html in the tarball.
35990
35991
35992Changes in version 0.1.1.9-alpha - 2005-11-15
35993  o Usability improvements:
35994    - Start calling it FooListenAddress rather than FooBindAddress,
35995      since few of our users know what it means to bind an address
35996      or port.
35997    - Reduce clutter in server logs. We're going to try to make
35998      them actually usable now. New config option ProtocolWarnings that
35999      lets you hear about how _other Tors_ are breaking the protocol. Off
36000      by default.
36001    - Divide log messages into logging domains. Once we put some sort
36002      of interface on this, it will let people looking at more verbose
36003      log levels specify the topics they want to hear more about.
36004    - Make directory servers return better http 404 error messages
36005      instead of a generic "Servers unavailable".
36006    - Check for even more Windows version flags when writing the platform
36007      string in server descriptors, and note any we don't recognize.
36008    - Clean up more of the OpenSSL memory when exiting, so we can detect
36009      memory leaks better.
36010    - Make directory authorities be non-versioning, non-naming by
36011      default. Now we can add new directory servers without requiring
36012      their operators to pay close attention.
36013    - When logging via syslog, include the pid whenever we provide
36014      a log entry. Suggested by Todd Fries.
36015
36016  o Performance improvements:
36017    - Directory servers now silently throw away new descriptors that
36018      haven't changed much if the timestamps are similar. We do this to
36019      tolerate older Tor servers that upload a new descriptor every 15
36020      minutes. (It seemed like a good idea at the time.)
36021    - Inline bottleneck smartlist functions; use fast versions by default.
36022    - Add a "Map from digest to void*" abstraction digestmap_t so we
36023      can do less hex encoding/decoding. Use it in router_get_by_digest()
36024      to resolve a performance bottleneck.
36025    - Allow tor_gzip_uncompress to extract as much as possible from
36026      truncated compressed data. Try to extract as many
36027      descriptors as possible from truncated http responses (when
36028      DIR_PURPOSE_FETCH_ROUTERDESC).
36029    - Make circ->onionskin a pointer, not a static array. moria2 was using
36030      125000 circuit_t's after it had been up for a few weeks, which
36031      translates to 20+ megs of wasted space.
36032    - The private half of our EDH handshake keys are now chosen out
36033      of 320 bits, not 1024 bits. (Suggested by Ian Goldberg.)
36034
36035  o Security improvements:
36036    - Start making directory caches retain old routerinfos, so soon
36037      clients can start asking by digest of descriptor rather than by
36038      fingerprint of server.
36039    - Add half our entropy from RAND_poll in OpenSSL. This knows how
36040      to use egd (if present), openbsd weirdness (if present), vms/os2
36041      weirdness (if we ever port there), and more in the future.
36042
36043  o Bugfixes on 0.1.0.x:
36044    - Do round-robin writes of at most 16 kB per write. This might be
36045      more fair on loaded Tor servers, and it might resolve our Windows
36046      crash bug. It might also slow things down.
36047    - Our TLS handshakes were generating a single public/private
36048      keypair for the TLS context, rather than making a new one for
36049      each new connections. Oops. (But we were still rotating them
36050      periodically, so it's not so bad.)
36051    - When we were cannibalizing a circuit with a particular exit
36052      node in mind, we weren't checking to see if that exit node was
36053      already present earlier in the circuit. Oops.
36054    - When a Tor server's IP changes (e.g. from a dyndns address),
36055      upload a new descriptor so clients will learn too.
36056    - Really busy servers were keeping enough circuits open on stable
36057      connections that they were wrapping around the circuit_id
36058      space. (It's only two bytes.) This exposed a bug where we would
36059      feel free to reuse a circuit_id even if it still exists but has
36060      been marked for close. Try to fix this bug. Some bug remains.
36061    - If we would close a stream early (e.g. it asks for a .exit that
36062      we know would refuse it) but the LeaveStreamsUnattached config
36063      option is set by the controller, then don't close it.
36064
36065  o Bugfixes on 0.1.1.8-alpha:
36066    - Fix a big pile of memory leaks, some of them serious.
36067    - Do not try to download a routerdesc if we would immediately reject
36068      it as obsolete.
36069    - Resume inserting a newline between all router descriptors when
36070      generating (old style) signed directories, since our spec says
36071      we do.
36072    - When providing content-type application/octet-stream for
36073      server descriptors using .z, we were leaving out the
36074      content-encoding header. Oops. (Everything tolerated this just
36075      fine, but that doesn't mean we need to be part of the problem.)
36076    - Fix a potential seg fault in getconf and getinfo using version 1
36077      of the controller protocol.
36078    - Avoid crash: do not check whether DirPort is reachable when we
36079      are suppressing it because of hibernation.
36080    - Make --hash-password not crash on exit.
36081
36082
36083Changes in version 0.1.1.8-alpha - 2005-10-07
36084  o New features (major):
36085    - Clients don't download or use the directory anymore. Now they
36086      download and use network-statuses from the trusted dirservers,
36087      and fetch individual server descriptors as needed from mirrors.
36088      See dir-spec.txt for all the gory details.
36089    - Be more conservative about whether to advertise our DirPort.
36090      The main change is to not advertise if we're running at capacity
36091      and either a) we could hibernate or b) our capacity is low and
36092      we're using a default DirPort.
36093    - Use OpenSSL's AES when OpenSSL has version 0.9.7 or later.
36094
36095  o New features (minor):
36096    - Try to be smart about when to retry network-status and
36097      server-descriptor fetches. Still needs some tuning.
36098    - Stop parsing, storing, or using running-routers output (but
36099      mirrors still cache and serve it).
36100    - Consider a threshold of versioning dirservers (dirservers who have
36101      an opinion about which Tor versions are still recommended) before
36102      deciding whether to warn the user that he's obsolete.
36103    - Dirservers can now reject/invalidate by key and IP, with the
36104      config options "AuthDirInvalid" and "AuthDirReject". This is
36105      useful since currently we automatically list servers as running
36106      and usable even if we know they're jerks.
36107    - Provide dire warnings to any users who set DirServer; move it out
36108      of torrc.sample and into torrc.complete.
36109    - Add MyFamily to torrc.sample in the server section.
36110    - Add nicknames to the DirServer line, so we can refer to them
36111      without requiring all our users to memorize their IP addresses.
36112    - When we get an EOF or a timeout on a directory connection, note
36113      how many bytes of serverdesc we are dropping. This will help
36114      us determine whether it is smart to parse incomplete serverdesc
36115      responses.
36116    - Add a new function to "change pseudonyms" -- that is, to stop
36117      using any currently-dirty circuits for new streams, so we don't
36118      link new actions to old actions. Currently it's only called on
36119      HUP (or SIGNAL RELOAD).
36120    - On sighup, if UseHelperNodes changed to 1, use new circuits.
36121    - Start using RAND_bytes rather than RAND_pseudo_bytes from
36122      OpenSSL. Also, reseed our entropy every hour, not just at
36123      startup. And entropy in 512-bit chunks, not 160-bit chunks.
36124
36125  o Fixes on 0.1.1.7-alpha:
36126    - Nobody ever implemented EVENT_ADDRMAP for control protocol
36127      version 0, so don't let version 0 controllers ask for it.
36128    - If you requested something with too many newlines via the
36129      v1 controller protocol, you could crash tor.
36130    - Fix a number of memory leaks, including some pretty serious ones.
36131    - Re-enable DirPort testing again, so Tor servers will be willing
36132      to advertise their DirPort if it's reachable.
36133    - On TLS handshake, only check the other router's nickname against
36134      its expected nickname if is_named is set.
36135
36136  o Fixes forward-ported from 0.1.0.15:
36137    - Don't crash when we don't have any spare file descriptors and we
36138      try to spawn a dns or cpu worker.
36139    - Make the numbers in read-history and write-history into uint64s,
36140      so they don't overflow and publish negatives in the descriptor.
36141
36142  o Fixes on 0.1.0.x:
36143    - For the OS X package's modified privoxy config file, comment
36144      out the "logfile" line so we don't log everything passed
36145      through privoxy.
36146    - We were whining about using socks4 or socks5-with-local-lookup
36147      even when it's an IP in the "virtual" range we designed exactly
36148      for this case.
36149    - We were leaking some memory every time the client changes IPs.
36150    - Never call free() on tor_malloc()d memory. This will help us
36151      use dmalloc to detect memory leaks.
36152    - Check for named servers when looking them up by nickname;
36153      warn when we'recalling a non-named server by its nickname;
36154      don't warn twice about the same name.
36155    - Try to list MyFamily elements by key, not by nickname, and warn
36156      if we've not heard of the server.
36157    - Make windows platform detection (uname equivalent) smarter.
36158    - It turns out sparc64 doesn't like unaligned access either.
36159
36160
36161Changes in version 0.1.0.15 - 2005-09-23
36162  o Bugfixes on 0.1.0.x:
36163    - Reject ports 465 and 587 (spam targets) in default exit policy.
36164    - Don't crash when we don't have any spare file descriptors and we
36165      try to spawn a dns or cpu worker.
36166    - Get rid of IgnoreVersion undocumented config option, and make us
36167      only warn, never exit, when we're running an obsolete version.
36168    - Don't try to print a null string when your server finds itself to
36169      be unreachable and the Address config option is empty.
36170    - Make the numbers in read-history and write-history into uint64s,
36171      so they don't overflow and publish negatives in the descriptor.
36172    - Fix a minor memory leak in smartlist_string_remove().
36173    - We were only allowing ourselves to upload a server descriptor at
36174      most every 20 minutes, even if it changed earlier than that.
36175    - Clean up log entries that pointed to old URLs.
36176
36177
36178Changes in version 0.1.1.7-alpha - 2005-09-14
36179  o Fixes on 0.1.1.6-alpha:
36180    - Exit servers were crashing when people asked them to make a
36181      connection to an address not in their exit policy.
36182    - Looking up a non-existent stream for a v1 control connection would
36183      cause a segfault.
36184    - Fix a seg fault if we ask a dirserver for a descriptor by
36185      fingerprint but he doesn't know about him.
36186    - SETCONF was appending items to linelists, not clearing them.
36187    - SETCONF SocksBindAddress killed Tor if it fails to bind. Now back
36188      out and refuse the setconf if it would fail.
36189    - Downgrade the dirserver log messages when whining about
36190      unreachability.
36191
36192  o New features:
36193    - Add Peter Palfrader's check-tor script to tor/contrib/
36194      It lets you easily check whether a given server (referenced by
36195      nickname) is reachable by you.
36196    - Numerous changes to move towards client-side v2 directories. Not
36197      enabled yet.
36198
36199  o Fixes on 0.1.0.x:
36200    - If the user gave tor an odd number of command-line arguments,
36201      we were silently ignoring the last one. Now we complain and fail.
36202      [This wins the oldest-bug prize -- this bug has been present since
36203       November 2002, as released in Tor 0.0.0.]
36204    - Do not use unaligned memory access on alpha, mips, or mipsel.
36205      It *works*, but is very slow, so we treat them as if it doesn't.
36206    - Retry directory requests if we fail to get an answer we like
36207      from a given dirserver (we were retrying before, but only if
36208      we fail to connect).
36209    - When writing the RecommendedVersions line, sort them first.
36210    - When the client asked for a rendezvous port that the hidden
36211      service didn't want to provide, we were sending an IP address
36212      back along with the end cell. Fortunately, it was zero. But stop
36213      that anyway.
36214    - Correct "your server is reachable" log entries to indicate that
36215      it was self-testing that told us so.
36216
36217
36218Changes in version 0.1.1.6-alpha - 2005-09-09
36219  o Fixes on 0.1.1.5-alpha:
36220    - We broke fascistfirewall in 0.1.1.5-alpha. Oops.
36221    - Fix segfault in unit tests in 0.1.1.5-alpha. Oops.
36222    - Fix bug with tor_memmem finding a match at the end of the string.
36223    - Make unit tests run without segfaulting.
36224    - Resolve some solaris x86 compile warnings.
36225    - Handle duplicate lines in approved-routers files without warning.
36226    - Fix bug where as soon as a server refused any requests due to his
36227      exit policy (e.g. when we ask for localhost and he tells us that's
36228      127.0.0.1 and he won't do it), we decided he wasn't obeying his
36229      exit policy using him for any exits.
36230    - Only do openssl hardware accelerator stuff if openssl version is
36231      at least 0.9.7.
36232
36233  o New controller features/fixes:
36234    - Add a "RESETCONF" command so you can set config options like
36235      AllowUnverifiedNodes and LongLivedPorts to "". Also, if you give
36236      a config option in the torrc with no value, then it clears it
36237      entirely (rather than setting it to its default).
36238    - Add a "GETINFO config-file" to tell us where torrc is.
36239    - Avoid sending blank lines when GETINFO replies should be empty.
36240    - Add a QUIT command for the controller (for using it manually).
36241    - Fix a bug in SAVECONF that was adding default dirservers and
36242      other redundant entries to the torrc file.
36243
36244  o Start on the new directory design:
36245    - Generate, publish, cache, serve new network-status format.
36246    - Publish individual descriptors (by fingerprint, by "all", and by
36247      "tell me yours").
36248    - Publish client and server recommended versions separately.
36249    - Allow tor_gzip_uncompress() to handle multiple concatenated
36250      compressed strings. Serve compressed groups of router
36251      descriptors. The compression logic here could be more
36252      memory-efficient.
36253    - Distinguish v1 authorities (all currently trusted directories)
36254      from v2 authorities (all trusted directories).
36255    - Change DirServers config line to note which dirs are v1 authorities.
36256    - Add configuration option "V1AuthoritativeDirectory 1" which
36257      moria1, moria2, and tor26 should set.
36258    - Remove option when getting directory cache to see whether they
36259      support running-routers; they all do now. Replace it with one
36260      to see whether caches support v2 stuff.
36261
36262  o New features:
36263    - Dirservers now do their own external reachability testing of each
36264      Tor server, and only list them as running if they've been found to
36265      be reachable. We also send back warnings to the server's logs if
36266      it uploads a descriptor that we already believe is unreachable.
36267    - Implement exit enclaves: if we know an IP address for the
36268      destination, and there's a running Tor server at that address
36269      which allows exit to the destination, then extend the circuit to
36270      that exit first. This provides end-to-end encryption and end-to-end
36271      authentication. Also, if the user wants a .exit address or enclave,
36272      use 4 hops rather than 3, and cannibalize a general circ for it
36273      if you can.
36274    - Permit transitioning from ORPort=0 to ORPort!=0, and back, from the
36275      controller. Also, rotate dns and cpu workers if the controller
36276      changes options that will affect them; and initialize the dns
36277      worker cache tree whether or not we start out as a server.
36278    - Only upload a new server descriptor when options change, 18
36279      hours have passed, uptime is reset, or bandwidth changes a lot.
36280    - Check [X-]Forwarded-For headers in HTTP requests when generating
36281      log messages. This lets people run dirservers (and caches) behind
36282      Apache but still know which IP addresses are causing warnings.
36283
36284  o Config option changes:
36285    - Replace (Fascist)Firewall* config options with a new
36286      ReachableAddresses option that understands address policies.
36287      For example, "ReachableAddresses *:80,*:443"
36288    - Get rid of IgnoreVersion undocumented config option, and make us
36289      only warn, never exit, when we're running an obsolete version.
36290    - Make MonthlyAccountingStart config option truly obsolete now.
36291
36292  o Fixes on 0.1.0.x:
36293    - Reject ports 465 and 587 in the default exit policy, since
36294      people have started using them for spam too.
36295    - It turns out we couldn't bootstrap a network since we added
36296      reachability detection in 0.1.0.1-rc. Good thing the Tor network
36297      has never gone down. Add an AssumeReachable config option to let
36298      servers and dirservers bootstrap. When we're trying to build a
36299      high-uptime or high-bandwidth circuit but there aren't enough
36300      suitable servers, try being less picky rather than simply failing.
36301    - Our logic to decide if the OR we connected to was the right guy
36302      was brittle and maybe open to a mitm for unverified routers.
36303    - We weren't cannibalizing circuits correctly for
36304      CIRCUIT_PURPOSE_C_ESTABLISH_REND and
36305      CIRCUIT_PURPOSE_S_ESTABLISH_INTRO, so we were being forced to
36306      build those from scratch. This should make hidden services faster.
36307    - Predict required circuits better, with an eye toward making hidden
36308      services faster on the service end.
36309    - Retry streams if the exit node sends back a 'misc' failure. This
36310      should result in fewer random failures. Also, after failing
36311      from resolve failed or misc, reset the num failures, so we give
36312      it a fair shake next time we try.
36313    - Clean up the rendezvous warn log msgs, and downgrade some to info.
36314    - Reduce severity on logs about dns worker spawning and culling.
36315    - When we're shutting down and we do something like try to post a
36316      server descriptor or rendezvous descriptor, don't complain that
36317      we seem to be unreachable. Of course we are, we're shutting down.
36318    - Add TTLs to RESOLVED, CONNECTED, and END_REASON_EXITPOLICY cells.
36319      We don't use them yet, but maybe one day our DNS resolver will be
36320      able to discover them.
36321    - Make ContactInfo mandatory for authoritative directory servers.
36322    - Require server descriptors to list IPv4 addresses -- hostnames
36323      are no longer allowed. This also fixes some potential security
36324      problems with people providing hostnames as their address and then
36325      preferentially resolving them to partition users.
36326    - Change log line for unreachability to explicitly suggest /etc/hosts
36327      as the culprit. Also make it clearer what IP address and ports we're
36328      testing for reachability.
36329    - Put quotes around user-supplied strings when logging so users are
36330      more likely to realize if they add bad characters (like quotes)
36331      to the torrc.
36332    - Let auth dir servers start without specifying an Address config
36333      option.
36334    - Make unit tests (and other invocations that aren't the real Tor)
36335      run without launching listeners, creating subdirectories, and so on.
36336
36337
36338Changes in version 0.1.1.5-alpha - 2005-08-08
36339  o Bugfixes included in 0.1.0.14.
36340
36341  o Bugfixes on 0.1.0.x:
36342    - If you write "HiddenServicePort 6667 127.0.0.1 6668" in your
36343      torrc rather than "HiddenServicePort 6667 127.0.0.1:6668",
36344      it would silently using ignore the 6668.
36345
36346
36347Changes in version 0.1.0.14 - 2005-08-08
36348  o Bugfixes on 0.1.0.x:
36349      - Fix the other half of the bug with crypto handshakes
36350        (CVE-2005-2643).
36351      - Fix an assert trigger if you send a 'signal term' via the
36352        controller when it's listening for 'event info' messages.
36353
36354
36355Changes in version 0.1.1.4-alpha - 2005-08-04
36356  o Bugfixes included in 0.1.0.13.
36357
36358  o Features:
36359    - Improve tor_gettimeofday() granularity on windows.
36360    - Make clients regenerate their keys when their IP address changes.
36361    - Implement some more GETINFO goodness: expose helper nodes, config
36362      options, getinfo keys.
36363
36364
36365Changes in version 0.1.0.13 - 2005-08-04
36366  o Bugfixes on 0.1.0.x:
36367    - Fix a critical bug in the security of our crypto handshakes.
36368    - Fix a size_t underflow in smartlist_join_strings2() that made
36369      it do bad things when you hand it an empty smartlist.
36370    - Fix Windows installer to ship Tor license (thanks to Aphex for
36371      pointing out this oversight) and put a link to the doc directory
36372      in the start menu.
36373    - Explicitly set no-unaligned-access for sparc: it turns out the
36374      new gcc's let you compile broken code, but that doesn't make it
36375      not-broken.
36376
36377
36378Changes in version 0.1.1.3-alpha - 2005-07-23
36379  o Bugfixes on 0.1.1.2-alpha:
36380    - Fix a bug in handling the controller's "post descriptor"
36381      function.
36382    - Fix several bugs in handling the controller's "extend circuit"
36383      function.
36384    - Fix a bug in handling the controller's "stream status" event.
36385    - Fix an assert failure if we have a controller listening for
36386      circuit events and we go offline.
36387    - Re-allow hidden service descriptors to publish 0 intro points.
36388    - Fix a crash when generating your hidden service descriptor if
36389      you don't have enough intro points already.
36390
36391  o New features on 0.1.1.2-alpha:
36392    - New controller function "getinfo accounting", to ask how
36393      many bytes we've used in this time period.
36394    - Experimental support for helper nodes: a lot of the risk from
36395      a small static adversary comes because users pick new random
36396      nodes every time they rebuild a circuit. Now users will try to
36397      stick to the same small set of entry nodes if they can. Not
36398      enabled by default yet.
36399
36400  o Bugfixes on 0.1.0.12:
36401    - If you're an auth dir server, always publish your dirport,
36402      even if you haven't yet found yourself to be reachable.
36403    - Fix a size_t underflow in smartlist_join_strings2() that made
36404      it do bad things when you hand it an empty smartlist.
36405
36406
36407Changes in version 0.1.0.12 - 2005-07-18
36408  o New directory servers:
36409      - tor26 has changed IP address.
36410
36411  o Bugfixes on 0.1.0.x:
36412    - Fix a possible double-free in tor_gzip_uncompress().
36413    - When --disable-threads is set, do not search for or link against
36414      pthreads libraries.
36415    - Don't trigger an assert if an authoritative directory server
36416      claims its dirport is 0.
36417    - Fix bug with removing Tor as an NT service: some people were
36418      getting "The service did not return an error." Thanks to Matt
36419      Edman for the fix.
36420
36421
36422Changes in version 0.1.1.2-alpha - 2005-07-15
36423  o New directory servers:
36424    - tor26 has changed IP address.
36425
36426  o Bugfixes on 0.1.0.x, crashes/leaks:
36427    - Port the servers-not-obeying-their-exit-policies fix from
36428      0.1.0.11.
36429    - Fix an fd leak in start_daemon().
36430    - On Windows, you can't always reopen a port right after you've
36431      closed it. So change retry_listeners() to only close and re-open
36432      ports that have changed.
36433    - Fix a possible double-free in tor_gzip_uncompress().
36434
36435  o Bugfixes on 0.1.0.x, usability:
36436    - When tor_socketpair() fails in Windows, give a reasonable
36437      Windows-style errno back.
36438    - Let people type "tor --install" as well as "tor -install" when
36439      they
36440      want to make it an NT service.
36441    - NT service patch from Matt Edman to improve error messages.
36442    - When the controller asks for a config option with an abbreviated
36443      name, give the full name in our response.
36444    - Correct the man page entry on TrackHostExitsExpire.
36445    - Looks like we were never delivering deflated (i.e. compressed)
36446      running-routers lists, even when asked. Oops.
36447    - When --disable-threads is set, do not search for or link against
36448      pthreads libraries.
36449
36450  o Bugfixes on 0.1.1.x:
36451    - Fix a seg fault with autodetecting which controller version is
36452      being used.
36453
36454  o Features:
36455    - New hidden service descriptor format: put a version in it, and
36456      let people specify introduction/rendezvous points that aren't
36457      in "the directory" (which is subjective anyway).
36458    - Allow the DEBUG controller event to work again. Mark certain log
36459      entries as "don't tell this to controllers", so we avoid cycles.
36460
36461
36462Changes in version 0.1.0.11 - 2005-06-30
36463  o Bugfixes on 0.1.0.x:
36464    - Fix major security bug: servers were disregarding their
36465      exit policies if clients behaved unexpectedly.
36466    - Make OS X init script check for missing argument, so we don't
36467      confuse users who invoke it incorrectly.
36468    - Fix a seg fault in "tor --hash-password foo".
36469    - The MAPADDRESS control command was broken.
36470
36471
36472Changes in version 0.1.1.1-alpha - 2005-06-29
36473  o Bugfixes:
36474    - Make OS X init script check for missing argument, so we don't
36475      confuse users who invoke it incorrectly.
36476    - Fix a seg fault in "tor --hash-password foo".
36477    - Fix a possible way to DoS dirservers.
36478    - When we complain that your exit policy implicitly allows local or
36479      private address spaces, name them explicitly so operators can
36480      fix it.
36481    - Make the log message less scary when all the dirservers are
36482      temporarily unreachable.
36483    - We were printing the number of idle dns workers incorrectly when
36484      culling them.
36485
36486  o Features:
36487    - Revised controller protocol (version 1) that uses ascii rather
36488      than binary. Add supporting libraries in python and java so you
36489      can use the controller from your applications without caring how
36490      our protocol works.
36491    - Spiffy new support for crypto hardware accelerators. Can somebody
36492      test this?
36493
36494
36495Changes in version 0.0.9.10 - 2005-06-16
36496  o Bugfixes on 0.0.9.x (backported from 0.1.0.10):
36497    - Refuse relay cells that claim to have a length larger than the
36498      maximum allowed. This prevents a potential attack that could read
36499      arbitrary memory (e.g. keys) from an exit server's process
36500      (CVE-2005-2050).
36501
36502
36503Changes in version 0.1.0.10 - 2005-06-14
36504  o Allow a few EINVALs from libevent before dying. Warn on kqueue with
36505    libevent before 1.1a.
36506
36507
36508Changes in version 0.1.0.9-rc - 2005-06-09
36509  o Bugfixes:
36510    - Reset buf->highwater every time buf_shrink() is called, not just on
36511      a successful shrink. This was causing significant memory bloat.
36512    - Fix buffer overflow when checking hashed passwords.
36513    - Security fix: if seeding the RNG on Win32 fails, quit.
36514    - Allow seeding the RNG on Win32 even when you're not running as
36515      Administrator.
36516    - Disable threading on Solaris too. Something is wonky with it,
36517      cpuworkers, and reentrant libs.
36518    - Reenable the part of the code that tries to flush as soon as an
36519      OR outbuf has a full TLS record available. Perhaps this will make
36520      OR outbufs not grow as huge except in rare cases, thus saving lots
36521      of CPU time plus memory.
36522    - Reject malformed .onion addresses rather then passing them on as
36523      normal web requests.
36524    - Adapt patch from Adam Langley: fix possible memory leak in
36525      tor_lookup_hostname().
36526    - Initialize libevent later in the startup process, so the logs are
36527      already established by the time we start logging libevent warns.
36528    - Use correct errno on win32 if libevent fails.
36529    - Check and warn about known-bad/slow libevent versions.
36530    - Pay more attention to the ClientOnly config option.
36531    - Have torctl.in/tor.sh.in check for location of su binary (needed
36532      on FreeBSD)
36533    - Correct/add man page entries for LongLivedPorts, ExitPolicy,
36534      KeepalivePeriod, ClientOnly, NoPublish, HttpProxy, HttpsProxy,
36535      HttpProxyAuthenticator
36536    - Stop warning about sigpipes in the logs. We're going to
36537      pretend that getting these occasionally is normal and fine.
36538    - Resolve OS X installer bugs: stop claiming to be 0.0.9.2 in
36539      certain
36540      installer screens; and don't put stuff into StartupItems unless
36541      the user asks you to.
36542    - Require servers that use the default dirservers to have public IP
36543      addresses. We have too many servers that are configured with private
36544      IPs and their admins never notice the log entries complaining that
36545      their descriptors are being rejected.
36546    - Add OSX uninstall instructions. An actual uninstall script will
36547      come later.
36548
36549
36550Changes in version 0.1.0.8-rc - 2005-05-23
36551  o Bugfixes:
36552    - It turns out that kqueue on OS X 10.3.9 was causing kernel
36553      panics. Disable kqueue on all OS X Tors.
36554    - Fix RPM: remove duplicate line accidentally added to the rpm
36555      spec file.
36556    - Disable threads on openbsd too, since its gethostaddr is not
36557      reentrant either.
36558    - Tolerate libevent 0.8 since it still works, even though it's
36559      ancient.
36560    - Enable building on Red Hat 9.0 again.
36561    - Allow the middle hop of the testing circuit to be running any
36562      version, now that most of them have the bugfix to let them connect
36563      to unknown servers. This will allow reachability testing to work
36564      even when 0.0.9.7-0.0.9.9 become obsolete.
36565    - Handle relay cells with rh.length too large. This prevents
36566      a potential attack that could read arbitrary memory (maybe even
36567      keys) from the exit server's process.
36568    - We screwed up the dirport reachability testing when we don't yet
36569      have a cached version of the directory. Hopefully now fixed.
36570    - Clean up router_load_single_router() (used by the controller),
36571      so it doesn't seg fault on error.
36572    - Fix a minor memory leak when somebody establishes an introduction
36573      point at your Tor server.
36574    - If a socks connection ends because read fails, don't warn that
36575      you're not sending a socks reply back.
36576
36577  o Features:
36578    - Add HttpProxyAuthenticator config option too, that works like
36579      the HttpsProxyAuthenticator config option.
36580    - Encode hashed controller passwords in hex instead of base64,
36581      to make it easier to write controllers.
36582
36583
36584Changes in version 0.1.0.7-rc - 2005-05-17
36585  o Bugfixes:
36586    - Fix a bug in the OS X package installer that prevented it from
36587      installing on Tiger.
36588    - Fix a script bug in the OS X package installer that made it
36589      complain during installation.
36590    - Find libevent even if it's hiding in /usr/local/ and your
36591      CFLAGS and LDFLAGS don't tell you to look there.
36592    - Be able to link with libevent as a shared library (the default
36593      after 1.0d), even if it's hiding in /usr/local/lib and even
36594      if you haven't added /usr/local/lib to your /etc/ld.so.conf,
36595      assuming you're running gcc. Otherwise fail and give a useful
36596      error message.
36597    - Fix a bug in the RPM packager: set home directory for _tor to
36598      something more reasonable when first installing.
36599    - Free a minor amount of memory that is still reachable on exit.
36600
36601
36602Changes in version 0.1.0.6-rc - 2005-05-14
36603  o Bugfixes:
36604    - Implement --disable-threads configure option. Disable threads on
36605      netbsd by default, because it appears to have no reentrant resolver
36606      functions.
36607    - Apple's OS X 10.4.0 ships with a broken kqueue. The new libevent
36608      release (1.1) detects and disables kqueue if it's broken.
36609    - Append default exit policy before checking for implicit internal
36610      addresses. Now we don't log a bunch of complaints on startup
36611      when using the default exit policy.
36612    - Some people were putting "Address  " in their torrc, and they had
36613      a buggy resolver that resolved " " to 0.0.0.0. Oops.
36614    - If DataDir is ~/.tor, and that expands to /.tor, then default to
36615      LOCALSTATEDIR/tor instead.
36616    - Fix fragmented-message bug in TorControl.py.
36617    - Resolve a minor bug which would prevent unreachable dirports
36618      from getting suppressed in the published descriptor.
36619    - When the controller gave us a new descriptor, we weren't resolving
36620      it immediately, so Tor would think its address was 0.0.0.0 until
36621      we fetched a new directory.
36622    - Fix an uppercase/lowercase case error in suppressing a bogus
36623      libevent warning on some Linuxes.
36624
36625  o Features:
36626    - Begin scrubbing sensitive strings from logs by default. Turn off
36627      the config option SafeLogging if you need to do debugging.
36628    - Switch to a new buffer management algorithm, which tries to avoid
36629      reallocing and copying quite as much. In first tests it looks like
36630      it uses *more* memory on average, but less cpu.
36631    - First cut at support for "create-fast" cells. Clients can use
36632      these when extending to their first hop, since the TLS already
36633      provides forward secrecy and authentication. Not enabled on
36634      clients yet.
36635    - When dirservers refuse a router descriptor, we now log its
36636      contactinfo, platform, and the poster's IP address.
36637    - Call tor_free_all instead of connections_free_all after forking, to
36638      save memory on systems that need to fork.
36639    - Whine at you if you're a server and you don't set your contactinfo.
36640    - Implement --verify-config command-line option to check if your torrc
36641      is valid without actually launching Tor.
36642    - Rewrite address "serifos.exit" to "localhost.serifos.exit"
36643      rather than just rejecting it.
36644
36645
36646Changes in version 0.1.0.5-rc - 2005-04-27
36647  o Bugfixes:
36648    - Stop trying to print a null pointer if an OR conn fails because
36649      we didn't like its cert.
36650  o Features:
36651    - Switch our internal buffers implementation to use a ring buffer,
36652      to hopefully improve performance for fast servers a lot.
36653    - Add HttpsProxyAuthenticator support (basic auth only), based
36654      on patch from Adam Langley.
36655    - Bump the default BandwidthRate from 1 MB to 2 MB, to accommodate
36656      the fast servers that have been joining lately.
36657    - Give hidden service accesses extra time on the first attempt,
36658      since 60 seconds is often only barely enough. This might improve
36659      robustness more.
36660    - Improve performance for dirservers: stop re-parsing the whole
36661      directory every time you regenerate it.
36662    - Add more debugging info to help us find the weird dns freebsd
36663      pthreads bug; cleaner debug messages to help track future issues.
36664
36665
36666Changes in version 0.0.9.9 - 2005-04-23
36667  o Bugfixes on 0.0.9.x:
36668    - If unofficial Tor clients connect and send weird TLS certs, our
36669      Tor server triggers an assert. This release contains a minimal
36670      backport from the broader fix that we put into 0.1.0.4-rc.
36671
36672
36673Changes in version 0.1.0.4-rc - 2005-04-23
36674  o Bugfixes:
36675    - If unofficial Tor clients connect and send weird TLS certs, our
36676      Tor server triggers an assert. Stop asserting, and start handling
36677      TLS errors better in other situations too.
36678    - When the controller asks us to tell it about all the debug-level
36679      logs, it turns out we were generating debug-level logs while
36680      telling it about them, which turns into a bad loop. Now keep
36681      track of whether you're sending a debug log to the controller,
36682      and don't log when you are.
36683    - Fix the "postdescriptor" feature of the controller interface: on
36684      non-complete success, only say "done" once.
36685  o Features:
36686    - Clients are now willing to load balance over up to 2mB, not 1mB,
36687      of advertised bandwidth capacity.
36688    - Add a NoPublish config option, so you can be a server (e.g. for
36689      testing running Tor servers in other Tor networks) without
36690      publishing your descriptor to the primary dirservers.
36691
36692
36693Changes in version 0.1.0.3-rc - 2005-04-08
36694  o Improvements on 0.1.0.2-rc:
36695    - Client now retries when streams end early for 'hibernating' or
36696      'resource limit' reasons, rather than failing them.
36697    - More automated handling for dirserver operators:
36698      - Automatically approve nodes running 0.1.0.2-rc or later,
36699        now that the the reachability detection stuff is working.
36700      - Now we allow two unverified servers with the same nickname
36701        but different keys. But if a nickname is verified, only that
36702        nickname+key are allowed.
36703      - If you're an authdirserver connecting to an address:port,
36704        and it's not the OR you were expecting, forget about that
36705        descriptor. If he *was* the one you were expecting, then forget
36706        about all other descriptors for that address:port.
36707      - Allow servers to publish descriptors from 12 hours in the future.
36708        Corollary: only whine about clock skew from the dirserver if
36709        he's a trusted dirserver (since now even verified servers could
36710        have quite wrong clocks).
36711    - Adjust maximum skew and age for rendezvous descriptors: let skew
36712      be 48 hours rather than 90 minutes.
36713    - Efficiency improvements:
36714      - Keep a big splay tree of (circid,orconn)->circuit mappings to make
36715        it much faster to look up a circuit for each relay cell.
36716      - Remove most calls to assert_all_pending_dns_resolves_ok(),
36717        since they're eating our cpu on exit nodes.
36718      - Stop wasting time doing a case insensitive comparison for every
36719        dns name every time we do any lookup. Canonicalize the names to
36720        lowercase and be done with it.
36721    - Start sending 'truncated' cells back rather than destroy cells,
36722      if the circuit closes in front of you. This means we won't have
36723      to abandon partially built circuits.
36724    - Only warn once per nickname from add_nickname_list_to_smartlist
36725      per failure, so an entrynode or exitnode choice that's down won't
36726      yell so much.
36727    - Put a note in the torrc about abuse potential with the default
36728      exit policy.
36729    - Revise control spec and implementation to allow all log messages to
36730      be sent to controller with their severities intact (suggested by
36731      Matt Edman). Update TorControl to handle new log event types.
36732    - Provide better explanation messages when controller's POSTDESCRIPTOR
36733      fails.
36734    - Stop putting nodename in the Platform string in server descriptors.
36735      It doesn't actually help, and it is confusing/upsetting some people.
36736
36737  o Bugfixes on 0.1.0.2-rc:
36738    - We were printing the host mask wrong in exit policies in server
36739      descriptors. This isn't a critical bug though, since we were still
36740      obeying the exit policy internally.
36741    - Fix Tor when compiled with libevent but without pthreads: move
36742      connection_unregister() from _connection_free() to
36743      connection_free().
36744    - Fix an assert trigger (already fixed in 0.0.9.x): when we have
36745      the rare mysterious case of accepting a conn on 0.0.0.0:0, then
36746      when we look through the connection array, we'll find any of the
36747      cpu/dnsworkers. This is no good.
36748
36749  o Bugfixes on 0.0.9.8:
36750    - Fix possible bug on threading platforms (e.g. win32) which was
36751      leaking a file descriptor whenever a cpuworker or dnsworker died.
36752    - When using preferred entry or exit nodes, ignore whether the
36753      circuit wants uptime or capacity. They asked for the nodes, they
36754      get the nodes.
36755    - chdir() to your datadirectory at the *end* of the daemonize process,
36756      not the beginning. This was a problem because the first time you
36757      run tor, if your datadir isn't there, and you have runasdaemon set
36758      to 1, it will try to chdir to it before it tries to create it. Oops.
36759    - Handle changed router status correctly when dirserver reloads
36760      fingerprint file. We used to be dropping all unverified descriptors
36761      right then. The bug was hidden because we would immediately
36762      fetch a directory from another dirserver, which would include the
36763      descriptors we just dropped.
36764    - When we're connecting to an OR and he's got a different nickname/key
36765      than we were expecting, only complain loudly if we're an OP or a
36766      dirserver. Complaining loudly to the OR admins just confuses them.
36767    - Tie MAX_DIR_SIZE to MAX_BUF_SIZE, so now directory sizes won't get
36768      artificially capped at 500kB.
36769
36770
36771Changes in version 0.0.9.8 - 2005-04-07
36772  o Bugfixes on 0.0.9.x:
36773    - We have a bug that I haven't found yet. Sometimes, very rarely,
36774      cpuworkers get stuck in the 'busy' state, even though the cpuworker
36775      thinks of itself as idle. This meant that no new circuits ever got
36776      established. Here's a workaround to kill any cpuworker that's been
36777      busy for more than 100 seconds.
36778
36779
36780Changes in version 0.1.0.2-rc - 2005-04-01
36781  o Bugfixes on 0.1.0.1-rc:
36782    - Fixes on reachability detection:
36783      - Don't check for reachability while hibernating.
36784      - If ORPort is reachable but DirPort isn't, still publish the
36785        descriptor, but zero out DirPort until it's found reachable.
36786      - When building testing circs for ORPort testing, use only
36787        high-bandwidth nodes, so fewer circuits fail.
36788      - Complain about unreachable ORPort separately from unreachable
36789        DirPort, so the user knows what's going on.
36790      - Make sure we only conclude ORPort reachability if we didn't
36791        initiate the conn. Otherwise we could falsely conclude that
36792        we're reachable just because we connected to the guy earlier
36793        and he used that same pipe to extend to us.
36794      - Authdirservers shouldn't do ORPort reachability detection,
36795        since they're in clique mode, so it will be rare to find a
36796        server not already connected to them.
36797      - When building testing circuits, always pick middle hops running
36798        Tor 0.0.9.7, so we avoid the "can't extend to unknown routers"
36799        bug. (This is a kludge; it will go away when 0.0.9.x becomes
36800        obsolete.)
36801      - When we decide we're reachable, actually publish our descriptor
36802        right then.
36803    - Fix bug in redirectstream in the controller.
36804    - Fix the state descriptor strings so logs don't claim edge streams
36805      are in a different state than they actually are.
36806    - Use recent libevent features when possible (this only really affects
36807      win32 and osx right now, because the new libevent with these
36808      features hasn't been released yet). Add code to suppress spurious
36809      libevent log msgs.
36810    - Prevent possible segfault in connection_close_unattached_ap().
36811    - Fix newlines on torrc in win32.
36812    - Improve error msgs when tor-resolve fails.
36813
36814  o Improvements on 0.0.9.x:
36815    - New experimental script tor/contrib/ExerciseServer.py (needs more
36816      work) that uses the controller interface to build circuits and
36817      fetch pages over them. This will help us bootstrap servers that
36818      have lots of capacity but haven't noticed it yet.
36819    - New experimental script tor/contrib/PathDemo.py (needs more work)
36820      that uses the controller interface to let you choose whole paths
36821      via addresses like
36822      "<hostname>.<path,separated by dots>.<length of path>.path"
36823    - When we've connected to an OR and handshaked but didn't like
36824      the result, we were closing the conn without sending destroy
36825      cells back for pending circuits. Now send those destroys.
36826
36827
36828Changes in version 0.0.9.7 - 2005-04-01
36829  o Bugfixes on 0.0.9.x:
36830    - Fix another race crash bug (thanks to Glenn Fink for reporting).
36831    - Compare identity to identity, not to nickname, when extending to
36832      a router not already in the directory. This was preventing us from
36833      extending to unknown routers. Oops.
36834    - Make sure to create OS X Tor user in <500 range, so we aren't
36835      creating actual system users.
36836    - Note where connection-that-hasn't-sent-end was marked, and fix
36837      a few really loud instances of this harmless bug (it's fixed more
36838      in 0.1.0.x).
36839
36840
36841Changes in version 0.1.0.1-rc - 2005-03-28
36842  o New features:
36843    - Add reachability testing. Your Tor server will automatically try
36844      to see if its ORPort and DirPort are reachable from the outside,
36845      and it won't upload its descriptor until it decides they are.
36846    - Handle unavailable hidden services better. Handle slow or busy
36847      hidden services better.
36848    - Add support for CONNECTing through https proxies, with "HttpsProxy"
36849      config option.
36850    - New exit policy: accept most low-numbered ports, rather than
36851      rejecting most low-numbered ports.
36852    - More Tor controller support (still experimental). See
36853      http://tor.eff.org/doc/control-spec.txt for all the new features,
36854      including signals to emulate unix signals from any platform;
36855      redirectstream; extendcircuit; mapaddress; getinfo; postdescriptor;
36856      closestream; closecircuit; etc.
36857    - Make nt services work and start on startup on win32 (based on
36858      patch by Matt Edman).
36859    - Add a new AddressMap config directive to rewrite incoming socks
36860      addresses. This lets you, for example, declare an implicit
36861      required exit node for certain sites.
36862    - Add a new TrackHostExits config directive to trigger addressmaps
36863      for certain incoming socks addresses -- for sites that break when
36864      your exit keeps changing (based on patch by Mike Perry).
36865    - Redo the client-side dns cache so it's just an addressmap too.
36866    - Notice when our IP changes, and reset stats/uptime/reachability.
36867    - When an application is using socks5, give him the whole variety of
36868      potential socks5 responses (connect refused, host unreachable, etc),
36869      rather than just "success" or "failure".
36870    - A more sane version numbering system. See
36871      http://tor.eff.org/cvs/tor/doc/version-spec.txt for details.
36872    - New contributed script "exitlist": a simple python script to
36873      parse directories and find Tor nodes that exit to listed
36874      addresses/ports.
36875    - New contributed script "privoxy-tor-toggle" to toggle whether
36876      Privoxy uses Tor. Seems to be configured for Debian by default.
36877    - Report HTTP reasons to client when getting a response from directory
36878      servers -- so you can actually know what went wrong.
36879    - New config option MaxAdvertisedBandwidth which lets you advertise
36880      a low bandwidthrate (to not attract as many circuits) while still
36881      allowing a higher bandwidthrate in reality.
36882
36883  o Robustness/stability fixes:
36884    - Make Tor use Niels Provos's libevent instead of its current
36885      poll-but-sometimes-select mess. This will let us use faster async
36886      cores (like epoll, kpoll, and /dev/poll), and hopefully work better
36887      on Windows too.
36888    - pthread support now too. This was forced because when we forked,
36889      we ended up wasting a lot of duplicate ram over time. Also switch
36890      to foo_r versions of some library calls to allow reentry and
36891      threadsafeness.
36892    - Better handling for heterogeneous / unreliable nodes:
36893      - Annotate circuits w/ whether they aim to contain high uptime nodes
36894        and/or high capacity nodes. When building circuits, choose
36895        appropriate nodes.
36896      - This means that every single node in an intro rend circuit,
36897        not just the last one, will have a minimum uptime.
36898      - New config option LongLivedPorts to indicate application streams
36899        that will want high uptime circuits.
36900      - Servers reset uptime when a dir fetch entirely fails. This
36901        hopefully reflects stability of the server's network connectivity.
36902      - If somebody starts his tor server in Jan 2004 and then fixes his
36903        clock, don't make his published uptime be a year.
36904      - Reset published uptime when you wake up from hibernation.
36905    - Introduce a notion of 'internal' circs, which are chosen without
36906      regard to the exit policy of the last hop. Intro and rendezvous
36907      circs must be internal circs, to avoid leaking information. Resolve
36908      and connect streams can use internal circs if they want.
36909    - New circuit pooling algorithm: make sure to have enough circs around
36910      to satisfy any predicted ports, and also make sure to have 2 internal
36911      circs around if we've required internal circs lately (and with high
36912      uptime if we've seen that lately too).
36913    - Split NewCircuitPeriod option into NewCircuitPeriod (30 secs),
36914      which describes how often we retry making new circuits if current
36915      ones are dirty, and MaxCircuitDirtiness (10 mins), which describes
36916      how long we're willing to make use of an already-dirty circuit.
36917    - Cannibalize GENERAL circs to be C_REND, C_INTRO, S_INTRO, and S_REND
36918      circ as necessary, if there are any completed ones lying around
36919      when we try to launch one.
36920    - Make hidden services try to establish a rendezvous for 30 seconds,
36921      rather than for n (where n=3) attempts to build a circuit.
36922    - Change SHUTDOWN_WAIT_LENGTH from a fixed 30 secs to a config option
36923      "ShutdownWaitLength".
36924    - Try to be more zealous about calling connection_edge_end when
36925      things go bad with edge conns in connection.c.
36926    - Revise tor-spec to add more/better stream end reasons.
36927    - Revise all calls to connection_edge_end to avoid sending "misc",
36928      and to take errno into account where possible.
36929
36930  o Bug fixes:
36931    - Fix a race condition that can trigger an assert, when we have a
36932      pending create cell and an OR connection fails right then.
36933    - Fix several double-mark-for-close bugs, e.g. where we were finding
36934      a conn for a cell even if that conn is already marked for close.
36935    - Make sequence of log messages when starting on win32 with no config
36936      file more reasonable.
36937    - When choosing an exit node for a new non-internal circ, don't take
36938      into account whether it'll be useful for any pending x.onion
36939      addresses -- it won't.
36940    - Turn addr_policy_compare from a tristate to a quadstate; this should
36941      help address our "Ah, you allow 1.2.3.4:80. You are a good choice
36942      for google.com" problem.
36943    - Make "platform" string in descriptor more accurate for Win32 servers,
36944      so it's not just "unknown platform".
36945    - Fix an edge case in parsing config options (thanks weasel).
36946      If they say "--" on the commandline, it's not an option.
36947    - Reject odd-looking addresses at the client (e.g. addresses that
36948      contain a colon), rather than having the server drop them because
36949      they're malformed.
36950    - tor-resolve requests were ignoring .exit if there was a working circuit
36951      they could use instead.
36952    - REUSEADDR on normal platforms means you can rebind to the port
36953      right after somebody else has let it go. But REUSEADDR on win32
36954      means to let you bind to the port _even when somebody else
36955      already has it bound_! So, don't do that on Win32.
36956    - Change version parsing logic: a version is "obsolete" if it is not
36957      recommended and (1) there is a newer recommended version in the
36958      same series, or (2) there are no recommended versions in the same
36959      series, but there are some recommended versions in a newer series.
36960      A version is "new" if it is newer than any recommended version in
36961      the same series.
36962    - Stop most cases of hanging up on a socks connection without sending
36963      the socks reject.
36964
36965  o Helpful fixes:
36966    - Require BandwidthRate to be at least 20kB/s for servers.
36967    - When a dirserver causes you to give a warn, mention which dirserver
36968      it was.
36969    - New config option DirAllowPrivateAddresses for authdirservers.
36970      Now by default they refuse router descriptors that have non-IP or
36971      private-IP addresses.
36972    - Stop publishing socksport in the directory, since it's not
36973      actually meant to be public. For compatibility, publish a 0 there
36974      for now.
36975    - Change DirFetchPeriod/StatusFetchPeriod to have a special "Be
36976      smart" value, that is low for servers and high for clients.
36977    - If our clock jumps forward by 100 seconds or more, assume something
36978      has gone wrong with our network and abandon all not-yet-used circs.
36979    - Warn when exit policy implicitly allows local addresses.
36980    - If we get an incredibly skewed timestamp from a dirserver mirror
36981      that isn't a verified OR, don't warn -- it's probably him that's
36982      wrong.
36983    - Since we ship our own Privoxy on OS X, tweak it so it doesn't write
36984      cookies to disk and doesn't log each web request to disk. (Thanks
36985      to Brett Carrington for pointing this out.)
36986    - When a client asks us for a dir mirror and we don't have one,
36987      launch an attempt to get a fresh one.
36988    - If we're hibernating and we get a SIGINT, exit immediately.
36989    - Add --with-dmalloc ./configure option, to track memory leaks.
36990    - And try to free all memory on closing, so we can detect what
36991      we're leaking.
36992    - Cache local dns resolves correctly even when they're .exit
36993      addresses.
36994    - Give a better warning when some other server advertises an
36995      ORPort that is actually an apache running ssl.
36996    - Add "opt hibernating 1" to server descriptor to make it clearer
36997      whether the server is hibernating.
36998
36999
37000Changes in version 0.0.9.6 - 2005-03-24
37001  o Bugfixes on 0.0.9.x (crashes and asserts):
37002    - Add new end stream reasons to maintenance branch. Fix bug where
37003      reason (8) could trigger an assert. Prevent bug from recurring.
37004    - Apparently win32 stat wants paths to not end with a slash.
37005    - Fix assert triggers in assert_cpath_layer_ok(), where we were
37006      blowing away the circuit that conn->cpath_layer points to, then
37007      checking to see if the circ is well-formed. Backport check to make
37008      sure we dont use the cpath on a closed connection.
37009    - Prevent circuit_resume_edge_reading_helper() from trying to package
37010      inbufs for marked-for-close streams.
37011    - Don't crash on hup if your options->address has become unresolvable.
37012    - Some systems (like OS X) sometimes accept() a connection and tell
37013      you the remote host is 0.0.0.0:0. If this happens, due to some
37014      other mis-features, we get confused; so refuse the conn for now.
37015
37016  o Bugfixes on 0.0.9.x (other):
37017    - Fix harmless but scary "Unrecognized content encoding" warn message.
37018    - Add new stream error reason: TORPROTOCOL reason means "you are not
37019      speaking a version of Tor I understand; say bye-bye to your stream."
37020    - Be willing to cache directories from up to ROUTER_MAX_AGE seconds
37021      into the future, now that we are more tolerant of skew. This
37022      resolves a bug where a Tor server would refuse to cache a directory
37023      because all the directories it gets are too far in the future;
37024      yet the Tor server never logs any complaints about clock skew.
37025    - Mac packaging magic: make man pages useable, and do not overwrite
37026      existing torrc files.
37027    - Make OS X log happily to /var/log/tor/tor.log
37028
37029
37030Changes in version 0.0.9.5 - 2005-02-22
37031  o Bugfixes on 0.0.9.x:
37032    - Fix an assert race at exit nodes when resolve requests fail.
37033    - Stop picking unverified dir mirrors--it only leads to misery.
37034    - Patch from Matt Edman to make NT services work better. Service
37035      support is still not compiled into the executable by default.
37036    - Patch from Dmitri Bely so the Tor service runs better under
37037      the win32 SYSTEM account.
37038    - Make tor-resolve actually work (?) on Win32.
37039    - Fix a sign bug when getrlimit claims to have 4+ billion
37040      file descriptors available.
37041    - Stop refusing to start when bandwidthburst == bandwidthrate.
37042    - When create cells have been on the onion queue more than five
37043      seconds, just send back a destroy and take them off the list.
37044
37045
37046Changes in version 0.0.9.4 - 2005-02-03
37047  o Bugfixes on 0.0.9:
37048    - Fix an assert bug that took down most of our servers: when
37049      a server claims to have 1 GB of bandwidthburst, don't
37050      freak out.
37051    - Don't crash as badly if we have spawned the max allowed number
37052      of dnsworkers, or we're out of file descriptors.
37053    - Block more file-sharing ports in the default exit policy.
37054    - MaxConn is now automatically set to the hard limit of max
37055      file descriptors we're allowed (ulimit -n), minus a few for
37056      logs, etc.
37057    - Give a clearer message when servers need to raise their
37058      ulimit -n when they start running out of file descriptors.
37059    - SGI Compatibility patches from Jan Schaumann.
37060    - Tolerate a corrupt cached directory better.
37061    - When a dirserver hasn't approved your server, list which one.
37062    - Go into soft hibernation after 95% of the bandwidth is used,
37063      not 99%. This is especially important for daily hibernators who
37064      have a small accounting max. Hopefully it will result in fewer
37065      cut connections when the hard hibernation starts.
37066    - Load-balance better when using servers that claim more than
37067      800kB/s of capacity.
37068    - Make NT services work (experimental, only used if compiled in).
37069
37070
37071Changes in version 0.0.9.3 - 2005-01-21
37072  o Bugfixes on 0.0.9:
37073    - Backport the cpu use fixes from main branch, so busy servers won't
37074      need as much processor time.
37075    - Work better when we go offline and then come back, or when we
37076      run Tor at boot before the network is up. We do this by
37077      optimistically trying to fetch a new directory whenever an
37078      application request comes in and we think we're offline -- the
37079      human is hopefully a good measure of when the network is back.
37080    - Backport some minimal hidserv bugfixes: keep rend circuits open as
37081      long as you keep using them; actually publish hidserv descriptors
37082      shortly after they change, rather than waiting 20-40 minutes.
37083    - Enable Mac startup script by default.
37084    - Fix duplicate dns_cancel_pending_resolve reported by Giorgos Pallas.
37085    - When you update AllowUnverifiedNodes or FirewallPorts via the
37086      controller's setconf feature, we were always appending, never
37087      resetting.
37088    - When you update HiddenServiceDir via setconf, it was screwing up
37089      the order of reading the lines, making it fail.
37090    - Do not rewrite a cached directory back to the cache; otherwise we
37091      will think it is recent and not fetch a newer one on startup.
37092    - Workaround for webservers that lie about Content-Encoding: Tor
37093      now tries to autodetect compressed directories and compression
37094      itself. This lets us Proxypass dir fetches through apache.
37095
37096
37097Changes in version 0.0.9.2 - 2005-01-04
37098  o Bugfixes on 0.0.9 (crashes and asserts):
37099    - Fix an assert on startup when the disk is full and you're logging
37100      to a file.
37101    - If you do socks4 with an IP of 0.0.0.x but *don't* provide a socks4a
37102      style address, then we'd crash.
37103    - Fix an assert trigger when the running-routers string we get from
37104      a dirserver is broken.
37105    - Make worker threads start and run on win32. Now win32 servers
37106      may work better.
37107    - Bandaid (not actually fix, but now it doesn't crash) an assert
37108      where the dns worker dies mysteriously and the main Tor process
37109      doesn't remember anything about the address it was resolving.
37110
37111  o Bugfixes on 0.0.9 (Win32):
37112    - Workaround for brain-damaged __FILE__ handling on MSVC: keep Nick's
37113      name out of the warning/assert messages.
37114    - Fix a superficial "unhandled error on read" bug on win32.
37115    - The win32 installer no longer requires a click-through for our
37116      license, since our Free Software license grants rights but does not
37117      take any away.
37118    - Win32: When connecting to a dirserver fails, try another one
37119      immediately. (This was already working for non-win32 Tors.)
37120    - Stop trying to parse $HOME on win32 when hunting for default
37121      DataDirectory.
37122    - Make tor-resolve.c work on win32 by calling network_init().
37123
37124  o Bugfixes on 0.0.9 (other):
37125    - Make 0.0.9.x build on Solaris again.
37126    - Due to a fencepost error, we were blowing away the \n when reporting
37127      confvalue items in the controller. So asking for multiple config
37128      values at once couldn't work.
37129    - When listing circuits that are pending on an opening OR connection,
37130      if we're an OR we were listing circuits that *end* at us as
37131      being pending on every listener, dns/cpu worker, etc. Stop that.
37132    - Dirservers were failing to create 'running-routers' or 'directory'
37133      strings if we had more than some threshold of routers. Fix them so
37134      they can handle any number of routers.
37135    - Fix a superficial "Duplicate mark for close" bug.
37136    - Stop checking for clock skew for OR connections, even for servers.
37137    - Fix a fencepost error that was chopping off the last letter of any
37138      nickname that is the maximum allowed nickname length.
37139    - Update URLs in log messages so they point to the new website.
37140    - Fix a potential problem in mangling server private keys while
37141      writing to disk (not triggered yet, as far as we know).
37142    - Include the licenses for other free software we include in Tor,
37143      now that we're shipping binary distributions more regularly.
37144
37145
37146Changes in version 0.0.9.1 - 2004-12-15
37147  o Bugfixes on 0.0.9:
37148    - Make hibernation actually work.
37149    - Make HashedControlPassword config option work.
37150    - When we're reporting event circuit status to a controller,
37151      don't use the stream status code.
37152
37153
37154Changes in version 0.0.9 - 2004-12-12
37155  o Cleanups:
37156    - Clean up manpage and torrc.sample file.
37157    - Clean up severities and text of log warnings.
37158  o Mistakes:
37159    - Make servers trigger an assert when they enter hibernation.
37160
37161
37162Changes in version 0.0.9rc7 - 2004-12-08
37163  o Bugfixes on 0.0.9rc:
37164    - Fix a stack-trashing crash when an exit node begins hibernating.
37165    - Avoid looking at unallocated memory while considering which
37166      ports we need to build circuits to cover.
37167    - Stop a sigpipe: when an 'end' cell races with eof from the app,
37168      we shouldn't hold-open-until-flush if the eof arrived first.
37169    - Fix a bug with init_cookie_authentication() in the controller.
37170    - When recommending new-format log lines, if the upper bound is
37171      LOG_ERR, leave it implicit.
37172
37173  o Bugfixes on 0.0.8.1:
37174    - Fix a whole slew of memory leaks.
37175    - Fix isspace() and friends so they still make Solaris happy
37176      but also so they don't trigger asserts on win32.
37177    - Fix parse_iso_time on platforms without strptime (eg win32).
37178    - win32: tolerate extra "readable" events better.
37179    - win32: when being multithreaded, leave parent fdarray open.
37180    - Make unit tests work on win32.
37181
37182
37183Changes in version 0.0.9rc6 - 2004-12-06
37184  o Bugfixes on 0.0.9pre:
37185    - Clean up some more integer underflow opportunities (not exploitable
37186      we think).
37187    - While hibernating, hup should not regrow our listeners.
37188    - Send an end to the streams we close when we hibernate, rather
37189      than just chopping them off.
37190    - React to eof immediately on non-open edge connections.
37191
37192  o Bugfixes on 0.0.8.1:
37193    - Calculate timeout for waiting for a connected cell from the time
37194      we sent the begin cell, not from the time the stream started. If
37195      it took a long time to establish the circuit, we would time out
37196      right after sending the begin cell.
37197    - Fix router_compare_addr_to_addr_policy: it was not treating a port
37198      of * as always matching, so we were picking reject *:* nodes as
37199      exit nodes too. Oops.
37200
37201  o Features:
37202    - New circuit building strategy: keep a list of ports that we've
37203      used in the past 6 hours, and always try to have 2 circuits open
37204      or on the way that will handle each such port. Seed us with port
37205      80 so web users won't complain that Tor is "slow to start up".
37206    - Make kill -USR1 dump more useful stats about circuits.
37207    - When warning about retrying or giving up, print the address, so
37208      the user knows which one it's talking about.
37209    - If you haven't used a clean circuit in an hour, throw it away,
37210      just to be on the safe side. (This means after 6 hours a totally
37211      unused Tor client will have no circuits open.)
37212
37213
37214Changes in version 0.0.9rc5 - 2004-12-01
37215  o Bugfixes on 0.0.8.1:
37216    - Disallow NDEBUG. We don't ever want anybody to turn off debug.
37217    - Let resolve conns retry/expire also, rather than sticking around
37218      forever.
37219    - If we are using select, make sure we stay within FD_SETSIZE.
37220
37221  o Bugfixes on 0.0.9pre:
37222    - Fix integer underflow in tor_vsnprintf() that may be exploitable,
37223      but doesn't seem to be currently; thanks to Ilja van Sprundel for
37224      finding it.
37225    - If anybody set DirFetchPostPeriod, give them StatusFetchPeriod
37226      instead. Impose minima and maxima for all *Period options; impose
37227      even tighter maxima for fetching if we are a caching dirserver.
37228      Clip rather than rejecting.
37229    - Fetch cached running-routers from servers that serve it (that is,
37230      authdirservers and servers running 0.0.9rc5-cvs or later.)
37231
37232  o Features:
37233    - Accept *:706 (silc) in default exit policy.
37234    - Implement new versioning format for post 0.1.
37235    - Support "foo.nickname.exit" addresses, to let Alice request the
37236      address "foo" as viewed by exit node "nickname". Based on a patch
37237      by Geoff Goodell.
37238    - Make tor --version --version dump the cvs Id of every file.
37239
37240
37241Changes in version 0.0.9rc4 - 2004-11-28
37242  o Bugfixes on 0.0.8.1:
37243    - Make windows sockets actually non-blocking (oops), and handle
37244      win32 socket errors better.
37245
37246  o Bugfixes on 0.0.9rc1:
37247    - Actually catch the -USR2 signal.
37248
37249
37250Changes in version 0.0.9rc3 - 2004-11-25
37251  o Bugfixes on 0.0.8.1:
37252    - Flush the log file descriptor after we print "Tor opening log file",
37253      so we don't see those messages days later.
37254
37255  o Bugfixes on 0.0.9rc1:
37256    - Make tor-resolve work again.
37257    - Avoid infinite loop in tor-resolve if tor hangs up on it.
37258    - Fix an assert trigger for clients/servers handling resolves.
37259
37260
37261Changes in version 0.0.9rc2 - 2004-11-24
37262  o Bugfixes on 0.0.9rc1:
37263    - I broke socks5 support while fixing the eof bug.
37264    - Allow unitless bandwidths and intervals; they default to bytes
37265      and seconds.
37266    - New servers don't start out hibernating; they are active until
37267      they run out of bytes, so they have a better estimate of how
37268      long it takes, and so their operators can know they're working.
37269
37270
37271Changes in version 0.0.9rc1 - 2004-11-23
37272  o Bugfixes on 0.0.8.1:
37273    - Finally fix a bug that's been plaguing us for a year:
37274      With high load, circuit package window was reaching 0. Whenever
37275      we got a circuit-level sendme, we were reading a lot on each
37276      socket, but only writing out a bit. So we would eventually reach
37277      eof. This would be noticed and acted on even when there were still
37278      bytes sitting in the inbuf.
37279    - When poll() is interrupted, we shouldn't believe the revents values.
37280
37281  o Bugfixes on 0.0.9pre6:
37282    - Fix hibernate bug that caused pre6 to be broken.
37283    - Don't keep rephist info for routers that haven't had activity for
37284      24 hours. (This matters now that clients have keys, since we track
37285      them too.)
37286    - Never call close_temp_logs while validating log options.
37287    - Fix backslash-escaping on tor.sh.in and torctl.in.
37288
37289  o Features:
37290    - Implement weekly/monthly/daily accounting: now you specify your
37291      hibernation properties by
37292      AccountingMax N bytes|KB|MB|GB|TB
37293      AccountingStart day|week|month [day] HH:MM
37294        Defaults to "month 1 0:00".
37295    - Let bandwidth and interval config options be specified as 5 bytes,
37296      kb, kilobytes, etc; and as seconds, minutes, hours, days, weeks.
37297    - kill -USR2 now moves all logs to loglevel debug (kill -HUP to
37298      get back to normal.)
37299    - If your requested entry or exit node has advertised bandwidth 0,
37300      pick it anyway.
37301    - Be more greedy about filling up relay cells -- we try reading again
37302      once we've processed the stuff we read, in case enough has arrived
37303      to fill the last cell completely.
37304    - Apply NT service patch from Osamu Fujino. Still needs more work.
37305
37306
37307Changes in version 0.0.9pre6 - 2004-11-15
37308  o Bugfixes on 0.0.8.1:
37309    - Fix assert failure on malformed socks4a requests.
37310    - Use identity comparison, not nickname comparison, to choose which
37311      half of circuit-ID-space each side gets to use. This is needed
37312      because sometimes we think of a router as a nickname, and sometimes
37313      as a hex ID, and we can't predict what the other side will do.
37314    - Catch and ignore SIGXFSZ signals when log files exceed 2GB; our
37315      write() call will fail and we handle it there.
37316    - Add a FAST_SMARTLIST define to optionally inline smartlist_get
37317      and smartlist_len, which are two major profiling offenders.
37318
37319  o Bugfixes on 0.0.9pre5:
37320    - Fix a bug in read_all that was corrupting config files on windows.
37321    - When we're raising the max number of open file descriptors to
37322      'unlimited', don't log that we just raised it to '-1'.
37323    - Include event code with events, as required by control-spec.txt.
37324    - Don't give a fingerprint when clients do --list-fingerprint:
37325      it's misleading, because it will never be the same again.
37326    - Stop using strlcpy in tor_strndup, since it was slowing us
37327      down a lot.
37328    - Remove warn on startup about missing cached-directory file.
37329    - Make kill -USR1 work again.
37330    - Hibernate if we start tor during the "wait for wakeup-time" phase
37331      of an accounting interval. Log our hibernation plans better.
37332    - Authoritative dirservers now also cache their directory, so they
37333      have it on start-up.
37334
37335  o Features:
37336    - Fetch running-routers; cache running-routers; compress
37337      running-routers; serve compressed running-routers.z
37338    - Add NSI installer script contributed by J Doe.
37339    - Commit VC6 and VC7 workspace/project files.
37340    - Commit a tor.spec for making RPM files, with help from jbash.
37341    - Add contrib/torctl.in contributed by Glenn Fink.
37342    - Implement the control-spec's SAVECONF command, to write your
37343      configuration to torrc.
37344    - Get cookie authentication for the controller closer to working.
37345    - Include control-spec.txt in the tarball.
37346    - When set_conf changes our server descriptor, upload a new copy.
37347      But don't upload it too often if there are frequent changes.
37348    - Document authentication config in man page, and document signals
37349      we catch.
37350    - Clean up confusing parts of man page and torrc.sample.
37351    - Make expand_filename handle ~ and ~username.
37352    - Use autoconf to enable largefile support where necessary. Use
37353      ftello where available, since ftell can fail at 2GB.
37354    - Distinguish between TOR_TLS_CLOSE and TOR_TLS_ERROR, so we can
37355      log more informatively.
37356    - Give a slightly more useful output for "tor -h".
37357    - Refuse application socks connections to port 0.
37358    - Check clock skew for verified servers, but allow unverified
37359      servers and clients to have any clock skew.
37360    - Break DirFetchPostPeriod into:
37361      - DirFetchPeriod for fetching full directory,
37362      - StatusFetchPeriod for fetching running-routers,
37363      - DirPostPeriod for posting server descriptor,
37364      - RendPostPeriod for posting hidden service descriptors.
37365    - Make sure the hidden service descriptors are at a random offset
37366      from each other, to hinder linkability.
37367
37368
37369Changes in version 0.0.9pre5 - 2004-11-09
37370  o Bugfixes on 0.0.9pre4:
37371    - Fix a seg fault in unit tests (doesn't affect main program).
37372    - Fix an assert bug where a hidden service provider would fail if
37373      the first hop of his rendezvous circuit was down.
37374    - Hidden service operators now correctly handle version 1 style
37375      INTRODUCE1 cells (nobody generates them still, so not a critical
37376      bug).
37377    - If do_hup fails, actually notice.
37378    - Handle more errnos from accept() without closing the listener.
37379      Some OpenBSD machines were closing their listeners because
37380      they ran out of file descriptors.
37381    - Send resolve cells to exit routers that are running a new
37382      enough version of the resolve code to work right.
37383    - Better handling of winsock includes on non-MSV win32 compilers.
37384    - Some people had wrapped their tor client/server in a script
37385      that would restart it whenever it died. This did not play well
37386      with our "shut down if your version is obsolete" code. Now people
37387      don't fetch a new directory if their local cached version is
37388      recent enough.
37389    - Make our autogen.sh work on ksh as well as bash.
37390
37391  o Major Features:
37392    - Hibernation: New config option "AccountingMaxKB" lets you
37393      set how many KBytes per month you want to allow your server to
37394      consume. Rather than spreading those bytes out evenly over the
37395      month, we instead hibernate for some of the month and pop up
37396      at a deterministic time, work until the bytes are consumed, then
37397      hibernate again. Config option "MonthlyAccountingStart" lets you
37398      specify which day of the month your billing cycle starts on.
37399    - Control interface: a separate program can now talk to your
37400      client/server over a socket, and get/set config options, receive
37401      notifications of circuits and streams starting/finishing/dying,
37402      bandwidth used, etc. The next step is to get some GUIs working.
37403      Let us know if you want to help out. See doc/control-spec.txt .
37404    - Ship a contrib/tor-control.py as an example script to interact
37405      with the control port.
37406    - "tor --hash-password zzyxz" will output a salted password for
37407      use in authenticating to the control interface.
37408    - New log format in config:
37409      "Log minsev[-maxsev] stdout|stderr|syslog" or
37410      "Log minsev[-maxsev] file /var/foo"
37411
37412  o Minor Features:
37413    - DirPolicy config option, to let people reject incoming addresses
37414      from their dirserver.
37415    - "tor --list-fingerprint" will list your identity key fingerprint
37416      and then exit.
37417    - Add "pass" target for RedirectExit, to make it easier to break
37418      out of a sequence of RedirectExit rules.
37419    - Clients now generate a TLS cert too, in preparation for having
37420      them act more like real nodes.
37421    - Ship src/win32/ in the tarball, so people can use it to build.
37422    - Make old win32 fall back to CWD if SHGetSpecialFolderLocation
37423      is broken.
37424    - New "router-status" line in directory, to better bind each verified
37425      nickname to its identity key.
37426    - Deprecate unofficial config option abbreviations, and abbreviations
37427      not on the command line.
37428    - Add a pure-C tor-resolve implementation.
37429    - Use getrlimit and friends to ensure we can reach MaxConn (currently
37430      1024) file descriptors.
37431
37432  o Code security improvements, inspired by Ilja:
37433    - Replace sprintf with snprintf. (I think they were all safe, but
37434      hey.)
37435    - Replace strcpy/strncpy with strlcpy in more places.
37436    - Avoid strcat; use snprintf or strlcat instead.
37437    - snprintf wrapper with consistent (though not C99) overflow behavior.
37438
37439
37440Changes in version 0.0.9pre4 - 2004-10-17
37441  o Bugfixes on 0.0.9pre3:
37442    - If the server doesn't specify an exit policy, use the real default
37443      exit policy, not reject *:*.
37444    - Ignore fascistfirewall when uploading/downloading hidden service
37445      descriptors, since we go through Tor for those; and when using
37446      an HttpProxy, since we assume it can reach them all.
37447    - When looking for an authoritative dirserver, use only the ones
37448      configured at boot. Don't bother looking in the directory.
37449    - The rest of the fix for get_default_conf_file() on older win32.
37450    - Make 'Routerfile' config option obsolete.
37451
37452  o Features:
37453    - New 'MyFamily nick1,...' config option for a server to
37454      specify other servers that shouldn't be used in the same circuit
37455      with it. Only believed if nick1 also specifies us.
37456    - New 'NodeFamily nick1,nick2,...' config option for a client to
37457      specify nodes that it doesn't want to use in the same circuit.
37458    - New 'Redirectexit pattern address:port' config option for a
37459      server to redirect exit connections, e.g. to a local squid.
37460
37461
37462Changes in version 0.0.9pre3 - 2004-10-13
37463  o Bugfixes on 0.0.8.1:
37464    - Better torrc example lines for dirbindaddress and orbindaddress.
37465    - Improved bounds checking on parsed ints (e.g. config options and
37466      the ones we find in directories.)
37467    - Better handling of size_t vs int, so we're more robust on 64
37468      bit platforms.
37469    - Fix the rest of the bug where a newly started OR would appear
37470      as unverified even after we've added his fingerprint and hupped
37471      the dirserver.
37472    - Fix a bug from 0.0.7: when read() failed on a stream, we would
37473      close it without sending back an end. So 'connection refused'
37474      would simply be ignored and the user would get no response.
37475
37476  o Bugfixes on 0.0.9pre2:
37477    - Serving the cached-on-disk directory to people is bad. We now
37478      provide no directory until we've fetched a fresh one.
37479    - Workaround for bug on windows where cached-directories get crlf
37480      corruption.
37481    - Make get_default_conf_file() work on older windows too.
37482    - If we write a *:* exit policy line in the descriptor, don't write
37483      any more exit policy lines.
37484
37485  o Features:
37486    - Use only 0.0.9pre1 and later servers for resolve cells.
37487    - Make the dirservers file obsolete.
37488      - Include a dir-signing-key token in directories to tell the
37489        parsing entity which key is being used to sign.
37490      - Remove the built-in bulky default dirservers string.
37491      - New config option "Dirserver %s:%d [fingerprint]", which can be
37492        repeated as many times as needed. If no dirservers specified,
37493        default to moria1,moria2,tor26.
37494    - Make moria2 advertise a dirport of 80, so people behind firewalls
37495      will be able to get a directory.
37496    - Http proxy support
37497      - Dirservers translate requests for http://%s:%d/x to /x
37498      - You can specify "HttpProxy %s[:%d]" and all dir fetches will
37499        be routed through this host.
37500      - Clients ask for /tor/x rather than /x for new enough dirservers.
37501        This way we can one day coexist peacefully with apache.
37502      - Clients specify a "Host: %s%d" http header, to be compatible
37503        with more proxies, and so running squid on an exit node can work.
37504
37505
37506Changes in version 0.0.8.1 - 2004-10-13
37507  o Bugfixes:
37508    - Fix a seg fault that can be triggered remotely for Tor
37509      clients/servers with an open dirport.
37510    - Fix a rare assert trigger, where routerinfos for entries in
37511      our cpath would expire while we're building the path.
37512    - Fix a bug in OutboundBindAddress so it (hopefully) works.
37513    - Fix a rare seg fault for people running hidden services on
37514      intermittent connections.
37515    - Fix a bug in parsing opt keywords with objects.
37516    - Fix a stale pointer assert bug when a stream detaches and
37517      reattaches.
37518    - Fix a string format vulnerability (probably not exploitable)
37519      in reporting stats locally.
37520    - Fix an assert trigger: sometimes launching circuits can fail
37521      immediately, e.g. because too many circuits have failed recently.
37522    - Fix a compile warning on 64 bit platforms.
37523
37524
37525Changes in version 0.0.9pre2 - 2004-10-03
37526  o Bugfixes:
37527    - Make fetching a cached directory work for 64-bit platforms too.
37528    - Make zlib.h a required header, not an optional header.
37529
37530
37531Changes in version 0.0.9pre1 - 2004-10-01
37532  o Bugfixes:
37533    - Stop using separate defaults for no-config-file and
37534      empty-config-file. Now you have to explicitly turn off SocksPort,
37535      if you don't want it open.
37536    - Fix a bug in OutboundBindAddress so it (hopefully) works.
37537    - Improve man page to mention more of the 0.0.8 features.
37538    - Fix a rare seg fault for people running hidden services on
37539      intermittent connections.
37540    - Change our file IO stuff (especially wrt OpenSSL) so win32 is
37541      happier.
37542    - Fix more dns related bugs: send back resolve_failed and end cells
37543      more reliably when the resolve fails, rather than closing the
37544      circuit and then trying to send the cell. Also attach dummy resolve
37545      connections to a circuit *before* calling dns_resolve(), to fix
37546      a bug where cached answers would never be sent in RESOLVED cells.
37547    - When we run out of disk space, or other log writing error, don't
37548      crash. Just stop logging to that log and continue.
37549    - We were starting to daemonize before we opened our logs, so if
37550      there were any problems opening logs, we would complain to stderr,
37551      which wouldn't work, and then mysteriously exit.
37552    - Fix a rare bug where sometimes a verified OR would connect to us
37553      before he'd uploaded his descriptor, which would cause us to
37554      assign conn->nickname as though he's unverified. Now we look through
37555      the fingerprint list to see if he's there.
37556    - Fix a rare assert trigger, where routerinfos for entries in
37557      our cpath would expire while we're building the path.
37558
37559  o Features:
37560    - Clients can ask dirservers for /dir.z to get a compressed version
37561      of the directory. Only works for servers running 0.0.9, of course.
37562    - Make clients cache directories and use them to seed their router
37563      lists at startup. This means clients have a datadir again.
37564    - Configuration infrastructure support for warning on obsolete
37565      options.
37566    - Respond to content-encoding headers by trying to uncompress as
37567      appropriate.
37568    - Reply with a deflated directory when a client asks for "dir.z".
37569      We could use allow-encodings instead, but allow-encodings isn't
37570      specified in HTTP 1.0.
37571    - Raise the max dns workers from 50 to 100.
37572    - Discourage people from setting their dirfetchpostperiod more often
37573      than once per minute.
37574    - Protect dirservers from overzealous descriptor uploading -- wait
37575      10 seconds after directory gets dirty, before regenerating.
37576
37577
37578Changes in version 0.0.8 - 2004-08-25
37579  o Port it to SunOS 5.9 / Athena
37580
37581
37582Changes in version 0.0.8rc2 - 2004-08-20
37583  o Make it compile on cygwin again.
37584  o When picking unverified routers, skip those with low uptime and/or
37585    low bandwidth, depending on what properties you care about.
37586
37587
37588Changes in version 0.0.8rc1 - 2004-08-18
37589  o Changes from 0.0.7.3:
37590    - Bugfixes:
37591      - Fix assert triggers: if the other side returns an address 0.0.0.0,
37592        don't put it into the client dns cache.
37593      - If a begin failed due to exit policy, but we believe the IP address
37594        should have been allowed, switch that router to exitpolicy reject *:*
37595        until we get our next directory.
37596    - Features:
37597      - Clients choose nodes proportional to advertised bandwidth.
37598      - Avoid using nodes with low uptime as introduction points.
37599      - Handle servers with dynamic IP addresses: don't replace
37600        options->Address with the resolved one at startup, and
37601        detect our address right before we make a routerinfo each time.
37602      - 'FascistFirewall' option to pick dirservers and ORs on specific
37603        ports; plus 'FirewallPorts' config option to tell FascistFirewall
37604        which ports are open. (Defaults to 80,443)
37605      - Be more aggressive about trying to make circuits when the network
37606        has changed (e.g. when you unsuspend your laptop).
37607      - Check for time skew on http headers; report date in response to
37608        "GET /".
37609      - If the entrynode config line has only one node, don't pick it as
37610        an exitnode.
37611      - Add strict{entry|exit}nodes config options. If set to 1, then
37612        we refuse to build circuits that don't include the specified entry
37613        or exit nodes.
37614      - OutboundBindAddress config option, to bind to a specific
37615        IP address for outgoing connect()s.
37616      - End truncated log entries (e.g. directories) with "[truncated]".
37617
37618  o Patches to 0.0.8preX:
37619    - Bugfixes:
37620      - Patches to compile and run on win32 again (maybe)?
37621      - Fix crash when looking for ~/.torrc with no $HOME set.
37622      - Fix a race bug in the unit tests.
37623      - Handle verified/unverified name collisions better when new
37624        routerinfo's arrive in a directory.
37625      - Sometimes routers were getting entered into the stats before
37626        we'd assigned their identity_digest. Oops.
37627      - Only pick and establish intro points after we've gotten a
37628        directory.
37629    - Features:
37630      - AllowUnverifiedNodes config option to let circuits choose no-name
37631        routers in entry,middle,exit,introduction,rendezvous positions.
37632        Allow middle and rendezvous positions by default.
37633      - Add a man page for tor-resolve.
37634
37635
37636Changes in version 0.0.7.3 - 2004-08-12
37637  o Stop dnsworkers from triggering an assert failure when you
37638    ask them to resolve the host "".
37639
37640
37641Changes in version 0.0.8pre3 - 2004-08-09
37642  o Changes from 0.0.7.2:
37643    - Allow multiple ORs with same nickname in routerlist -- now when
37644      people give us one identity key for a nickname, then later
37645      another, we don't constantly complain until the first expires.
37646    - Remember used bandwidth (both in and out), and publish 15-minute
37647      snapshots for the past day into our descriptor.
37648    - You can now fetch $DIRURL/running-routers to get just the
37649      running-routers line, not the whole descriptor list. (But
37650      clients don't use this yet.)
37651    - When people mistakenly use Tor as an http proxy, point them
37652      at the tor-doc.html rather than the INSTALL.
37653    - Remove our mostly unused -- and broken -- hex_encode()
37654      function. Use base16_encode() instead. (Thanks to Timo Lindfors
37655      for pointing out this bug.)
37656    - Rotate onion keys every 12 hours, not every 2 hours, so we have
37657      fewer problems with people using the wrong key.
37658    - Change the default exit policy to reject the default edonkey,
37659      kazaa, gnutella ports.
37660    - Add replace_file() to util.[ch] to handle win32's rename().
37661
37662  o Changes from 0.0.8preX:
37663    - Fix two bugs in saving onion keys to disk when rotating, so
37664      hopefully we'll get fewer people using old onion keys.
37665    - Fix an assert error that was making SocksPolicy not work.
37666    - Be willing to expire routers that have an open dirport -- it's
37667      just the authoritative dirservers we want to not forget.
37668    - Reject tor-resolve requests for .onion addresses early, so we
37669      don't build a whole rendezvous circuit and then fail.
37670    - When you're warning a server that he's unverified, don't cry
37671      wolf unpredictably.
37672    - Fix a race condition: don't try to extend onto a connection
37673      that's still handshaking.
37674    - For servers in clique mode, require the conn to be open before
37675      you'll choose it for your path.
37676    - Fix some cosmetic bugs about duplicate mark-for-close, lack of
37677      end relay cell, etc.
37678    - Measure bandwidth capacity over the last 24 hours, not just 12
37679    - Bugfix: authoritative dirservers were making and signing a new
37680      directory for each client, rather than reusing the cached one.
37681
37682
37683Changes in version 0.0.8pre2 - 2004-08-04
37684  o Changes from 0.0.7.2:
37685    - Security fixes:
37686      - Check directory signature _before_ you decide whether you're
37687        you're running an obsolete version and should exit.
37688      - Check directory signature _before_ you parse the running-routers
37689        list to decide who's running or verified.
37690    - Bugfixes and features:
37691      - Check return value of fclose while writing to disk, so we don't
37692        end up with broken files when servers run out of disk space.
37693      - Log a warning if the user uses an unsafe socks variant, so people
37694        are more likely to learn about privoxy or socat.
37695      - Dirservers now include RFC1123-style dates in the HTTP headers,
37696        which one day we will use to better detect clock skew.
37697
37698  o Changes from 0.0.8pre1:
37699    - Make it compile without warnings again on win32.
37700    - Log a warning if you're running an unverified server, to let you
37701      know you might want to get it verified.
37702    - Only pick a default nickname if you plan to be a server.
37703
37704
37705Changes in version 0.0.8pre1 - 2004-07-23
37706  o Bugfixes:
37707    - Made our unit tests compile again on OpenBSD 3.5, and tor
37708      itself compile again on OpenBSD on a sparc64.
37709    - We were neglecting milliseconds when logging on win32, so
37710      everything appeared to happen at the beginning of each second.
37711
37712  o Protocol changes:
37713    - 'Extend' relay cell payloads now include the digest of the
37714      intended next hop's identity key. Now we can verify that we're
37715      extending to the right router, and also extend to routers we
37716      hadn't heard of before.
37717
37718  o Features:
37719    - Tor nodes can now act as relays (with an advertised ORPort)
37720      without being manually verified by the dirserver operators.
37721      - Uploaded descriptors of unverified routers are now accepted
37722        by the dirservers, and included in the directory.
37723      - Verified routers are listed by nickname in the running-routers
37724        list; unverified routers are listed as "$<fingerprint>".
37725      - We now use hash-of-identity-key in most places rather than
37726        nickname or addr:port, for improved security/flexibility.
37727      - To avoid Sybil attacks, paths still use only verified servers.
37728        But now we have a chance to play around with hybrid approaches.
37729      - Nodes track bandwidth usage to estimate capacity (not used yet).
37730      - ClientOnly option for nodes that never want to become servers.
37731    - Directory caching.
37732      - "AuthoritativeDir 1" option for the official dirservers.
37733      - Now other nodes (clients and servers) will cache the latest
37734        directory they've pulled down.
37735      - They can enable their DirPort to serve it to others.
37736      - Clients will pull down a directory from any node with an open
37737        DirPort, and check the signature/timestamp correctly.
37738      - Authoritative dirservers now fetch directories from other
37739        authdirservers, to stay better synced.
37740      - Running-routers list tells who's down also, along with noting
37741        if they're verified (listed by nickname) or unverified (listed
37742        by hash-of-key).
37743      - Allow dirservers to serve running-router list separately.
37744        This isn't used yet.
37745    - ORs connect-on-demand to other ORs
37746      - If you get an extend cell to an OR you're not connected to,
37747        connect, handshake, and forward the create cell.
37748      - The authoritative dirservers stay connected to everybody,
37749        and everybody stays connected to 0.0.7 servers, but otherwise
37750        clients/servers expire unused connections after 5 minutes.
37751    - When servers get a sigint, they delay 30 seconds (refusing new
37752      connections) then exit. A second sigint causes immediate exit.
37753    - File and name management:
37754      - Look for .torrc if no CONFDIR "torrc" is found.
37755      - If no datadir is defined, then choose, make, and secure ~/.tor
37756        as datadir.
37757      - If torrc not found, exitpolicy reject *:*.
37758      - Expands ~/ in filenames to $HOME/ (but doesn't yet expand ~arma).
37759      - If no nickname is defined, derive default from hostname.
37760      - Rename secret key files, e.g. identity.key -> secret_id_key,
37761        to discourage people from mailing their identity key to tor-ops.
37762    - Refuse to build a circuit before the directory has arrived --
37763      it won't work anyway, since you won't know the right onion keys
37764      to use.
37765    - Try other dirservers immediately if the one you try is down. This
37766      should tolerate down dirservers better now.
37767    - Parse tor version numbers so we can do an is-newer-than check
37768      rather than an is-in-the-list check.
37769    - New socks command 'resolve', to let us shim gethostbyname()
37770      locally.
37771      - A 'tor_resolve' script to access the socks resolve functionality.
37772      - A new socks-extensions.txt doc file to describe our
37773        interpretation and extensions to the socks protocols.
37774    - Add a ContactInfo option, which gets published in descriptor.
37775    - Publish OR uptime in descriptor (and thus in directory) too.
37776    - Write tor version at the top of each log file
37777    - New docs in the tarball:
37778      - tor-doc.html.
37779      - Document that you should proxy your SSL traffic too.
37780
37781
37782Changes in version 0.0.7.2 - 2004-07-07
37783  o A better fix for the 0.0.0.0 problem, that will hopefully
37784    eliminate the remaining related assertion failures.
37785
37786
37787Changes in version 0.0.7.1 - 2004-07-04
37788  o When an address resolves to 0.0.0.0, treat it as a failed resolve,
37789    since internally we use 0.0.0.0 to signify "not yet resolved".
37790
37791
37792Changes in version 0.0.7 - 2004-06-07
37793  o Updated the man page to reflect the new features.
37794
37795
37796Changes in version 0.0.7rc2 - 2004-06-06
37797  o Changes from 0.0.7rc1:
37798    - Make it build on Win32 again.
37799  o Changes from 0.0.6.2:
37800    - Rotate dnsworkers and cpuworkers on SIGHUP, so they get new config
37801      settings too.
37802
37803
37804Changes in version 0.0.7rc1 - 2004-06-02
37805  o Bugfixes:
37806    - On sighup, we were adding another log without removing the first
37807      one. So log messages would get duplicated n times for n sighups.
37808    - Several cases of using a connection after we'd freed it. The
37809      problem was that connections that are pending resolve are in both
37810      the pending_resolve tree, and also the circuit's resolving_streams
37811      list. When you want to remove one, you must remove it from both.
37812    - Fix a double-mark-for-close where an end cell arrived for a
37813      resolving stream, and then the resolve failed.
37814    - Check directory signatures based on name of signer, not on whom
37815      we got the directory from. This will let us cache directories more
37816      easily.
37817  o Features:
37818    - Crank up some of our constants to handle more users.
37819
37820
37821Changes in version 0.0.7pre1 - 2004-06-02
37822  o Fixes for crashes and other obnoxious bugs:
37823    - Fix an epipe bug: sometimes when directory connections failed
37824      to connect, we would give them a chance to flush before closing
37825      them.
37826    - When we detached from a circuit because of resolvefailed, we
37827      would immediately try the same circuit twice more, and then
37828      give up on the resolve thinking we'd tried three different
37829      exit nodes.
37830    - Limit the number of intro circuits we'll attempt to build for a
37831      hidden service per 15-minute period.
37832    - Check recommended-software string *early*, before actually parsing
37833      the directory. Thus we can detect an obsolete version and exit,
37834      even if the new directory format doesn't parse.
37835  o Fixes for security bugs:
37836    - Remember which nodes are dirservers when you startup, and if a
37837      random OR enables his dirport, don't automatically assume he's
37838      a trusted dirserver.
37839  o Other bugfixes:
37840    - Directory connections were asking the wrong poll socket to
37841      start writing, and not asking themselves to start writing.
37842    - When we detached from a circuit because we sent a begin but
37843      didn't get a connected, we would use it again the first time;
37844      but after that we would correctly switch to a different one.
37845    - Stop warning when the first onion decrypt attempt fails; they
37846      will sometimes legitimately fail now that we rotate keys.
37847    - Override unaligned-access-ok check when $host_cpu is ia64 or
37848      arm. Apparently they allow it but the kernel whines.
37849    - Dirservers try to reconnect periodically too, in case connections
37850      have failed.
37851    - Fix some memory leaks in directory servers.
37852    - Allow backslash in Win32 filenames.
37853    - Made Tor build complain-free on FreeBSD, hopefully without
37854      breaking other BSD builds. We'll see.
37855  o Features:
37856    - Doxygen markup on all functions and global variables.
37857    - Make directory functions update routerlist, not replace it. So
37858      now directory disagreements are not so critical a problem.
37859    - Remove the upper limit on number of descriptors in a dirserver's
37860      directory (not that we were anywhere close).
37861    - Allow multiple logfiles at different severity ranges.
37862    - Allow *BindAddress to specify ":port" rather than setting *Port
37863      separately. Allow multiple instances of each BindAddress config
37864      option, so you can bind to multiple interfaces if you want.
37865    - Allow multiple exit policy lines, which are processed in order.
37866      Now we don't need that huge line with all the commas in it.
37867    - Enable accept/reject policies on SOCKS connections, so you can bind
37868      to 0.0.0.0 but still control who can use your OP.
37869
37870
37871Changes in version 0.0.6.2 - 2004-05-16
37872  o Our integrity-checking digest was checking only the most recent cell,
37873    not the previous cells like we'd thought.
37874    Thanks to Stefan Mark for finding the flaw!
37875
37876
37877Changes in version 0.0.6.1 - 2004-05-06
37878  o Fix two bugs in our AES counter-mode implementation (this affected
37879    onion-level stream encryption, but not TLS-level). It turns
37880    out we were doing something much more akin to a 16-character
37881    polyalphabetic cipher. Oops.
37882    Thanks to Stefan Mark for finding the flaw!
37883  o Retire moria3 as a directory server, and add tor26 as a directory
37884    server.
37885
37886
37887Changes in version 0.0.6 - 2004-05-02
37888  [version bump only]
37889
37890
37891Changes in version 0.0.6rc4 - 2004-05-01
37892  o Update the built-in dirservers list to use the new directory format
37893  o Fix a rare seg fault: if a node offering a hidden service attempts
37894    to build a circuit to Alice's rendezvous point and fails before it
37895    reaches the last hop, it retries with a different circuit, but
37896    then dies.
37897  o Handle windows socket errors correctly.
37898
37899
37900Changes in version 0.0.6rc3 - 2004-04-28
37901  o Don't expire non-general excess circuits (if we had enough
37902    circuits open, we were expiring rendezvous circuits -- even
37903    when they had a stream attached. oops.)
37904  o Fetch randomness from /dev/urandom better (not via fopen/fread)
37905  o Better debugging for tls errors
37906  o Some versions of openssl have an SSL_pending function that erroneously
37907    returns bytes when there is a non-application record pending.
37908  o Set Content-Type on the directory and hidserv descriptor.
37909  o Remove IVs from cipher code, since AES-ctr has none.
37910  o Win32 fixes. Tor now compiles on win32 with no warnings/errors.
37911    o We were using an array of length zero in a few places.
37912    o win32's gethostbyname can't resolve an IP to an IP.
37913    o win32's close can't close a socket.
37914
37915
37916Changes in version 0.0.6rc2 - 2004-04-26
37917  o Fix a bug where we were closing tls connections intermittently.
37918    It turns out openssl keeps its errors around -- so if an error
37919    happens, and you don't ask about it, and then another openssl
37920    operation happens and succeeds, and you ask if there was an error,
37921    it tells you about the first error. Fun fun.
37922  o Fix a bug that's been lurking since 27 may 03 (!)
37923    When passing back a destroy cell, we would use the wrong circ id.
37924    'Mostly harmless', but still worth fixing.
37925  o Since we don't support truncateds much, don't bother sending them;
37926    just close the circ.
37927  o check for <machine/limits.h> so we build on NetBSD again (I hope).
37928  o don't crash if a conn that sent a begin has suddenly lost its circuit
37929    (this was quite rare).
37930
37931
37932Changes in version 0.0.6rc1 - 2004-04-25
37933  o We now rotate link (tls context) keys and onion keys.
37934  o CREATE cells now include oaep padding, so you can tell
37935    if you decrypted them correctly.
37936  o Add bandwidthburst to server descriptor.
37937  o Directories now say which dirserver signed them.
37938  o Use a tor_assert macro that logs failed assertions too.
37939
37940
37941Changes in version 0.0.6pre5 - 2004-04-18
37942  o changes from 0.0.6pre4:
37943    - make tor build on broken freebsd 5.2 installs
37944    - fix a failed assert when you try an intro point, get a nack, and try
37945      a second one and it works.
37946    - when alice uses a port that the hidden service doesn't accept,
37947      it now sends back an end cell (denied by exit policy). otherwise
37948      alice would just have to wait to time out.
37949    - fix another rare bug: when we had tried all the intro
37950      points for a hidden service, we fetched the descriptor
37951      again, but we left our introcirc thinking it had already
37952      sent an intro, so it kept waiting for a response...
37953    - bugfix: when you sleep your hidden-service laptop, as soon
37954      as it wakes up it tries to upload a service descriptor, but
37955      socketpair fails for some reason (localhost not up yet?).
37956      now we simply give up on that upload, and we'll try again later.
37957      i'd still like to find the bug though.
37958    - if an intro circ waiting for an ack dies before getting one, then
37959      count it as a nack
37960    - we were reusing stale service descriptors and refetching usable
37961      ones. oops.
37962
37963
37964Changes in version 0.0.6pre4 - 2004-04-14
37965  o changes from 0.0.6pre3:
37966    - when bob fails to connect to the rendezvous point, and his
37967      circ didn't fail because of the rendezvous point itself, then
37968      he retries a couple of times
37969    - we expire introduction and rendezvous circs more thoroughly
37970      (sometimes they were hanging around forever)
37971    - we expire unattached rendezvous streams that have been around
37972      too long (they were sticking around forever).
37973    - fix a measly fencepost error that was crashing everybody with
37974      a strict glibc.
37975
37976
37977Changes in version 0.0.6pre3 - 2004-04-14
37978  o changes from 0.0.6pre2:
37979    - make hup work again
37980    - fix some memory leaks for dirservers
37981    - allow more skew in rendezvous descriptor timestamps, to help
37982      handle people like blanu who don't know what time it is
37983    - normal circs are 3 hops, but some rend/intro circs are 4, if
37984      the initiator doesn't get to choose the last hop
37985    - send acks for introductions, so alice can know whether to try
37986      again
37987    - bob publishes intro points more correctly
37988  o changes from 0.0.5:
37989    - fix an assert trigger that's been plaguing us since the days
37990      of 0.0.2prexx (thanks weasel!)
37991    - retry stream correctly when we fail to connect because of
37992      exit-policy-reject (should try another) or can't-resolve-address
37993      (also should try another, because dns on random internet servers
37994      is flaky).
37995    - when we hup a dirserver and we've *removed* a server from the
37996      approved-routers list, now we remove that server from the
37997      in-memory directories too
37998
37999
38000Changes in version 0.0.6pre2 - 2004-04-08
38001  o We fixed our base32 implementation. Now it works on all architectures.
38002
38003
38004Changes in version 0.0.6pre1 - 2004-04-08
38005  o Features:
38006    - Hidden services and rendezvous points are implemented. Go to
38007      http://6sxoyfb3h2nvok2d.onion/ for an index of currently available
38008      hidden services. (This only works via a socks4a proxy such as
38009      Privoxy, and currently it's quite slow.)
38010
38011
38012Changes in version 0.0.5 - 2004-03-30
38013  [version bump only]
38014
38015
38016Changes in version 0.0.5rc3 - 2004-03-29
38017  o Install torrc as torrc.sample -- we no longer clobber your
38018    torrc. (Woo!)
38019  o Re-enable recommendedversion checking (we broke it in rc2, oops)
38020  o Add in a 'notice' log level for things the operator should hear
38021    but that aren't warnings
38022
38023
38024Changes in version 0.0.5rc2 - 2004-03-29
38025  o Hold socks connection open until reply is flushed (if possible)
38026  o Make exit nodes resolve IPs to IPs immediately, rather than asking
38027    the dns farm to do it.
38028  o Fix c99 aliasing warnings in rephist.c
38029  o Don't include server descriptors that are older than 24 hours in the
38030    directory.
38031  o Give socks 'reject' replies their whole 15s to attempt to flush,
38032    rather than seeing the 60s timeout and assuming the flush had failed.
38033  o Clean automake droppings from the cvs repository
38034
38035
38036Changes in version 0.0.5rc1 - 2004-03-28
38037  o Fix mangled-state bug in directory fetching (was causing sigpipes).
38038  o Only build circuits after we've fetched the directory: clients were
38039    using only the directory servers before they'd fetched a directory.
38040    This also means longer startup time; so it goes.
38041  o Fix an assert trigger where an OP would fail to handshake, and we'd
38042    expect it to have a nickname.
38043  o Work around a tsocks bug: do a socks reject when AP connection dies
38044    early, else tsocks goes into an infinite loop.
38045
38046
38047Changes in version 0.0.4 - 2004-03-26
38048  o When connecting to a dirserver or OR and the network is down,
38049    we would crash.
38050
38051
38052Changes in version 0.0.3 - 2004-03-26
38053  o Warn and fail if server chose a nickname with illegal characters
38054  o Port to Solaris and Sparc:
38055    - include missing header fcntl.h
38056    - have autoconf find -lsocket -lnsl automatically
38057    - deal with hardware word alignment
38058    - make uname() work (solaris has a different return convention)
38059    - switch from using signal() to sigaction()
38060  o Preliminary work on reputation system:
38061    - Keep statistics on success/fail of connect attempts; they're published
38062      by kill -USR1 currently.
38063    - Add a RunTesting option to try to learn link state by creating test
38064      circuits, even when SocksPort is off.
38065    - Remove unused open circuits when there are too many.
38066
38067
38068Changes in version 0.0.2 - 2004-03-19
38069    - Include strlcpy and strlcat for safer string ops
38070    - define INADDR_NONE so we compile (but still not run) on solaris
38071
38072
38073Changes in version 0.0.2pre27 - 2004-03-14
38074  o Bugfixes:
38075    - Allow internal tor networks (we were rejecting internal IPs,
38076      now we allow them if they're set explicitly).
38077    - And fix a few endian issues.
38078
38079
38080Changes in version 0.0.2pre26 - 2004-03-14
38081  o New features:
38082    - If a stream times out after 15s without a connected cell, don't
38083      try that circuit again: try a new one.
38084    - Retry streams at most 4 times. Then give up.
38085    - When a dirserver gets a descriptor from an unknown router, it
38086      logs its fingerprint (so the dirserver operator can choose to
38087      accept it even without mail from the server operator).
38088    - Inform unapproved servers when we reject their descriptors.
38089    - Make tor build on Windows again. It works as a client, who knows
38090      about as a server.
38091    - Clearer instructions in the torrc for how to set up a server.
38092    - Be more efficient about reading fd's when our global token bucket
38093      (used for rate limiting) becomes empty.
38094  o Bugfixes:
38095    - Stop asserting that computers always go forward in time. It's
38096      simply not true.
38097    - When we sent a cell (e.g. destroy) and then marked an OR connection
38098      expired, we might close it before finishing a flush if the other
38099      side isn't reading right then.
38100    - Don't allow dirservers to start if they haven't defined
38101      RecommendedVersions
38102    - We were caching transient dns failures. Oops.
38103    - Prevent servers from publishing an internal IP as their address.
38104    - Address a strcat vulnerability in circuit.c
38105
38106
38107Changes in version 0.0.2pre25 - 2004-03-04
38108  o New features:
38109    - Put the OR's IP in its router descriptor, not its fqdn. That way
38110      we'll stop being stalled by gethostbyname for nodes with flaky dns,
38111      e.g. poblano.
38112  o Bugfixes:
38113    - If the user typed in an address that didn't resolve, the server
38114      crashed.
38115
38116
38117Changes in version 0.0.2pre24 - 2004-03-03
38118  o Bugfixes:
38119    - Fix an assertion failure in dns.c, where we were trying to dequeue
38120      a pending dns resolve even if it wasn't pending
38121    - Fix a spurious socks5 warning about still trying to write after the
38122      connection is finished.
38123    - Hold certain marked_for_close connections open until they're finished
38124      flushing, rather than losing bytes by closing them too early.
38125    - Correctly report the reason for ending a stream
38126    - Remove some duplicate calls to connection_mark_for_close
38127    - Put switch_id and start_daemon earlier in the boot sequence, so it
38128      will actually try to chdir() to options.DataDirectory
38129    - Make 'make test' exit(1) if a test fails; fix some unit tests
38130    - Make tor fail when you use a config option it doesn't know about,
38131      rather than warn and continue.
38132    - Make --version work
38133    - Bugfixes on the rpm spec file and tor.sh, so it's more up to date
38134
38135
38136Changes in version 0.0.2pre23 - 2004-02-29
38137  o New features:
38138    - Print a statement when the first circ is finished, so the user
38139      knows it's working.
38140    - If a relay cell is unrecognized at the end of the circuit,
38141      send back a destroy. (So attacks to mutate cells are more
38142      clearly thwarted.)
38143    - New config option 'excludenodes' to avoid certain nodes for circuits.
38144    - When it daemonizes, it chdir's to the DataDirectory rather than "/",
38145      so you can collect coredumps there.
38146 o Bugfixes:
38147    - Fix a bug in tls flushing where sometimes data got wedged and
38148      didn't flush until more data got sent. Hopefully this bug was
38149      a big factor in the random delays we were seeing.
38150    - Make 'connected' cells include the resolved IP, so the client
38151      dns cache actually gets populated.
38152    - Disallow changing from ORPort=0 to ORPort>0 on hup.
38153    - When we time-out on a stream and detach from the circuit, send an
38154      end cell down it first.
38155    - Only warn about an unknown router (in exitnodes, entrynodes,
38156      excludenodes) after we've fetched a directory.
38157
38158
38159Changes in version 0.0.2pre22 - 2004-02-26
38160  o New features:
38161    - Servers publish less revealing uname information in descriptors.
38162    - More memory tracking and assertions, to crash more usefully when
38163      errors happen.
38164    - If the default torrc isn't there, just use some default defaults.
38165      Plus provide an internal dirservers file if they don't have one.
38166    - When the user tries to use Tor as an http proxy, give them an http
38167      501 failure explaining that we're a socks proxy.
38168    - Dump a new router.desc on hup, to help confused people who change
38169      their exit policies and then wonder why router.desc doesn't reflect
38170      it.
38171    - Clean up the generic tor.sh init script that we ship with.
38172  o Bugfixes:
38173    - If the exit stream is pending on the resolve, and a destroy arrives,
38174      then the stream wasn't getting removed from the pending list. I
38175      think this was the one causing recent server crashes.
38176    - Use a more robust poll on OSX 10.3, since their poll is flaky.
38177    - When it couldn't resolve any dirservers, it was useless from then on.
38178      Now it reloads the RouterFile (or default dirservers) if it has no
38179      dirservers.
38180    - Move the 'tor' binary back to /usr/local/bin/ -- it turns out
38181      many users don't even *have* a /usr/local/sbin/.
38182
38183
38184Changes in version 0.0.2pre21 - 2004-02-18
38185  o New features:
38186    - There's a ChangeLog file that actually reflects the changelog.
38187    - There's a 'torify' wrapper script, with an accompanying
38188      tor-tsocks.conf, that simplifies the process of using tsocks for
38189      tor. It even has a man page.
38190    - The tor binary gets installed to sbin rather than bin now.
38191    - Retry streams where the connected cell hasn't arrived in 15 seconds
38192    - Clean up exit policy handling -- get the default out of the torrc,
38193      so we can update it without forcing each server operator to fix
38194      his/her torrc.
38195    - Allow imaps and pop3s in default exit policy
38196  o Bugfixes:
38197    - Prevent picking middleman nodes as the last node in the circuit
38198
38199
38200Changes in version 0.0.2pre20 - 2004-01-30
38201  o New features:
38202    - We now have a deb package, and it's in debian unstable. Go to
38203      it, apt-getters. :)
38204    - I've split the TotalBandwidth option into BandwidthRate (how many
38205      bytes per second you want to allow, long-term) and
38206      BandwidthBurst (how many bytes you will allow at once before the cap
38207      kicks in). This better token bucket approach lets you, say, set
38208      BandwidthRate to 10KB/s and BandwidthBurst to 10MB, allowing good
38209      performance while not exceeding your monthly bandwidth quota.
38210    - Push out a tls record's worth of data once you've got it, rather
38211      than waiting until you've read everything waiting to be read. This
38212      may improve performance by pipelining better. We'll see.
38213    - Add an AP_CONN_STATE_CONNECTING state, to allow streams to detach
38214      from failed circuits (if they haven't been connected yet) and attach
38215      to new ones.
38216    - Expire old streams that haven't managed to connect. Some day we'll
38217      have them reattach to new circuits instead.
38218
38219  o Bugfixes:
38220    - Fix several memory leaks that were causing servers to become bloated
38221      after a while.
38222    - Fix a few very rare assert triggers. A few more remain.
38223    - Setuid to User _before_ complaining about running as root.
38224
38225
38226Changes in version 0.0.2pre19 - 2004-01-07
38227  o Bugfixes:
38228    - Fix deadlock condition in dns farm. We were telling a child to die by
38229      closing the parent's file descriptor to him. But newer children were
38230      inheriting the open file descriptor from the parent, and since they
38231      weren't closing it, the socket never closed, so the child never read
38232      eof, so he never knew to exit. Similarly, dns workers were holding
38233      open other sockets, leading to all sorts of chaos.
38234    - New cleaner daemon() code for forking and backgrounding.
38235    - If you log to a file, it now prints an entry at the top of the
38236      logfile so you know it's working.
38237    - The onionskin challenge length was 30 bytes longer than necessary.
38238    - Started to patch up the spec so it's not quite so out of date.
38239
38240
38241Changes in version 0.0.2pre18 - 2004-01-02
38242  o Bugfixes:
38243    - Fix endian issues with the 'integrity' field in the relay header.
38244    - Fix a potential bug where connections in state
38245      AP_CONN_STATE_CIRCUIT_WAIT might unexpectedly ask to write.
38246
38247
38248Changes in version 0.0.2pre17 - 2003-12-30
38249  o Bugfixes:
38250    - Made --debuglogfile (or any second log file, actually) work.
38251    - Resolved an edge case in get_unique_circ_id_by_conn where a smart
38252      adversary could force us into an infinite loop.
38253
38254  o Features:
38255    - Each onionskin handshake now includes a hash of the computed key,
38256      to prove the server's identity and help perfect forward secrecy.
38257    - Changed cell size from 256 to 512 bytes (working toward compatibility
38258      with MorphMix).
38259    - Changed cell length to 2 bytes, and moved it to the relay header.
38260    - Implemented end-to-end integrity checking for the payloads of
38261      relay cells.
38262    - Separated streamid from 'recognized' (otherwise circuits will get
38263      messed up when we try to have streams exit from the middle). We
38264      use the integrity-checking to confirm that a cell is addressed to
38265      this hop.
38266    - Randomize the initial circid and streamid values, so an adversary who
38267      breaks into a node can't learn how many circuits or streams have
38268      been made so far.
38269
38270
38271Changes in version 0.0.2pre16 - 2003-12-14
38272  o Bugfixes:
38273    - Fixed a bug that made HUP trigger an assert
38274    - Fixed a bug where a circuit that immediately failed wasn't being
38275      counted as a failed circuit in counting retries.
38276
38277  o Features:
38278    - Now we close the circuit when we get a truncated cell: otherwise we're
38279      open to an anonymity attack where a bad node in the path truncates
38280      the circuit and then we open streams at him.
38281    - Add port ranges to exit policies
38282    - Add a conservative default exit policy
38283    - Warn if you're running tor as root
38284    - on HUP, retry OR connections and close/rebind listeners
38285    - options.EntryNodes: try these nodes first when picking the first node
38286    - options.ExitNodes: if your best choices happen to include any of
38287      your preferred exit nodes, you choose among just those preferred
38288      exit nodes.
38289    - options.ExcludedNodes: nodes that are never picked in path building
38290
38291
38292Changes in version 0.0.2pre15 - 2003-12-03
38293  o Robustness and bugfixes:
38294    - Sometimes clients would cache incorrect DNS resolves, which would
38295      really screw things up.
38296    - An OP that goes offline would slowly leak all its sockets and stop
38297      working.
38298    - A wide variety of bugfixes in exit node selection, exit policy
38299      handling, and processing pending streams when a new circuit is
38300      established.
38301    - Pick nodes for a path only from those the directory says are up
38302    - Choose randomly from all running dirservers, not always the first one
38303    - Increase allowed http header size for directory fetch.
38304    - Stop writing to stderr (if we're daemonized it will be closed).
38305    - Enable -g always, so cores will be more useful to me.
38306    - Switch "-lcrypto -lssl" to "-lssl -lcrypto" for broken distributions.
38307
38308  o Documentation:
38309    - Wrote a man page. It lists commonly used options.
38310
38311  o Configuration:
38312    - Change default loglevel to warn.
38313    - Make PidFile default to null rather than littering in your CWD.
38314    - OnionRouter config option is now obsolete. Instead it just checks
38315      ORPort>0.
38316    - Moved to a single unified torrc file for both clients and servers.
38317
38318
38319Changes in version 0.0.2pre14 - 2003-11-29
38320  o Robustness and bugfixes:
38321    - Force the admin to make the DataDirectory himself
38322      - to get ownership/permissions right
38323      - so clients no longer make a DataDirectory and then never use it
38324    - fix bug where a client who was offline for 45 minutes would never
38325      pull down a directory again
38326    - fix (or at least hide really well) the dns assert bug that was
38327      causing server crashes
38328    - warnings and improved robustness wrt clockskew for certs
38329    - use the native daemon(3) to daemonize, when available
38330    - exit if bind() fails
38331    - exit if neither socksport nor orport is defined
38332    - include our own tor_timegm (Win32 doesn't have its own)
38333    - bugfix for win32 with lots of connections
38334    - fix minor bias in PRNG
38335    - make dirserver more robust to corrupt cached directory
38336
38337  o Documentation:
38338    - Wrote the design document (woo)
38339
38340  o Circuit building and exit policies:
38341    - Circuits no longer try to use nodes that the directory has told them
38342      are down.
38343    - Exit policies now support bitmasks (18.0.0.0/255.0.0.0) and
38344      bitcounts (18.0.0.0/8).
38345    - Make AP connections standby for a circuit if no suitable circuit
38346      exists, rather than failing
38347    - Circuits choose exit node based on addr/port, exit policies, and
38348      which AP connections are standing by
38349    - Bump min pathlen from 2 to 3
38350    - Relay end cells have a payload to describe why the stream ended.
38351    - If the stream failed because of exit policy, try again with a new
38352      circuit.
38353    - Clients have a dns cache to remember resolved addresses.
38354    - Notice more quickly when we have no working circuits
38355
38356  o Configuration:
38357    - APPort is now called SocksPort
38358    - SocksBindAddress, ORBindAddress, DirBindAddress let you configure
38359      where to bind
38360    - RecommendedVersions is now a config variable rather than
38361      hardcoded (for dirservers)
38362    - Reloads config on HUP
38363    - Usage info on -h or --help
38364    - If you set User and Group config vars, it'll setu/gid to them.
38365
38366
38367Changes in version 0.0.2pre13 - 2003-10-19
38368  o General stability:
38369    - SSL_write no longer fails when it returns WANTWRITE and the number
38370      of bytes in the buf has changed by the next SSL_write call.
38371    - Fix segfault fetching directory when network is down
38372    - Fix a variety of minor memory leaks
38373    - Dirservers reload the fingerprints file on HUP, so I don't have
38374      to take down the network when I approve a new router
38375    - Default server config file has explicit Address line to specify fqdn
38376
38377  o Buffers:
38378    - Buffers grow and shrink as needed (Cut process size from 20M to 2M)
38379    - Make listener connections not ever alloc bufs
38380
38381  o Autoconf improvements:
38382    - don't clobber an external CFLAGS in ./configure
38383    - Make install now works
38384    - create var/lib/tor on make install
38385    - autocreate a tor.sh initscript to help distribs
38386    - autocreate the torrc and sample-server-torrc with correct paths
38387
38388  o Log files and Daemonizing now work:
38389    - If --DebugLogFile is specified, log to it at -l debug
38390    - If --LogFile is specified, use it instead of commandline
38391    - If --RunAsDaemon is set, tor forks and backgrounds on startup
38392