ChangeLog 1.38 MB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
Changes in version 0.3.3.5-rc - 2018-04-15
  Tor 0.3.3.5-rc fixes various bugs in earlier versions of Tor,
  including some that could affect reliability or correctness.

  This is the first release candidate in the 0.3.3 series. If we find no
  new bugs or regression here, then the first stable 0.3.3 release will
  be nearly identical to this one.

  o Major bugfixes (security, protover, voting):
    - Revise Rust implementation of protover to use a more memory-
      efficient voting algorithm and corresponding data structures, thus
      avoiding a potential memory-based DoS attack where specially
      crafted protocol strings would expand to fill available memory.
      Fixes bug 24031; bugfix on 0.3.3.1-alpha.

  o Major bugfixes (performance, load balancing):
    - Directory authorities no longer vote in favor of the Guard flag
      for relays without directory support. Starting in Tor
      0.3.0.1-alpha, clients have been avoiding using such relays in the
      Guard position, leading to increasingly broken load balancing for
      the 5%-or-so of Guards that don't advertise directory support.
      Fixes bug 22310; bugfix on 0.3.0.6.

  o Minor feature (continuous integration):
    - Update the Travis CI configuration to use the stable Rust channel,
      now that we have decided to require that. Closes ticket 25714.

  o Minor features (config options):
    - Change the way the default value for MaxMemInQueues is calculated.
      We now use 40% of the hardware RAM if the system has 8 GB RAM or
      more. Otherwise we use the former value of 75%. Closes
      ticket 24782.

  o Minor features (geoip):
    - Update geoip and geoip6 to the April 3 2018 Maxmind GeoLite2
      Country database. Closes ticket 25718.

  o Minor bugfixes (client):
    - When using a listed relay as a bridge, and also using
      microdescriptors, and considering that relay as a non-bridge in a
      circuit, treat its microdescriptor as a valid source of
      information about that relay. This change should prevent a non-
      fatal assertion error. Fixes bug 25691; bugfix on 0.3.3.4-alpha.

  o Minor bugfixes (controller):
    - Restore the correct operation of the RESOLVE command, which had
      been broken since we added the ability to enable/disable DNS on
      specific listener ports. Fixes bug 25617; bugfix on 0.2.9.3-alpha.

  o Minor bugfixes (distribution, compilation, rust):
    - Build correctly when the rust dependencies submodule is loaded,
      but the TOR_RUST_DEPENDENCIES environment variable is not set.
      Fixes bug 25679; bugfix on 0.3.3.1-alpha.
    - Actually include all of our Rust source in our source
      distributions. (Previously, a few of the files were accidentally
      omitted.) Fixes bug 25732; bugfix on 0.3.3.2-alpha.

  o Minor bugfixes (documentation):
    - Document that the PerConnBW{Rate,Burst} options will fall back to
      their corresponding consensus parameters only if those parameters
      are set. Previously we had claimed that these values would always
      be set in the consensus. Fixes bug 25296; bugfix on 0.2.2.7-alpha.
    - Revert a misformatting issue in the ExitPolicy documentation.
      Fixes bug 25582; bugfix on 0.3.3.1-alpha.

  o Minor bugfixes (exit node DNS retries):
    - Re-attempt timed-out DNS queries 3 times before failure, since our
      timeout is 5 seconds for them, but clients wait 10-15. Also allow
      slightly more timeouts per resolver when an exit has multiple
      resolvers configured. Fixes bug 21394; bugfix on 0.3.1.9.

  o Minor bugfixes (onion services):
    - Re-instate counting the client HSDir fetch circuits against the
      MaxClientCircuitsPending rate limit. Fixes bug 24989; bugfix
      on 0.3.3.1-alpha.
    - Remove underscores from the _HSLayer{2,3}Nodes options. This
      expert-user configuration can now be enabled as HSLayer{2,3}Nodes.
      Fixes bug 25581; bugfix on 0.3.3.1-alpha

  o Code simplification and refactoring:
    - Move the list of default directory authorities to its own file.
      Closes ticket 24854. Patch by "beastr0".

  o Documentation (manpage, denial of service):
    - Provide more detail about the denial-of-service options, by
      listing each mitigation and explaining how they relate. Closes
      ticket 25248.


90
91
92
Changes in version 0.3.3.4-alpha - 2018-03-29
  Tor 0.3.3.4-alpha includes various bugfixes for issues found during
  the alpha testing of earlier releases in its series. We are
