AUTO_LT_SYNC
[tore.git] / libtorrent / ChangeLog
blobd7d31253d838edb18dd2330a4106e7d9e04e8cd1
2         * tracker connections are now also subject to IP filtering
3         * improved optimistic unchoke logic
4         * added monitoring of the DHT lookups
5         * added bandwidth reports for estimated TCP/IP overhead and DHT
6         * includes DHT traffic in the rate limiter
8 release 0.14
10         * deprecated add_torrent() in favor of a new add_torrent()
11           that takes a struct with parameters instead. Torrents
12           are paused and auto managed by default.
13         * removed 'connecting_to_tracker' torrent state. This changes
14           the enum values for the other states.
15         * Improved seeding and choking behavior.
16         * Fixed rare buffer overrun bug when calling get_download_queue
17         * Fixed rare bug where torrent could be put back into downloading
18           state even though it was finished, after checking files.
19         * Fixed rename_file to work before the file on disk has been
20           created.
21         * Fixed bug in tracker connections in case of errors caused
22           in the connection constructor.
23         * Updated alert system to be filtered by category instead of
24           severity level. Alerts can generate a message through
25           alert::message().
26         * Session constructor will now start dht, upnp, natpmp, lsd by
27           default. Flags can be passed in to the constructor to not
28           do this, if these features are to be enabled and disabled
29           at a later point.
30         * Removed 'connecting_to_tracker' torrent state
31         * Fix bug where FAST pieces were cancelled on choke
32         * Fixed problems with restoring piece states when hash failed.
33         * Minimum peer reconnect time fix. Peers with no failures would
34           reconnect immediately.
35         * Improved web seed error handling
36         * DHT announce fixes and off-by-one loop fix
37         * Fixed UPnP xml parse bug where it would ignore the port number
38           for the control url.
39         * Fixed bug in torrent writer where the private flag was added
40           outside of the info dictionary
41         * Made the torrent file parser less strict of what goes in the
42           announce-list entry
43         * Fixed type overflow bug where some statistics was incorrectly
44           reported for file larger than 2 GB
45         * boost-1.35 support
46         * Fixed bug in statistics from web server peers where it sometimes
47           could report too many bytes downloaded.
48         * Fixed bug where statistics from the last second was lost when
49           disconnecting a peer.
50         * receive buffer optimizations (memcpy savings and memory savings)
51         * Support for specifying the TOS byte for peer traffic.
52         * Basic support for queueing of torrents.
53         * Better bias to give connections to downloading torrents
54           with fewer peers.
55         * Optimized resource usage (removed the checking thread)
56         * Support to bind outgoing connections to specific ports
57         * Disk cache support.
58         * New, more memory efficient, piece picker with sequential download
59           support (instead of the more complicated sequential download threshold).
60         * Auto Upload slots. Automtically opens up more slots if
61           upload limit is not met.
62         * Improved NAT-PMP support by querying the default gateway
63         * Improved UPnP support by ignoring routers not on the clients subnet.
65 release 0.13
66         
67         * Added scrape support
68         * Added add_extension() to torrent_handle. Can instantiate
69           extensions for torrents while downloading
70         * Added support for remove_torrent to delete the files as well
71         * Fixed issue with failing async_accept on windows
72         * DHT improvements, proper error messages are now returned when
73           nodes sends bad packets
74         * Optimized the country table used to resolve country of peers
75         * Copying optimization for sending data. Data is no longer copied from
76           the disk I/O buffer to the send buffer.
77         * Buffer optimization to use a raw buffer instead of std::vector<char>
78         * Improved file storage to use sparse files
79         * Updated python bindings
80         * Added more clients to the identifiable clients list.
81         * Torrents can now be started in paused state (to better support queuing)
82         * Improved IPv6 support (support for IPv6 extension to trackers and
83           listens on both IPv6 and IPv4 interfaces).
84         * Improved asserts used. Generates a stacktrace on linux
85         * Piece picker optimizations and improvements
86         * Improved unchoker, connection limit and rate limiter
87         * Support for FAST extension
88         * Fixed invalid calculation in DHT node distance
89         * Fixed bug in URL parser that failed to parse IPv6 addresses
90         * added peer download rate approximation
91         * added port filter for outgoing connection (to prevent
92           triggering firewalls)
93         * made most parameters configurable via session_settings
94         * added encryption support
95         * added parole mode for peers whose data fails the hash check.
96         * optimized heap usage in piece-picker and web seed downloader.
97         * fixed bug in DHT where older write tokens weren't accepted.
98         * added support for sparse files.
99         * introduced speed categories for peers and pieces, to separate
100           slow and fast peers.
101         * added a half-open tcp connection limit that takes all connections
102           in to account, not just peer connections.
103         * added alerts for filtered IPs.
104         * added support for SOCKS4 and 5 proxies and HTTP CONNECT proxies.
105         * fixed proper distributed copies calculation.
106         * added option to use openssl for sha-1 calculations.
107         * optimized the piece picker in the case where a peer is a seed.
108         * added support for local peer discovery
109         * removed the dependency on the compiled boost.date_time library
110         * deprecated torrent_info::print()
111         * added UPnP support
112         * fixed problem where peer interested flags were not updated correctly
113           when pieces were filtered
114         * improvements to ut_pex messages, including support for seed flag
115         * prioritizes upload bandwidth to peers that might send back data
116         * the following functions have been deprecated:
117                 void torrent_handle::filter_piece(int index, bool filter) const;
118                 void torrent_handle::filter_pieces(std::vector<bool> const& pieces) const;
119                 bool torrent_handle::is_piece_filtered(int index) const;
120                 std::vector<bool> torrent_handle::filtered_pieces() const;
121                 void torrent_handle::filter_files(std::vector<bool> const& files) const;
122           
123           instead, use the piece_priority functions.
124           
125         * added support for NAT-PMP
126         * added support for piece priorities. Piece filtering is now set as
127           a priority
128         * Fixed crash when last piece was smaller than one block and reading
129           fastresume data for that piece
130         * Makefiles should do a better job detecting boost
131         * Fixed crash when all tracker urls are removed
132         * Log files can now be created at user supplied path
133         * Log files failing to create is no longer fatal
134         * Fixed dead-lock in torrent_handle
135         * Made it build with boost 1.34 on windows
136         * Fixed bug in URL parser that failed to parse IPv6 addresses
137         * Fixed bug in DHT, related to IPv6 nodes
138         * DHT accepts transaction IDs that have garbage appended to them
139         * DHT logs messages that it fails to decode
141 release 0.12
143         * fixes to make the DHT more compatible
144         * http seed improvements including error reporting and url encoding issues.
145         * fixed bug where directories would be left behind when moving storage
146           in some cases.
147         * fixed crashing bug when restarting or stopping the DHT.
148         * added python binding, using boost.python
149         * improved character conversion on windows when strings are not utf-8.
150         * metadata extension now respects the private flag in the torrent.
151         * made the DHT to only be used as a fallback to trackers by default.
152         * added support for HTTP redirection support for web seeds.
153         * fixed race condition when accessing a torrent that was checking its
154           fast resume data.
155         * fixed a bug in the DHT which could be triggered if the network was
156           dropped or extremely rare cases.
157         * if the download rate is limited, web seeds will now only use left-over
158           bandwidth after all bt peers have used up as much bandwidth as they can.
159         * added the possibility to have libtorrent resolve the countries of
160           the peers in torrents.
161         * improved the bandwidth limiter (it now implements a leaky bucket/node bucket).
162         * improved the HTTP seed downloader to report accurate progress.
163         * added more client peer-id signatures to be recognized.
164         * added support for HTTP servers that skip the CR before the NL at line breaks.
165         * fixed bug in the HTTP code that only accepted headers case sensitive.
166         * fixed bug where one of the session constructors didn't initialize boost.filesystem. 
167         * fixed bug when the initial checking of a torrent fails with an exception.
168         * fixed bug in DHT code which would send incorrect announce messages.
169         * fixed bug where the http header parser was case sensitive to the header
170           names.
171         * Implemented an optmization which frees the piece_picker once a torrent
172           turns into a seed.
173         * Added support for uT peer exchange extension, implemented by Massaroddel.
174         * Modified the quota management to offer better bandwidth balancing
175           between peers.
176         * logging now supports multiple sessions (different sessions now log
177           to different directories).
178         * fixed random number generator seed problem, generating the same
179           peer-id for sessions constructed the same second.
180         * added an option to accept multiple connections from the same IP.
181         * improved tracker logging.
182         * moved the file_pool into session. The number of open files is now
183           limited per session.
184         * fixed uninitialized private flag in torrent_info
185         * fixed long standing issue with file.cpp on windows. Replaced the low level
186           io functions used on windows.
187         * made it possible to associate a name with torrents without metadata.
188         * improved http-downloading performance by requesting entire pieces via
189           http.
190         * added plugin interface for extensions. And changed the interface for
191           enabling extensions.
193 release 0.11
195         * added support for incorrectly encoded paths in torrent files
196           (assumes Latin-1 encoding and converts to UTF-8).
197         * added support for destructing session objects asynchronously.
198         * fixed bug with file_progress() with files = 0 bytes
199         * fixed a race condition bug in udp_tracker_connection that could
200           cause a crash.
201         * fixed bug occuring when increasing the sequenced download threshold
202           with max availability lower than previous threshold.
203         * fixed an integer overflow bug occuring when built with gcc 4.1.x
204         * fixed crasing bug when closing while checking a torrent
205         * fixed bug causing a crash with a torrent with piece length 0
206         * added an extension to the DHT network protocol to support the
207           exchange of nodes with IPv6 addresses.
208         * modified the ip_filter api slightly to support IPv6
209         * modified the api slightly to make sequenced download threshold
210           a per torrent-setting.
211         * changed the address type to support IPv6
212         * fixed bug in piece picker which would not behave as
213           expected with regard to sequenced download threshold.
214         * fixed bug with file_progress() with files > 2 GB.
215         * added --enable-examples option to configure script.
216         * fixed problem with the resource distribution algorithm
217           (controlling e.g upload/download rates).
218         * fixed incorrect asserts in storage related to torrents with
219           zero-sized files.
220         * added support for trackerless torrents (with kademlia DHT).
221         * support for torrents with the private flag set.
222         * support for torrents containing bootstrap nodes for the
223           DHT network.
224         * fixed problem with the configure script on FreeBSD.
225         * limits the pipelining used on url-seeds.
226         * fixed problem where the shutdown always would delay for
227           session_settings::stop_tracker_timeout seconds.
228         * session::listen_on() won't reopen the socket in case the port and
229           interface is the same as the one currently in use.
230         * added http proxy support for web seeds.
231         * fixed problem where upload and download stats could become incorrect
232           in case of high cpu load.
233         * added more clients to the identifiable list.
234         * fixed fingerprint parser to cope with latest Mainline versions.
236 release 0.10
238         * fixed a bug where the requested number of peers in a tracker request could
239           be too big.
240         * fixed a bug where empty files were not created in full allocation mode.
241         * fixed a bug in storage that would, in rare cases, fail to do a
242           complete check.
243         * exposed more settings for tweaking parameters in the piece-picker,
244           downloader and uploader (http_settings replaced by session_settings).
245         * tweaked default settings to improve high bandwidth transfers.
246         * improved the piece picker performance and made it possible to download
247           popular pieces in sequence to improve disk performance.
248         * added the possibility to control upload and download limits per peer.
249         * fixed problem with re-requesting skipped pieces when peer was sending pieces
250           out of fifo-order.
251         * added support for http seeding (the GetRight protocol)
252         * renamed identifiers called 'id' in the public interface to support linking
253           with Objective.C++
254         * changed the extensions protocol to use the new one, which is also
255           implemented by uTorrent.
256         * factorized the peer_connection and added web_peer_connection which is
257           able to download from http-sources.
258         * converted the network code to use asio (resulted in slight api changes
259           dealing with network addresses).
260         * made libtorrent build in vc7 (patches from Allen Zhao)
261         * fixed bug caused when binding outgoing connections to a non-local interface.
262         * add_torrent() will now throw if called while the session object is
263           being closed.
264         * added the ability to limit the number of simultaneous half-open
265           TCP connections. Flags in peer_info has been added.
267 release 0.9.1
269         * made the session disable file name checks within the boost.filsystem library
270         * fixed race condition in the sockets
271         * strings that are invalid utf-8 strings are now decoded with the
272           local codepage on windows
273         * added the ability to build libtorrent both as a shared library
274         * client_test can now monitor a directory for torrent files and automatically
275           start and stop downloads while running
276         * fixed problem with file_size() when building on windows with unicode support
277         * added a new torrent state, allocating
278         * added a new alert, metadata_failed_alert
279         * changed the interface to session::add_torrent for some speed optimizations.
280         * greatly improved the command line control of the example client_test.
281         * fixed bug where upload rate limit was not being applied.
282         * files that are being checked will no longer stall files that don't need
283           checking.
284         * changed the way libtorrent identifies support for its excentions
285           to look for 'ext' at the end of the peer-id.
286         * improved performance by adding a circle buffer for the send buffer.
287         * fixed bugs in the http tracker connection when using an http proxy.
288         * fixed problem with storage's file pool when creating torrents and then
289           starting to seed them.
290         * hard limit on remote request queue and timeout on requests (a timeout
291           triggers rerequests). This makes libtorrent work much better with
292           "broken" clients like BitComet which may ignore requests.
294 Initial release 0.9
296         * multitracker support
297         * serves multiple torrents on a single port and a single thread
298         * supports http proxies and proxy authentication
299         * gzipped tracker-responses
300         * block level piece picker
301         * queues torrents for file check, instead of checking all of them in parallel
302         * uses separate threads for checking files and for main downloader
303         * upload and download rate limits
304         * piece-wise, unordered, incremental file allocation
305         * fast resume support
306         * supports files > 2 gigabytes
307         * supports the no_peer_id=1 extension
308         * support for udp-tracker protocol
309         * number of connections limit
310         * delays sending have messages
311         * can resume pieces downloaded in any order
312         * adjusts the length of the request queue depending on download rate
313         * supports compact=1
314         * selective downloading
315         * ip filter