Commit Graph

655 Commits

Author SHA1 Message Date
Arvid Norberg 392dbb71da more fixes to avoid unwanted exceptions 2008-10-23 04:10:23 +00:00
Arvid Norberg 41d5abf0d8 exception related fixes. Avoiding functions that may throw in places where exceptions shouldn't be thrown 2008-10-21 08:45:42 +00:00
Arvid Norberg cfe029d58f updated seed rank to lower priority for finished, but not seeding torrents 2008-10-19 08:05:36 +00:00
Arvid Norberg 3d75732145 changed variant_stream to return a pointer instead of a reference when querying for underlying type (avoids exceptions) 2008-10-18 07:12:04 +00:00
Arvid Norberg c04183d960 cleaned up save_resume_data 2008-10-17 01:56:36 +00:00
Arvid Norberg 16d56eaee6 clears torrent stats when paused 2008-10-15 17:31:20 +00:00
Arvid Norberg cb1fce0d62 fix to immediately unchoke another peer if an unchoked peer is disconnected 2008-10-14 01:00:05 +00:00
Arvid Norberg 3144767632 fixed buffer overrun when calling get_download_queue 2008-10-05 07:23:46 +00:00
Arvid Norberg d4c5d5835a another state fix where mutliple torrent_finished_alerts could be generated 2008-10-05 04:44:29 +00:00
Arvid Norberg 8f665e949f fixed rare bug where a torrent could be put back into downloading state when finishing checking files if it already finished by then 2008-10-05 01:44:57 +00:00
Arvid Norberg d4c206841b added support for bitcomet padding files. simplified storage read/write code. 2008-10-03 05:49:41 +00:00
Arvid Norberg ef42e8f77c fixed rename_file to work when the file hasn't been created yet. Fixed error reporting when rename_file fails. Updates the file in the torrent_handle when filename is updated 2008-09-30 23:37:42 +00:00
Arvid Norberg 8989699e1e fixed invariant check when pausing a torrent 2008-09-27 04:58:40 +00:00
Arvid Norberg d4e0ea6c1e added assert to make sure #365 doesn't happen 2008-09-25 22:08:18 +00:00
Arvid Norberg bb674134e3 fixed bind_port for outgoing peer connections 2008-09-25 07:40:55 +00:00
Arvid Norberg 80e9e8d1cf changed torrent::set_metadata() to reduce code duplication in metadata extensions. Exposed torrent_handle::set_metadata() to the public interface 2008-09-24 02:32:33 +00:00
Arvid Norberg df5e261ce8 fixed resume data loading for paused state 2008-09-24 02:29:24 +00:00
Arvid Norberg 2e0d0046d2 made torrent::replace_trackers() start or stop announcing depending on if trackers were added or cleared 2008-09-24 02:22:12 +00:00
Arvid Norberg a36da15c29 saves sequential download in fastresume data 2008-09-23 03:52:49 +00:00
Arvid Norberg c0c65d8ee6 fixed bug in read_fast_resume regarding auto_managed flag 2008-09-23 03:21:35 +00:00
Arvid Norberg 791a1f4365 saves trackers and web seeds in fastresume data. Fixes #369 2008-09-22 17:39:18 +00:00
Arvid Norberg 8ffc345308 fixed crash when add_torrent was fed with invalid resume data 2008-09-21 02:08:04 +00:00
Arvid Norberg 0338510b9b added more bandwidth monitoring of DHT and TCP/IP overhead. added monitoring of the running DHT lookups 2008-09-20 17:42:25 +00:00
Arvid Norberg 064d93b935 optimization for files with prioritiy 0 2008-09-19 19:46:04 +00:00
Arvid Norberg f14e76a3f9 fixed typo in previous iterator fix 2008-09-18 17:53:44 +00:00
Arvid Norberg cd1301b1c9 fix for invalid iterators when changing piece priorities causes peers to disconnect 2008-09-17 23:14:59 +00:00
Arvid Norberg c087c363be removed left over from debugging 2008-09-09 19:47:31 +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 aedc92cb24 fix to announce with DHT for torrents without metadata 2008-08-29 22:58:47 +00:00
Arvid Norberg 92ed7fb364 fixed metadata extension issues 2008-08-29 17:21:56 +00:00
Arvid Norberg 9c59d1a308 fixed bug in last check-in 2008-08-27 15:29:42 +00:00
Arvid Norberg e2ae0a97e2 fix for tracker-less torrents (they didn't announce with the tracker) 2008-08-27 15:15:41 +00:00
Arvid Norberg af62dc1417 fixed crash when calling force_recheck on seeding torrent 2008-08-26 21:35:33 +00:00
Arvid Norberg e9045cc1df fixes bug where priorities where lost when force-rechecking. 2008-08-25 22:32:50 +00:00
Arvid Norberg e58485822b optimized encryption 2008-08-20 23:05:12 +00:00
Arvid Norberg 0454fb77d7 fixed bug where is_sequential_download would return false when it should be true 2008-08-19 16:04:01 +00:00
Arvid Norberg a134908bac fixed warnings and uninitialized variable 2008-08-19 14:53:50 +00:00
Arvid Norberg 9266afe5f5 fixed bug where a torrent would not get into the 'finished' state right after file checking. It would either go to downloading or seeding. Also added test_transfer 2008-08-18 20:02:50 +00:00
Arvid Norberg 7d6a895d1b makes all tracker requests 'stopped' when aborting 2008-08-11 14:31:58 +00:00
Arvid Norberg 9cd95fb52c fix to invariant check 2008-08-10 15:00:56 +00:00
Arvid Norberg 56ae82be2c made the invariant check more strict 2008-08-10 10:22:36 +00:00
Arvid Norberg 54a5dd4af4 added invariant check for file-checking queue consistency 2008-08-10 09:34:39 +00:00
Arvid Norberg 10c0956a2f removed redundant IP filter check 2008-08-03 23:04:38 +00:00
Arvid Norberg 7d47ed54eb removed connecting_to_tracker state 2008-08-03 15:32:15 +00:00
Arvid Norberg 18b14e56df made the minimum announce interval configurable 2008-08-01 22:34:37 +00:00
Arvid Norberg b5467845d7 fixed assert in file_progress and build issue when built with expensive invariant checks 2008-07-30 08:52:39 +00:00
Arvid Norberg c605c8021f added file priority functions 2008-07-20 16:00:08 +00:00
Arvid Norberg 8c91fff1d6 saves torrent settings in resume data (up/down rate limits, max connections, upload slots, paused state, auto managed, piece priorities, renamed files) 2008-07-19 11:12:40 +00:00
Arvid Norberg 8f1455919a disable announce timers when paused 2008-07-18 22:57:49 +00:00
Arvid Norberg 21dff61cb5 clears read cache when paused. Saves memory 2008-07-18 15:31:22 +00:00
Arvid Norberg 429a118dd2 keep track of interest more tightly. better support for upload_only 2008-07-18 10:03:42 +00:00
Arvid Norberg e5c8b7c00a fixed issue when trying to announce to tracker for tracker-less torrents 2008-07-14 13:09:07 +00:00
Arvid Norberg 72b99059e7 optimized policy::peer 2008-07-14 11:15:35 +00:00
Arvid Norberg cf9ce06df3 fix logging build 2008-07-13 20:53:21 +00:00
Arvid Norberg d88acd3d95 file_progress fix 2008-07-13 16:44:14 +00:00
Arvid Norberg 8fd33d65f1 file_progress fix 2008-07-13 07:58:32 +00:00
Arvid Norberg 1ed583011c made the invariant checks cheaper and more useful. The full invariant checks are still available as an option 2008-07-12 17:51:59 +00:00
Arvid Norberg ff6cbbc6b6 added torrent_handle::clear_error() to retry a torrent that is in an error state (torrent_status::error is set) 2008-07-12 17:00:52 +00:00
Arvid Norberg 9bf25d1006 changed the definition of file_progress and deprecated the old function. Python bindings only exposes the new one 2008-07-12 13:38:22 +00:00
Arvid Norberg c5af2c2eaf moved tracker announces into a timer instead of polling every second. Added state to properly send complete, started and stopped events 2008-07-12 08:25:19 +00:00
Arvid Norberg 2435c5f19b increased accuracy of file_progress down to bytes (from 16kB blocks) 2008-07-11 14:10:33 +00:00
Arvid Norberg 96ca475652 added redundant and failed byte counters to session 2008-07-11 07:30:04 +00:00
Arvid Norberg 06f3ad65e8 fix to file_progress improvement 2008-07-09 15:23:42 +00:00
Arvid Norberg d06f125513 improved accuracy of the file progress report to include completed blocks from incomplete pieces (but not partial blocks) 2008-07-09 10:45:07 +00:00
Arvid Norberg 5c749bcb3c added base class for peer_alerts and turned more alerts into peer_alerts with more information about the peer that generated it 2008-07-08 09:30:10 +00:00
Arvid Norberg f7042ca84a improved piece timeout and peer snubbing logic 2008-07-07 12:04:06 +00:00
Arvid Norberg e576babbb8 changed the alerts to have categories and to be filtered with a bitmask instead of having a severity and be filtered by a severity level. 2008-07-06 12:22:56 +00:00
Arvid Norberg ecb538b4b2 added alert for torrent state changes. Fixes #360 2008-07-03 10:05:51 +00:00
Arvid Norberg 722e9e95e3 frees resume data when done with it 2008-07-02 21:23:02 +00:00
Arvid Norberg 9c84908bb9 switched resume data parsing over to use lazy_bdecode. Improves memory allocation performance, especially noticable when heap allocations are expensive. Makes it more practical to run with malloc debug. Changed resume data interface to take a vector as opposed to a parsed structure 2008-06-30 23:14:31 +00:00
Arvid Norberg d396ab7b17 added pause and resume to the session. Fixes #349 2008-06-29 19:08:30 +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 ca0f17ee95 won't save resume data for torrents without a complete state (checking or queued for checking torrents) 2008-06-24 12:48:28 +00:00
Arvid Norberg 92f13aea68 start torrents sooner after they complete checking 2008-06-23 18:56:55 +00:00
Arvid Norberg 87660b96c5 renamed announce_piece to piece_passed and moved it to piece_finished and piece_failed 2008-06-23 18:54:58 +00:00
Arvid Norberg 9447693202 storage fastresume fix 2008-06-23 18:31:52 +00:00
Arvid Norberg c210b11b80 better fix for failing pieces 2008-06-23 14:45:01 +00:00
Arvid Norberg 6db1b54304 simplified policy and optimized case when a piece fails hash check 2008-06-22 20:28:03 +00:00
Arvid Norberg a60b6f9e96 fixed bug in set_queue_position. Fixes #353 2008-06-21 15:51:03 +00:00
Arvid Norberg d2bde64e71 makes sure a torrent doesn't have too many pieces than can be handled. Fixes #61 2008-06-19 11:28:34 +00:00
Arvid Norberg 9c94f54868 fixes for torrents with smaller pieces than 16kB 2008-06-18 12:34:39 +00:00
Arvid Norberg 77c13d73f6 fixed assert in set_queue_position 2008-06-17 16:49:55 +00:00
Arvid Norberg 24b24aff4e force recheck fixes. Fixes #350 2008-06-17 14:56:22 +00:00
Arvid Norberg 6c24bd0774 moves force checked torrents to the end of the queue. Fixes #350 2008-06-16 22:27:14 +00:00
Arvid Norberg 3e000a3984 fixed save path updates when moving torrents. Fixes #310 2008-06-15 20:52:46 +00:00
Andrew Resch 933e3c8b54 Fixes for set_queue_position() 2008-06-11 12:14:10 +00:00
Arvid Norberg 6e69480176 disk_io_thread fixes. Properly destructs torrent objects while disk io mutex is not locked. Properly flushes disk cache when closing, and aborting read and file check jobs. Fixes #334 2008-06-09 04:46:34 +00:00
Arvid Norberg efcd69b009 fixed set_queue_position() for seeding (or finished) torrents 2008-06-08 13:47:35 +00:00
Andrew Resch 3ea075f169 Add torrent_resumed alert 2008-06-08 05:14:40 +00:00
Arvid Norberg a1857f9699 added force_recheck to torrent_handle. Fixes #120 2008-06-07 16:24:56 +00:00
Arvid Norberg 9f5fa96cad fixed bug related to m_have_piece optimization. Renamed num_pieces() to num_have() to avoid confusion 2008-06-07 14:03:21 +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 bcc24bf831 added has_incoming to torrent_status per #315 2008-06-05 18:19:03 +00:00
Arvid Norberg 5d268424b2 update auto managed torrents sooner when changes are made 2008-06-03 20:21:47 +00:00
Arvid Norberg 31c9d378f5 completed queuing. It is now possible to change and query queue position of torrents. 2008-05-29 03:37:19 +00:00
Arvid Norberg 3910fe78de separated file_storage from torrent_info and create_torrent 2008-05-28 08:44:40 +00:00
Arvid Norberg 68c31e48dc replaced vector<bool> with a custom bitfield type 2008-05-28 02:35:02 +00:00
Arvid Norberg 4338140c85 added test and fixed total_wanted issue for files > 2 GB 2008-05-27 08:07:59 +00:00
Arvid Norberg 67354421fb introduced an error state for torrents. Torrents with an error are not restarted automatically 2008-05-20 07:57:44 +00:00
Arvid Norberg 5840a50d79 fixed stale state when switching from finished to downloading 2008-05-20 03:21:45 +00:00
Arvid Norberg 777954ab3e automatically scrape auto managed torrents to keep track of downloader/seed ratio 2008-05-19 04:06:25 +00:00
Arvid Norberg c460704a5f streamlined class footprint by reducing padding 2008-05-19 02:52:32 +00:00
Arvid Norberg 282f30c7e7 saves number of seeds and downloaders last seen in resume data 2008-05-18 19:31:06 +00:00
Arvid Norberg ffa9baed1d fixed bug where torrent would not connect to peers unless it had the .torrent 2008-05-18 18:30:26 +00:00
Arvid Norberg 7f639e57de improved error handling with regards to parse_url_components. For trunk, moved that function to its own file 2008-05-17 14:19:34 +00:00
Arvid Norberg ffbc22dfc2 respects the port filter for web seeds. Fixes #304 2008-05-15 05:13:09 +00:00
Arvid Norberg 91d6099a55 fixed issue with torrents with 0 pieces. Fixes #306 2008-05-15 02:29:26 +00:00
Arvid Norberg 8ed949c4d5 factored out torrent creation functionality from torrent_info into create_torrent. Modified torrent_info to use lazy_bdecoder for increased performance 2008-05-14 05:29:42 +00:00
Arvid Norberg 756dbe3316 removed leftover from debugging 2008-05-12 09:31:57 +00:00
Arvid Norberg a01c412f9e piece picker fixes (introduced when rewriting the piece checking) 2008-05-12 06:20:54 +00:00
Arvid Norberg 068adcd9a9 indentation fix 2008-05-12 06:03:31 +00:00
Arvid Norberg f2ac4db1af changed the optimistic disconnect logic to be more efficient and configurable 2008-05-12 05:17:11 +00:00
Arvid Norberg 5741f72ab3 seed rank fix 2008-05-07 17:05:16 +00:00
Arvid Norberg 018ec69d8c indentation fix 2008-05-06 21:27:06 +00:00
Arvid Norberg 9429ca4b1f replaced seed cycles with seed rank 2008-05-06 18:03:41 +00:00
Arvid Norberg e09457e4ab take an estimate of the IP ACK traffic into account when rate limiting (allows setting rate limits closer to the capacity) 2008-05-05 17:08:14 +00:00
Arvid Norberg c7e6c04705 switched over to asio from boost-1.35 2008-05-03 16:05:42 +00:00
Arvid Norberg c043d4b21d initial support for queuing 2008-04-24 03:28:48 +00:00
Arvid Norberg 7a432786e7 added url to tracker alerts. introduced a base class for all tracker alerts 2008-04-23 01:54:21 +00:00
Andrew Resch 05c1a64c76 Move the torrent_checked alert post to torrent::files_checked 2008-04-23 01:01:00 +00:00
Arvid Norberg d4ddf3712a initializes totals to 0 in torrent 2008-04-22 22:37:40 +00:00
Arvid Norberg a4b69e5b2d logging improvements 2008-04-20 17:17:58 +00:00
Arvid Norberg b452020404 fixed resume data bug 2008-04-16 07:51:08 +00:00
Arvid Norberg 755e50bb12 added active_time, seeding_time, all_time_upload and all_time_download to torrent_status. Also updated docs with some missing entries in torrent_status 2008-04-16 06:31:05 +00:00
Arvid Norberg 644d3aa66c disk IO thread error handling 2008-04-13 21:26:57 +00:00
Arvid Norberg 3fea2080fd added an asynchronous save_resume_data to make it easier to synchronize with the disk IO thread 2008-04-13 18:54:36 +00:00
Arvid Norberg 6639f72804 if priorities are changed so that the torrent changes state to be finished, a torrent_finished_alert is generated now. Fixes #305 2008-04-13 07:39:37 +00:00
Arvid Norberg 17c4257cce added get_full_peer_list to retrieve all the peers known for a swarm 2008-04-13 06:32:48 +00:00
Andrew Resch ca872a0e82 Revert last. 2008-04-13 02:47:41 +00:00
Andrew Resch d825c1d5bd Add torrent_resumed torrent alert. 2008-04-13 02:34:18 +00:00
Arvid Norberg 908273a02b fixed assert 2008-04-13 01:28:44 +00:00
Arvid Norberg d4cfa126aa storage fixes 2008-04-12 22:08:07 +00:00
Arvid Norberg 291ef2a2c9 optimized torrent_handle to use a weak_ptr directly to the torrent object 2008-04-09 20:09:36 +00:00
Arvid Norberg 4eeb15c1df verifies urls before connecting to web seeds. Fixes #301 2008-04-09 07:51:41 +00:00
Arvid Norberg 04a9dd77b5 assert fix 2008-04-07 08:15:31 +00:00
Arvid Norberg 89a9a25197 exception fixes in torrent 2008-04-07 02:51:21 +00:00
Arvid Norberg 35fd9aec61 msvc build fixes and warning fixes 2008-04-05 21:18:27 +00:00
Arvid Norberg 54bd1a41b0 fix to recent change to move out references to self() from peer_connection constructors 2008-04-01 19:17:09 +00:00
Arvid Norberg 4161be867e removed dht ping from peer_from_tracker. in trunk: implemented a rate limited DHT ping (once a second per torrent) and space optimized the peer structure 2008-04-01 17:38:19 +00:00
Arvid Norberg 1511f2f59b removed calls to self() from inside constructors in peer connections 2008-03-31 04:46:24 +00:00
Arvid Norberg 57cd1e7c97 fixed #298. Generates a torrent_paused alert when there's no storage 2008-03-30 15:44:31 +00:00
Arvid Norberg 45a7329d5c added alert for when the client's external IP is received 2008-03-29 22:45:55 +00:00
Arvid Norberg ffecb32b81 made a bias to give connection attempts to downloading torrents with few peers. Should accelerate downloads on windows (where there's a half-open connection limit) 2008-03-29 19:39:24 +00:00
Arvid Norberg 2014e312b1 exposed connection_candidates in torrent_status and made a small optimization to not attempt to connect peers on swarms that don't have any connect candidates 2008-03-29 18:47:24 +00:00
Arvid Norberg 537f21d1b9 connection rate improvement when using a half-open connections limit 2008-03-16 10:49:47 +00:00
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