Roger Dingledine's avatar
Roger Dingledine committed
93
  approaching a stable 0.3.3 release: more testing is welcome!
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184

  o New system requirements:
    - When built with Rust, Tor now depends on version 0.2.39 of the
      libc crate. Closes tickets 25310 and 25664.

  o Major bugfixes (relay, connection):
    - If we have failed to connect to a relay and received a connection
      refused, timeout, or similar error (at the TCP level), do not try
      that same address/port again for 60 seconds after the failure has
      occurred. Fixes bug 24767; bugfix on 0.0.6.

  o Minor features (geoip):
    - Update geoip and geoip6 to the March 8 2018 Maxmind GeoLite2
      Country database. Closes ticket 25469.

  o Minor features (log messages):
    - Improve log message in the out-of-memory handler to include
      information about memory usage from the different compression
      backends. Closes ticket 25372.

  o Minor features (sandbox):
    - Explicitly permit the poll() system call when the Linux
      seccomp2-based sandbox is enabled: apparently, some versions of
      libc use poll() when calling getpwnam(). Closes ticket 25313.

  o Minor bugfixes (C correctness):
    - Fix a very unlikely (impossible, we believe) null pointer
      dereference. Fixes bug 25629; bugfix on 0.2.9.15. Found by
      Coverity; this is CID 1430932.

  o Minor bugfixes (channel, client):
    - Better identify client connection when reporting to the geoip
      client cache. Fixes bug 24904; bugfix on 0.3.1.7.

  o Minor bugfixes (compilation):
    - Fix a C99 compliance issue in our configuration script that caused
      compilation issues when compiling Tor with certain versions of
      xtools. Fixes bug 25474; bugfix on 0.3.2.5-alpha.

  o Minor bugfixes (controller, reliability):
    - Avoid a (nonfatal) assertion failure when extending a one-hop
      circuit from the controller to become a multihop circuit. Fixes
      bug 24903; bugfix on 0.2.5.2-alpha.

  o Minor bugfixes (networking):
    - Tor will no longer reject IPv6 address strings from TorBrowser
      when they are passed as hostnames in SOCKS5 requests. Fixes bug
      25036, bugfix on Tor 0.3.1.2.
    - string_is_valid_hostname() will not consider IP strings to be
      valid hostnames. Fixes bug 25055; bugfix on Tor 0.2.5.5.

  o Minor bugfixes (onion service v3):
    - Avoid an assertion failure when the next the next onion service
      descriptor rotation type is out of sync with the consensus's
      valid-after time. Instead, log a warning message with extra
      information, so we can better hunt down the cause of this
      assertion. Fixes bug 25306; bugfix on 0.3.2.1-alpha.

  o Minor bugfixes (testing):
    - Avoid intermittent test failures due to a test that had relied on
      onion service introduction point creation finishing within 5
      seconds of real clock time. Fixes bug 25450; bugfix
      on 0.3.1.3-alpha.
    - Rust crates are now automatically detected and tested. Previously,
      some crates were not tested by `make test-rust` due to a static
      string in the `src/test/test_rust.sh` script specifying which
      crates to test. Fixes bug 25560; bugfix on 0.3.3.3-alpha.

  o Minor bugfixes (testing, benchmarks):
    - Fix a crash when running benchmark tests on win32 systems. The
      crash was due to a mutex that wasn't initialized before logging
      and options were initialized. Fixes bug 25479; bugfix
      on 0.3.3.3-alpha.

  o Minor bugfixes (warnings, ipv6):
    - Avoid a bug warning that could occur when trying to connect to a
      relay over IPv6. This warning would occur on a Tor instance that
      downloads router descriptors, but prefers to use microdescriptors.
      Fixes bug 25213; bugfix on 0.3.3.1-alpha.

  o Code simplification and refactoring:
    - Remove the old (deterministic) directory retry logic entirely:
      We've used exponential backoff exclusively for some time. Closes
      ticket 23814.

  o Documentation:
    - Improved the documentation of AccountingStart parameter. Closes
      ticket 23635.
    - Update the documentation for "Log" to include the current list of
      logging domains. Closes ticket 25378.

185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851

Changes in version 0.3.3.3-alpha - 2018-03-03
  Tor 0.3.3.3-alpha is the third alpha release for the 0.3.3.x series.
  It includes an important security fix for a remote crash attack
  against directory authorities tracked as TROVE-2018-001.

  Additionally, with this release, we are upgrading the severity of a
  bug fixed in 0.3.3.2-alpha.  Bug 24700, which was fixed in
  0.3.3.2-alpha, can be remotely triggered in order to crash relays with
  a use-after-free pattern. As such, we are now tracking that bug as
  TROVE-2018-002 and CVE-2018-0491. This bug affected versions
  0.3.2.1-alpha through 0.3.2.9, as well as 0.3.3.1-alpha.

  This release also fixes several minor bugs and annoyances from
  earlier releases.

  Relays running 0.3.2.x should upgrade to one of the versions released
  today, for the fix to TROVE-2018-002.  Directory authorities should
  also upgrade. (Relays on earlier versions might want to update too for
  the DoS mitigations.)

  o Major bugfixes (denial-of-service, directory authority):
    - Fix a protocol-list handling bug that could be used to remotely crash
      directory authorities with a null-pointer exception. Fixes bug 25074;
      bugfix on 0.2.9.4-alpha. Also tracked as TROVE-2018-001 and
      CVE-2018-0490.

  o Minor features (compatibility, OpenSSL):
    - Tor will now support TLS1.3 once OpenSSL 1.1.1 is released.
      Previous versions of Tor would not have worked with OpenSSL 1.1.1,
      since they neither disabled TLS 1.3 nor enabled any of the
      ciphersuites it requires. Now we enable the TLS 1.3 ciphersuites.
      Closes ticket 24978.

  o Minor features (logging):
    - Clarify the log messages produced when getrandom() or a related
      entropy-generation mechanism gives an error. Closes ticket 25120.

  o Minor features (testing):
    - Add a "make test-rust" target to run the rust tests only. Closes
      ticket 25071.

  o Minor bugfixes (denial-of-service):
    - Fix a possible crash on malformed consensus. If a consensus had
      contained an unparseable protocol line, it could have made clients
      and relays crash with a null-pointer exception. To exploit this
      issue, however, an attacker would need to be able to subvert the
      directory authority system. Fixes bug 25251; bugfix on
      0.2.9.4-alpha. Also tracked as TROVE-2018-004.

  o Minor bugfixes (DoS mitigation):
    - Add extra safety checks when refilling the circuit creation bucket
      to ensure we never set a value above the allowed maximum burst.
      Fixes bug 25202; bugfix on 0.3.3.2-alpha.
    - When a new consensus arrives, don't update our DoS-mitigation
      parameters if we aren't a public relay. Fixes bug 25223; bugfix
      on 0.3.3.2-alpha.

  o Minor bugfixes (man page, SocksPort):
    - Remove dead code from the old "SocksSocket" option, and rename
      SocksSocketsGroupWritable to UnixSocksGroupWritable. The old option
      still works, but is deprecated. Fixes bug 24343; bugfix on 0.2.6.3.

  o Minor bugfixes (performance):
    - Reduce the number of circuits that will be opened at once during
      the circuit build timeout phase. This is done by increasing the
      idle timeout to 3 minutes, and lowering the maximum number of
      concurrent learning circuits to 10. Fixes bug 24769; bugfix
      on 0.3.1.1-alpha.

  o Minor bugfixes (spec conformance):
    - Forbid "-0" as a protocol version. Fixes part of bug 25249; bugfix on
      0.2.9.4-alpha.
    - Forbid UINT32_MAX as a protocol version.  Fixes part of bug 25249;
      bugfix on 0.2.9.4-alpha.

  o Minor bugfixes (spec conformance, rust):
    - Resolve a denial-of-service issue caused by an infinite loop in
      the rust protover code. Fixes bug 25250, bugfix on 0.3.3.1-alpha.
      Also tracked as TROVE-2018-003.

  o Code simplification and refactoring:
    - Update the "rust dependencies" submodule to be a project-level
      repository, rather than a user repository. Closes ticket 25323.


