-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog
734 lines (685 loc) · 34.2 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
* fixed reconnect delay when leaving upload only mode
* fixed default values being set incorrectly in add_torrent_params through add_magnet_uri in python bindings
* implemented unaligned write (for unbuffered I/O)
* fixed broadcast_lsd option
* fixed udp-socket race condition when using a proxy
* end-game mode optimizations
* fixed bug in udp_socket causing it to issue two simultaneous async. read operations
* fixed mingw build
* fixed minor bug in metadata block requester (for magnet links)
* fixed race condition in iconv string converter
* fixed error handling in torrent_info constructor
* fixed bug in torrent_info::remap_files
* fix python binding for wait_for_alert
* only apply privileged port filter to DHT-only peers
* fixed build with deprecated functions disabled
0.15.5 release
* support DHT extension to report external IPs
* fixed rare crash in http_connection's error handling
* avoid connecting to peers listening on ports < 1024
* optimized piece picking to not cause busy loops in some end-game modes
* fixed python bindings for tcp::endpoint
* fixed edge case of pad file support
* limit number of torrents tracked by DHT
* fixed bug when allow_multiple_connections_per_ip was enabled
* potential WOW64 fix for unbuffered I/O (windows)
* expose set_alert_queue_size_limit to python binding
* support dht nodes in magnet links
* support 100 Continue HTTP responses
* changed default choker behavior to use 8 unchoke slots (instead of being rate based)
* fixed error reporting issue in disk I/O thread
* fixed file allocation issues on linux
* fixed filename encoding and decoding issue on platforms using iconv
* reports redundant downloads to tracker, fixed downloaded calculation to
be more stable when not including redundant. Improved redundant data accounting
to be more accurate
* fixed bugs in http seed connection and added unit test for it
* fixed error reporting when fallocate fails
* deprecate support for separate proxies for separate kinds of connections
0.15.4 release
* fixed piece picker issue triggered by hash failure and timed out requests to the piece
* fixed optimistic unchoke issue when setting per torrent unchoke limits
* fixed UPnP shutdown issue
* fixed UPnP DeletePortmapping issue
* fixed NAT-PMP issue when adding the same mapping multiple times
* no peers from tracker when stopping is no longer an error
* improved web seed retry behavior
* fixed announce issue which could cause high CPU and memory usage
0.15.3 release
* fixed announce bug where event=completed would not be sent if it violated the
min-announce of the tracker
* fixed limitation in rate limiter
* fixed build error with boost 1.44
0.15.2 release
* updated compiler to msvc 2008 for python binding
* restored default fail_limit to unlimited on all trackers
* fixed rate limit bug for DHT
* fixed SOCKS5 bug for routing UDP packets
* fixed bug on windows when verifying resume data for a torrent where
one of its directories had been removed
* fixed race condition in peer-list with DHT
* fix force-reannounce and tracker retry issue
0.15.1 release
* fixed rare crash when purging the peer list
* fixed race condition around m_abort in session_impl
* fixed bug in web_peer_connection which could cause a hang when downloading
from web servers
* fixed bug in metadata extensions combined with encryption
* refactored socket reading code to not use async. operations unnecessarily
* some timer optimizations
* removed the reuse-address flag on the listen socket
* fixed bug where local peer discovery and DHT wouldn't be announced to without trackers
* fixed bug in bdecoder when decoding invalid messages
* added build warning when building with UNICODE but the standard library
doesn't provide std::wstring
* fixed add_node python binding
* fixed issue where trackers wouldn't tried immediately when the previous one failed
* fixed synchronization issue between download queue and piece picker
* fixed bug in udp tracker scrape response parsing
* fixed bug in the disk thread that could get triggered under heavy load
* fixed bug in add_piece() that would trigger asserts
* fixed vs 2010 build
* recognizes more clients in identify_client()
* fixed bug where trackers wouldn't be retried if they failed
* slight performance fix in disk elevator algorithm
* fixed potential issue where a piece could be checked twice
* fixed build issue on windows related to GetCompressedSize()
* fixed deadlock when starting torrents with certain invalid tracker URLs
* fixed iterator bug in disk I/O thread
* fixed FIEMAP support on linux
* fixed strict aliasing warning on gcc
* fixed inconsistency when creating torrents with symlinks
* properly detect windows version to initialize half-open connection limit
* fixed bug in url encoder where $ would not be encoded
0.15 release
* introduced a session state save mechanism. load_state() and save_state().
this saves all session settings and state (except torrents)
* deprecated dht_state functions and merged it with the session state
* added support for multiple trackers in magnet links
* added support for explicitly flushing the disk cache
* added torrent priority to affect bandwidth allocation for its peers
* reduced the number of floating point operations (to better support
systems without FPU)
* added new alert when individual files complete
* added support for storing symbolic links in .torrent files
* added support for uTorrent interpretation of multi-tracker torrents
* handle torrents with duplicate filenames
* piece timeouts are adjusted to download rate limits
* encodes urls in torrent files that needs to be encoded
* fixed not passing &supportcrypto=1 when encryption is disabled
* introduced an upload mode, which torrents are switched into when
it hits a disk write error, instead of stopping the torrent.
this lets libtorrent keep uploading the parts it has when it
encounters a disk-full error for instance
* improved disk error handling and expanded use of error_code in
error reporting. added a bandwidth state, bw_disk, when waiting
for the disk io thread to catch up writing buffers
* improved read cache memory efficiency
* added another cache flush algorithm to write the largest
contiguous blocks instead of the least recently used
* introduced a mechanism to be lighter on the disk when checking torrents
* applied temporary memory storage optimization to when checking
a torrent as well
* removed hash_for_slot() from storage_interface. It is now implemented
by using the readv() function from the storage implementation
* improved IPv6 support by announcing twice when necessary
* added feature to set a separate global rate limit for local peers
* added preset settings for low memory environments and seed machines
min_memory_usage() and high_performance_seeder()
* optimized overall memory usage for DHT nodes and requests, peer
entries and disk buffers
* change in API for block_info in partial_piece_info, instead of
accessing 'peer', call 'peer()'
* added support for fully automatic unchoker (no need to specify
number of upload slots). This is on by default
* added support for changing socket buffer sizes through
session_settings
* added support for merkle hash tree torrents (.merkle.torrent)
* added 'seed mode', which assumes that all files are complete
and checks hashes lazily, as blocks are requested
* added new extension for file attributes (executable and hidden)
* added support for unbuffered I/O for aligned files
* added workaround for sparse file issue on Windows Vista
* added new lt_trackers extension to exchange trackers between
peers
* added support for BEP 17 http seeds
* added read_piece() to read pieces from torrent storage
* added option for udp tracker preference
* added super seeding
* added add_piece() function to inject data from external sources
* add_tracker() function added to torrent_handle
* if there is no working tracker, current_tracker is the
tracker that is currently being tried
* torrents that are checking can now be paused, which will
pause the checking
* introduced another torrent state, checking_resume_data, which
the torrent is in when it's first added, and is comparing
the files on disk with the resume data
* DHT bandwidth usage optimizations
* rate limited DHT send socket
* tracker connections are now also subject to IP filtering
* improved optimistic unchoke logic
* added monitoring of the DHT lookups
* added bandwidth reports for estimated TCP/IP overhead and DHT
* includes DHT traffic in the rate limiter
* added support for bitcomet padding files
* improved support for sparse files on windows
* added ability to give seeding torrents preference to active slots
* added torrent_status::finished_time
* automatically caps files and connections by default to rlimit
* added session::is_dht_running() function
* added torrent_handle::force_dht_announce()
* added torrent_info::remap_files()
* support min_interval tracker extension
* added session saving and loading functions
* added support for min-interval in tracker responses
* only keeps one outstanding duplicate request per peer
reduces waste download, specifically when streaming
* added support for storing per-peer rate limits across reconnects
* improved fallocate support
* fixed magnet link issue when using resume data
* support disk I/O priority settings
* added info_hash to torrent_deleted_alert
* improved LSD performance and made the interval configurable
* improved UDP tracker support by caching connect tokens
* fast piece optimization
release 0.14.10
* fixed udp tracker race condition
* fixed error handling with torrents with invalid piece sizes
* added support for torrents with odd piece sizes
* fixed issue with disk read cache not being cleared when removing torrents
* made the DHT socket bind to the same interface as the session
* fixed issue where an http proxy would not be used on redirects
* Solaris build fixes
* disabled buggy disconnect_peers feature
release 0.14.9
* disabled feature to drop requests after having been skipped too many times
* fixed range request bug for files larger than 2 GB in web seeds
* don't crash when trying to create torrents with 0 files
* fixed big_number __init__ in python bindings
* fixed optimistic unchoke timer
* fixed bug where torrents with incorrectly formatted web seed URLs would be
connected multiple times
* fixed MinGW support
* fixed DHT bootstrapping issue
* fixed UDP over SOCKS5 issue
* added support for "corrupt" tracker announce
* made end-game mode less aggressive
release 0.14.8
* ignore unkown metadata messages
* fixed typo that would sometimes prevent queued torrents to be checked
* fixed bug in auto-manager where active_downloads and active_seeds would
sometimes be used incorrectly
* force_recheck() no longer crashes on torrents with no metadata
* fixed broadcast socket regression from 0.14.7
* fixed hang in NATPMP when shut down while waiting for a response
* fixed some more error handling in bdecode
release 0.14.7
* fixed deadlock in natpmp
* resume data alerts are always posted, regardless of alert mask
* added wait_for_alert to python binding
* improved invalid filename character replacement
* improved forward compatibility in DHT
* added set_piece_hashes that takes a callback to the python binding
* fixed division by zero in get_peer_info()
* fixed bug where pieces may have been requested before the metadata
was received
* fixed incorrect error when deleting files from a torrent where
not all files have been created
* announces torrents immediately to the DHT when it's started
* fixed bug in add_files that would fail to recurse if the path
ended with a /
* fixed bug in error handling when parsing torrent files
* fixed file checking bug when renaming a file before checking the torrent
* fixed race conditon when receiving metadata from swarm
* fixed assert in ut_metadata plugin
* back-ported some fixes for building with no exceptions
* fixed create_torrent when passing in a path ending with /
* fixed move_storage when source doesn't exist
* fixed DHT state save bug for node-id
* fixed typo in python binding session_status struct
* broadcast sockets now join every network interface (used for UPnP and
local peer discovery)
release 0.14.6
* various missing include fixes to be buildable with boost 1.40
* added missing functions to python binding related to torrent creation
* fixed to add filename on web seed urls that lack it
* fixed BOOST_ASIO_HASH_MAP_BUCKETS define for boost 1.39
* fixed checking of fast and suggest messages when used with magnet links
* fixed bug where web seeds would not disconnect if being resolved when
the torrent was paused
* fixed download piece performance bug in piece picker
* fixed bug in connect candidate counter
* replaces invalid filename characters with .
* added --with-libgeoip option to configure script to allow building and
linking against system wide library
* fixed potential pure virtual function call in extensions on shutdown
* fixed disk buffer leak in smart_ban extension
release 0.14.5
* fixed bug when handling malformed webseed urls and an http proxy
* fixed bug when setting unlimited upload or download rates for torrents
* fix to make torrent_status::list_peers more accurate.
* fixed memory leak in disk io thread when not using the cache
* fixed bug in connect candidate counter
* allow 0 upload slots
* fixed bug in rename_file(). The new name would not always be saved in
the resume data
* fixed resume data compatibility with 0.13
* fixed rare piece-picker bug
* fixed bug where one allowed-fast message would be sent even when
disabled
* fixed race condition in UPnP which could lead to crash
* fixed inversed seed_time ratio logic
* added get_ip_filter() to session
release 0.14.4
* connect candidate calculation fix
* tightened up disk cache memory usage
* fixed magnet link parser to accept hex-encoded info-hashes
* fixed inverted logic when picking which peers to connect to
(should mean a slight performance improvement)
* fixed a bug where a failed rename_file() would leave the storage
in an error state which would pause the torrent
* fixed case when move_storage() would fail. Added a new alert
to be posted when it does
* fixed crash bug when shutting down while checking a torrent
* fixed handling of web seed urls that didn't end with a
slash for multi-file torrents
* lowered the default connection speed to 10 connection attempts
per second
* optimized memory usage when checking files fails
* fixed bug when checking a torrent twice
* improved handling of out-of-memory conditions in disk I/O thread
* fixed bug when force-checking a torrent with partial pieces
* fixed memory leak in disk cache
* fixed torrent file path vulnerability
* fixed upnp
* fixed bug when dealing with clients that drop requests (i.e. BitComet)
fixes assert as well
release 0.14.3
* added python binding for create_torrent
* fixed boost-1.38 build
* fixed bug where web seeds would be connected before the files
were checked
* fixed filename bug when using wide characters
* fixed rare crash in peer banning code
* fixed potential HTTP compatibility issue
* fixed UPnP crash
* fixed UPnP issue where the control url contained the base url
* fixed a replace_trackers bug
* fixed bug where the DHT port mapping would not be removed when
changing DHT port
* fixed move_storage bug when files were renamed to be moved out
of the root directory
* added error handling for set_piece_hashes
* fixed missing include in enum_if.cpp
* fixed dual IP stack issue
* fixed issue where renamed files were sometimes not saved in resume data
* accepts tracker responses with no 'peers' field, as long as 'peers6'
is present
* fixed CIDR-distance calculation in the precense of IPv6 peers
* save partial resume data for torrents that are queued for checking
or checking, to maintain stats and renamed files
* Don't try IPv6 on windows if it's not installed
* move_storage fix
* fixed potential crash on shutdown
* fixed leaking exception from bdecode on malformed input
* fixed bug where connection would hang when receiving a keepalive
* fixed bug where an asio exception could be thrown when resolving
peer countries
* fixed crash when shutting down while checking a torrent
* fixed potential crash in connection_queue when a peer_connection
fail to open its socket
release 0.14.2
* added missing functions to the python bindings torrent_info::map_file,
torrent_info::map_block and torrent_info::file_at_offset.
* removed support for boost-1.33 and earlier (probably didn't work)
* fixed potential freezes issues at shutdown
* improved error message for python setup script
* fixed bug when torrent file included announce-list, but no valid
tracker urls
* fixed bug where the files requested from web seeds would be the
renamed file names instead of the original file names in the torrent.
* documentation fix of queing section
* fixed potential issue in udp_socket (affected udp tracker support)
* made name, comment and created by also be subject to utf-8 error
correction (filenames already were)
* fixed dead-lock when settings DHT proxy
* added missing export directives to lazy_entry
* fixed disk cache expiry settings bug (if changed, it would be set
to the cache size)
* fixed bug in http_connection when binding to a particular IP
* fixed typo in python binding (torrent_handle::piece_prioritize should
be torrent_handle::piece_priorities)
* fixed race condition when saving DHT state
* fixed bugs related to lexical_cast being locale dependent
* added support for SunPro C++ compiler
* fixed bug where messeges sometimes could be encrypted in the
wrong order, for encrypted connections.
* fixed race condition where torrents could get stuck waiting to
get checked
* fixed mapped files bug where it wouldn't be properly restored
from resume data properly
* removed locale dependency in xml parser (caused asserts on windows)
* fixed bug when talking to https 1.0 servers
* fixed UPnP bug that could cause stack overflow
release 0.14.1
* added converter for python unicode strings to utf-8 paths
* fixed bug in http downloader where the host field did not
include the port number
* fixed headers to not depend on NDEBUG, which would prohibit
linking a release build of libtorrent against a debug application
* fixed bug in disk I/O thread that would make the thread
sometimes quit when an error occurred
* fixed DHT bug
* fixed potential shutdown crash in disk_io_thread
* fixed usage of deprecated boost.filsystem functions
* fixed http_connection unit test
* fixed bug in DHT when a DHT state was loaded
* made rate limiter change in 0.14 optional (to take estimated
TCP/IP overhead into account)
* made the python plugin buildable through the makefile
* fixed UPnP bug when url base ended with a slash and
path started with a slash
* fixed various potentially leaking exceptions
* fixed problem with removing torrents that are checking
* fixed documentation bug regarding save_resume_data()
* added missing documentation on torrent creation
* fixed bugs in python client examples
* fixed missing dependency in package-config file
* fixed shared geoip linking in Jamfile
* fixed python bindings build on windows and made it possible
to generate a windows installer
* fixed bug in NAT-PMP implementation
release 0.14
* deprecated add_torrent() in favor of a new add_torrent()
that takes a struct with parameters instead. Torrents
are paused and auto managed by default.
* removed 'connecting_to_tracker' torrent state. This changes
the enum values for the other states.
* Improved seeding and choking behavior.
* Fixed rare buffer overrun bug when calling get_download_queue
* Fixed rare bug where torrent could be put back into downloading
state even though it was finished, after checking files.
* Fixed rename_file to work before the file on disk has been
created.
* Fixed bug in tracker connections in case of errors caused
in the connection constructor.
* Updated alert system to be filtered by category instead of
severity level. Alerts can generate a message through
alert::message().
* Session constructor will now start dht, upnp, natpmp, lsd by
default. Flags can be passed in to the constructor to not
do this, if these features are to be enabled and disabled
at a later point.
* Removed 'connecting_to_tracker' torrent state
* Fix bug where FAST pieces were cancelled on choke
* Fixed problems with restoring piece states when hash failed.
* Minimum peer reconnect time fix. Peers with no failures would
reconnect immediately.
* Improved web seed error handling
* DHT announce fixes and off-by-one loop fix
* Fixed UPnP xml parse bug where it would ignore the port number
for the control url.
* Fixed bug in torrent writer where the private flag was added
outside of the info dictionary
* Made the torrent file parser less strict of what goes in the
announce-list entry
* Fixed type overflow bug where some statistics was incorrectly
reported for file larger than 2 GB
* boost-1.35 support
* Fixed bug in statistics from web server peers where it sometimes
could report too many bytes downloaded.
* Fixed bug where statistics from the last second was lost when
disconnecting a peer.
* receive buffer optimizations (memcpy savings and memory savings)
* Support for specifying the TOS byte for peer traffic.
* Basic support for queueing of torrents.
* Better bias to give connections to downloading torrents
with fewer peers.
* Optimized resource usage (removed the checking thread)
* Support to bind outgoing connections to specific ports
* Disk cache support.
* New, more memory efficient, piece picker with sequential download
support (instead of the more complicated sequential download threshold).
* Auto Upload slots. Automtically opens up more slots if
upload limit is not met.
* Improved NAT-PMP support by querying the default gateway
* Improved UPnP support by ignoring routers not on the clients subnet.
release 0.13
* Added scrape support
* Added add_extension() to torrent_handle. Can instantiate
extensions for torrents while downloading
* Added support for remove_torrent to delete the files as well
* Fixed issue with failing async_accept on windows
* DHT improvements, proper error messages are now returned when
nodes sends bad packets
* Optimized the country table used to resolve country of peers
* Copying optimization for sending data. Data is no longer copied from
the disk I/O buffer to the send buffer.
* Buffer optimization to use a raw buffer instead of std::vector<char>
* Improved file storage to use sparse files
* Updated python bindings
* Added more clients to the identifiable clients list.
* Torrents can now be started in paused state (to better support queuing)
* Improved IPv6 support (support for IPv6 extension to trackers and
listens on both IPv6 and IPv4 interfaces).
* Improved asserts used. Generates a stacktrace on linux
* Piece picker optimizations and improvements
* Improved unchoker, connection limit and rate limiter
* Support for FAST extension
* Fixed invalid calculation in DHT node distance
* Fixed bug in URL parser that failed to parse IPv6 addresses
* added peer download rate approximation
* added port filter for outgoing connection (to prevent
triggering firewalls)
* made most parameters configurable via session_settings
* added encryption support
* added parole mode for peers whose data fails the hash check.
* optimized heap usage in piece-picker and web seed downloader.
* fixed bug in DHT where older write tokens weren't accepted.
* added support for sparse files.
* introduced speed categories for peers and pieces, to separate
slow and fast peers.
* added a half-open tcp connection limit that takes all connections
in to account, not just peer connections.
* added alerts for filtered IPs.
* added support for SOCKS4 and 5 proxies and HTTP CONNECT proxies.
* fixed proper distributed copies calculation.
* added option to use openssl for sha-1 calculations.
* optimized the piece picker in the case where a peer is a seed.
* added support for local peer discovery
* removed the dependency on the compiled boost.date_time library
* deprecated torrent_info::print()
* added UPnP support
* fixed problem where peer interested flags were not updated correctly
when pieces were filtered
* improvements to ut_pex messages, including support for seed flag
* prioritizes upload bandwidth to peers that might send back data
* the following functions have been deprecated:
void torrent_handle::filter_piece(int index, bool filter) const;
void torrent_handle::filter_pieces(std::vector<bool> const& pieces) const;
bool torrent_handle::is_piece_filtered(int index) const;
std::vector<bool> torrent_handle::filtered_pieces() const;
void torrent_handle::filter_files(std::vector<bool> const& files) const;
instead, use the piece_priority functions.
* added support for NAT-PMP
* added support for piece priorities. Piece filtering is now set as
a priority
* Fixed crash when last piece was smaller than one block and reading
fastresume data for that piece
* Makefiles should do a better job detecting boost
* Fixed crash when all tracker urls are removed
* Log files can now be created at user supplied path
* Log files failing to create is no longer fatal
* Fixed dead-lock in torrent_handle
* Made it build with boost 1.34 on windows
* Fixed bug in URL parser that failed to parse IPv6 addresses
* Fixed bug in DHT, related to IPv6 nodes
* DHT accepts transaction IDs that have garbage appended to them
* DHT logs messages that it fails to decode
release 0.12
* fixes to make the DHT more compatible
* http seed improvements including error reporting and url encoding issues.
* fixed bug where directories would be left behind when moving storage
in some cases.
* fixed crashing bug when restarting or stopping the DHT.
* added python binding, using boost.python
* improved character conversion on windows when strings are not utf-8.
* metadata extension now respects the private flag in the torrent.
* made the DHT to only be used as a fallback to trackers by default.
* added support for HTTP redirection support for web seeds.
* fixed race condition when accessing a torrent that was checking its
fast resume data.
* fixed a bug in the DHT which could be triggered if the network was
dropped or extremely rare cases.
* if the download rate is limited, web seeds will now only use left-over
bandwidth after all bt peers have used up as much bandwidth as they can.
* added the possibility to have libtorrent resolve the countries of
the peers in torrents.
* improved the bandwidth limiter (it now implements a leaky bucket/node bucket).
* improved the HTTP seed downloader to report accurate progress.
* added more client peer-id signatures to be recognized.
* added support for HTTP servers that skip the CR before the NL at line breaks.
* fixed bug in the HTTP code that only accepted headers case sensitive.
* fixed bug where one of the session constructors didn't initialize boost.filesystem.
* fixed bug when the initial checking of a torrent fails with an exception.
* fixed bug in DHT code which would send incorrect announce messages.
* fixed bug where the http header parser was case sensitive to the header
names.
* Implemented an optmization which frees the piece_picker once a torrent
turns into a seed.
* Added support for uT peer exchange extension, implemented by Massaroddel.
* Modified the quota management to offer better bandwidth balancing
between peers.
* logging now supports multiple sessions (different sessions now log
to different directories).
* fixed random number generator seed problem, generating the same
peer-id for sessions constructed the same second.
* added an option to accept multiple connections from the same IP.
* improved tracker logging.
* moved the file_pool into session. The number of open files is now
limited per session.
* fixed uninitialized private flag in torrent_info
* fixed long standing issue with file.cpp on windows. Replaced the low level
io functions used on windows.
* made it possible to associate a name with torrents without metadata.
* improved http-downloading performance by requesting entire pieces via
http.
* added plugin interface for extensions. And changed the interface for
enabling extensions.
release 0.11
* added support for incorrectly encoded paths in torrent files
(assumes Latin-1 encoding and converts to UTF-8).
* added support for destructing session objects asynchronously.
* fixed bug with file_progress() with files = 0 bytes
* fixed a race condition bug in udp_tracker_connection that could
cause a crash.
* fixed bug occuring when increasing the sequenced download threshold
with max availability lower than previous threshold.
* fixed an integer overflow bug occuring when built with gcc 4.1.x
* fixed crasing bug when closing while checking a torrent
* fixed bug causing a crash with a torrent with piece length 0
* added an extension to the DHT network protocol to support the
exchange of nodes with IPv6 addresses.
* modified the ip_filter api slightly to support IPv6
* modified the api slightly to make sequenced download threshold
a per torrent-setting.
* changed the address type to support IPv6
* fixed bug in piece picker which would not behave as
expected with regard to sequenced download threshold.
* fixed bug with file_progress() with files > 2 GB.
* added --enable-examples option to configure script.
* fixed problem with the resource distribution algorithm
(controlling e.g upload/download rates).
* fixed incorrect asserts in storage related to torrents with
zero-sized files.
* added support for trackerless torrents (with kademlia DHT).
* support for torrents with the private flag set.
* support for torrents containing bootstrap nodes for the
DHT network.
* fixed problem with the configure script on FreeBSD.
* limits the pipelining used on url-seeds.
* fixed problem where the shutdown always would delay for
session_settings::stop_tracker_timeout seconds.
* session::listen_on() won't reopen the socket in case the port and
interface is the same as the one currently in use.
* added http proxy support for web seeds.
* fixed problem where upload and download stats could become incorrect
in case of high cpu load.
* added more clients to the identifiable list.
* fixed fingerprint parser to cope with latest Mainline versions.
release 0.10
* fixed a bug where the requested number of peers in a tracker request could
be too big.
* fixed a bug where empty files were not created in full allocation mode.
* fixed a bug in storage that would, in rare cases, fail to do a
complete check.
* exposed more settings for tweaking parameters in the piece-picker,
downloader and uploader (http_settings replaced by session_settings).
* tweaked default settings to improve high bandwidth transfers.
* improved the piece picker performance and made it possible to download
popular pieces in sequence to improve disk performance.
* added the possibility to control upload and download limits per peer.
* fixed problem with re-requesting skipped pieces when peer was sending pieces
out of fifo-order.
* added support for http seeding (the GetRight protocol)
* renamed identifiers called 'id' in the public interface to support linking
with Objective.C++
* changed the extensions protocol to use the new one, which is also
implemented by uTorrent.
* factorized the peer_connection and added web_peer_connection which is
able to download from http-sources.
* converted the network code to use asio (resulted in slight api changes
dealing with network addresses).
* made libtorrent build in vc7 (patches from Allen Zhao)
* fixed bug caused when binding outgoing connections to a non-local interface.
* add_torrent() will now throw if called while the session object is
being closed.
* added the ability to limit the number of simultaneous half-open
TCP connections. Flags in peer_info has been added.
release 0.9.1
* made the session disable file name checks within the boost.filsystem library
* fixed race condition in the sockets
* strings that are invalid utf-8 strings are now decoded with the
local codepage on windows
* added the ability to build libtorrent both as a shared library
* client_test can now monitor a directory for torrent files and automatically
start and stop downloads while running
* fixed problem with file_size() when building on windows with unicode support
* added a new torrent state, allocating
* added a new alert, metadata_failed_alert
* changed the interface to session::add_torrent for some speed optimizations.
* greatly improved the command line control of the example client_test.
* fixed bug where upload rate limit was not being applied.
* files that are being checked will no longer stall files that don't need
checking.
* changed the way libtorrent identifies support for its excentions
to look for 'ext' at the end of the peer-id.
* improved performance by adding a circle buffer for the send buffer.
* fixed bugs in the http tracker connection when using an http proxy.
* fixed problem with storage's file pool when creating torrents and then
starting to seed them.
* hard limit on remote request queue and timeout on requests (a timeout
triggers rerequests). This makes libtorrent work much better with
"broken" clients like BitComet which may ignore requests.
Initial release 0.9
* multitracker support
* serves multiple torrents on a single port and a single thread
* supports http proxies and proxy authentication
* gzipped tracker-responses
* block level piece picker
* queues torrents for file check, instead of checking all of them in parallel
* uses separate threads for checking files and for main downloader
* upload and download rate limits
* piece-wise, unordered, incremental file allocation
* fast resume support
* supports files > 2 gigabytes
* supports the no_peer_id=1 extension
* support for udp-tracker protocol
* number of connections limit
* delays sending have messages
* can resume pieces downloaded in any order
* adjusts the length of the request queue depending on download rate
* supports compact=1
* selective downloading
* ip filter