-
Notifications
You must be signed in to change notification settings - Fork 34
/
Copy pathchangelog.txt
977 lines (894 loc) · 45.7 KB
/
changelog.txt
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
90
91
92
93
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
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
852
853
854
855
856
857
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
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
2.1.0-35
* update to libtorrent master
* lt:fix, abort_download() is OK in any state
* lt:fix race condition when cancelling requests after becoming a seed
* lt:add announce_port setting
2.1.0-34
* update to libtorrent master
* lt:addresses an issue where it would wait for pieces to be written to disk
before advertising it to peers
2.1.0-33
* update to libtorrent master
* using SWIG 4.3.0
* update to boost 1.86.0
* update to OpenSSL 3.4.0
* update android NDK r27c
* lt:fix performance bug in the file pool, evicting MRU instead of LRU
* lt:fix bug where file_progress could sometimes be reported as >100%
* lt:source code cleanup, performance and stability
2.1.0-32
* update to libtorrent master
* lt:don't hint POSIX_FADV_RANDOM
* lt:allow connections while checking resume data if no_verify_files flag is
set
* lt:fix BEP-40 peer priority for IPv6
* lt:limit the piece size in create_torrent constructor
* lt:set m_file_priority early, to make open_file() work as expected.
* lt:don't discard netlink messages for previously seen addresses
* lt:fix issue when closing a uTP connection with a close reason and picking
up a nagle packet.
* lt:apply DSCP setting to peers before connecting
* lt:check settings_pack::max_out_request_queue before alerting performance
warning: max outstanding piece requests reached
* lt:check settings_pack::max_out_request_queue before alert
outstanding_request_limit_reached
* lt:updated libdatachannel to v0.21.2
* lt:make anti-leech choker never increase score for dishonesty
* lt:try encode web seed redirect location
* lt:send read_piece right at the end of piece_passed
* lt:fix integer overflow in piece picker
* lt:try harder to bind TCP and UDP sockets to the same port
* lt:torrent_status::num_pieces counts pieces passed hash check, as documented
* lt:add feature to enable interruption of disk I/O worker threads
* lt:pass in whether a torrent has v1 and/or v2 hashes in storage_params
* lt:reject resume data if it contains mismatching info hashes
* lt:restore file priorities in POSIX storage
* lt:fix the wrong port is being announced to tracker
* lt:allow I2P leaseset encryption type 4
* lt:allow execution of on_unknown_torrent method in the absence of active
torrents
* lt:fix assert in uTP resend_packet()
* lt:improve checking and testing of max piece size
* lt:source code cleanup, performance and stability
2.1.0-31
* update to libtorrent master
* using SWIG 4.1.1
* improved java api layer
* lt:allow to change save path without any additional actions
* lt:allow to change save path without moving any files
* lt:peer_list fix, clear the m_candidate_cache when clear peer_list, and set
m_num_seeds to 0
* lt:schedule DHT announces using milliseconds rather than seconds
* lt:fix issue with web seed connections when they close and re-open
* lt:removing an already removed torrent is a no-op
2.1.0-30
* update to libtorrent master
* add support for Linux arm
* lt:revert and replace fix for proxies supporting IPv6
* lt:make i2p session options configurable
* lt:fix announce_with_tracker assert
* lt:fallocate() not supported is not a fatal error
* lt:fix proxying of IPv6 connections via IPv4 proxy
* lt:fix peer_list to support incoming i2p connections
* lt:treat CGNAT address range as local IPs
* lt:disallow piece layer entries that don't refer to any file in the torrent
* lt:disallow piece layer entries in torrent files that don't compute to their
advertised root hash
* lt:validate piece layers against their roots when loading torrents
* lt:tighten up handling of hash checking v2 and hybrid torrents
* lt:cache failed DNS lookups as well as successful ones
* lt:when draining the torrent_info object
* lt:fix scraping of i2p tracker
* lt:minor simplification of i2p socket identification
* lt:store i2p-torrent state in resume data
* lt:disable DHT for i2p torrents
* lt:fix accepting incoming i2p connections
* lt:fix interpretation of non-compact i2p tracker responses
* lt:add base64decode() for i2p alphabet and simplify base32encode()
* lt:make i2p trackers only announce once (not once per listen interface)
* lt:fix i2p SAM parsing of quoted values. and make name lookup failures
non-fatal
* lt:expose i2p peer destination (b32 address) in peer_info
* lt:simplify handling of compact tracker responses for i2p trackers
* lt:fix sorting of torrent_peer entries when mixing i2p and non-i2p peers
* lt:make base32encode take a span instead of a string
* lt:fix issue with read_piece() stopping torrent on pieces not yet downloaded
* lt:improve handling of allow_i2p_mixed setting to work for magnet links
* lt:source code cleanup, performance and stability
2.1.0-29
* update to libtorrent master
* fix fetch magnet, save the add_torrent_params as a torrent file
* lt:add need_save_resume field to torrent_status, with the resume data flags
indicating which aspects of a torrent have changed since the last resume
data was saved. Also make only_if_modified flag a combination of the other
flags.
* lt:separate only_if_modified flag to save_resume_data
* lt:removing an ephemeral web seed does not affect whether resume data needs
to be saved
* lt:allow promoting an ephemeral web seed when adding it
* lt:fix web seed request for renamed single-file torrents
* lt:instead of removing web seed with certain errors, just disable them and
preserve them in the resume data.
* lt:improve behavior of save_resume_data() only_if_modified flag to avoid
re-saving the resume data too frequently
* lt:port 1 is used as a placeholder for announcing to trackers without the
ability to accept incoming connections
* lt:fix issue in retrying trackers in tiers > 0
* lt:fix time_point conversion from/to time_t
* lt:don't throw a std::system_error holding a boost::system::error_code
* lt:source code cleanup, performance and stability
2.1.0-28
* update to libtorrent master
* update to boost 1.81.0
* update to OpenSSL 1.1.1t
* update android NDK r25c
* removed API to manage trackers from torrent info
* make sure trackers and web seed info is saved when fetching a magnet
* lt:minor accounting fix for utp packet pool
* lt:report back the full endpoint of peers removed from the peer list when
applying a port_filter and include it in the peer_blocked_alert
* lt:simplify handling of privileged ports setting by untangling it from the
port filter
* lt:get close reason apply visitor types
* lt:deprecate storing trackers in torrent_info
* lt:improve I2P support
* lt:updated libdatachannel to v0.18.1 (re-licensed to MPL 2.0)
* lt:fix async_wait() for read and write (used to be null_buffers)
* lt:handle outgoing EOF properly. report eof to the write handler. record
that we're closing.
* lt:simplify utp send_reset() a bit
* lt:correct uTP sequence number check for packets past EOF
* lt:minor uTP cleanup and updates to logging
* lt:report EOF to upper layer when receiving a FIN packet, in uTP
* lt:rename eof and eof_seq_nr to indicate in refers to the incoming stream
* lt:fix recently introduced create_torrent::generate_buf() where it failed to
include collections and similar-fields
* lt:make status_t a proper flag type, to clean up oversized_file indication
from disk subsystem
* lt:source code cleanup, performance and stability
2.1.0-27
* update to libtorrent master
* removed API to create torrents from torrent info
* lt:move towards an immutable torrent_info
* lt:optimize create_torrent::generate_buf()
* lt:changed offer_id length from 16 to 20 for consistency with the JS
implementation
* lt:fixed rtc_signaling to use the peer id generated for the torrent
* lt:add async tracker status query, post_trackers()
* lt:add async torrent status query, post_status()
* lt:create_torrent does not need fileroots to be a member to create_torrent
* lt:support loading version 2 of resume data format
* lt:disable alert notification during session destruction
* lt:ensure loading resume data tolerates bitfields that are too large
* lt:post torrent_removed_alert after actually removing it from the disk
subsystem
* lt:fix use-after-free in web_peer_connection
* lt:fix issue with torrents that have a piece size not divisible by 16kB
* lt:optimize resume data format to use less space
* lt:add async piece availibility query, post_piece_availibility()
* lt:add async download queue query, post_download_queue()
* lt:add async file_progress query, post_file_progress()
* lt:add async peer_info query, post_peer_info()
* lt:starting torrent, connect to peers found in add_torrent_params
immediately
* lt:continue to ack incoming uTP data while finalizing the connection
* lt:fix sending ST_FIN packet while the socket is stalled
* lt:fix uTP streams timing out instead of closing cleanly
* lt:safe usage of strncpy
* lt:prevent sending data on a uTP socket after closing it
* lt:fix m_bytes_in_flight invariant and packet counters in the event of the
UDP socket stalling
* lt:fix some disk-io counters. primarily num_read_back
* lt:introduce new API for create_torrent, to phase out the use of
file_storage for creating torrents
* lt:clean-up settings_pack default values to be able to return the default
value for un-set settings without a hack
* lt:add write_torrent_file_buf() overload for generating .torrent files
* lt:add create_torrent::generate_buf() function to generate into a buffer
* lt:use typesafe flag in (internal) file_status() function parameter
* lt:use typesafe flag in file_status struct, and optimize out a redundant
call to stat() in add_files
* lt:resend uTP acks that fail to send due to stalling
* lt:fix copy_file when the file ends with a sparse region
* lt:when the uTP socket stalls, mark failed packets for resend
* lt:add some utility member functions to create_torrent
* lt:fix trackers being stuck after session pause/resume
* lt:fix bug in hash_picker with empty files
* lt:expose mmapped file_open_mode flag
* lt:add option to not memory map files below a certain size
* lt:settings_pack now returns default values when queried for missing
settings
* lt:don't drop uTP's cwnd below 1*MSS due to latency
* lt:reset uTP timeout when sending packets
* lt:extend create_torrent object with piece_range(), end_piece() and
total_size()
* lt:fall back to full copy if SEEK_HOLE and SEEK_DATA isn't supported
* lt:improve error reporting from file opy and move
* lt:tweak pad file placement to match reference implementation (tail-padding)
* lt:update state when need to save resume data
* lt:support incoming SOCKS5 packets with hostnames as source address, for UDP
trackers
* lt:modify the Nagle algorithm to allow one undersized packet in flight at a
time
* lt:for efficiency, pick up and send an undersized utp packet if there's room
in the congestion window when 'forcing' a packet
* lt:ignore duplicate network interface change notifications on linux
* lt:prevent redundant deferred utp acks from being sent
* lt:don't memory map files smaller than 1 MiB, use pwrite/pread calls
* lt:fix wanted_done/done accounting when force-rechecking
* lt:fix total_want/want accounting when forcing a recheck
* lt:expose userdata via torrent_handle
* lt:introduce setting for using pwrite in mmap_disk_storage
* lt:use pwrite() for writing to files in mmap_storage
* lt:better thread names
* lt:fix merging metadata with magnet links added on top of existing torrents
* lt:add torrent_flag to default all file priorities to dont_download
* lt:make the SOCKS5 client tolerate a domain name in the response to UDP
ASSOCIATE
* lt:fix renaming of filenames that are too long for the filesystem
* lt:optimize loading merkle tree mask
* lt:move the creation of directories and retrying opening a file for writing
down the stack
* lt:fix destruction order of job-pool and file-pool
* lt:make LSD code avoid using select_reactor
* lt:make UPnP code not use select_reactor
* lt:refactor file_view_pool to allow it to be used with other file objects
than just memory mapped files
* lt:remove vectored I/O API from file class
* lt:remove vector I/O API from part file. use single buffers
* lt:open files with no_cache set in O_SYNC mode
* lt:report EOF when attempting to hash off the end of a short file
* lt:factor out hash_zeroes() from mmap_storage
* lt:set file index of errors in readwrite() instead of in every file-op
* lt:change vectored I/O API to single-buffer in readwritev() and posix- and
mmap storage
* lt:handle all "fastresume rejected" cases consistently
* lt:make copy_file_range() fall back to manual copy when it fails with EXDEV
* lt:use boost static_vector in disk_completed_queue
* lt:make file_pool_view serialize opening of files, rather than race each
other. When the same file is needed by multiple threads
* lt:fix destruction order issue in mmap_disk_io
* lt:don't disconnect peers after accepting 'slack' connections when no longer
above the connection limit
* lt:factor out disk job completed queue from mmap_disk_io
* lt:factor out and fix debug disk thread functionality
* lt:make disk_job_pool generic
* lt:make a generic disk job type
* lt:simplify the disk io thread pools and factor more of its logic out
of mmap_disk_io
* lt:fix issue where stop-when-ready would not close files
* lt:fixed tracker connections spinning when hostname lookups stall
* lt:improve tailqueue's API to make it clearer and safer
* lt:factor out storage_array from mmap_disk_io
* lt:enable volatile-read for peer connection read requests, when
disk_io_read_mode is disable_os_cache
* lt:new scrape_tracker and force_reannounce
* lt:factor out tracker list, enforce unique tracker URLs
* lt:extend write_torrent_file() with a flags parameter, don't include DHT
nodes by default
* lt:when over the connection limit, treat partially downloaded but complete
torrents the same as seeds when looking for a peer to replace with a
potentially better one
* lt:add torrent_conflict_alert
* lt:fix issue with merging two magnet link torrents into one hybrid
* lt:move the protocol version field for tracker alerts into the
tracker_alert baseclass
* lt:use sync_file_range() on linux, when disabling write cache
* lt:post add_torrent_alert after torrent is fully initialized
* lt:interrupt http_connection::on_resolve() for closed connection
* lt:fix file_num_blocks() and file_num_pieces() for empty files
* lt:use default settings in set_piece_hashes
* lt:ut_metadata: don't request the same block more than once every 3
seconds unless the source is disconnected
* lt:unify default limits when loading torrents in torrent_info constructor
* lt:add new overload to make_magnet_uri that takes an add_torrent_params
* lt:add missing protocol version to tracker_reply_alert and
tracker_error_alert
* lt:fix privilege issue with SetFileValidData()
* lt:add asynchronous overload of torrent_handle::add_piece()
* lt:source code cleanup, performance and stability
2.0.6-26
* using libtorrent master
* added API support to change the disk I/O back-end
* lt:fix MacOS version check for preadv() support
* lt:handle all "fastresume rejected" cases consistently
* lt:default to a single hashing thread, for full checks
* lt:fix bind-to-device for tracker announces and UPnP
* lt:fix bug when checking files and the first piece is invalid
* lt:rename peer_tos -> peer_dscp
* lt:updated libdatachannel to v0.17.1
* lt:simplify part of pe_crypto, init_bt_handshake and stats accounting
* lt:add new alert, oversized_file_alert, posted when an existing file in a
torrent is found to have a greater size than the file according to the
torrent file
* lt:make the disk buffer pool implement the buffer_allocator_interface
* lt:send a User-Agent field in HTTP tracker requests in anonymous mode
* lt:fix issue creating v2 torrent from torrent_info with empty file
* lt:make recheck files also update which files use partfile
* lt:add write_through option to disk_io_write_mode
* lt:improve copy_file() to preserve sparse regions on systems supporting
SEEK_HOLE/SEEK_DATA
* lt:add function to truncate over-sized files part of a torrent
* lt:set lower memory priority for disk I/O threads on windows
* lt:fix directory creation on windows shared folders
* lt:rename disk_io_job to mmap_disk_job
* lt:set thread names on Haiku
* lt:set thread names on windows
* lt:set thread names on posix
* lt:fix mmap_disk_io shutdown race. We may end up posting new jobs after
starting the shutdown
* lt:factor out storage initialization
* lt:add flag to make add_files() not record file attributes
* lt:source code cleanup, performance and stability
2.0.5-25
* using libtorrent master
* lt:deprecate (unused) allow_partial_disk_writes settings
* lt:fix disk-full error reporting in mmap_disk_io
* lt:fix similar torrents feature for v2 torrents
* lt:use MADV_DONTNEED/MADV_COLD for volatile_reads (when checking files)
* lt:use MADV_NOCORE on BSD systems
* lt:fix potential unbounded recursion in add_completed_jobs()
* lt:deprecate (unused) volatile_read_cache setting
* lt:mark read_cache_line_size and write_cache_line_size as deprecated
* lt:fix part files being marked as hidden on windows
* lt:source code cleanup, performance and stability
2.0.5-24
* using libtorrent master
* updated to OpenSSL 1.1.1m
* using android NDK r23b
* updated to boost 1.78.0
* lt:remove redundant calls to convert_from_native() on system error messages
* lt:use UTF-8 encoding for messages coming from boost on Windows
* lt:fix DHT announce timer issue
* lt:set DSCP_TRAFFIC_TYPE socket option on windows
* lt:default TOS marking to 0x04 (LE)
* lt:poll for new endpoints when forcing a tracker announce
* lt:only ever set min_interval on tracker entries based on responses from
trackers
* lt:retry all trackers when force announcing
* lt:keep trying to announce to trackers even when all fail
* lt:don't disable announcing from local endpoints because of temporary
failures
* lt:improve error reporting when opening files
* lt:fix issue in parsing UPnP XML response with multiple forwarding services
* lt:fix typos in preadv vs. pread detection. add new version of MacOS to
use vector versions
* lt:updated libdatachannel to v0.16.1
* lt:tweak mixed mode algorithm to throttle less
* lt:source code cleanup, performance and stability
2.0.5-23
* fix windows build, not enable deprecated functions
2.0.5-22
* using libtorrent master
* minimum supported Android API >= 24
* fix for new network access restrictions in android 11
* lt:allow unspecified address for android api >= 24
* lt: explicitly FlushViewOfFile() on windows when closing a file and
periodically the file with most dirty bytes
* lt:factor out storage index free list from mmap_disk_io and posix_disk_io
* lt:enable close_file_interval by default on windows, set to 240 seconds
* lt:use cached DNS resolver for socks5 proxy
* lt:back-port fix for accepting incoming connections over socks5
* lt:fix issue where incoming uTP connections were not accepted over SOCKS5
* lt:use a more reliable work-around for msvc standard library types whose
move and move-assign operators can throw
* lt:overhaul the merkle_tree class in order to allow it to have a
consistent (and well defined) invariant
* lt:rename variables, small strengthening of invariant check in merkle_tree
* lt:add special case for single-node merkle trees in load_piece_layer,
to maintain an efficient internal representation
* lt:add merkle_get_first_child() overload
* lt:make the token limit when parsing metadata from magnet files
configurable
* lt:use ifaddrs for android api >= 24, implement enum_routes with
operation_not_supported
* lt:fix stalled pieces on disk-full errors
* lt:fix issue with stalled pieces on disk full errors
* lt:fix logic penalizing peers for sending corrupt data
* lt:remove unintended reserve() call in resolve_links
* lt:fix merkle_tree operator[] and compare_node in the various
memory-optimized modes
* lt:slight refactor of logic penalizing peers for sending corrupt data
* lt:guard against self assignment in hasher512 and hasher code
* lt:disable deprecation warnings in code calling OpenSSL SHA1 functions
* lt:fix ambiguous overload of utf8_latin1. Both std::string_view and
boost::json::string_view can be constructed from a boost::json::string
* lt:remove unused field on peer_connection, previously used for debugging
* lt:minor logging fixes
* lt:add null checks in iface_from_ifaddrs
* lt:get_torrent_copy_with_hashes() fails if we don't have all the piece
layers yet
* lt:don't open the piece in the piece picker if there still are outstanding
hash jobs (to handle write failures)
* lt:silence conversion signedness warning on file.cpp
* lt:restore path character encoding conversion for non UTF-8 locales on
linux
* lt:sanitize surrogates found in utf-8
* lt:fix for building with boost-1.77 on windows
* lt:fix issue when asking for file progress right when starting a
force-recheck
* lt:bump handler allocation sizes for boost-1.77 (linux)
* lt:fix restoring last_seen_complete from resume data
* lt:fix build errors involving unsatisfied constraints
* lt:improve hash request debug logging
* lt:fix uninitialized timestamp in hash-picker requests
* lt:fix issue on macOS where the DHT was not restarted on a network-up
notification
* lt:fix use-after-free bug in make_magnet_uri
* lt:fix refactoring bug introduced when turning http_stream handlers into
templates, where buffer read_pos was checked after being used
* lt:make remove_torrent flags be treated as flags (instead of an enum)
* lt:removed name-field at root from write_torrent_file()
* lt:source code cleanup, performance and stability
2.0.4-21
* using libtorrent master
* lt:add write_torrent_file(), a function to save a .torrent file from an
add_torrent_params
* lt:don't require piece layers in v2 torrent files, but ensure they are
valid if they are present
* lt:use can_disconnect in torrent when is finished
* lt:use can_disconnect in bt_peer_connection upload-to-upload connection
* lt:fix seed rank calculation when we're the only known seed
* lt:fix issue when checking certain v2 torrents
* lt:make the hash_picker tolerate a valid-hashes buffer that's lying
* lt:fix issue where a peer may not send a hash request after a piece failure
* lt:fix issue when asking for file progress right when starting a
force-recheck
* lt:source code cleanup, performance and stability
2.0.4-20
* using libtorrent master
* added Sha256Hash
* lt:updated libdatachannel to v0.13.4
* lt:fix checking torrents
* lt:removed time_critical_mode from piece_picker::pick_pieces,
peer_connection and request_blocks.
* lt:ensure peer_info::client is always valid UTF-8
* lt:don't check pieces we already have (such as pad files), when running a
full check
* lt:improve piece-picker pad-file granularity to bytes (from blocks)
* lt:improve precision of total_wanted and total_wanted_done
* lt:fix shutdown issue with incoming SSL connections
* lt:fix issue with adding v2 torrents with invalid file root hash
* lt:simplify some checks of pieces against the ignored list in the piece
picker
* lt:fix piece picker bug causing double-picks with prefer-contiguous enabled
* lt:source code cleanup, performance and stability
2.0.3-19
* using libtorrent master
* updated to boost 1.76.0
* lt:clear seed flag when we receive an incomplete bitfield from a peer
* lt:improve handling of seed flag in PEX messages
* lt:mitigate accounting error in http seed connection
* lt:fix issue of accruing unlimited DHT node candidates when DHT is disabled
* lt:fix bug in parsing chunked encoding
* lt:a better fix to active, seeding and finished duration timers
* lt:fix incorrect reporting of active_duration when entering graceful-pause
* lt:fix redundant file_size check in torrent_info
* lt:fix support for the executable file permission attribute (and avoid
making every file executable, on unix-like systems)
* lt:source code cleanup, performance and stability
2.0.3-18
* fixed AlertType for missing file_prio_alert entry
2.0.3-17
* using libtorrent master
* improved java api layer
* lt:fix issue creating and loading v2 torrents with empty files
* lt:updated libdatachannel to v0.12.2
* lt:source code cleanup, performance and stability
2.0.3-16
* using libtorrent master
* improved java api layer
* lt:updated libdatachannel to v0.12.1
* lt:fix issue where hash2 disk jobs would not be assigned to the hashing
threads in the disk I/O thread pool
* lt:add first and last piece range to sequential download mode
* lt:make mmap disk io shutdown more reliable. don't ever miss a notification
* lt:fix identify BitSpirit 3.6
* lt:source code cleanup, performance and stability
2.0.3-15
* using libtorrent master
* updated to OpenSSL 1.1.1k
* using android NDK r22b
* lt:add new torrent_file_with_hashes() which includes piece layers for
creating .torrent files
* lt:use /etc/ssl/cert.pem to validate HTTPS trackers and web servers on
MacOS
* lt:raise the severity of peers sending invalid messages to 'peer_error'.
Simplify m_upload_only to just record the explicit upload-only state
communicated via the extension message. Implied upload only is moved to
the upload_only() query. Add simulations for peer connection tests.
Mostly for have-all, have-none and bitfields, and some simple invalid
requests. This will serve as a platform to add more sophisticated tests.
* lt:restore peer_connection::is_seed to not take m_have_all into account.
It caused some regression in edge cases
* lt:add a file_prio_alert, posted when file priorities are applied
* lt:prefer __builtin_popcountl() over portable C implementation of
popcnt. This enables the ARM64 SIMD instruction on Apple M1
* lt:fix issue with setting file priorities and saving resume data. The
need-save-resume flag should not be set until *after* the new file
priorities have been applied. Don't set the need-save-resume flag just
by loading the resume data (when applying the file priorities into the
piece priorities)
* lt:source code cleanup, performance and stability
2.0.2-14
* using libtorrent master
* minimum supported Android 32 bits API >= 19
* minimum supported Android 64 bits API >= 21
* using android NDK r22
* using android prebuilt toolchain
* using android LLD linker
* lt:fix size_on_disk patch
* lt:fix torrent_info::v2 to be correct after freeing piece layers from
torrent_info
* lt:allow no-interest timeouts of peer connections before all connections
slots are full
* lt:add flag to force canonical file order and padding for v1-only torrents
* lt:return nullptr instead of crashing in get_storage_impl
* lt:fix issue where peers entering upload-mode cannot leave upload-mode
* lt:fix issue where a DHT message would count as an incoming connection
* lt:source code cleanup, performance and stability
2.0.2-13
* using libtorrent master
* updated to OpenSSL 1.1.1j
* improved java api layer
* lt:updated libdatachannel to v0.11.9
* lt:deprecate sha-1 file hashes (torrent file extension field)
* lt:add size_on_disk() to file_storage and torrent_info, reporting the total
size of non-pad files
* lt:fix issue when failing to parse outgoing_interfaces setting
* lt:fix issue where set_piece_hashes() would not propagate file errors
* lt:fix super-seeding issue that could cause a segfault
* lt:mark need-save-resume when adding a tracker
* lt:fix need_save_resume_data() for renaming files, share-mode, upload-mode,
disable- pex, lsd, and dht.
* lt:fix issue in parsing invalid webtorrent tracker responses
* lt:fix incoming TCP connections when using tracker-only proxy
* lt:correctly store "max_uploads" value in resume data
* lt:fix error messages related to opening files, specifically truncate
and allocate failures (which currently are incorrectly attributed to
open file)
* lt:add work-around for systems without fseeko() (such as Android)
* lt:source code cleanup, performance and stability
2.0.2-12
* using libtorrent master
* fixed missing fseeko64 symbol at runtime
* fixed download priority type mismatch (now it is byte)
* lt:cleanup use of _FILE_OFFSET_BITS
* lt:ensure we don't attempt to make outgoing connections to RTC peers
* lt:don't announce stopped-event to websocket trackers. This (appears) to
solve a shutdown stall where we send stopped-announces after aborting
outstanding announces (including the persistent websocket connection).
The announce causes the persistent connection to be re-established and
sometimes not torn down properly again, to complete the shut down
* lt:remove misleading (and redundant) peer log message
* lt:increase the default setting for max_allowed_in_request_queue
from 500 to 2000. The entries in this queue are relatively small,
and allowing too few may negatively impact high-throughput peers
* lt:deprecate volatile_read_cache
* lt:source code cleanup, performance and stability
2.0.2-11
* using libtorrent master
* lt:do not accept RTC peer if already connected
* lt:fix the complete() function, turning a path into an absolute path,
to correctly strip the ./ prefix of a relative path
* lt:fix load_file(), used to load files in the torrent_info constructor
and the posix part file, to support non-ascii characters on windows
* lt:prevent a time-out because no incoming requests have been received,
when we're still waiting to respond to previous requests
* lt:add dedicated error codes for SSRF mitigation and IDNA blocking
* lt:updated libdatachannel to v0.10.4
* lt:fix DHT upload rate limit overflow when set very high, or invoked very
rarely
* lt:some uTP MTU-probe fixes
* lt:restart path MTU discovery when a probe is lost that previously made it
* lt:use IP_PMTUDISC_PROBE instead of IP_PMTUDISC_DO to set the DF flag on
linux
* lt:keep sending MTU probes after the MTU floor and ceiling have converged
* lt:fix overflow of block_index in hash_picker for v2 torrents
* lt:WebTorrent - add keepalive with ping on WebSocket
* lt:fix overflow issue when rlimit_nofile is set to infinity
* lt:simplify some of the computation of MTUs for uTP sockets
* lt:strengthen SSRF mitigation for web seeds
* lt:source code cleanup, performance and stability
2.0.2-10
* using libtorrent master
* lt:fail loading torrents with too many duplicate file names (as that's a
potential DoS)
* lt:don't announce to trackers while checking files, in replace_trackers()
* lt:fix redundant and failed bytes overflow check
* lt:source code cleanup, performance and stability
2.0.1-9
* using libtorrent master
* lt:fix loading of DHT node ID from previous session on startup
* lt:use getrandom(), when available, and fall back to /dev/urandom
* lt:allow not setting a creation date in create_torrent (but default to
current timestamp). Provide more prominent shortcuts to ask a torrent_info
about whether it has v1 and v2 metadata
* lt:pull out cached_block_entry::blocks_in_piece from bitfield, since it's
immutable and may be read from multiple threads without holding any mutex.
Other fields in the bitfields may be updated under a mutex, which would
race with blocks_in_fields otherwise
* lt:fix data race in storage::m_settings
* lt:remove invalid asserts, which introduce a data race
* lt:remove use of global variable in ut_pex (and a data race along with it)
* lt:fix data race in block cache
* lt:fix time_now_string to not use a global variable for the returned string
* lt:magnet link parameters names are case insensitive
* lt:mitigate a class of tracker SSRF where tracker URLs come preloaded with
bittorrent tracker query string arguments, like info_hash, event, etc
* lt:source code cleanup, performance and stability
2.0.1-8
* using libtorrent master
* using ubuntu bionic (18.04 LTS) to generate linux binary
* updated to OpenSSL 1.1.1i
* updated to boost 1.75.0
* lt:move session flags into the session_params object
* lt:m_seq_nr is not incremented when sending a FIN packet
* lt:add support for getrandom
* lt:improve seeding of pseudo random number generator
* lt:use cryptographic random numbers for DHT write key
* lt:use crypto_random_bytes() to generate PCP nonce
* lt:use crypto_random_bytes() to generate ed25519 key seeds
* lt:separate secure random numbers from pseudo random numbers
* lt:source code cleanup, performance and stability
2.0.1-7
* using libtorrent master
* lt:extend SSRF mitigation to also cover web seeds
* lt:validate HTTPS tracker certificates by default
* lt:add option to disallow IDNA tracker and web seed hostnames, and disallow
them by default
* lt:add is_idna() function to detect IDNA encoded hostname labels
* lt:load SSL certificates from windows system certificate store, to
authenticate trackers
* lt:fix unaligned piece requests in mmap_storage
* lt:introduce mitigation for Server Side Request Forgery in tracker
announces
* lt:simplify pointer arithmetic in utp buffer handling by using span.
Introduce some more defensive sanity checks
* lt:don't log protocol encryption key and synchash
* lt:fix error handling for pool allocation failure. Use regular new, that
throws on failure, rather than the nothrow version
* lt:smart_ban uses sha-1 to hash blocks, there's no need to salt
* lt:clarify that DHT transaction IDs are 16 bits
* lt:fix concurrent access to part files by using pread/overlapped I/O
instead of seek+read
* lt:source code cleanup, performance and stability
2.0.0-6
* using libtorrent master
* restored general exception handler in JNI layer
* added missing flags and api to save session params
* fixed issue, actual session params were ignored in SessionManager#restart
* lt:fix issue with moving the session object
* lt:fix attribute in single-file v2 torrent creation
* lt:fix padding for empty files in v2 torrent creation
* lt:deprecate torrent_status::allocating (state no longer used)
* lt:fix bug creating torrents with symbolic links
* lt:add function to ask a file_storage whether it's v2 or not
* lt:remove special case to save metadata in resume data unconditionally when
added through magnet link
* lt:fix feature to create hard-links to existing files in other torrents
* lt:fix bug in torrent_info copy constructor
* lt:source code cleanup, performance and stability
2.0.0-5
* using libtorrent master
* lt:fix mtime field when creating single-file v2 torrents
* lt:fix issue in file_storage::swap
* lt:if pre-allocated handler buffer is too small, fall back to malloc/free
* lt:fix performance regression in checking files
* lt:fix incorrectly inlined move-assignment of file_storage
* lt:support constructing sessions in paused mode via new session_flag
* lt:don't update the num_unchoke_slots counter based on the number of peers,
in fixed-slots-choker. This counter is used for triggering immediate unchoking
* lt:fix issue where pausing a session would cause tracker_manager to enter
shutdown-mode and never come back
* lt:filter internal peer flag in pex messages
* lt:fix incorrect interpretation of the peer-exchange flags
* lt:remove superfluous call to release_files() when triggering a force-recheck
* lt:prevent protocol encryption over WebRTC
* lt:post save_resume_data_failed_alert if torrent was removed
* lt:add a new torrent flag to not validate resume data against files on disk
* lt:minor cleanups to URL seed. just use the server string as client name,
always generate a unique peer id
* lt:source code cleanup, performance and stability
2.0.0-4
* using libtorrent master
* lt:replaced remote endpoint assert with logging as it can legit happen
* lt:enforce unique addresses on rtc peers
* lt:fixed peer sorting for RTC peers by using remote address as key
* lt:updated libdatachannel to v0.9.3 (for WebTorrent)
* lt:add missing add_storage_node_ids, to keep the DHT storage up to date
* lt:fix calculation in tracker_manager::num_requests when webtorrent is enable
* lt:fix saving 'name' in write_resume_data()
* lt:allow saving resume data before metadata has been downloaded (for magnet links)
* lt:fix issue in add_piece() called multiple times
* lt:fix recording of unfinished pieces in resume data
* lt:source code cleanup, performance and stability
2.0.0-3
* minimum supported Android API >= 21
* using libtorrent master
* lt:record blocks in the disk queue as downloaded in the resume data
* lt:make sure there's always at least a / path component in HTTP requests
* lt:fix issue in URL parser, causing issues with certain tracker URLs
* lt:disable use of SetFileValidData() by default (windows). A new setting
allows enabling it
* lt:use a different error code than host-unreachable, when skipping
tracker announces
* lt:fix error category in http_tracker_connection
* lt:fix issue where pad blocks would skip the zero-hash check and consider
the last piece as passed, which in turn could cause a hybrid magnet link
to fail with inconsistent-hashes
* lt:remove support for BEP 17 web seeds
* lt:initialize missing fields in resume data by their default value
* lt:find the system locale by inspecting the LANG environment variable
* lt:source code cleanup, performance and stability
2.0.0-2
* using libtorrent master
* lt:if the local codepage/locale is already UTF-8, don't perform any character
conversion
* lt:drop iconv dependency
* lt:fix threading issue in convert to/from native functions when using locale
functions mbtowc and wctomb
* lt:fix incorrect mapping of performance warning enum to human readable string
* lt:remove little-endian to host conversion in CRC32 function
* lt:fix endian issue in classify_prefix()
* lt:add support for SetFileValidData() to the mmap file (Windows)
* lt:always check for duplicate peer IDs
* lt:mark all torrents as not wanting peer connections when both TCP and uTP
connections are disabled
* lt:fix issue when changing the seeding_outgoing_connections setting
* lt:add additional support for no_cache option to mmap file
* lt:print bdecoded binary data as hex again
* lt:fix torrent round-trip for v2 torrents in create_torrent
* lt:fix detection of hard-links not being supported by filesystem
* lt:clean up parse_utf8_sequence and lower dependence on ConvertUTF code
* lt:source code cleanup, performance and stability
2.0.0-1
* minimum supported Android API >= 24
* updated to boost 1.73.0
* using android NDK r21d
* updated to OpenSSL 1.1.1g
* removed version suffix in binaries
* using Java 1.8 for source and bytecode target
* removed support for posix wrapper
* major SWIG refactor
* using libtorrent master
1.2.3.0
* updated to boost 1.72.0
* using android NDK r21
* libtorrent release 1.2.3
* lt:fix erroneous event=completed tracker announce when checking files
* lt:promote errors in parsing listen_interfaces to post listen_failed_alert
* lt:fix bug in protocol encryption/obfuscation
* lt:fix buffer overflow in SOCKS5 UDP logic
* lt:fix issue of rapid calls to file_priority() clobbering each other
* lt:clear tracker errors on success
* lt:optimize setting with unlimited unchoke slots
* lt:fixed restoring of trackers, comment, creation date and created-by in resume data
* lt:fix handling of torrents with too large pieces
* lt:fixed division by zero in anti-leech choker
* lt:fixed bug in torrent_info::swap
* lt:source code cleanup, performance and stability
1.2.2.0
* updated to boost 1.71.0
* updated to OpenSSL 1.1.1d
* using android NDK r20b
* using SWIG 4.0.1
* libtorrent release 1.2.2
* lt:fix cases where the disable_hash_checks setting was not honored
* lt:fix updating of is_finished torrent status, when changing piece priorities
* lt:fix regression in &left= reporting when adding a seeding torrent
* lt:fix integer overflow in http parser
* lt:improve sanitation of symlinks, to support more complex link targets
* lt:add DHT routing table affinity for BEP 42 nodes
* lt:add torrent_info constructor overloads to control torrent file limits
* lt:feature to disable DHT, PEX and LSD per torrent
* lt:fix issue where trackers from magnet links were not included in create_torrent()
* lt:pick contiguous pieces from peers with high download rate
* lt:fix error handling of moving storage to a drive letter that isn't mounted
* lt:fix HTTP Host header when using proxy
* lt:source code cleanup, performance and stability
1.2.1.0
* using android NDK r19c
* updated to boost 1.70.0
* removed support for FreeBSD
* lt:make sure session cleanup releases all its references to torrents
* lt:track the mapped port for each NAT mapping transport
* lt:optimize resolve_duplicate_filenames_slow()
* lt:use a more restrictive limit on number of pieces allowed in a torrent
* lt:improve disk I/O logging
* lt:always flush disk I/O job queue before shutdown
* lt:fix typo in validation of reject messages. Make on_choke a bit more
defensive
* lt:tighten up validation of dont-have messages
* lt:tighten up validation of reject messages, to ensure consistency of stats
counters
* lt:tighten up message size checks
* lt:update symlinks to conform to BEP 47
* lt:source code cleanup, performance and stability
1.2.0.22
* updated to OpenSSL 1.1.1b
* using android NDK r19b
* lt:add support for creating symlinks, for torrents with symlinks in them
* lt:allow padfiles of equal size to share the same filename
* lt:fix seed_mode flag
* lt:support numeric suffixes to magnet link parameter names
* lt:added FrostWire's client ID
* lt:don't try to hash empty read in do_uncached_hash
* lt:don't copy a vector into the async_write operation for iovec
* lt:on linux, link against lbdl when using openssl
* lt:use UNC paths pervasively on windows
* lt:source code cleanup, performance and stability
1.2.0.21
* updated to boost 1.69.0
* experimental support for android posix hook
* libtorrent release 1.2.0
* lt:only allow cwnd to be reduced so often (utp)
* lt:avoid announcing local ip to private tracker
* lt:don't treat loss of MTU probe packet as a congestion signal (utp)
* lt:make sure we reset the duplicate ack counter every time we don't receive
a duplicate ack (utp)
* lt:remove old (incompatible) sequence number build option (utp)
* lt:don't leave slow-start just because we hit the advertized receive window
* lt:simplify and improve the uTP deferred ACK logic to respond earlier
* lt:improve logic for fast-retransmitting packets on incoming SACK
* lt:improve utp verbose logging a bit and make the parser pull out more
metrics
* lt:restore permissions on directories to 1.1. i.e. rely on umask
* lt:minor fix to invalid_request_alert logging
* lt:source code cleanup, performance and stability
1.2.0.20
* updated to OpenSSL 1.1.1a
* using android NDK r18b
* removed posix wrapper hack
* added support for BEP 53
* fixed priority values
* lt:add assignment operator to span
* lt:fix %u -> %d format codes
* lt:fix deprecation markup in torrent_status
* lt:tweak heuristic of how to interpret url seeds in multi-file torrents
* lt:added more TORRENT_DEPRECATED_ENUM and deprecated unused aio_max in
settings_pack
* lt:take a string_view in setting_by_name
* lt:fix typo in peer log
* lt:deprecate start_default_features flag, it's only used in deprecated API
* lt:remove verbose peer logging
* lt:make stack_allocator::format_string() grow the buffer for large strings
* lt:move where socket buffers are set up, to happen after the socket is
opened. log errors in the peer's log instead of session and torrent
* lt:add stats counter for the number of outstanding async_accept calls
* lt:fix potential issue where the dht port message is sent before the peer
handshake
* lt:correct %u format code for pieces in printf() calls
* lt:attempt to fix an assert for a newly connected peer that disconnects just
as we receive the metadata
* lt:don't use page aligned disk buffers
* lt:include &ipv4= for private trackers
* lt:add support for &ipv4= tracker argument
* lt:use new bdecoder in ut_metadata class
* lt:fix redundant bytes overflow
* lt:check for self-assignment in bitfield operator=
* lt:initialize bencoded ints with zero when constructed
* lt:exit natpmp::on_reply earlier if we're shutting down
* lt:fix setting ipv6 interface
* lt:a better fix to the ssl port announce bug
* lt:perfect forward async handlers for udp_socket to underlying asio socket
* lt:move the whole add_torrent_params object into save_resume_data_alert
* lt:actually fix the issue with the second tracker announce with port 0
* lt:remove redundant MTU boundary checks
* lt:fix of asio-debugging build in natpmp. resend_request could be called
directly, not only as a handler for an async operation
* lt:fix move_storage with save_path with a trailing slash
* lt:only make snubbed peers invert the piece picking strategy when we're
doing rarest first
* lt:source code cleanup, performance and stability
1.2.0.19
* lt:ssl listen port fix and improved tracker announce logging
* lt:properly tear down the disk_io_thread object in set_piece_hashes() when
exiting via an exception
* lt:make throwing versions of read_resume_data
* lt:fix overflow in sliding_average in the case of very high download rates
* lt:renamed debug_notification to connect_notification
* lt:fix issue in udp_socket with unusual socket failure
* lt:utp close-reason use after free fix
* lt:source code cleanup, performance and stability
* starting from jlibtorrent 1.2.0.18