Changes in version 0.3.2.10 - 2018-03-03
  Tor 0.3.2.10 is the second stable release in the 0.3.2 series. It
  backports a number of bugfixes, including important fixes for security
  issues.

  It includes an important security fix for a remote crash attack
  against directory authorities, tracked as TROVE-2018-001.

  Additionally, it backports a fix for a bug whose severity we have
  upgraded: Bug 24700, which was fixed in 0.3.3.2-alpha, can be remotely
  triggered in order to crash relays with a use-after-free pattern. As
  such, we are now tracking that bug as TROVE-2018-002 and
  CVE-2018-0491, and backporting it to earlier releases.  This bug
  affected versions 0.3.2.1-alpha through 0.3.2.9, as well as version
  0.3.3.1-alpha.

  This release also backports our new system for improved resistance to
  denial-of-service attacks against relays.

  This release also fixes several minor bugs and annoyances from
  earlier releases.

  Relays running 0.3.2.x SHOULD upgrade to one of the versions released
  today, for the fix to TROVE-2018-002.  Directory authorities should
  also upgrade. (Relays on earlier versions might want to update too for
  the DoS mitigations.)

  o Major bugfixes (denial-of-service, directory authority, backport from 0.3.3.3-alpha):
    - Fix a protocol-list handling bug that could be used to remotely crash
      directory authorities with a null-pointer exception. Fixes bug 25074;
      bugfix on 0.2.9.4-alpha. Also tracked as TROVE-2018-001 and
      CVE-2018-0490.

  o Major bugfixes (scheduler, KIST, denial-of-service, backport from 0.3.3.2-alpha):
    - Avoid adding the same channel twice in the KIST scheduler pending
      list, which could lead to remote denial-of-service use-after-free
      attacks against relays. Fixes bug 24700; bugfix on 0.3.2.1-alpha.

  o Major features (denial-of-service mitigation, backport from 0.3.3.2-alpha):
    - Give relays some defenses against the recent network overload. We
      start with three defenses (default parameters in parentheses).
      First: if a single client address makes too many concurrent
      connections (>100), hang up on further connections. Second: if a
      single client address makes circuits too quickly (more than 3 per
      second, with an allowed burst of 90) while also having too many
      connections open (3), refuse new create cells for the next while
      (1-2 hours). Third: if a client asks to establish a rendezvous
      point to you directly, ignore the request. These defenses can be
      manually controlled by new torrc options, but relays will also
      take guidance from consensus parameters, so there's no need to
      configure anything manually. Implements ticket 24902.

  o Major bugfixes (onion services, retry behavior, backport from 0.3.3.1-alpha):
    - Fix an "off by 2" error in counting rendezvous failures on the
      onion service side. While we thought we would stop the rendezvous
      attempt after one failed circuit, we were actually making three
      circuit attempts before giving up. Now switch to a default of 2,
      and allow the consensus parameter "hs_service_max_rdv_failures" to
      override. Fixes bug 24895; bugfix on 0.0.6.
    - New-style (v3) onion services now obey the "max rendezvous circuit
      attempts" logic. Previously they would make as many rendezvous
      circuit attempts as they could fit in the MAX_REND_TIMEOUT second
      window before giving up. Fixes bug 24894; bugfix on 0.3.2.1-alpha.

  o Major bugfixes (protocol versions, backport from 0.3.3.2-alpha):
    - Add Link protocol version 5 to the supported protocols list. Fixes
      bug 25070; bugfix on 0.3.1.1-alpha.

  o Major bugfixes (relay, backport from 0.3.3.1-alpha):
    - Fix a set of false positives where relays would consider
      connections to other relays as being client-only connections (and
      thus e.g. deserving different link padding schemes) if those
      relays fell out of the consensus briefly. Now we look only at the
      initial handshake and whether the connection authenticated as a
      relay. Fixes bug 24898; bugfix on 0.3.1.1-alpha.

  o Major bugfixes (scheduler, consensus, backport from 0.3.3.2-alpha):
    - The scheduler subsystem was failing to promptly notice changes in
      consensus parameters, making it harder to switch schedulers
      network-wide. Fixes bug 24975; bugfix on 0.3.2.1-alpha.

  o Minor features (denial-of-service avoidance, backport from 0.3.3.2-alpha):
    - Make our OOM handler aware of the geoip client history cache so it
      doesn't fill up the memory. This check is important for IPv6 and
      our DoS mitigation subsystem. Closes ticket 25122.

  o Minor features (compatibility, OpenSSL, backport from 0.3.3.3-alpha):
    - Tor will now support TLS1.3 once OpenSSL 1.1.1 is released.
      Previous versions of Tor would not have worked with OpenSSL 1.1.1,
      since they neither disabled TLS 1.3 nor enabled any of the
      ciphersuites it requires. Now we enable the TLS 1.3 ciphersuites.
      Closes ticket 24978.

  o Minor features (geoip):
    - Update geoip and geoip6 to the February 7 2018 Maxmind GeoLite2
      Country database.

  o Minor features (logging, diagnostic, backport from 0.3.3.2-alpha):
    - When logging a failure to check a hidden service's certificate,
      also log what the problem with the certificate was. Diagnostic
      for ticket 24972.

  o Minor bugfix (channel connection, backport from 0.3.3.2-alpha):
    - Use the actual observed address of an incoming relay connection,
      not the canonical address of the relay from its descriptor, when
      making decisions about how to handle the incoming connection.
      Fixes bug 24952; bugfix on 0.2.4.11-alpha. Patch by "ffmancera".

  o Minor bugfixes (denial-of-service, backport from 0.3.3.3-alpha):
    - Fix a possible crash on malformed consensus. If a consensus had
      contained an unparseable protocol line, it could have made clients
      and relays crash with a null-pointer exception. To exploit this
      issue, however, an attacker would need to be able to subvert the
      directory authority system. Fixes bug 25251; bugfix on
      0.2.9.4-alpha. Also tracked as TROVE-2018-004.

  o Minor bugfix (directory authority, backport from 0.3.3.2-alpha):
    - Directory authorities, when refusing a descriptor from a rejected
      relay, now explicitly tell the relay (in its logs) to set a valid
      ContactInfo address and contact the bad-relays@ mailing list.
      Fixes bug 25170; bugfix on 0.2.9.1.

  o Minor bugfixes (build, rust, backport from 0.3.3.1-alpha):
    - When building with Rust on OSX, link against libresolv, to work
      around the issue at https://github.com/rust-lang/rust/issues/46797.
      Fixes bug 24652; bugfix on 0.3.1.1-alpha.

  o Minor bugfixes (onion services, backport from 0.3.3.2-alpha):
    - Remove a BUG() statement when a client fetches an onion descriptor
      that has a lower revision counter than the one in its cache. This
      can happen in normal circumstances due to HSDir desync. Fixes bug
      24976; bugfix on 0.3.2.1-alpha.

  o Minor bugfixes (logging, backport from 0.3.3.2-alpha):
    - Don't treat inability to store a cached consensus object as a bug:
      it can happen normally when we are out of disk space. Fixes bug
      24859; bugfix on 0.3.1.1-alpha.

  o Minor bugfixes (performance, fragile-hardening, backport from 0.3.3.1-alpha):
    - Improve the performance of our consensus-diff application code
      when Tor is built with the --enable-fragile-hardening option set.
      Fixes bug 24826; bugfix on 0.3.1.1-alpha.

  o Minor bugfixes (OSX, backport from 0.3.3.1-alpha):
    - Don't exit the Tor process if setrlimit() fails to change the file
      limit (which can happen sometimes on some versions of OSX). Fixes
      bug 21074; bugfix on 0.0.9pre5.

  o Minor bugfixes (spec conformance, backport from 0.3.3.3-alpha):
    - Forbid "-0" as a protocol version. Fixes part of bug 25249; bugfix on
      0.2.9.4-alpha.
    - Forbid UINT32_MAX as a protocol version.  Fixes part of bug 25249;
      bugfix on 0.2.9.4-alpha.

  o Minor bugfixes (testing, backport from 0.3.3.1-alpha):
    - Fix a memory leak in the scheduler/loop_kist unit test. Fixes bug
      25005; bugfix on 0.3.2.7-rc.

  o Minor bugfixes (v3 onion services, backport from 0.3.3.2-alpha):
    - Look at the "HSRend" protocol version, not the "HSDir" protocol
      version, when deciding whether a consensus entry can support the
      v3 onion service protocol as a rendezvous point. Fixes bug 25105;
      bugfix on 0.3.2.1-alpha.

  o Code simplification and refactoring (backport from 0.3.3.3-alpha):
    - Update the "rust dependencies" submodule to be a project-level
      repository, rather than a user repository. Closes ticket 25323.

  o Documentation (backport from 0.3.3.1-alpha)
    - Document that operators who run more than one relay or bridge are
      expected to set MyFamily and ContactInfo correctly. Closes
      ticket 24526.


