-
-
Notifications
You must be signed in to change notification settings - Fork 1k
/
ChangeLog
2232 lines (2020 loc) · 104 KB
/
ChangeLog
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
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
2.0.11 not released
* fix race condition when cancelling requests after becoming a seed
* fix performance bug in the file pool, evicting MRU instead of LRU (HanabishiRecca)
* fix bug where file_progress could sometimes be reported as >100%
* don't hint FADV_RANDOM on posix systems. May improve seeding performance
* allow boost connect while checking resume data if no_verify_files flag is set
* fix BEP-40 peer priority for IPv6
* limit piece size in torrent creator
* fix file pre-allocation when changing file priority (HanabishiRecca)
* fix uTP issue where closing the connection could corrupt the payload
* apply DSCP/TOS to sockets before initiating the TCP connection
* assume copy_file_range() exists on linux (unless old glibc)
* fix issue where set_piece_deadline() did not correctly post read_piece_alert
* fix integer overflow in piece picker
* torrent_status::num_pieces counts pieces passed hash check, as documented
* check settings_pack::max_out_request_queue before performance alert
* add announce_port setting to override the port announced to trackers
2.0.10 released
* allow on_unknown_torrent method in the absence of active torrents (new plugin feature added)
* add feature to async_move_storage() to not move files
* fix reject resume data if it contains mismatching info hashes
* fix clear the candidate_cache when clear peer_list
* fix missing python converter for dht::announce_flags_t
2.0.9 released
* fix issue with web seed connections when they close and re-open
* fallocate() not supported is not a fatal error
* fix proxying of IPv6 connections via IPv4 proxy
* treat CGNAT address range as local IPs
* add stricter checking of piece layers when loading torrents
* add stricter checking of v1 and v2 hashes being consistent
* cache failed DNS lookups as well as successful ones
* add an i2p torrent state to control interactions with clear swarms
* fix i2p SAM protocol parsing of quoted messages
* expose i2p peer destination in peer_info
* fix i2p tracker announces
* fix issue with read_piece() stopping torrent on pieces not yet downloaded
* improve handling of allow_i2p_mixed setting to work for magnet links
* fix web seed request for renamed single-file torrents
* fix issue where web seeds could disappear from resume data
* extend save_resume with additional conditional flags
* fix issue with retrying trackers in tiers > 0
* fix last_upload and last_download resume data fields to use posix time
* improve error messages for no_connect_privileged_ports, by untangle it from the port filter
* fix I2P issue introduced in 2.0.0
* add async tracker status query, post_trackers()
* add async torrent status query, post_status()
* support loading version 2 of resume data format
* fix issue with odd piece sizes
* add async piece availability query, post_piece_availability()
* add async download queue query, post_download_queue()
* add async file_progress query, post_file_progress()
* add async peer_info query, post_peer_info()
2.0.8 released
* fix uTP streams timing out instead of closing cleanly
* add write_torrent_file_buf() overload for generating .torrent files
* add create_torrent::generate_buf() function to generate into a buffer
* fix copy_file when the file ends with a sparse region
* uTP performance, fix packet loss when sending is stalled
* fix trackers being stuck after session pause/resume
* fix bug in hash_picker with empty files
* uTP performance, prevent premature timeouts/resends
* add option to not memory map files below a certain size
* settings_pack now returns default values when queried for missing settings
* fix copy_file fall-back when SEEK_HOL/SEEK_DATA is not supported
* improve error reporting from file copy and move
* tweak pad file placement to match reference implementation (tail-padding)
* uTP performance, more lenient nagle's algorithm to always allow one outstanding undersized packet
* uTP performance, piggy-back held back undersized packet with ACKs
* uTP performance, don't send redundant deferred ACKs
* support incoming SOCKS5 packets with hostnames as source address, for UDP trackers
* ignore duplicate network interface change notifications on linux
* fix total_want/want accounting when forcing a recheck
* fix merging metadata with magnet links added on top of existing torrents
* add torrent_flag to default all file priorities to dont_download
* fix &so= feature in magnet links
* improve compatibility of SOCKS5 UDP ASSOCIATE
* fix madvise range for flushing cache in mmap_storage
* open files with no_cache set in O_SYNC mode
* 2.0.7 released
* fix issue in use of copy_file_range() on linux
* avoid open-file race in the file_view_pool
* fix issue where stop-when-ready would not close files
* fix issue with duplicate hybrid torrent via separate v1 and v2 magnet links
* added new function to load torrent files, load_torrent_*()
* support sync_file_range() on linux
* fix issue in write_torrent_file() when file size is exactly piece size
* fix file_num_blocks() and file_num_pieces() for empty files
* add new overload to make_magnet_uri()
* add missing protocol version to tracker_reply_alert and tracker_error_alert
* fix privilege issue with SetFileValidData()
* add asynchronous overload of torrent_handle::add_piece()
* default to a single hashing thread, for full checks
* Fix bug when checking files and the first piece is invalid
* 2.0.6 released
* fix issue creating a v2 torrent from torrent_info containing an empty file
* make recheck files also update which files use partfile
* add write_through disk_io_write_mode, which flushes pieces to disk immediately
* improve copy file function to preserve sparse regions (when supported)
* add function to truncate over-sized files part of a torrent
* fix directory creation on windows shared folders
* add flag to make add_files() not record file attributes
* deprecate (unused) allow_partial_disk_writes settings
* fix disk-full error reporting in mmap_disk_io
* fixed similar-torrents feature for v2 torrents
* fix potential unbounded recursion in add_completed_job, in disk I/O
* deprecated (unused) volatile_read_cache setting
* fix part files being marked as hidden on windows
* 2.0.5 released
* on windows, explicitly flush memory mapped files periodically
* fix build with WolfSSL
* fix issue where incoming uTP connections were not accepted over SOCKS5
* fix several issues in handling of checking files of v2 torrents, esp. from magnet links
* make the token limit when parsing metadata from magnet files configurable
* fix issue with stalled pieces on disk full errors
* fix missing python binding for file_progress_flags
* fix torrent_file_with_hashes() to fail when we don't have the piece layers
* restore path character encoding conversion for non UTF-8 locales on linux
* fix use-after-free bug in make_magnet_uri
* add write_torrent_file() to produce a .torrent file from add_torrent_params
* allow loading v2 .torrent files without piece layer
* fix issue with adding v2 torrents with invalid file root hash
* 2.0.4 released
* fix piece picker bug causing double-picks with prefer-contiguous enabled
* expose session_params in python bindings
* fix (deprecated) use of add_torrent_params::info_hash
* fix issue creating and loading v2 torrents with empty files. Improves
conformance to BEP52 reference implementation
* 2.0.3 released
* add new torrent_file_with_hashes() which includes piece layers for
creating .torrent files
* add file_prio_alert, posted when file priorities are updated
* fix issue where set_piece_hashes() would not propagate file errors
* add missing python binding for event_t
* add work-around for systems without fseeko() (such as Android)
* add convenience header libtorrent/libtorrent.hpp
* increase default max_allowed_in_request_queue
* fix loading non-ascii filenames on windows with torrent_info constructor (2.0 regression)
* add std::hash<> specialization for info_hash_t
* fix integer overflow in hash_picker and properly restrict max file sizes in torrents
* strengthen SSRF mitigation for web seeds
* 2.0.2 released
* add v1() and v2() functions to torrent_info
* fix piece_layers() to work for single-piece files
* fix python binding regression in session constructor flags
* fix unaligned piece requests in mmap_storage
* improve client_data_t ergonomics
* fix issue with concurrent access to part files
* 2.0.1 released
* fix attribute in single-file v2 torrent creation
* fix padding for empty files in v2 torrent creation
* add function to ask a file_storage whether it's v2 or not
* fix mtime field when creating single-file v2 torrents
* fix performance regression in checking files
* disable use of SetFileValidData() by default (windows). A new setting
allows enabling it
2.0 released
* dropped dependency on iconv
* deprecate set_file_hash() in torrent creator, as it's superseded by v2 torrents
* deprecate mutable access to info_section in torrent_info
* removed deprecated lazy_entry/lazy_bdecode
* stats_alert deprecated
* remove bittyrant choking algorithm
* update userdata in add_torrent_params to be type-safe and add to torrent_handle
* add ip_filter to session_params
* added support for wolfSSL for SHA-1 hash and HTTPS (no Torrents over SSL)
* requires OpenSSL minimum version 1.0.0 with SNI support
* deprecated save_state() and load_state() on session in favour of new
write_session_params() and read_session_params()
* added support for BitTorrent v2 (see docs/upgrade_to_2.0.html)
* create_torrent() pad_file_limit parameter removed
* create_torrent() merkle- and optimize-alignment flags removed
* merkle_tree removed from add_torrent_params
* announce_entry expose information per v1 and v2 info-hash announces
* deprecated sha1_hash info_hash members on torrent_removed_alert,
torrent_deleted_alert, torrent_delete_failed_alert and add_torrent_params
* undeprecate error_file_metadata for torrent errors related to its metadata
* remove support for adding a torrent under a UUID (used for previous RSS support)
* remove deprecated feature to add torrents by file:// URL
* remove deprecated feature to download .torrent file from URL
* requires boost >= 1.66 to build
* update networking API to networking TS compatible boost.asio
* overhauled disk I/O subsystem to use memory mapped files (where available)
* libtorrent now requires C++14 to build
* added support for GnuTLS for HTTPS and torrents over SSL
* fix issue where stop-when-ready would not close files
* uTP performance, fix packet loss when sending is stalled
* uTP performance, prevent premature timeouts/resends
* uTP performance, more lenient nagle's algorithm to always allow one outstanding undersized packet
* uTP performance, piggy-back held back undersized packet with ACKs
* uTP performance, don't send redundant deferred ACKs
* fix wanted_done/done accounting when force-rechecking
* expose userdata via torrent_handle (back-port from 2.0)
* fix renaming of filenames that are too long for the filesystem
* made UPnP and LSD code avoid using select_reactor (to work around an issue on windows in boost.asio < 1.80)
1.2.17 released
* fixed tracker connections spinning when hostname lookups stall
* fixed error in pkg-config file generation in Jamfile
* improve backwards compatibility with loading magnet link resume files
* fix bind-to-device for tracker announces and UPnP
* rename peer_tos setting to peer_dscp
* fix bdecode support for large strings (>= 100 MB)
1.2.16 released
* send User-Agent field in anonymous mode
* fix python binding for settings_pack conversion
* fix DHT announce timer issue
* use DSCP_TRAFFIC_TYPE socket option on windows
* update default ToS setting according to RFC 8622
* keep trying to announce to trackers even when all fail
* don't disable announcing from local endpoints because of temporary failures
* fix issue in parsing UPnP XML response with multiple forwarding services
1.2.15 released
* cache DNS lookups for SOCKS5 proxy
* fix stalled pieces on disk-full errors
* fix build configuration issue on NetBSD, OpenBSD and DragonFly
* make UTF-8 sanitization a bit stricter. This will re-write invalid UTF-8
code points encoding surrogate pairs
* fix restoring last_seen_complete from resume data
* fix issue on MacOS where the DHT was not restarted on a network-up notification
* make remove_torrent flags be treated as flags (instead of an enum)
1.2.14 released
* improve handling of seed flag in PEX messages
* fix issue of accruing unlimited DHT node candidates when DHT is disabled
* fix bug in parsing chunked encoding
* fix incorrect reporting of active_duration when entering graceful-pause
* fix python binding for functions taking string_view
* fix python binding for torrent_info constructor overloads
* issue python deprecation warnings for some deprecated functions in the python bindings
* fix python binding for torrent_info::add_url_seed, add_tracker and add_http_seed
1.2.13 released
* Use /etc/ssl/cert.pem to validate HTTPS connections on MacOS
* allow no-interest timeouts of peer connections before all connections slots are full
* fix issue where a DHT message would count as an incoming connection
* fix issue when failing to parse outgoing_interfaces setting
* fix super-seeding issue that could cause a segfault
* fix data race in python binding of session::get_torrent_status()
* fix need_save_resume_data() for renaming files, share-mode, upload-mode,
disable- pex, lsd, and dht.
* fix incoming TCP connections when using tracker-only proxy
* fix issue with paths starting with ./
* fix integer overflow when setting a high DHT upload rate limit
* improve Path MTU discovery logic in uTP
* fix overflow issue when rlimit_nofile is set to infinity
* fix issue in python binding interpreting int settings > INT_MAX
* Fix cxxflags and linkflags injection via environment variables
1.2.12 released
* fix loading of DHT node ID from previous session on startup
* use getrandom(), when available, and fall back to /dev/urandom
* fix python binding for "value" in dht put alerts
* fix bug in python binding for dht_put_mutable_item
* fix uTP issue acking FIN packets
* validate HTTPS certificates by default (trackers and web seeds)
* load SSL certificates from windows system certificate store, to authenticate trackers
* introduce mitigation for Server Side Request Forgery in tracker and web seed URLs
* fix error handling for pool allocation failure
1.2.11 released
* fix issue with moving the session object
* deprecate torrent_status::allocating. This state is no longer used
* fix bug creating torrents with symbolic links
* remove special case to save metadata in resume data unconditionally when added through magnet link
* fix bugs in mutable-torrent support (reusing identical files from different torrents)
* fix incorrectly inlined move-assignment of file_storage
* add session::paused flag, and the ability to construct a session in paused mode
* fix session-pause causing tracker announces to fail
* fix peer-exchange flags bug
* allow saving resume data before metadata has been downloaded (for magnet links)
* record blocks in the disk queue as downloaded in the resume data
* fix bug in set_piece_deadline() when set in a zero-priority piece
* fix issue in URL parser, causing issues with certain tracker URLs
* use a different error code than host-unreachable, when skipping tracker announces
1.2.10 released
* fix regression in python binding for move_storage()
* improve stat_file() performance on Windows
* fix issue with loading invalid torrents with only 0-sized files
* fix to avoid large stack allocations
1.2.9 released
* add macro TORRENT_CXX11_ABI for clients building with C++14 against
libtorrent build with C++11
* refreshed m4 scripts for autotools
* removed deprecated wstring overloads on non-windows systems
* drop dependency on Unicode's ConvertUTF code (which had a license
incompatible with Debian)
* fix bugs exposed on big-endian systems
* fix detection of hard-links not being supported by filesystem
* fixed resume data regression for seeds with prio 0 files
1.2.8 released
* validate UTF-8 encoding of client version strings from peers
* don't time out tracker announces as eagerly while resolving hostnames
* fix NAT-PMP shutdown issue
* improve hostname lookup by merging identical lookups
* fix network route enumeration for large routing tables
* fixed issue where pop_alerts() could return old, invalid alerts
* fix issue when receiving have-all message before the metadata
* don't leave lingering part files handles open
* disallow calling add_piece() during checking
* fix incorrect filename truncation at multi-byte character
* always announce listen port 1 when using a proxy
1.2.7 released
* add set_alert_fd in python binding, to supersede set_alert_notify
* fix bug in part files > 2 GiB
* add function to clear the peer list for a torrent
* fix resume data functions to save/restore more torrent flags
* limit number of concurrent HTTP announces
* fix queue position for force_rechecking a torrent that is not auto-managed
* improve rate-based choker documentation, and minor tweak
* undeprecate upnp_ignore_nonrouters (but referring to devices on our subnet)
* increase default tracker timeout
* retry failed socks5 server connections
* allow UPnP lease duration to be changed after device discovery
* fix IPv6 address change detection on Windows
1.2.6 released
* fix peer timeout logic
* simplify proxy handling. A proxy now overrides listen_interfaces
* fix issues when configured to use a non-default choking algorithm
* fix issue in reading resume data
* revert NXDOMAIN change from 1.2.4
* don't open any listen sockets if listen_interfaces is empty or misconfigured
* fix bug in auto disk cache size logic
* fix issue with outgoing_interfaces setting, where bind() would be called twice
* add build option to disable share-mode
* support validation of HTTPS trackers
* deprecate strict super seeding mode
* make UPnP port-mapping lease duration configurable
* deprecate the bittyrant choking algorithm
* add build option to disable streaming
1.2.5 release
* announce port=1 instead of port=0, when there is no listen port
* fix LSD over IPv6
* support TCP_NOTSENT_LOWAT on Linux
* fix correct interface binding of local service discovery multicast
* fix issue with knowing which interfaces to announce to trackers and DHT
* undeprecate settings_pack::dht_upload_rate_limit
1.2.4 release
* fix binding TCP and UDP sockets to the same port, when specifying port 0
* fix announce_to_all_trackers and announce_to_all_tiers behavior
* fix suggest_read_cache setting
* back-off tracker hostname looksups resulting in NXDOMAIN
* lower SOCKS5 UDP keepalive timeout
* fix external IP voting for multi-homed DHT nodes
* deprecate broadcast_lsd setting. Just use multicast
* deprecate upnp_ignore_nonrouters setting
* don't attempt sending event=stopped if event=start never succeeded
* make sure &key= stays consistent between different source IPs (as mandated by BEP7)
* fix binding sockets to outgoing interface
* add new socks5_alert to trouble shoot SOCKS5 proxies
1.2.3 release
* fix erroneous event=completed tracker announce when checking files
* promote errors in parsing listen_interfaces to post listen_failed_alert
* fix bug in protocol encryption/obfuscation
* fix buffer overflow in SOCKS5 UDP logic
* fix issue of rapid calls to file_priority() clobbering each other
* clear tracker errors on success
* optimize setting with unlimited unchoke slots
* fixed restoring of trackers, comment, creation date and created-by in resume data
* fix handling of torrents with too large pieces
* fixed division by zero in anti-leech choker
* fixed bug in torrent_info::swap
1.2.2 release
* fix cases where the disable_hash_checks setting was not honored
* fix updating of is_finished torrent status, when changing piece priorities
* fix regression in &left= reporting when adding a seeding torrent
* fix integer overflow in http parser
* improve sanitation of symlinks, to support more complex link targets
* add DHT routing table affinity for BEP 42 nodes
* add torrent_info constructor overloads to control torrent file limits
* feature to disable DHT, PEX and LSD per torrent
* fix issue where trackers from magnet links were not included in create_torrent()
* make peer_info::client a byte array in python binding
* pick contiguous pieces from peers with high download rate
* fix error handling of moving storage to a drive letter that isn't mounted
* fix HTTP Host header when using proxy
1.2.1 release
* add dht_pkt_alert and alerts_dropped_alert to python bindings
* fix python bindings for block_uploaded_alert
* optimize resolving duplicate filenames in loading torrent files
* fix python binding of dht_settings
* tighten up various input validation checks
* fix create_torrent python binding
* update symlinks to conform to BEP 47
* fix python bindings for peer_info
* support creating symlinks, for torrents with symlinks in them
* fix error in seed_mode flag
* support magnet link parameters with number suffixes
* consistently use "lt" namespace in examples and documentation
* fix Mingw build to use native cryptoAPI
* uPnP/NAT-PMP errors no longer set the client's advertised listen port to zero
1.2 release
* requires boost >= 1.58 to build
* tweak heuristic of how to interpret url seeds in multi-file torrents
* support &ipv4= tracker argument for private torrents
* renamed debug_notification to connect_notification
* when updating listen sockets, only post alerts for new ones
* deprecate anonymous_mode_alert
* deprecated force_proxy setting (when set, the proxy is always used)
* add support for Port Control Protocol (PCP)
* deliver notification of alerts being dropped via alerts_dropped_alert
* deprecated alert::progress_notification alert category, split into
finer grained categories
* update plugin interface functions for improved type-safety
* implemented support magnet URI extension, select specific file indices
for download, BEP53
* make tracker keys multi-homed. remove set_key() function on session.
* add flags()/set_flags()/unset_flags() to torrent_handle, deprecate individual functions
* added alert for block being sent to the send buffer
* drop support for windows compilers without std::wstring
* implemented support for DHT info hash indexing, BEP51
* removed deprecated support for file_base in file_storage
* added support for running separate DHT nodes on each network interface
* added support for establishing UTP connections on any network interface
* added support for sending tracker announces on every network interface
* introduce "lt" namespace alias
* need_save_resume_data() will no longer return true every 15 minutes
* make the file_status interface explicitly public types
* added resolver_cache_timeout setting for internal host name resolver
* make parse_magnet_uri take a string_view instead of std::string
* deprecate add_torrent_params::url field. use parse_magnet_uri instead
* optimize download queue management
* deprecated (undocumented) file:// urls
* add limit for number of web seed connections
* added support for retrieval of DHT live nodes
* complete UNC path support
* add packets pool allocator
* remove disk buffer pool allocator
* fix last_upload and last_download overflow after 9 hours in past
* python binding add more add_torrent_params fields and an invalid key check
* introduce introduce distinct types for peer_class_t, piece_index_t and
file_index_t.
* fix crash caused by empty bitfield
* removed disk-access-log build configuration
* removed mmap_cache feature
* strengthened type safety in handling of piece and file indices
* deprecate identify_client() and fingerprint type
* make sequence number for mutable DHT items backed by std::int64_t
* tweaked storage_interface to have stronger type safety
* deprecate relative times in torrent_status, replaced by std::chrono::time_point
* refactor in alert types to use more const fields and more clear API
* changed session_stats_alert counters type to signed (std::int64_t)
* remove torrent eviction/ghost torrent feature
* include target in DHT lookups, when queried from the session
* improve support for HTTP redirects for web seeds
* use string_view in entry interface
* deprecate "send_stats" property on trackers (since lt_tracker extension has
been removed)
* remove deprecate session_settings API (use settings_pack instead)
* improve file layout optimization when creating torrents with padfiles
* remove remote_dl_rate feature
* source code migration from boost::shared_ptr to std::shared_ptr
* storage_interface API changed to use span and references
* changes in public API to work with std::shared_ptr<torrent_info>
* extensions API changed to use span and std::shared_ptr
* plugin API changed to handle DHT requests using string_view
* removed support for lt_trackers and metadata_transfer extensions
(pre-dating ut_metadata)
* support windows' CryptoAPI for SHA-1
* separated ssl and crypto options in build
* remove lazy-bitfield feature
* simplified suggest-read-cache feature to not depend on disk threads
* removed option to disable contiguous receive buffers
* deprecated public to_hex() and from_hex() functions
* separated address and port fields in listen alerts
* added support for parsing new x.pe parameter from BEP 9
* peer_blocked_alert now derives from peer_alert
* transitioned exception types to system_error
* made alerts move-only
* move files one-by-one when moving storage for a torrent
* removed RSS support
* removed feature to resolve country for peers
* added support for BEP 32, "IPv6 extension for DHT"
* overhauled listen socket and UDP socket handling, improving multi-home
support and bind-to-device
* resume data is now communicated via add_torrent_params objects
* added new read_resume_data()/write_resume_data functions to write bencoded,
backwards compatible resume files
* removed deprecated fields from add_torrent_params
* deprecate "resume_data" field in add_torrent_params
* improved support for bind-to-device
* deprecated ssl_listen, SSL sockets are specified in listen_interfaces now
* improved support for listening on multiple sockets and interfaces
* resume data no longer has timestamps of files
* require C++11 to build libtorrent
* replace use of boost-endian with boost-predef
1.1.12 release
* uTP performance fixes
1.1.11 release
* fix move_storage with save_path with a trailing slash
* fix tracker announce issue, advertising port 0 in secondary IPv6 announce
* fix missing boost/noncopyable.hpp includes
* fix python binding for torrent_info::creation_date()
1.1.10 release
* fix issue in udp_socket with unusual socket failure
* split progress_notification alert category into file-, piece- and block progress
* utp close-reason fix
* exposed default add_torrent_params flags to python bindings
* fix redundant flushes of partfile metadata
* add option to ignore min-interval from trackers on force-reannounce
* raise default setting for active_limit
* fall back to copy+remove if rename_file fails
* improve handling of filesystems not supporting fallocate()
* force-proxy no longer disables DHT
* improve connect-boost feature, to make new torrents quickly connect peers
1.1.9 release
* save both file and piece priorities in resume file
* added missing stats_metric python binding
* uTP connections are no longer exempt from rate limits by default
* fix exporting files from partfile while seeding
* fix potential deadlock on Windows, caused by performing restricted
tasks from within DllMain
* fix issue when subsequent file priority updates cause torrent to stop
1.1.8 release
* coalesce reads and writes by default on windows
* fixed disk I/O performance of checking hashes and creating torrents
* fix race condition in part_file
* fix part_file open mode compatibility test
* fixed race condition in random number generator
* fix race condition in stat_cache (disk storage)
* improve error handling of failing to change file priority
The API for custom storage implementations was altered
* set the hidden attribute when creating the part file
* fix tracker announces reporting more data downloaded than the size of the torrent
* fix recent regression with force_proxy setting
1.1.7 release
* don't perform DNS lookups for the DHT bootstrap unless DHT is enabled
* fix issue where setting file/piece priority would stop checking
* expose post_dht_stats() to python binding
* fix backwards compatibility to downloads without partfiles
* improve part-file related error messages
* fix reporting &redundant= in tracker announces
* fix tie-break in duplicate peer connection disconnect logic
* fix issue with SSL tracker connections left in CLOSE_WAIT state
* defer truncating existing files until the first time we write to them
* fix issue when receiving a torrent with 0-sized padfiles as magnet link
* fix issue resuming 1.0.x downloads with a file priority 0
* fix torrent_status::next_announce
* fix pad-file scalability issue
* made coalesce_reads/coalesce_writes settings take effect on linux and windows
* use unique peer_ids per connection
* fix iOS build on recent SDK
* fix tracker connection bind issue for IPv6 trackers
* fix error handling of some merkle torrents
* fix error handling of unsupported hard-links
1.1.6 release
* deprecate save_encryption_settings (they are part of the normal settings)
* add getters for peer_class_filter and peer_class_type_filter
* make torrent_handler::set_priority() to use peer_classes
* fix support for boost-1.66 (requires C++11)
* fix i2p support
* fix loading resume data when in seed mode
* fix part-file creation race condition
* fix issue with initializing settings on session construction
* fix issue with receiving interested before metadata
* fix IPv6 tracker announce issue
* restore path sanitization behavior of ":"
* fix listen socket issue when disabling "force_proxy" mode
* fix full allocation failure on APFS
1.1.5 release
* fix infinite loop when parsing certain invalid magnet links
* fix parsing of torrents with certain invalid filenames
* fix leak of torrent_peer objects (entries in peer_list)
* fix leak of peer_class objects (when setting per-torrent rate limits)
* expose peer_class API to python binding
* fix integer overflow in whole_pieces_threshold logic
* fix uTP path MTU discovery issue on windows (DF bit was not set correctly)
* fix python binding for torrent_handle, to be hashable
* fix IPv6 tracker support by performing the second announce in more cases
* fix utf-8 encoding check in torrent parser
* fix infinite loop when parsing maliciously crafted torrents
* fix invalid read in parse_int in bdecoder (CVE-2017-9847)
* fix issue with very long tracker- and web seed URLs
* don't attempt to create empty files on startup, if they already exist
* fix force-recheck issue (new files would not be picked up)
* fix inconsistency in file_priorities and override_resume_data behavior
* fix paused torrents not generating a state update when their ul/dl rate
transitions to zero
1.1.4 release
* corrected missing const qualifiers on bdecode_node
* fix changing queue position of paused torrents (1.1.3 regression)
* fix re-check issue after move_storage
* handle invalid arguments to set_piece_deadline()
* move_storage did not work for torrents without metadata
* improve shutdown time by only announcing to trackers whose IP we know
* fix python3 portability issue in python binding
* delay 5 seconds before reconnecting socks5 proxy for UDP ASSOCIATE
* fix NAT-PMP crash when removing a mapping at the wrong time
* improve path sanitization (filter unicode text direction characters)
* deprecate partial_piece_info::piece_state
* bind upnp requests to correct local address
* save resume data when removing web seeds
* fix proxying of https connections
* fix race condition in disk I/O storage class
* fix http connection timeout on multi-homed hosts
* removed dependency on boost::uintptr_t for better compatibility
* fix memory leak in the disk cache
* fix double free in disk cache
* forward declaring libtorrent types is discouraged. a new fwd.hpp header is provided
1.1.3 release
* removed (broken) support for incoming connections over socks5
* restore announce_entry's timestamp fields to posix time in python binding
* deprecate torrent_added_alert (in favor of add_torrent_alert)
* fix python binding for parse_magnet_uri
* fix minor robustness issue in DHT bootstrap logic
* fix issue where torrent_status::num_seeds could be negative
* document deprecation of dynamic loading/unloading of torrents
* include user-agent in tracker announces in anonymous_mode for private torrents
* add support for IPv6 peers from udp trackers
* correctly URL encode the IPv6 argument to trackers
* fix default file pool size on windows
* fix bug where settings_pack::file_pool_size setting was not being honored
* add feature to periodically close files (to make windows clear disk cache)
* fix bug in torrent_handle::file_status
* fix issue with peers not updated on metadata from magnet links
1.1.2 release
* default TOS marking to 0x20
* fix invalid access when leaving seed-mode with outstanding hash jobs
* fix ABI compatibility issue introduced with preformatted entry type
* add web_seed_name_lookup_retry to session_settings
* slightly improve proxy settings backwards compatibility
* add function to get default settings
* updating super seeding would include the torrent in state_update_alert
* fix issue where num_seeds could be greater than num_peers in torrent_status
* finished non-seed torrents can also be in super-seeding mode
* fix issue related to unloading torrents
* fixed finished-time calculation
* add missing min_memory_usage() and high_performance_seed() settings presets to python
* fix stat cache issue that sometimes would produce incorrect resume data
* storage optimization to peer classes
* fix torrent name in alerts of builds with deprecated functions
* make torrent_info::is_valid() return false if torrent failed to load
* fix per-torrent rate limits for >256 peer classes
* don't load user_agent and peer_fingerprint from session_state
* fix file rename issue with name prefix matching torrent name
* fix division by zero when setting tick_interval > 1000
* fix move_storage() to its own directory (would delete the files)
* fix socks5 support for UDP
* add setting urlseed_max_request_bytes to handle large web seed requests
* fix python build with CC/CXX environment
* add trackers from add_torrent_params/magnet links to separate tiers
* fix resumedata check issue with files with priority 0
* deprecated mmap_cache feature
* add utility function for generating peer ID fingerprint
* fix bug in last-seen-complete
* remove file size limit in torrent_info filename constructor
* fix tail-padding for last file in create_torrent
* don't send user-agent in metadata http downloads or UPnP requests when
in anonymous mode
* fix internal resolve links lookup for mutable torrents
* hint DHT bootstrap nodes of actual bootstrap request
1.1.1 release
* update puff.c for gzip inflation (CVE-2016-7164)
* add dht_bootstrap_node a setting in settings_pack (and add default)
* make pad-file and symlink support conform to BEP47
* fix piece picker bug that could result in division by zero
* fix value of current_tracker when all tracker failed
* deprecate lt_trackers extension
* remove load_asnum_db and load_country_db from python bindings
* fix crash in session::get_ip_filter when not having set one
* fix filename escaping when repairing torrents with broken web seeds
* fix bug where file_completed_alert would not be posted unless file_progress
had been queries by the client
* move files one-by-one when moving storage for a torrent
* fix bug in enum_net() for BSD and Mac
* fix bug in python binding of announce_entry
* fixed bug related to flag_merge_resume_http_seeds flag in add_torrent_params
* fixed inverted priority of incoming piece suggestions
* optimize allow-fast logic
* fix issue where FAST extension messages were not used during handshake
* fixed crash on invalid input in http_parser
* upgraded to libtommath 1.0
* fixed parsing of IPv6 endpoint with invalid port character separator
* added limited support for new x.pe parameter from BEP 9
* fixed dht stats counters that weren't being updated
* make sure add_torrent_alert is always posted before other alerts for
the torrent
* fixed peer-class leak when settings per-torrent rate limits
* added a new "preformatted" type to bencode entry variant type
* improved Socks5 support and test coverage
* fix set_settings in python binding
* Added missing alert categories in python binding
* Added dht_get_peers_reply_alert alert in python binding
* fixed updating the node id reported to peers after changing IPs
1.1.0 release
* improve robustness and performance of uTP PMTU discovery
* fix duplicate ACK issue in uTP
* support filtering which parts of session state are loaded by load_state()
* deprecate support for adding torrents by HTTP URL
* allow specifying which tracker to scrape in scrape_tracker
* tracker response alerts from user initiated announces/scrapes are now
posted regardless of alert mask
* improve DHT performance when changing external IP (primarily affects
bootstrapping).
* add feature to stop torrents immediately after checking files is done
* make all non-auto managed torrents exempt from queuing logic, including
checking torrents.
* add option to not proxy tracker connections through proxy
* removed sparse-regions feature
* support using 0 disk threads (to perform disk I/O in network thread)
* removed deprecated handle_alert template
* enable logging build config by default (but alert mask disabled by default)
* deprecated RSS API
* experimental support for BEP 38, "mutable torrents"
* replaced lazy_bdecode with a new bdecoder that's a lot more efficient
* deprecate time functions, expose typedefs of boost::chrono in the
libtorrent namespace instead
* deprecate file_base feature in file_storage/torrent_info
* changed default piece and file priority to 4 (previously 1)
* improve piece picker support for reverse picking (used for snubbed peers)
to not cause priority inversion for regular peers
* improve piece picker to better support torrents with very large pieces
and web seeds. (request large contiguous ranges, but not necessarily a
whole piece).
* deprecated session_status and session::status() in favor of performance
counters.
* improve support for HTTP where one direction of the socket is shut down.
* remove internal fields from web_seed_entry
* separate crypto library configuration <crypto> and whether to support
bittorrent protocol encryption <encryption>
* simplify bittorrent protocol encryption by just using internal RC4
implementation.
* optimize copying torrent_info and file_storage objects
* cancel non-critical DNS lookups when shutting down, to cut down on
shutdown delay.
* greatly simplify the debug logging infrastructure. logs are now delivered
as alerts, and log level is controlled by the alert mask.
* removed auto_expand_choker. use rate_based_choker instead
* optimize UDP tracker packet handling
* support SSL over uTP connections
* support web seeds that resolve to multiple IPs
* added auto-sequential feature. download well-seeded torrents in-order
* removed built-in GeoIP support (this functionality is orthogonal to
libtorrent)
* deprecate proxy settings in favor of regular settings
* deprecate separate settings for peer protocol encryption
* support specifying listen interfaces and outgoing interfaces as device
names (eth0, en2, tun0 etc.)
* support for using purgrable memory as disk cache on Mac OS.
* be more aggressive in corking sockets, to coalesce messages into larger
packets.
* pre-emptively unchoke peers to save one round-trip at connection start-up.
* add session constructor overload that takes a settings_pack
* torrent_info is no longer an intrusive_ptr type. It is held by shared_ptr.
This is a non-backwards compatible change
* move listen interface and port to the settings
* move use_interfaces() to be a setting
* extend storage interface to allow deferred flushing and flush the part-file
metadata periodically
* make statistics propagate instantly rather than on the second tick
* support for partfiles, where partial pieces belonging to skipped files are
put
* support using multiple threads for socket operations (especially useful for
high performance SSL connections)
* allow setting rate limits for arbitrary peer groups. Generalizes
per-torrent rate limits, and local peer limits
* improved disk cache complexity O(1) instead of O(log(n))
* add feature to allow storing disk cache blocks in an mmapped file
(presumably on an SSD)
* optimize peer connection distribution logic across torrents to scale
better with many torrents
* replaced std::map with boost::unordered_map for torrent list, to scale
better with many torrents
* optimized piece picker
* optimized disk cache
* optimized .torrent file parsing
* optimized initialization of storage when adding a torrent
* added support for adding torrents asynchronously (for improved startup
performance)
* added support for asynchronous disk I/O
* almost completely changed the storage interface (for custom storage)
* added support for hashing pieces in multiple threads
* fix padfile issue
* fix PMTUd bug
* update puff to fix gzip crash
1.0.10 release
* fixed inverted priority of incoming piece suggestions
* fixed crash on invalid input in http_parser
* added a new "preformatted" type to bencode entry variant type
* fix division by zero in super-seeding logic
1.0.9 release
* fix issue in checking outgoing interfaces (when that option is enabled)
* python binding fix for boost-1.60.0
* optimize enumeration of network interfaces on windows
* improve reliability of binding listen sockets
* support SNI in https web seeds and trackers
* fix unhandled exception in DHT when receiving a DHT packet over IPv6
1.0.8 release
* fix bug where web seeds were not used for torrents added by URL
* fix support for symlinks on windows
* fix long filename issue (on unixes)
* fixed performance bug in DHT torrent eviction
* fixed win64 build (GetFileAttributesEx)
* fixed bug when deleting files for magnet links before they had metadata
1.0.7 release
* fix bug where loading settings via load_state() would not trigger all
appropriate actions
* fix bug where 32 bit builds could use more disk cache than the virtual
address space (when set to automatic)
* fix support for torrents with > 500'000 pieces
* fix ip filter bug when banning peers
* fix IPv6 IP address resolution in URLs
* introduce run-time check for torrent info-sections being too large
* fix web seed bug when using proxy and proxy-peer-connections=false
* fix bug in magnet link parser
* introduce add_torrent_params flags to merge web seeds with resume data
(similar to trackers)
* fix bug where dont_count_slow_torrents could not be disabled
* fix fallocate hack on linux (fixes corruption on some architectures)
* fix auto-manage bug with announce to tracker/lsd/dht limits
* improve DHT routing table to not create an unbalanced tree
* fix bug in uTP that would cause any connection taking more than one second
to connect be timed out (introduced in the vulnerability path)
* fixed falling back to sending UDP packets direct when socks proxy fails
* fixed total_wanted bug (when setting file priorities in add_torrent_params)
* fix python3 compatibility with sha1_hash
1.0.6 release
* fixed uTP vulnerability
* make utf8 conversions more lenient
* fix loading of piece priorities from resume data
* improved seed-mode handling (seed-mode will now automatically be left when
performing operations implying it's not a seed)
* fixed issue with file priorities and override resume data
* fix request queue size performance issue
* slightly improve UDP tracker performance
* fix http scrape
* add missing port mapping functions to python binding
* fix bound-checking issue in bdecoder
* expose missing dht_settings fields to python
* add function to query the DHT settings
* fix bug in 'dont_count_slow_torrents' feature, which would start too many
torrents
1.0.5 release
* improve ip_voter to avoid flapping
* fixed bug when max_peerlist_size was set to 0
* fix issues with missing exported symbols when building dll
* fix division by zero bug in edge case while connecting peers
1.0.4 release
* fix bug in python binding for file_progress on torrents with no metadata
* fix assert when removing a connected web seed
* fix bug in tracker timeout logic
* switch UPnP post back to HTTP 1.1
* support conditional DHT get
* OpenSSL build fixes
* fix DHT scrape bug
1.0.3 release
* python binding build fix for boost-1.57.0
* add --enable-export-all option to configure script, to export all symbols
from libtorrent
* fix if_nametoindex build error on windows
* handle overlong utf-8 sequences
* fix link order bug in makefile for python binding
* fix bug in interest calculation, causing premature disconnects
* tweak flag_override_resume_data semantics to make more sense (breaks
backwards compatibility of edge-cases)
* improve DHT bootstrapping and periodic refresh
* improve DHT maintenance performance (by pinging instead of full lookups)
* fix bug in DHT routing table node-id prefix optimization
* fix incorrect behavior of flag_use_resume_save_path
* fix protocol race-condition in super seeding mode
* support read-only DHT nodes
* remove unused partial hash DHT lookups
* remove potentially privacy leaking extension (non-anonymous mode)
* peer-id connection ordering fix in anonymous mode
* mingw fixes
1.0.2 release
* added missing force_proxy to python binding
* anonymous_mode defaults to false
* make DHT DOS detection more forgiving to bursts
* support IPv6 multicast in local service discovery
* simplify CAS function in DHT put
* support IPv6 traffic class (via the TOS setting)
* made uTP re-enter slow-start after time-out
* fixed uTP upload performance issue
* fix missing support for DHT put salt
1.0.1 release
* fix alignment issue in bitfield
* improved error handling of gzip
* fixed crash when web seeds redirect
* fix compiler warnings
1.0 release
* fix bugs in convert_to/from_native() on windows
* fix support for web servers not supporting keepalive
* support storing save_path in resume data
* don't use full allocation on network drives (on windows)
* added clear_piece_deadlines() to remove all piece deadlines
* improve queuing logic of inactive torrents (dont_count_slow_torrents)
* expose optimistic unchoke logic to plugins
* fix issue with large UDP packets on windows
* remove set_ratio() feature
* improve piece_deadline/streaming
* honor pieces with priority 7 in sequential download mode
* simplified building python bindings
* make ignore_non_routers more forgiving in the case there are no UPnP