Commit Graph

287 Commits

Author SHA1 Message Date
Arvid Norberg 3d616f894e end-game mode optimizations 2011-02-06 23:40:21 +00:00
Arvid Norberg f11b1ce6a0 fixed failing invariant check in peer_connection's download queue 2010-10-03 22:06:53 +00:00
Arvid Norberg 29e45c8cbb promote some piece picker invariant checks to 'expensive' 2010-09-01 03:00:15 +00:00
Arvid Norberg 23ba8c8a72 fixed synchronization issue between download queue and piece picker 2010-05-13 06:29:33 +00:00
Arvid Norberg 1f44ec75a0 fixed bug in add_piece() that would trigger asserts 2010-05-01 17:47:28 +00:00
Arvid Norberg dce2edb6cc fixed vs 2010 build 2010-04-30 19:08:16 +00:00
Arvid Norberg eff49e42a7 added support for torrents with odd piece sizes 2010-02-23 16:26:24 +00:00
Arvid Norberg 210c663596 fixed error handling with torrents with invalid piece sizes 2010-02-22 01:51:25 +00:00
Arvid Norberg f31e670fc2 made end-game mode less aggressive 2010-02-18 17:26:21 +00:00
Arvid Norberg c9b594fde1 support sending suggest messages based on what's in the read cache. support 'explicit read cache' 2010-01-15 16:45:42 +00:00
Arvid Norberg 8a5b7d5d36 got rid of the last recursive mutexes. abstracted the threading primitives (and switched over to use asio's internal ones). 2009-10-20 02:49:56 +00:00
Arvid Norberg 72360c3c27 fixed download piece performance bug in piece picker 2009-09-08 02:38:53 +00:00
Arvid Norberg 1f5a722b01 improved sun studio support (it seems to lack a lot of stl) 2009-08-30 07:38:52 +00:00
Arvid Norberg ae3be201c4 reduced the number of floating point operations to better support systems with no FPU 2009-07-19 04:59:27 +00:00
Arvid Norberg 8454d51ba1 fixed rare piece picker bug 2009-06-28 00:32:14 +00:00
Arvid Norberg af25f26538 correction of previous 'assert fix' 2009-06-12 16:12:19 +00:00
Arvid Norberg cf8659a0af fixed typo 2009-06-12 06:28:18 +00:00
Arvid Norberg 7b6261a63a fixed piece picker assert (would change the peer_count for pieces we have, and assert on them) 2009-06-12 06:20:08 +00:00
Arvid Norberg 3e23029670 removed incorrect assert 2009-06-11 06:35:00 +00:00
Arvid Norberg f0134c1b11 improved disk error handling and expanded use of error_code in error reporting 2009-06-10 08:30:55 +00:00
Arvid Norberg bd33814376 improve disk error handling 2009-05-31 22:41:53 +00:00
Arvid Norberg c695729bbe fixed bug when force-checking a torrent with partial pieces 2009-05-25 20:31:20 +00:00
Arvid Norberg 292c7f61a1 revert and do what the previous check-in was supposed to do 2009-05-22 03:36:05 +00:00
Arvid Norberg 065c33969a promoted an expensive invariant check to only be built with full invariant checks 2009-05-22 03:26:24 +00:00
Arvid Norberg 40c6db3c52 debug define fix in piece_picker 2009-04-04 21:50:36 +00:00
Arvid Norberg 31054ef069 first implementation of set_piece_deadline 2009-03-17 09:34:44 +00:00
Arvid Norberg 3cdf9c87a8 fixed build errors on Solaris 2009-01-27 08:24:48 +00:00
Arvid Norberg 3f94cc8857 made the sequential download mode slightly more sequential (by letting more categories of peers request early pieces). Disabled speed affinity and prefer_whole_pieces when in sequential download mode 2009-01-14 09:07:27 +00:00
Arvid Norberg 66ccc9d23f improved support for padding files by not counting them in total_wanted_done and total_wanted or progress 2009-01-14 07:41:25 +00:00
Arvid Norberg d07ccaf6b8 workaround for sparse files issue on Windows vista 2009-01-05 01:08:09 +00:00
Arvid Norberg 09b3a865ef fixed compiler flags in pkg-config file and made header files not depend on the NDEBUG define 2008-11-29 21:33:21 +00:00
Arvid Norberg d0fc5fee2b fixed assert in piece_picker 2008-10-18 22:29:56 +00:00
Arvid Norberg 032f6e4d55 removed expensive invariant check 2008-10-16 07:11:57 +00:00
Arvid Norberg 62e365225b made some moer invariant checks count as expensive 2008-10-10 07:08:46 +00:00
Arvid Norberg 8499fd2fe2 moved some invariant checks into 'full-invariant-checks' builds 2008-10-10 05:25:55 +00:00
Arvid Norberg f6a1e467a8 marked expensive invariant check to only be included in full checks in piece-picker 2008-10-05 23:28:57 +00:00
Arvid Norberg ca4ab436d0 prioritize partials once they reach a certain threshold, to keep them from growing 2008-09-22 00:41:36 +00:00
Arvid Norberg 656ff6d5f2 fixed piece_picker to not pick blocks from a piece with priority 0 when there already are requests to the piece 2008-09-19 17:07:19 +00:00
Arvid Norberg fbec4261cd fixed assert in piece_picker 2008-09-19 06:46:58 +00:00
Arvid Norberg 53c408212d nicer fix for debug iterators 2008-09-15 16:21:03 +00:00
Arvid Norberg 88a7e445ad fixed decrement of start-of-sequence iterator in invariant_check code. Fixes debug-iterator assert 2008-09-15 15:07:46 +00:00
Arvid Norberg 41808f8742 big change to improve piece picker. Better end-game mode. More options on which pieces to pick. 2008-09-06 21:04:57 +00:00
Arvid Norberg e9045cc1df fixes bug where priorities where lost when force-rechecking. 2008-08-25 22:32:50 +00:00
Arvid Norberg 893e9f2af6 fix bug in piece picker where set_piece_priority would return false even though the piece filter changed and updated test_transfer to catch it 2008-08-19 07:11:17 +00:00
Arvid Norberg 6b2338c5dd fix piece_picker piece-shuffle bug 2008-07-31 09:19:52 +00:00
Arvid Norberg eccba2072c exclude print_pieces() from build unless PICKER_LOG is enabled 2008-07-30 06:39:37 +00:00
cg25 ff3e80c42f Removed svn:executable property from {c,h}pp files in branches/RC_0_13 and
trunk.
2008-06-25 14:15:21 +00:00
Arvid Norberg a38d97583e removed old comment 2008-06-23 18:56:02 +00:00
Arvid Norberg c210b11b80 better fix for failing pieces 2008-06-23 14:45:01 +00:00
Arvid Norberg 665d508bc3 piece picker fix 2008-06-23 13:02:41 +00:00
cg25 aeb2dd8c71 Fix mistypo in src/piece_picker.cpp from previous commit. 2008-06-22 23:13:27 +00:00
Arvid Norberg f7e1d1c1fd piece picker fix 2008-06-22 22:00:44 +00:00
Arvid Norberg 295e2a548b piece picker fix of recent change. 2008-06-12 15:40:50 +00:00
Arvid Norberg a4dfd63ca3 fixed piece picker bug related to sequential download, added unit test to expose it 2008-06-11 08:30:06 +00:00
Arvid Norberg 9d1e77dc88 optimized away torrent::m_have_pieces (#62) and added some documentation on bitfield. The piece picker is now constructed with the torrent, but still freed when turned into a seed 2008-06-07 02:58:28 +00:00
Arvid Norberg 68c31e48dc replaced vector<bool> with a custom bitfield type 2008-05-28 02:35:02 +00:00
Arvid Norberg a01c412f9e piece picker fixes (introduced when rewriting the piece checking) 2008-05-12 06:20:54 +00:00
Arvid Norberg f53cfa7eeb removed checker thread 2008-03-08 06:06:31 +00:00
Arvid Norberg 01c6300d51 another piece picker fix (fixes some logic mistakes from last piece picker update) 2008-02-18 20:55:03 +00:00
Arvid Norberg 333839c9b4 piece picker update 2008-02-18 03:07:14 +00:00
Arvid Norberg 601b7571f5 added asserts to piece picker around num_peers() 2008-02-11 06:52:40 +00:00
Arvid Norberg 8cf0510144 added disk cache for write operations 2008-02-08 10:22:05 +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 68a388da19 piece picker fix (#228) 2007-12-16 01:35:42 +00:00
Arvid Norberg b3c40ea7e8 piece picker assert fix 2007-11-04 19:10:58 +00:00
Arvid Norberg ddc9511bbb removed useless asserts that triggered warnings on intel 2007-10-09 02:34:05 +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 902a94d6fd fixed typo 2007-09-17 06:35:23 +00:00
Arvid Norberg 1502080542 piece picker fix and extra asserts and diagostics output (in case of errors) 2007-09-17 00:37:45 +00:00
Arvid Norberg 3a11c3bfad broadcast socket and piece_picker fix 2007-09-15 20:20:07 +00:00
Arvid Norberg 73bb0c05ad added 'incoming' peer source 2007-09-15 20:17:23 +00:00
Arvid Norberg 80aee32972 fixed piece picker problem when a downloading piece could not be picked with the right speed category 2007-09-10 08:07:18 +00:00
Arvid Norberg 4fcdea4172 piece picker fix 2007-09-09 23:46:28 +00:00
Arvid Norberg 0d6970168d piece picker updates 2007-09-06 18:30:46 +00:00
Arvid Norberg fb401d2499 added asserts to piece_picker 2007-09-06 08:20:11 +00:00
Arvid Norberg e76de2edbc fixed typo 2007-09-06 01:32:29 +00:00
Arvid Norberg 7cd29ca371 piece picker updates and more tests 2007-09-05 23:32:05 +00:00
Arvid Norberg 24b57d62c8 piece picker fixes and optimizations (requires more tests in unit tests) 2007-09-05 21:21:11 +00:00
Arvid Norberg 6d40519e66 added support for piece picker to pick multiple pieces (previously it could only pick one piece tops). Made the web_peer_connection always try to make 1 MB requests at a time. added tests to the piece_picker unit test 2007-09-03 21:16:24 +00:00
Arvid Norberg 8fce18ba8b piece picker improvements and additions to unit test 2007-09-03 07:10:09 +00:00
Arvid Norberg 86442482d9 piece picker bug fixes 2007-08-27 05:13:09 +00:00
Arvid Norberg c0ffdc51c7 piece picker fix and bandwidth_limiter typo fix 2007-08-25 05:09:25 +00:00
Arvid Norberg f7737cae32 reverted [1488] 2007-08-22 18:40:31 +00:00
Arvid Norberg e009834a18 fixed piece_picker bug 2007-08-22 18:38:48 +00:00
Arvid Norberg 7466638231 attempt to fix piece_picker assert 2007-08-22 17:39:57 +00:00
Arvid Norberg b121386492 piece picker fix 2007-08-21 18:39:44 +00:00
Arvid Norberg 8ce61ab04a added asserts to piece_picker 2007-08-21 18:17:31 +00:00
Arvid Norberg da525292fe some more asserts 2007-08-19 08:23:44 +00:00
Arvid Norberg b62bb7944f merged fast-extension => trunk. the fast extension branch is now closed 2007-08-14 17:47:48 +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 8387240b31 more asserts, piece_picker fixes, debug-iterator fixes 2007-08-03 06:13:26 +00:00
Arvid Norberg a630756fae more _SECURE_SCL related fixes 2007-07-24 15:48:06 +00:00
Arvid Norberg 1acedb39dc prioritize more complete partial pieces over less complete ones 2007-07-15 15:41:55 +00:00
Arvid Norberg 329f73276f fixed #82 2007-07-15 05:32:56 +00:00
Arvid Norberg 82e1160214 introduced a non-rarest-first option to the piece picker that is used to pick the very first pieces in a torrent 2007-07-07 01:26:30 +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 f90a80ab05 made piece picker less anal about speed categories, to improve performance 2007-07-05 22:49:28 +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 3b8670626a merged back async_io branch into trunk 2007-06-10 20:46:09 +00:00
Arvid Norberg 14a15831ef exposed piece availability vector 2007-05-30 06:52:59 +00:00
Arvid Norberg 8392276975 speed categories are now disabled before 1% of the pieces have been downloaded 2007-05-14 10:54:18 +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 f942308ccb added extra assert to piece picker 2007-05-03 21:28:31 +00:00
Arvid Norberg b9cdfc2771 fixed bug in piece_picker 2007-05-03 19:25:18 +00:00
Arvid Norberg 577bda5266 removed old code from piece picker and fixed set_priority to not tamper with the download queue 2007-05-03 18:38:57 +00:00
Arvid Norberg 9f1a11aa50 regenerated documentation. fixed a few warnings. fixed a bug in recent check in in piece picker 2007-04-27 16:26:30 +00:00
Arvid Norberg 4afe9712e0 improvements to the piece picker with regard to recently introduced categories 2007-04-27 02:33:59 +00:00
Arvid Norberg ee1681e2cb added peer/piece categories to the piece picker. fixes #18 2007-04-27 00:27:37 +00:00
Arvid Norberg 094dc1065c some boost 1.34 preprocessor conditions and fixed assert in piece_picker 2007-04-23 17:14:40 +00:00
Arvid Norberg a35c1ef1a5 piece picker fix 2007-04-19 02:54:46 +00:00
Arvid Norberg 60ddb5c64a piece_picker fix 2007-04-18 20:40:41 +00:00
Arvid Norberg 16e17f066c first stab at sparse files support 2007-04-17 21:54:40 +00:00
Arvid Norberg 067219d14a made downloading pieces higher priority. fix in piece picker when blocks in prio 0 pieces were marked as finished 2007-04-17 09:21:53 +00:00
Arvid Norberg 34473aad1b fixed bug in recent piece picker optimization when used in combination with sequenced download threshold 2007-04-17 00:20:39 +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 3bc8d093c2 fixed the distributed copy function in the piece picker 2007-04-11 20:33:28 +00:00
Arvid Norberg 5c90b99316 piece picker fix 2007-03-30 20:21:29 +00:00
Arvid Norberg e6a4733392 fixed one incorrect assert 2007-03-30 19:18:03 +00:00
Arvid Norberg a9d18439e9 piece picker fix 2007-03-30 03:09:28 +00:00
Arvid Norberg fc46a731eb modified and enabled invariant checking for piece_picker 2007-03-29 00:52:16 +00:00
Arvid Norberg ceadb93097 added asserts to the piece picker 2007-03-28 23:23:07 +00:00
Arvid Norberg bec03261f5 fixed piece picker and test 2007-03-27 08:53:48 +00:00
Arvid Norberg b3c889f563 fixed typo in previous check in 2007-03-21 02:14:31 +00:00
Arvid Norberg 20e38bc42b peer interest flag is now updated when priority is changed. fixes in piece_picker 2007-03-21 02:09:50 +00:00
Arvid Norberg 10da416c76 fix related to piece priorities 2007-03-20 19:50:15 +00:00
Arvid Norberg 00a7546f7e fix related to piece priorities 2007-03-20 19:34:10 +00:00
Arvid Norberg 776b399a97 added api for piece priorities 2007-03-20 01:59:00 +00:00
Arvid Norberg 7ff5893431 reverted bad check-in where files_checked was removed from piece_picker 2007-03-17 17:28:59 +00:00
Arvid Norberg 8957b64c04 prepared for precompiled headers support. fixed issue where storage didn't lock the session properly. fixed typo in natpmp.cpp 2007-03-17 17:15:16 +00:00
Arvid Norberg 4ac08f393a simplified the piece picker by initializing it properly in its constructor. Removed natpmp reporting port map success when removing mappings. fix where incoming connections before the files were completely checked would cause an assert. 2007-03-16 23:28:26 +00:00
Arvid Norberg ecaa3068d5 added natpmp support. bumped version number to 0.13. added piece priority support to the piece picker. optmized and simplified the piece picker in the process. 2007-03-15 22:03:56 +00:00
Arvid Norberg 87f7b186b0 replaced the bandwidth throttling code with a leaky bucket for better accuracy 2007-01-10 15:02:25 +00:00
Arvid Norberg 45864b15ec fixed incorrect assert in bytes_done() 2006-12-31 14:48:18 +00:00
Arvid Norberg c69479a166 fixed the cause of an inconsistency in the piece picker and the torrent 2006-12-22 00:45:43 +00:00
Arvid Norberg f83db0a423 consistency fixes related to shutting down 2006-12-21 22:20:28 +00:00
Arvid Norberg 79ebcf5dd8 modified the hueristic for taking over blocks slightly, added logging 2006-12-15 10:42:56 +00:00
Arvid Norberg 16b7898de9 added some asserts 2006-12-15 02:26:11 +00:00
Arvid Norberg f0519e86e8 separated session from session_impl and made a real pimpl-class of it. Introduced the possibility to destruct the sessions async. 2006-10-11 14:02:21 +00:00
Arvid Norberg f029f5d6b2 fixed sequenced download bug 2006-10-02 08:58:28 +00:00
Arvid Norberg 191fd76b42 made sequenced_download_threshold a per torrent setting. Updated the project page layout. Removed incorrect invariant checks in piece picker. 2006-09-04 17:17:45 +00:00
Arvid Norberg 7bc1214749 fixed strange User-Agent encoding in HTTP requests. Fixed bug in sequenced_download_threshold code 2006-09-03 22:59:54 +00:00
Arvid Norberg 5ae55c5738 fixed bug appearing when changing the sequenced download threshold on a torrent which already had some pieced downloaded. 2006-09-01 09:36:43 +00:00
Arvid Norberg 8d31bf442a fixed incorrect sorting of pieces in piece_picker 2006-07-16 00:08:50 +00:00
Arvid Norberg c3eaa26645 fixed bug spotted by Tianhao Qiu 2006-06-12 21:20:32 +00:00
Arvid Norberg d1c33c0d2b windows fixes 2006-04-27 00:39:21 +00:00
Arvid Norberg 41810b1166 merged back the asio development branch 2006-04-25 21:04:48 +00:00
Arvid Norberg 7eb9812cfa changed include order of boost headers to workaround namespace bug on msvc 7 2006-01-11 01:32:26 +00:00
Arvid Norberg f63702c964 optimized session::add_torrent() by putting more info in torrent_info, to make it possible to reproduce the exact info section from an torrent_info object. The result is that the .torrent file is only parsed once. 2005-10-16 16:58:41 +00:00
Arvid Norberg 8ef7f58d16 fixed bug where some blocks weren't restored in the piece picker when the peer they were requested from disconnected. made the invariant check on policy work 2005-09-28 23:58:55 +00:00