Changes in version 0.3.1.10 - 2018-03-03
  Tor 0.3.1.10 backports a number of bugfixes, including important fixes for
  security issues.

  It includes an important security fix for a remote crash attack
  against directory authorities, tracked as TROVE-2018-001.

  This release also backports our new system for improved resistance to
  denial-of-service attacks against relays.

  This release also fixes several minor bugs and annoyances from
  earlier releases.

  All directory authorities should upgrade to one of the versions
  released today.  Relays running 0.3.1.x may wish to update to one of
  the versions released today, for the DoS mitigations.

  Please note: according to our release calendar, Tor 0.3.1 will no
  longer be supported after 1 July 2018.  If you will be running Tor
  after that date, you should make sure to plan to upgrade to the latest
  stable version, or downgrade to 0.2.9 (which will receive long-term
  support).

  o Major bugfixes (denial-of-service, directory authority, backport from 0.3.3.3-alpha):
    - Fix a protocol-list handling bug that could be used to remotely crash
      directory authorities with a null-pointer exception. Fixes bug 25074;
      bugfix on 0.2.9.4-alpha. Also tracked as TROVE-2018-001 and
      CVE-2018-0490.

  o Major features (denial-of-service mitigation, backport from 0.3.3.2-alpha):
    - Give relays some defenses against the recent network overload. We
      start with three defenses (default parameters in parentheses).
      First: if a single client address makes too many concurrent
      connections (>100), hang up on further connections. Second: if a
      single client address makes circuits too quickly (more than 3 per
      second, with an allowed burst of 90) while also having too many
      connections open (3), refuse new create cells for the next while
      (1-2 hours). Third: if a client asks to establish a rendezvous
      point to you directly, ignore the request. These defenses can be
      manually controlled by new torrc options, but relays will also
      take guidance from consensus parameters, so there's no need to
      configure anything manually. Implements ticket 24902.

  o Minor features (linux seccomp2 sandbox, backport from 0.3.2.5-alpha):
    - Update the sandbox rules so that they should now work correctly
      with Glibc 2.26. Closes ticket 24315.

  o Major bugfixes (onion services, retry behavior, backport from 0.3.3.1-alpha):
    - Fix an "off by 2" error in counting rendezvous failures on the
      onion service side. While we thought we would stop the rendezvous
      attempt after one failed circuit, we were actually making three
      circuit attempts before giving up. Now switch to a default of 2,
      and allow the consensus parameter "hs_service_max_rdv_failures" to
      override. Fixes bug 24895; bugfix on 0.0.6.

  o Major bugfixes (protocol versions, backport from 0.3.3.2-alpha):
    - Add Link protocol version 5 to the supported protocols list. Fixes
      bug 25070; bugfix on 0.3.1.1-alpha.

  o Major bugfixes (relay, backport from 0.3.3.1-alpha):
    - Fix a set of false positives where relays would consider
      connections to other relays as being client-only connections (and
      thus e.g. deserving different link padding schemes) if those
      relays fell out of the consensus briefly. Now we look only at the
      initial handshake and whether the connection authenticated as a
      relay. Fixes bug 24898; bugfix on 0.3.1.1-alpha.

  o Minor features (denial-of-service avoidance, backport from 0.3.3.2-alpha):
    - Make our OOM handler aware of the geoip client history cache so it
      doesn't fill up the memory. This check is important for IPv6 and
      our DoS mitigation subsystem. Closes ticket 25122.

  o Minor feature (relay statistics, backport from 0.3.2.6-alpha):
    - Change relay bandwidth reporting stats interval from 4 hours to 24
      hours in order to reduce the efficiency of guard discovery
      attacks. Fixes ticket 23856.

  o Minor features (compatibility, OpenSSL, backport from 0.3.3.3-alpha):
    - Tor will now support TLS1.3 once OpenSSL 1.1.1 is released.
      Previous versions of Tor would not have worked with OpenSSL 1.1.1,
      since they neither disabled TLS 1.3 nor enabled any of the
      ciphersuites it requires. Now we enable the TLS 1.3 ciphersuites.
      Closes ticket 24978.

  o Minor features (fallback directory mirrors, backport from 0.3.2.9):
    - The fallback directory list has been re-generated based on the
      current status of the network. Tor uses fallback directories to
      bootstrap when it doesn't yet have up-to-date directory
      information. Closes ticket 24801.
    - Make the default DirAuthorityFallbackRate 0.1, so that clients
      prefer to bootstrap from fallback directory mirrors. This is a
      follow-up to 24679, which removed weights from the default
      fallbacks. Implements ticket 24681.

  o Minor features (geoip):
    - Update geoip and geoip6 to the February 7 2018 Maxmind GeoLite2
      Country database.

  o Minor bugfix (channel connection, backport from 0.3.3.2-alpha):
    - Use the actual observed address of an incoming relay connection,
      not the canonical address of the relay from its descriptor, when
      making decisions about how to handle the incoming connection.
      Fixes bug 24952; bugfix on 0.2.4.11-alpha. Patch by "ffmancera".

  o Minor bugfix (directory authority, backport from 0.3.3.2-alpha):
    - Directory authorities, when refusing a descriptor from a rejected
      relay, now explicitly tell the relay (in its logs) to set a valid
      ContactInfo address and contact the bad-relays@ mailing list.
      Fixes bug 25170; bugfix on 0.2.9.1.

  o Minor bugfixes (address selection, backport from 0.3.2.9):
    - When the fascist_firewall_choose_address_ functions don't find a
      reachable address, set the returned address to the null address
      and port. This is a precautionary measure, because some callers do
      not check the return value. Fixes bug 24736; bugfix
      on 0.2.8.2-alpha.

  o Major bugfixes (bootstrapping, backport from 0.3.2.5-alpha):
    - Fetch descriptors aggressively whenever we lack enough to build
      circuits, regardless of how many descriptors we are missing.
      Previously, we would delay launching the fetch when we had fewer
      than 15 missing descriptors, even if some of those descriptors
      were blocking circuits from building. Fixes bug 23985; bugfix on
      0.1.1.11-alpha. The effects of this bug became worse in
      0.3.0.3-alpha, when we began treating missing descriptors from our
      primary guards as a reason to delay circuits.
    - Don't try fetching microdescriptors from relays that have failed
      to deliver them in the past. Fixes bug 23817; bugfix
      on 0.3.0.1-alpha.

  o Minor bugfixes (compilation, backport from 0.3.2.7-rc):
    - Fix a signed/unsigned comparison warning introduced by our fix to
      TROVE-2017-009. Fixes bug 24480; bugfix on 0.2.5.16.

  o Minor bugfixes (control port, linux seccomp2 sandbox, backport from 0.3.2.5-alpha):
    - Avoid a crash when attempting to use the seccomp2 sandbox together
      with the OwningControllerProcess feature. Fixes bug 24198; bugfix
      on 0.2.5.1-alpha.

  o Minor bugfixes (denial-of-service, backport from 0.3.3.3-alpha):
    - Fix a possible crash on malformed consensus. If a consensus had
      contained an unparseable protocol line, it could have made clients
      and relays crash with a null-pointer exception. To exploit this
      issue, however, an attacker would need to be able to subvert the
      directory authority system. Fixes bug 25251; bugfix on
      0.2.9.4-alpha. Also tracked as TROVE-2018-004.

  o Minor bugfixes (directory cache, backport from 0.3.2.5-alpha):
    - Recover better from empty or corrupt files in the consensus cache
      directory. Fixes bug 24099; bugfix on 0.3.1.1-alpha.
    - When a consensus diff calculation is only partially successful,
      only record the successful parts as having succeeded. Partial
      success can happen if (for example) one compression method fails
      but the others succeed. Previously we misrecorded all the
      calculations as having succeeded, which would later cause a
      nonfatal assertion failure. Fixes bug 24086; bugfix
      on 0.3.1.1-alpha.

  o Minor bugfixes (entry guards, backport from 0.3.2.3-alpha):
    - Tor now updates its guard state when it reads a consensus
      regardless of whether it's missing descriptors. That makes tor use
      its primary guards to fetch descriptors in some edge cases where
      it would previously have used fallback directories. Fixes bug
      23862; bugfix on 0.3.0.1-alpha.

  o Minor bugfixes (logging, backport from 0.3.3.2-alpha):
    - Don't treat inability to store a cached consensus object as a bug:
      it can happen normally when we are out of disk space. Fixes bug
      24859; bugfix on 0.3.1.1-alpha.

  o Minor bugfixes (memory usage, backport from 0.3.2.8-rc):
    - When queuing DESTROY cells on a channel, only queue the circuit-id
      and reason fields: not the entire 514-byte cell. This fix should
      help mitigate any bugs or attacks that fill up these queues, and
      free more RAM for other uses. Fixes bug 24666; bugfix
      on 0.2.5.1-alpha.

  o Minor bugfixes (network layer, backport from 0.3.2.5-alpha):
    - When closing a connection via close_connection_immediately(), we
      mark it as "not blocked on bandwidth", to prevent later calls from
      trying to unblock it, and give it permission to read. This fixes a
      backtrace warning that can happen on relays under various
      circumstances. Fixes bug 24167; bugfix on 0.1.0.1-rc.

  o Minor bugfixes (path selection, backport from 0.3.2.4-alpha):
    - When selecting relays by bandwidth, avoid a rounding error that
      could sometimes cause load to be imbalanced incorrectly.
      Previously, we would always round upwards; now, we round towards
      the nearest integer. This had the biggest effect when a relay's
      weight adjustments should have given it weight 0, but it got
      weight 1 instead. Fixes bug 23318; bugfix on 0.2.4.3-alpha.
    - When calculating the fraction of nodes that have descriptors, and
      all nodes in the network have zero bandwidths, count the number of
      nodes instead. Fixes bug 23318; bugfix on 0.2.4.10-alpha.
    - Actually log the total bandwidth in compute_weighted_bandwidths().
      Fixes bug 24170; bugfix on 0.2.4.3-alpha.

  o Minor bugfixes (performance, fragile-hardening, backport from 0.3.3.1-alpha):
    - Improve the performance of our consensus-diff application code
      when Tor is built with the --enable-fragile-hardening option set.
      Fixes bug 24826; bugfix on 0.3.1.1-alpha.

  o Minor bugfixes (OSX, backport from 0.3.3.1-alpha):
    - Don't exit the Tor process if setrlimit() fails to change the file
      limit (which can happen sometimes on some versions of OSX). Fixes
      bug 21074; bugfix on 0.0.9pre5.

  o Minor bugfixes (portability, msvc, backport from 0.3.2.9):
    - Fix a bug in the bit-counting parts of our timing-wheel code on
      MSVC. (Note that MSVC is still not a supported build platform, due
      to cyptographic timing channel risks.) Fixes bug 24633; bugfix
      on 0.2.9.1-alpha.

  o Minor bugfixes (relay, partial backport):
    - Make the internal channel_is_client() function look at what sort
      of connection handshake the other side used, rather than whether
      the other side ever sent a create_fast cell to us. Backports part
      of the fixes from bugs 22805 and 24898.

  o Minor bugfixes (spec conformance, backport from 0.3.3.3-alpha):
    - Forbid "-0" as a protocol version. Fixes part of bug 25249; bugfix on
      0.2.9.4-alpha.
    - Forbid UINT32_MAX as a protocol version.  Fixes part of bug 25249;
      bugfix on 0.2.9.4-alpha.

  o Code simplification and refactoring (backport from 0.3.3.3-alpha):
    - Update the "rust dependencies" submodule to be a project-level
      repository, rather than a user repository. Closes ticket 25323.


