Commit Graph

510 Commits

Author SHA1 Message Date
Arvid Norberg 2cfbfd203f made tests build and pass in trunk. fixed issues in trunk revealed by the tests. fixed failing torrent invariant check in trunk and rc0.13 2008-03-14 10:17:27 +00:00
Arvid Norberg f53cfa7eeb removed checker thread 2008-03-08 06:06:31 +00:00
Arvid Norberg 9d3b60edb7 added support to bind outgoing connections to specific ports (might be useful to do traffic shaping) 2008-02-28 07:34:07 +00:00
Arvid Norberg a25c25b02a fixed windows build and removed msvc warnings 2008-02-25 10:28:53 +00:00
Arvid Norberg 333839c9b4 piece picker update 2008-02-18 03:07:14 +00:00
Arvid Norberg b6493bb4ef fixed typo 2008-02-17 20:57:16 +00:00
Arvid Norberg ea1ce8172f Fixed preprocessor directive error. Fixes #273 2008-02-17 20:42:56 +00:00
Arvid Norberg 7e83c3fc51 changed storage interface to not require exceptions 2008-02-14 03:48:20 +00:00
Arvid Norberg 8cf0510144 added disk cache for write operations 2008-02-08 10:22:05 +00:00
Arvid Norberg a53473a65d added new logging mode to log peer errors 2008-02-07 07:09:52 +00:00
Arvid Norberg c798ab30e1 rewrote the piece picker to be more cpu and memory efficient. replaces the concept of sequential-download-threshold with just a sequential download settings 2008-01-31 17:52:29 +00:00
Arvid Norberg 61bbc6e58f initial https support for trackers and http_connection. Added support for proxies to http_connection 2008-01-27 22:39:50 +00:00
Arvid Norberg 5527a8e9b1 fixed build issue on msvc 2008-01-27 21:03:33 +00:00
Arvid Norberg 8b455be1d9 better exception handling and more invariant checks 2008-01-19 19:00:54 +00:00
Arvid Norberg 365b8c07c6 iterator fixes (to avoid triggering safe iterator asserts) 2008-01-19 18:12:02 +00:00
Arvid Norberg 4a92dae541 fixed typo 2008-01-17 21:25:19 +00:00
Arvid Norberg 4b3ba58ad2 disconnect all fix 2008-01-17 20:03:59 +00:00
Arvid Norberg 127d3e6ad5 bandwidth limiter fixes. proper priority that cannot starve connections 2008-01-17 17:40:46 +00:00
Arvid Norberg 832c0c8b63 improved auto-unchoke mechanism 2008-01-15 08:37:48 +00:00
Arvid Norberg b19bf337bf generalized peer read/write state 2008-01-13 23:46:43 +00:00
Arvid Norberg 3f4474caba per torrent bandwidth limiter fix 2008-01-13 22:27:33 +00:00
Arvid Norberg 3a727e99ff expose more info through peer_info 2008-01-10 22:13:23 +00:00
Arvid Norberg 695cd6407b remove use of strand 2008-01-08 05:47:43 +00:00
Arvid Norberg 1d6e0f5bf6 bandwidth request block size optimization 2008-01-07 04:47:20 +00:00
Arvid Norberg cf4036310b changed the way connections are disconnected. improved logging. Does not depend on exceptions anymore 2008-01-07 01:10:46 +00:00
Arvid Norberg 1c816fa608 removes peers from bandwidth request queue when disconnecting 2008-01-06 00:58:51 +00:00
Arvid Norberg fcd2408f11 fast extension fix, added some logging for fast extension messages, improved test to catch the problem 2008-01-02 03:18:29 +00:00
Arvid Norberg ddf16fb3bb separated bandwidth_manager into bandwidht_limit and bandwidth_queue_entry and fixed problems related to #225 2007-12-31 09:41:50 +00:00
Arvid Norberg ae0e53820b added missing return statement 2007-12-29 07:16:36 +00:00
Arvid Norberg eb8ea0f461 made torrent_info not rely on exception support 2007-12-28 20:11:10 +00:00
Arvid Norberg bc656acebb fix limiting incoming connections to torrent limit 2007-12-27 10:19:36 +00:00
Arvid Norberg d1311e2bb8 improved session logging 2007-12-19 21:36:54 +00:00
Arvid Norberg 9aa2ddec80 added a plugin 'smart_ban' that can ban peers sending bad data with higher accuracy 2007-12-18 06:04:54 +00:00
Arvid Norberg 0943c0d299 added more asserts to make sure m_num_pieces is >= the number of pieces the piece picker thinks we have 2007-12-15 22:51:03 +00:00
Arvid Norberg 948f53a8af assert fix 2007-12-14 06:09:44 +00:00
Arvid Norberg db082dd5d2 added asserts for total_wanted_done 2007-12-09 19:38:17 +00:00
Arvid Norberg d695a44360 fixed bug where tracker wouldn't be announced when deleting files 2007-12-07 03:09:21 +00:00
Arvid Norberg b817412b90 fixed overflow bug in total_done() (as reported by MassaRoddel) 2007-11-30 06:14:45 +00:00
Arvid Norberg bfc4be1ca5 fixed #27 2007-11-28 02:54:46 +00:00
Arvid Norberg 1cc0118c9c supports retry for web seeds that respond with 503 2007-11-27 03:37:47 +00:00
Arvid Norberg 254e4ffce4 added extra asserts in torrent 2007-11-26 23:08:59 +00:00
Arvid Norberg c92fef5b69 simplified torrent_handle by using a macro and moving the big chunks of code into torrent (get_download_queue() and get_peer_info()) 2007-11-25 18:48:43 +00:00
Arvid Norberg b00096ad33 lsd and dht usage improvements 2007-11-25 09:33:26 +00:00
Arvid Norberg 41ffc87d98 fixed typo 2007-11-20 23:19:30 +00:00
Arvid Norberg fabfe6cd50 added scrape support 2007-11-20 22:46:27 +00:00
Arvid Norberg fd11e07a55 memory optimization to free piece hashes is now optional 2007-11-19 04:58:52 +00:00
Arvid Norberg 3c8587f919 fixed bug where removing all trackers would crash libtorrent. Fixes #205 2007-11-16 19:35:09 +00:00
Arvid Norberg 2ea9fb2851 improved error handling when deleting files 2007-11-16 19:04:43 +00:00
Arvid Norberg bab4695028 added test for replace_trackers and removed incorrect assert 2007-11-15 10:11:39 +00:00
Arvid Norberg 95d09070fb cancels more async operations on shutdown 2007-11-11 19:09:29 +00:00
Arvid Norberg 80e8aa0a18 add_extension on torrent_handle, to add an extension on an already running torrent 2007-11-08 01:45:35 +00:00
Arvid Norberg 1a280e31fa cleanup. changed the connection map into a set of peer_connections. moved the policy object into the torrent (as opposed to being a pointer). Fixes issues with multiple peers on the same IP. Reduces some lookups. 2007-10-31 09:48:20 +00:00
Arvid Norberg 8f07edbed2 asio handlers are now properly cancelled when destructing the session object, race conditions are avoided by waiting for the io service to complete all tasks 2007-10-26 07:14:19 +00:00
Arvid Norberg 49e71de64a improved web seed logging 2007-10-23 22:11:02 +00:00
Arvid Norberg fcc238e801 lowered piece timeout and sends cancels for pieces when a time out occurs 2007-10-22 20:58:42 +00:00
Arvid Norberg 92d29334fa cleanup. doesn't allocate sockets on the heap for no reason anymore 2007-10-22 04:17:26 +00:00
Arvid Norberg a00f27b7ec some extra peer logging + fix for previous invariant check 2007-10-18 04:18:09 +00:00
Arvid Norberg b032c26bf0 adds invariant check to make sure pieces that are complete are also checked. adds a debug function in the disk_io_thread. Fixes a problem with a failing disk write that would not clear the block for re-download. Adds some extra session logging 2007-10-18 00:32:16 +00:00
Arvid Norberg 1699fa4652 fast reconnect fixes 2007-10-15 05:03:29 +00:00
Arvid Norberg 59c7f5bfbb added option to delete files from disk as a torrent is removed 2007-10-13 03:33:33 +00:00
Arvid Norberg ffe2e75882 added another alert to cover all cases where the torrent has to be checked at start, and tell the user why. Fixed a problem with the resume data generation introduced in last storage check-in 2007-10-09 00:25:01 +00:00
Arvid Norberg 4d19f7ff0f storage optimization. introduced a nother allocation mode: sparse. Now there is allocate, compact and sparse. Unless compact is used, the memory structures used to keep track of pieces are no longer allocated. sparse storage mode is now the default 2007-10-08 20:01:36 +00:00
Arvid Norberg 28274bf1bd improved shutdown behavior. decreased tracker timeouts to 5 seconds. added more logging 2007-10-07 18:06:56 +00:00
Arvid Norberg 64057e3fb0 torrent fix 2007-10-05 17:31:02 +00:00
Arvid Norberg 966800cd5b replaced the assert macro to TORRENT_ASSERT instead of hi-jacking assert. 2007-10-05 00:30:00 +00:00
Arvid Norberg c4c8d0f533 moved piece_finished_alert to debug level 2007-10-03 23:15:13 +00:00
Arvid Norberg f85873263b fixed possible race condition in debug mode 2007-10-03 17:40:18 +00:00
Arvid Norberg 16886741d0 release_files now keeps the torrent object alive 2007-10-02 18:34:34 +00:00
Arvid Norberg 0b1a542aa9 added test for local service discovery 2007-10-01 02:09:12 +00:00
Arvid Norberg b48948e231 changed the double send buffers to a chained buffer using iovec send operations. buffers are recycled (saves memory and cpu) and memory copies are avoided (saves cpu). More statistics is added to track buffer usage 2007-09-29 16:14:03 +00:00
Arvid Norberg c0195ae221 fix for last optimization 2007-09-26 15:32:49 +00:00
Arvid Norberg d97f4cd835 optimization of static country table 2007-09-26 00:03:22 +00:00
Arvid Norberg 2e93b92cb4 more IPv6 fixes. support for multihomed machines by listening on multiple interfaces. added listen_succeeded_alert to advertize which interfaces are being listened on 2007-09-22 16:27:29 +00:00
Arvid Norberg abbe3c774f fixed problem with clashing connections when allowing multiple peers from the same IP 2007-09-19 06:05:14 +00:00
Arvid Norberg 57a76f9db6 fixed debug assert on linux 2007-09-10 06:12:41 +00:00
Arvid Norberg c8088459a0 made torrent_info reference counted and held by a boost::intrusive_ptr 2007-09-01 03:00:31 +00:00
Arvid Norberg e248ba0cdc added asserts to make sure the global connection limit is not exceeded 2007-08-27 16:45:45 +00:00
Arvid Norberg 8b44a25bbb more asserts and tests for the bandwidth_limiter 2007-08-26 23:40:58 +00:00
Arvid Norberg 744d96796b made it possible to start torrents in paused state. updated documentation 2007-08-22 05:31:42 +00:00
Arvid Norberg b8e48c061e attempt to fix build errors on windows. #134 2007-08-21 04:46:17 +00:00
Arvid Norberg 3d3df51d45 fixed per torrent unchoke limit 2007-08-17 07:37:08 +00:00
Arvid Norberg b341b653cb assertion fix 2007-08-17 02:15:01 +00:00
Arvid Norberg b05500570c added parenthesis around std::min and std::max for msvc compatibility 2007-08-16 22:14:17 +00:00
Arvid Norberg 4ac1ac8a1f removed allocate_resources. switched to a global unchoker and connection distribution 2007-08-16 12:41:46 +00:00
Arvid Norberg 6e78b6b824 optimization to only update peer interests in case a piece was filtered/unfiltered during a priority call 2007-08-10 21:13:35 +00:00
Arvid Norberg 3f5204aff6 removed some invariant checks that are expensive 2007-08-08 22:38:30 +00:00
Arvid Norberg 3cdbda928e fixes #104 2007-08-07 07:17:13 +00:00
Arvid Norberg f2a8fe6df7 fixes to prevent incorrect asserts 2007-08-01 15:48:55 +00:00
Arvid Norberg 1973af7779 added alert messages for blocks finishing, pieces finishing and blocks being requested. patch by micah 2007-08-01 06:14:16 +00:00
Arvid Norberg f89ce2669f fixes #90. adds compact_mode to torrent_status 2007-07-23 04:36:56 +00:00
Arvid Norberg 3050e35adf disabled lsd for private torrents 2007-07-23 00:38:31 +00:00
Arvid Norberg 664abc570b uploads limit fix 2007-07-17 06:39:39 +00:00
Arvid Norberg 6650a34cfd fixed #83 2007-07-15 14:20:55 +00:00
Arvid Norberg 9bdf2a9c8d fixed invariant check in policy 2007-07-10 17:25:10 +00:00
Arvid Norberg 4771f323f6 added invariant checks for peer_counter in block_info. added bytes_progress and block_size to block_info (to allow a more detail download progress display). Updated client_test to show download progress per block and also to have a separate color for 'multi blocks' (i.e. blocks that have been requested from more than one peer) 2007-07-08 20:45:42 +00:00
Arvid Norberg a3e66a3efe made the piece picker handle multi-request blocks better. fixes problem that might occur at the end of a torrent where the piece picker could take over blocks back and forth 2007-07-06 17:15:35 +00:00
Arvid Norberg 3c69e3b2cb updated asserts 2007-07-04 16:15:46 +00:00
Arvid Norberg b20270d243 added more asserts related to recent downloading_piece optimization and fixed a translation problem to the public interface 2007-07-04 15:46:10 +00:00
Arvid Norberg 3bdf01778a chamged peer representation from tcp::endpoint to policy::peer pointer in piece_picker's downloading piece. Saves memory, removes the need for lookup and improves the hash check fail/pass handling for closed connections 2007-07-04 02:16:49 +00:00
Arvid Norberg e714e1aeba improved bandwidth limiter and added a unit test for it 2007-07-02 23:48:06 +00:00
Arvid Norberg 8aa37dfa39 fixed #75 2007-07-02 19:31:46 +00:00
Arvid Norberg 816bf3ff2d made the number of peers requested from trackers customizable 2007-07-02 18:44:33 +00:00
Arvid Norberg 340a91e2a4 fixed #74 2007-06-21 00:51:42 +00:00
Arvid Norberg 0d7a208865 added more output to transfer tests and changed the data to be more easily debuggable + some code cleanup 2007-06-20 18:41:53 +00:00
Arvid Norberg bbaa2efcb0 removed asserts that are can no longer be maintained with the async io 2007-06-13 18:09:52 +00:00
Arvid Norberg b75a69cd47 added alerts for synchronizing disk io when pausing and moving storage 2007-06-11 21:24:14 +00:00
Arvid Norberg 3b8670626a merged back async_io branch into trunk 2007-06-10 20:46:09 +00:00
Arvid Norberg a7ad108e8a made the unchoke interval configurable 2007-06-07 22:37:58 +00:00
Arvid Norberg 4f339272dc minor cleanup 2007-06-03 05:57:05 +00:00
Arvid Norberg 31247c046a supports turning on and off upnp, natpmp and lsd. All ofthem are now off by default 2007-05-31 00:21:54 +00:00
Arvid Norberg f65c08338e fixed bug with torrents having peers despite being paused 2007-05-30 08:37:36 +00:00
Arvid Norberg 14a15831ef exposed piece availability vector 2007-05-30 06:52:59 +00:00
Arvid Norberg 1d15a5040c removed old unused logging 2007-05-26 22:55:21 +00:00
Arvid Norberg ea965431bf fixed typo 2007-05-26 19:28:38 +00:00
Arvid Norberg c10e74f4fc improved control over the rate of connection attempts 2007-05-25 21:00:35 +00:00
Arvid Norberg bb71832f5f exposed some more peer info 2007-05-25 19:42:10 +00:00
Arvid Norberg 685f79b82f option to ignore bandwidth limits for local peers. fixed some asserts when allowing multiple connections per IP 2007-05-25 17:06:30 +00:00
Arvid Norberg 510966f2a5 fixed fast resume data bug when using full allocation mode, and moved parts of resume data generation to the storage 2007-05-24 18:53:55 +00:00
Arvid Norberg 58b23a79e7 exception fixes 2007-05-24 17:07:43 +00:00
Arvid Norberg cbd67ed729 added support for authentication in the url_parser and added a test for it 2007-05-22 20:44:18 +00:00
Arvid Norberg ea45641c8b made lsd work 2007-05-17 00:01:51 +00:00
Arvid Norberg 1d68e10684 made it build in msvc by inserting ; at the end of function try blocks 2007-05-16 01:17:14 +00:00
Arvid Norberg f5c449837f introduced an extra invariant check in policy to make sure peers are unique 2007-05-12 20:25:44 +00:00
Arvid Norberg f39185bb21 optimized the read callback to loop and exhaust the read buffer from the socket instead of making another async read call. #43 2007-05-10 01:50:11 +00:00
Arvid Norberg a5847956e1 most of the metadata is now freed when a torrent becomes a seed. #44 2007-05-09 22:54:26 +00:00
Arvid Norberg 6dcca9250b optimized heap allocations in piece_picker. #42 2007-05-09 00:49:13 +00:00
Arvid Norberg 4956639171 piece picker optimization 2007-05-08 11:13:13 +00:00
Arvid Norberg a2b359b64e fixed assert in torrent.cpp 2007-05-07 18:19:53 +00:00
Arvid Norberg 508dfd722a cleaned up policy a bit and the country code list 2007-05-05 22:55:34 +00:00
Arvid Norberg 49bd69cad4 introduced a proper half open TCP connection limit. Also exposed the connection queue to let clients use the same connection limiter as libtorrent. UPnP connections and tracker connection are now also limited as well as peer connections and web seeds 2007-05-05 00:29:33 +00:00
Arvid Norberg 983f4bc02e removed unneccesary connection lookup in connect_peer 2007-05-04 16:35:29 +00:00
Arvid Norberg 9be3f14dd7 fixed bug in recent connection queue changes 2007-05-03 17:12:24 +00:00
Arvid Norberg 56a4b8412a restored the faster connection behavior 2007-05-03 01:49:14 +00:00
Arvid Norberg 54805ca60b added option to disable country resolving 2007-05-02 19:47:38 +00:00
Arvid Norberg 13bcb48dba fixed warnings and removed unused variables 2007-05-02 18:45:29 +00:00
Arvid Norberg 04e41cf702 improved connection queue handling slightly. Will require further improvements 2007-05-02 17:38:37 +00:00
Arvid Norberg f41fd7d303 added catch blocks to lsd. changed bind expressions to use operators 2007-04-29 20:49:30 +00:00
Arvid Norberg 00948e9fc4 first attempt to implement SOCKS5 and proper HTTP proxy support. fixes #22 2007-04-25 18:26:35 +00:00
Arvid Norberg d43a6b80bf added an abstraction layer or tcp sockets, to be able to support socks proxys 2007-04-23 21:36:21 +00:00
Arvid Norberg 75d61207f2 fix for prioritize_files() 2007-04-17 22:56:14 +00:00
Arvid Norberg 849db39472 added peer_blocked_alert which is generated when a peer is blocked by the IP filter. Fixed the ip-filter parsing in client_test and made it report the peer_blocked_alert. Added documentation. 2007-04-17 05:56:43 +00:00
Arvid Norberg 40804a829b failcount is reset on a peer that successfully connects. documented max_failcount and min_reconnect_time. implemented seed optimization for piece_picker (inc_refcount_all and dec_refcount_all), ticket #17 2007-04-15 02:14:02 +00:00
Arvid Norberg 0e5ce5dd9d cleaned up policy a bit, moved the seed check in on_bitfield to be performed before the piece picker is updated 2007-04-13 01:53:25 +00:00
Arvid Norberg 52623405f0 improved unchoking, connecting and disconnecting logic in policy. seems to fix #29 2007-04-12 10:21:55 +00:00
Arvid Norberg 87b1cdc341 fix to avoid connecting web seeds when not a seed but finished 2007-04-11 22:27:58 +00:00
Arvid Norberg e503e334d5 fix to previous check-in 2007-04-11 17:44:15 +00:00
Arvid Norberg 109cc3f232 made the announce timer (for dht and lsd) use a weak pointer instead of raw pointer, to avoid problems when torrent is being destructed 2007-04-11 17:22:19 +00:00
Arvid Norberg 250adabcfa removed unused web stats 2007-04-11 16:50:54 +00:00
Arvid Norberg 3ed24da320 added source to peer_info, which is a bitmask of the sources where the peer has been acquired from 2007-04-10 21:23:13 +00:00
Arvid Norberg 4ceb6a02ea added download_limit and upload_limit functions to torrent_handle 2007-04-10 09:25:17 +00:00