forked from arvidn/libtorrent
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog
2103 lines (1907 loc) · 97.1 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
* 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 depenency on iconv
* deprecate set_file_hash() in torrent creator, as it's superceded 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 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 throught 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 refering 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 bindins 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 siffixes
* 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 objecs (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 depdendency 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 maintanence 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
devices at a known router. Should improve UPnP compatibility.
* include reason in peer_blocked_alert
* support magnet links wrapped in .torrent files
* rate limiter optimization
* rate limiter overflow fix (for very high limits)
* non-auto-managed torrents no longer count against the torrent limits
* handle DHT error responses correctly
* allow force_announce to only affect a single tracker
* add moving_storage field to torrent_status
* expose UPnP and NAT-PMP mapping in session object
* DHT refactoring and support for storing arbitrary data with put and get
* support building on android
* improved support for web seeds that don't support keep-alive
* improve DHT routing table to return better nodes (lower RTT and closer
to target)
* don't use pointers to resume_data and file_priorities in
add_torrent_params
* allow moving files to absolute paths, out of the download directory
* make move_storage more generic to allow both overwriting files as well
as taking existing ones
* fix choking issue at high upload rates
* optimized rate limiter
* make disk cache pool allocator configurable
* fix library ABI to not depend on logging being enabled
* use hex encoding instead of base32 in create_magnet_uri
* include name, save_path and torrent_file in torrent_status, for
improved performance
* separate anonymous mode and force-proxy mode, and tighten it up a bit
* add per-tracker scrape information to announce_entry
* report errors in read_piece_alert
* DHT memory optimization
* improve DHT lookup speed
* improve support for windows XP and earlier
* introduce global connection priority for improved swarm performance
* make files deleted alert non-discardable
* make built-in sha functions not conflict with libcrypto
* improve web seed hash failure case
* improve DHT lookup times
* uTP path MTU discovery improvements
* optimized the torrent creator optimizer to scale significantly better
with more files
* fix uTP edge case where udp socket buffer fills up
* fix nagle implementation in uTP
* fix bug in error handling in protocol encryption
0.16.18 release
* fix uninitialized values in DHT DOS mitigation
* fix error handling in file::phys_offset
* fix bug in HTTP scrape response parsing
* enable TCP keepalive for socks5 connection for UDP associate
* fix python3 support
* fix bug in lt_donthave extension
* expose i2p_alert to python. cleaning up of i2p connection code
* fixed overflow and download performance issue when downloading at high rates
* fixed bug in add_torrent_alert::message for magnet links
* disable optimistic disconnects when connection limit is low
* improved error handling of session::listen_on
* suppress initial 'completed' announce to trackers added with replace_trackers
after becoming a seed
* SOCKS4 fix for trying to connect over IPv6
* fix saving resume data when removing all trackers
* fix bug in udp_socket when changing socks5 proxy quickly
0.16.17 release
* don't fall back on wildcard port in UPnP
* fix local service discovery for magnet links
* fix bitfield issue in file_storage
* added work-around for MingW issue in file I/O
* fixed sparse file detection on windows
* fixed bug in gunzip
* fix to use proxy settings when adding .torrent file from URL
* fix resume file issue related to daylight savings time on windows
* improve error checking in lazy_bdecode
0.16.16 release
* add missing add_files overload to the python bindings
* improve error handling in http gunzip
* fix debug logging for banning web seeds
* improve support for de-selected files in full allocation mode
* fix dht_bootstrap_alert being posted
* SetFileValidData fix on windows (prevents zero-fill)
* fix minor lock_files issue on unix
0.16.15 release
* fix mingw time_t 64 bit issue
* fix use of SetFileValidData on windows
* fix crash when using full allocation storage mode
* improve error_code and error_category support in python bindings
* fix python binding for external_ip_alert
0.16.14 release
* make lt_tex more robust against bugs and malicious behavior
* HTTP chunked encoding fix
* expose file_granularity flag to python bindings
* fix DHT memory error
* change semantics of storage allocation to allocate on first write rather
than on startup (behaves better with changing file priorities)
* fix resend logic in response to uTP SACK messages
* only act on uTP RST packets with correct ack_nr
* make uTP errors log in normal log mode (not require verbose)
* deduplicate web seed entries from torrent files
* improve error reporting from lazy_decode()
0.16.13 release
* fix auto-manage issue when pausing session
* fix bug in non-sparse mode on windows, causing incorrect file errors to
be generated
* fix set_name() on file_storage actually affecting save paths
* fix large file support issue on mingw
* add some error handling to set_piece_hashes()
* fix completed-on timestamp to not be clobbered on each startup
* fix deadlock caused by some UDP tracker failures
* fix potential integer overflow issue in timers on windows
* minor fix to peer_proportional mixed_mode algorithm (TCP limit could go
too low)
* graceful pause fix
* i2p fixes
* fix issue when loading certain malformed .torrent files
* pass along host header with http proxy requests and possible
http_connection shutdown hang
0.16.12 release