Changes in version 0.2.9.15 - 2018-03-03
  Tor 0.2.9.15 backports important security and stability bugfixes from
  later Tor releases.

  It includes an important security fix for a remote crash attack
  against directory authorities, tracked as TROVE-2018-001.

  This release also backports our new system for improved resistance to
  denial-of-service attacks against relays.

  This release also fixes several minor bugs and annoyances from
  earlier releases.

  All directory authorities should upgrade to one of the versions
  released today.  Relays running 0.2.9.x may wish to update to one of
  the versions released today, for the DoS mitigations.

  o Major bugfixes (denial-of-service, directory authority, backport from 0.3.3.3-alpha):
    - Fix a protocol-list handling bug that could be used to remotely crash
      directory authorities with a null-pointer exception. Fixes bug 25074;
      bugfix on 0.2.9.4-alpha. Also tracked as TROVE-2018-001 and
      CVE-2018-0490.

  o Major features (denial-of-service mitigation):
    - Give relays some defenses against the recent network overload. We
      start with three defenses (default parameters in parentheses).
      First: if a single client address makes too many concurrent
      connections (>100), hang up on further connections. Second: if a
      single client address makes circuits too quickly (more than 3 per
      second, with an allowed burst of 90) while also having too many
      connections open (3), refuse new create cells for the next while
      (1-2 hours). Third: if a client asks to establish a rendezvous
      point to you directly, ignore the request. These defenses can be
      manually controlled by new torrc options, but relays will also
      take guidance from consensus parameters, so there's no need to
      configure anything manually. Implements ticket 24902.

  o Major bugfixes (bootstrapping):
    - Fetch descriptors aggressively whenever we lack enough to build
      circuits, regardless of how many descriptors we are missing.
      Previously, we would delay launching the fetch when we had fewer
      than 15 missing descriptors, even if some of those descriptors
      were blocking circuits from building. Fixes bug 23985; bugfix on
      0.1.1.11-alpha. The effects of this bug became worse in
      0.3.0.3-alpha, when we began treating missing descriptors from our
      primary guards as a reason to delay circuits.

  o Major bugfixes (onion services, retry behavior):
    - Fix an "off by 2" error in counting rendezvous failures on the
      onion service side. While we thought we would stop the rendezvous
      attempt after one failed circuit, we were actually making three
      circuit attempts before giving up. Now switch to a default of 2,
      and allow the consensus parameter "hs_service_max_rdv_failures" to
      override. Fixes bug 24895; bugfix on 0.0.6.

  o Minor feature (relay statistics):
    - Change relay bandwidth reporting stats interval from 4 hours to 24
      hours in order to reduce the efficiency of guard discovery
      attacks. Fixes ticket 23856.

  o Minor features (compatibility, OpenSSL):
    - Tor will now support TLS1.3 once OpenSSL 1.1.1 is released.
      Previous versions of Tor would not have worked with OpenSSL 1.1.1,
      since they neither disabled TLS 1.3 nor enabled any of the
      ciphersuites it requires. Now we enable the TLS 1.3 ciphersuites.
      Closes ticket 24978.

  o Minor features (denial-of-service avoidance):
    - Make our OOM handler aware of the geoip client history cache so it
      doesn't fill up the memory. This check is important for IPv6 and
      our DoS mitigation subsystem. Closes ticket 25122.

  o Minor features (fallback directory mirrors):
    - The fallback directory list has been re-generated based on the
      current status of the network. Tor uses fallback directories to
      bootstrap when it doesn't yet have up-to-date directory
      information. Closes ticket 24801.
    - Make the default DirAuthorityFallbackRate 0.1, so that clients
      prefer to bootstrap from fallback directory mirrors. This is a
      follow-up to 24679, which removed weights from the default
      fallbacks. Implements ticket 24681.

  o Minor features (geoip):
    - Update geoip and geoip6 to the February 7 2018 Maxmind GeoLite2
      Country database.

  o Minor features (linux seccomp2 sandbox):
    - Update the sandbox rules so that they should now work correctly
      with Glibc 2.26. Closes ticket 24315.

  o Minor bugfix (channel connection):
    - Use the actual observed address of an incoming relay connection,
      not the canonical address of the relay from its descriptor, when
      making decisions about how to handle the incoming connection.
      Fixes bug 24952; bugfix on 0.2.4.11-alpha. Patch by "ffmancera".

  o Minor bugfix (directory authority):
    - Directory authorities, when refusing a descriptor from a rejected
      relay, now explicitly tell the relay (in its logs) to set a valid
      ContactInfo address and contact the bad-relays@ mailing list.
      Fixes bug 25170; bugfix on 0.2.9.1.

  o Minor bugfixes (address selection):
    - When the fascist_firewall_choose_address_ functions don't find a
      reachable address, set the returned address to the null address
      and port. This is a precautionary measure, because some callers do
      not check the return value. Fixes bug 24736; bugfix
      on 0.2.8.2-alpha.

  o Minor bugfixes (compilation):
    - Fix a signed/unsigned comparison warning introduced by our fix to
      TROVE-2017-009. Fixes bug 24480; bugfix on 0.2.5.16.

  o Minor bugfixes (control port, linux seccomp2 sandbox):
    - Avoid a crash when attempting to use the seccomp2 sandbox together
      with the OwningControllerProcess feature. Fixes bug 24198; bugfix
      on 0.2.5.1-alpha.

  o Minor bugfixes (denial-of-service, backport from 0.3.3.3-alpha):
    - Fix a possible crash on malformed consensus. If a consensus had
      contained an unparseable protocol line, it could have made clients
      and relays crash with a null-pointer exception. To exploit this
      issue, however, an attacker would need to be able to subvert the
      directory authority system. Fixes bug 25251; bugfix on
      0.2.9.4-alpha. Also tracked as TROVE-2018-004.

  o Minor bugfixes (memory usage):
    - When queuing DESTROY cells on a channel, only queue the circuit-id
      and reason fields: not the entire 514-byte cell. This fix should
      help mitigate any bugs or attacks that fill up these queues, and
      free more RAM for other uses. Fixes bug 24666; bugfix
      on 0.2.5.1-alpha.

  o Minor bugfixes (network layer):
    - When closing a connection via close_connection_immediately(), we
      mark it as "not blocked on bandwidth", to prevent later calls from
      trying to unblock it, and give it permission to read. This fixes a
      backtrace warning that can happen on relays under various
      circumstances. Fixes bug 24167; bugfix on 0.1.0.1-rc.

  o Minor bugfixes (OSX):
    - Don't exit the Tor process if setrlimit() fails to change the file
      limit (which can happen sometimes on some versions of OSX). Fixes
      bug 21074; bugfix on 0.0.9pre5.

  o Minor bugfixes (path selection):
    - When selecting relays by bandwidth, avoid a rounding error that
      could sometimes cause load to be imbalanced incorrectly.
      Previously, we would always round upwards; now, we round towards
      the nearest integer. This had the biggest effect when a relay's
      weight adjustments should have given it weight 0, but it got
      weight 1 instead. Fixes bug 23318; bugfix on 0.2.4.3-alpha.
    - When calculating the fraction of nodes that have descriptors, and
      all nodes in the network have zero bandwidths, count the number of
      nodes instead. Fixes bug 23318; bugfix on 0.2.4.10-alpha.
    - Actually log the total bandwidth in compute_weighted_bandwidths().
      Fixes bug 24170; bugfix on 0.2.4.3-alpha.

  o Minor bugfixes (portability, msvc):
    - Fix a bug in the bit-counting parts of our timing-wheel code on
      MSVC. (Note that MSVC is still not a supported build platform, due
      to cryptographic timing channel risks.) Fixes bug 24633; bugfix
      on 0.2.9.1-alpha.

  o Minor bugfixes (relay):
    - Make the internal channel_is_client() function look at what sort
      of connection handshake the other side used, rather than whether
      the other side ever sent a create_fast cell to us. Backports part
      of the fixes from bugs 22805 and 24898.

  o Minor bugfixes (spec conformance, backport from 0.3.3.3-alpha):
    - Forbid "-0" as a protocol version. Fixes part of bug 25249; bugfix on
      0.2.9.4-alpha.
    - Forbid UINT32_MAX as a protocol version.  Fixes part of bug 25249;
      bugfix on 0.2.9.4-alpha.


852
Changes in version 0.3.3.2-alpha - 2018-02-10
853
  Tor 0.3.3.2-alpha is the second alpha in the 0.3.3.x series. It
Roger Dingledine's avatar
Roger Dingledine committed
854
  introduces a mechanism to handle the high loads that many relay
Nick Mathewson's avatar
Nick Mathewson committed
855
  operators have been reporting recently. It also fixes several bugs in
856
  older releases. If this new code proves reliable, we plan to backport
Nick Mathewson's avatar
Nick Mathewson committed
857
  it to older supported release series.
Nick Mathewson's avatar
Nick Mathewson committed
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886

  o Major features (denial-of-service mitigation):
    - Give relays some defenses against the recent network overload. We
      start with three defenses (default parameters in parentheses).
      First: if a single client address makes too many concurrent
      connections (>100), hang up on further connections. Second: if a
      single client address makes circuits too quickly (more than 3 per
      second, with an allowed burst of 90) while also having too many
      connections open (3), refuse new create cells for the next while
      (1-2 hours). Third: if a client asks to establish a rendezvous
      point to you directly, ignore the request. These defenses can be
      manually controlled by new torrc options, but relays will also
      take guidance from consensus parameters, so there's no need to
      configure anything manually. Implements ticket 24902.

  o Major bugfixes (netflow padding):
    - Stop adding unneeded channel padding right after we finish
      flushing to a connection that has been trying to flush for many
      seconds. Instead, treat all partial or complete flushes as
      activity on the channel, which will defer the time until we need
      to add padding. This fix should resolve confusing and scary log
      messages like "Channel padding timeout scheduled 221453ms in the
      past." Fixes bug 22212; bugfix on 0.3.1.1-alpha.

  o Major bugfixes (protocol versions):
    - Add Link protocol version 5 to the supported protocols list. Fixes
      bug 25070; bugfix on 0.3.1.1-alpha.

  o Major bugfixes (scheduler, consensus):
887
888
    - The scheduler subsystem was failing to promptly notice changes in
      consensus parameters, making it harder to switch schedulers
Roger Dingledine's avatar
Roger Dingledine committed
889
      network-wide. Fixes bug 24975; bugfix on 0.3.2.1-alpha.
Nick Mathewson's avatar
Nick Mathewson committed
890
891
892

  o Minor features (denial-of-service avoidance):
    - Make our OOM handler aware of the geoip client history cache so it
893
894
      doesn't fill up the memory. This check is important for IPv6 and
      our DoS mitigation subsystem. Closes ticket 25122.
Nick Mathewson's avatar
Nick Mathewson committed
895
896

  o Minor features (directory authority):
Roger Dingledine's avatar
Roger Dingledine committed
897
    - When directory authorities are unable to add signatures to a
898
      pending consensus, log the reason why. Closes ticket 24849.
Nick Mathewson's avatar
Nick Mathewson committed
899
900
901
902
903
904

  o Minor features (geoip):
    - Update geoip and geoip6 to the February 7 2018 Maxmind GeoLite2
      Country database.

  o Minor features (logging, diagnostic):
Roger Dingledine's avatar
Roger Dingledine committed
905
906
    - When logging a failure to create an onion service's descriptor,
      also log what the problem with the descriptor was. Diagnostic for
Nick Mathewson's avatar
Nick Mathewson committed
907
908
909
      ticket 24972.

  o Minor bugfix (channel connection):
910
911
    - Use the actual observed address of an incoming relay connection,
      not the canonical address of the relay from its descriptor, when
912
913
      making decisions about how to handle the incoming connection.
      Fixes bug 24952; bugfix on 0.2.4.11-alpha. Patch by "ffmancera".
Nick Mathewson's avatar
Nick Mathewson committed
914

Roger Dingledine's avatar
Roger Dingledine committed
915
916
  o Minor bugfix (directory authority):
    - Directory authorities, when refusing a descriptor from a rejected
917
918
919
      relay, now explicitly tell the relay (in its logs) to set a valid
      ContactInfo address and contact the bad-relays@ mailing list.
      Fixes bug 25170; bugfix on 0.2.9.1.
Nick Mathewson's avatar
Nick Mathewson committed
920
921
922
923
924
925
926

  o Minor bugfixes (all versions of Tor):
    - Use the "misspell" tool to detect and fix typos throughout the
      source code. Fixes bug 23650; bugfix on various versions of Tor.
      Patch from Deepesh Pathak.

  o Minor bugfixes (circuit, cannibalization):
Roger Dingledine's avatar
Roger Dingledine committed
927
928
929
930
    - Don't cannibalize preemptively-built circuits if we no longer
      recognize their first hop. This situation can happen if our Guard
      relay went off the consensus after the circuit was created. Fixes
      bug 24469; bugfix on 0.0.6.
Nick Mathewson's avatar
Nick Mathewson committed
931
932
933

  o Minor bugfixes (correctness):
    - Remove a nonworking, unnecessary check to see whether a circuit
934
935
      hop's identity digest was set when the circuit failed. Fixes bug
      24927; bugfix on 0.2.4.4-alpha.
Nick Mathewson's avatar
Nick Mathewson committed
936

937
938
939
940
941
  o Minor bugfixes (logging):
    - Don't treat inability to store a cached consensus object as a bug:
      it can happen normally when we are out of disk space. Fixes bug
      24859; bugfix on 0.3.1.1-alpha.
    - Fix a (mostly harmless) race condition when invoking
942
943
      LOG_PROTOCOL_WARN message from a subthread while the torrc options
      are changing. Fixes bug 23954; bugfix on 0.1.1.9-alpha.
944

Nick Mathewson's avatar
Nick Mathewson committed
945
  o Minor bugfixes (onion services):
Roger Dingledine's avatar
Roger Dingledine committed
946
947
948
949
950
951
952
    - Remove a BUG() statement when a client fetches an onion descriptor
      that has a lower revision counter than the one in its cache. This
      can happen in normal circumstances due to HSDir desync. Fixes bug
      24976; bugfix on 0.3.2.1-alpha.
    - If we are configured to offer a single onion service, don't log
      long-term established one hop rendezvous points in the heartbeat.
      Fixes bug 25116; bugfix on 0.2.9.6-rc.
Nick Mathewson's avatar
Nick Mathewson committed
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972

  o Minor bugfixes (performance):
    - Avoid calling protocol_list_supports_protocol() from inside tight
      loops when running with cached routerinfo_t objects. Instead,
      summarize the relevant protocols as flags in the routerinfo_t, as
      we do for routerstatus_t objects. This change simplifies our code
      a little, and saves a large amount of short-term memory allocation
      operations. Fixes bug 25008; bugfix on 0.2.9.4-alpha.

  o Minor bugfixes (Rust FFI):
    - Fix a minor memory leak which would happen whenever the C code
      would call the Rust implementation of
      protover_get_supported_protocols(). This was due to the C version
      returning a static string, whereas the Rust version newly allocated
      a CString to pass accross the FFI boundary. Consequently, the C
      code was not expecting to need to free() what it was given. Fixes
      bug 25127; bugfix on 0.3.2.1-alpha.

  o Minor bugfixes (scheduler, KIST):
    - Avoid adding the same channel twice in the KIST scheduler pending
973
974
      list, which would waste CPU cycles. Fixes bug 24700; bugfix
      on 0.3.2.1-alpha.
Nick Mathewson's avatar
Nick Mathewson committed
975
976

  o Minor bugfixes (unit test, monotonic time):
977
978
979
980
981
    - Increase a constant (1msec to 10msec) in the monotonic time test
      that makes sure the nsec/usec/msec times read are synchronized.
      This change was needed to accommodate slow systems like armel or
      when the clock_gettime() is not a VDSO on the running kernel.
      Fixes bug 25113; bugfix on 0.2.9.1.
Nick Mathewson's avatar
Nick Mathewson committed
982
983
984
985
986
987
988

  o Minor bugfixes (v3 onion services):
    - Look at the "HSRend" protocol version, not the "HSDir" protocol
      version, when deciding whether a consensus entry can support the
      v3 onion service protocol as a rendezvous point. Fixes bug 25105;
      bugfix on 0.3.2.1-alpha.

Roger Dingledine's avatar
Roger Dingledine committed
989
990
991
992
  o Code simplification and refactoring:
    - Remove the unused nodelist_recompute_all_hsdir_indices(). Closes
      ticket 25108.
    - Remove a series of counters used to track circuit extend attempts
Nick Mathewson's avatar
Nick Mathewson committed
993
994
995
996
      and connection status but that in reality we aren't using for
      anything other than stats logged by a SIGUSR1 signal. Closes
      ticket 25163.

997
998
999
1000
  o Documentation (man page):
    - The HiddenServiceVersion torrc option accepts only one number:
      either version 2 or 3. Closes ticket 25026; bugfix
      on 0.3.2.2-alpha.
For faster browsing, not all history is shown. View entire blame