Commit Graph

664 Commits

Author SHA1 Message Date
Arvid Norberg cdf459dad5 only keep one outstanding duplicate request per peer 2009-12-25 16:52:57 +00:00
Arvid Norberg d84c59d13b upload only fix 2009-12-05 16:46:10 +00:00
Arvid Norberg 1f5859d31f error_code fix. added is_error_code_enum template specialization and using the abbreviated syntax to build error_codes 2009-11-29 07:06:38 +00:00
Arvid Norberg 39dae9e6dc some GCC 2.95 support fixes and some BeOS support 2009-11-28 22:41:21 +00:00
Arvid Norberg 1d6d11bf0c storage fix 2009-11-28 08:58:07 +00:00
Arvid Norberg ddceb1487d fixed building with no IPv6 support 2009-11-27 18:46:29 +00:00
Arvid Norberg 8dd244581d header optimizations 2009-11-26 05:45:43 +00:00
Arvid Norberg 2280454a99 support upload-only extension message 2009-11-24 18:49:59 +00:00
Arvid Norberg 6343fe6a6d optimized header dependencies to lower build time 2009-11-23 08:38:50 +00:00
Arvid Norberg 0880b74e6d fixed timestamp wrapping issue 2009-11-18 18:43:54 +00:00
Arvid Norberg 550c67a308 fixed local rate limit feature 2009-11-14 21:25:13 +00:00
Arvid Norberg c07b1d0981 fixed bug in remote download rate calculation 2009-11-14 20:55:42 +00:00
Arvid Norberg 158dd71ac2 performance optimization for buffer allocations 2009-11-11 05:29:34 +00:00
Arvid Norberg 1c377b1807 streaming fixes 2009-11-02 01:01:07 +00:00
Arvid Norberg c7834818f8 fix assert when snubbing peers 2009-11-01 00:47:22 +00:00
Arvid Norberg 86488f95e7 fixed ifdef typo 2009-10-29 04:18:58 +00:00
Arvid Norberg dcd8bb6718 move stats instrumentation to .cpp file to fix header dependency issue 2009-10-28 19:56:18 +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 ac2ef7dd39 fixed division by zero in get_peer_info() 2009-10-03 15:24:59 +00:00
Arvid Norberg 6858a29b83 fixed potential pure virtual function call in extensions on shutdown 2009-09-14 02:08:34 +00:00
Arvid Norberg 35bca49c61 add torrent priority to adjust bandwidth allocation of torrent's peers 2009-09-13 02:24:25 +00:00
Arvid Norberg ce9cf5657d some cleanup and moved the upload_only = true to avoid failing an invariant check 2009-09-12 21:27:52 +00:00
Arvid Norberg f7ebefb285 fixed checking of fast and suggest messages when used with magnet links 2009-09-01 04:41:50 +00:00
Arvid Norberg b3372dced6 fixed rare request queuing issue for peers in parole mode 2009-08-28 07:48:31 +00:00
Arvid Norberg 45fd696bc6 added I2P support 2009-08-20 03:19:12 +00:00
Arvid Norberg 51c38c2e16 added performance warning when hitting the send buffer watermark limit 2009-08-17 20:29:09 +00:00
Arvid Norberg a6bcb8f8c9 fixed issue where web seed connections might have been disconnected in the constructor (which causes problems) 2009-08-08 15:27:07 +00:00
Arvid Norberg 5d76c19168 disconnect redundant fix 2009-08-02 00:05:41 +00:00
Arvid Norberg 78a6df0b2a connect candidate fix 2009-08-01 22:48:43 +00:00
Arvid Norberg ab26b1a5ff removed redundant code 2009-07-26 02:35:16 +00:00
Arvid Norberg 137d2d63f5 cleaned up policy. Moved logic from policy to torrent 2009-07-23 04:38:52 +00:00
Arvid Norberg 848a4b2cf2 fixed bug where downloading from peers could stall when downloading at very high rates 2009-07-21 04:29:29 +00:00
Arvid Norberg 7ad858ccd9 fixed rate limiter bug for local (unthrottled) connections 2009-07-19 09:17:40 +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 3db42de4d9 fixed cancel_all_request() in peer_connection 2009-07-18 16:34:19 +00:00
Arvid Norberg 52f39a9af0 fixed inconsistency between peer's request list and piece picker in rare cases 2009-07-02 06:43:05 +00:00
Arvid Norberg 76db4627f6 another pending_bytes fix 2009-07-01 04:14:43 +00:00
Arvid Norberg 50fed84fe6 fixed typo 2009-06-28 22:58:21 +00:00
Arvid Norberg 315a4cdd1e some extra precaution for m_outstanding_bytes 2009-06-28 21:50:18 +00:00
Arvid Norberg ed0df519d7 fixed outstanding bytes counter assert 2009-06-28 21:09:07 +00:00
Arvid Norberg 6ddf63197f added more asserts around outstanding bytes counter 2009-06-28 07:39:06 +00:00
Arvid Norberg cbc740ee4f fixed bug where one allowed-fast message would be sent even when disabled 2009-06-28 00:47:49 +00:00
Arvid Norberg 2c5ef0debf fixed disk stats assert 2009-06-23 08:10:59 +00:00
Arvid Norberg c2e39ec907 adjust piece timeouts depending on download rate limit 2009-06-23 05:28:36 +00:00
Arvid Norberg c47f9cd64c fix channel_state assert 2009-06-19 18:19:24 +00:00
Arvid Norberg f09774607f added upload mode 2009-06-18 22:32:55 +00:00
Arvid Norberg 6b048dc85e fixed bug in connect candidate counter 2009-06-18 16:16:41 +00:00
Arvid Norberg 2da772210c fix to make torrent_status::list_peers more accurate 2009-06-13 04:14:41 +00:00
Arvid Norberg 07bcb3545a converted a whole lot of error strings into error_codes. Documented some previously undocumented alerts as well as all the error codes 2009-06-12 16:40:38 +00:00
Arvid Norberg af25f26538 correction of previous 'assert fix' 2009-06-12 16:12:19 +00:00
Arvid Norberg 5e87420b6f set all piece priorities to 0 when a write fails 2009-06-10 09:20:55 +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 0283f07aed more buffer categories to help debugging 2009-05-31 22:38:49 +00:00
Arvid Norberg 524151c040 don't make more calls to the disk thread when aborting 2009-05-31 19:25:26 +00:00
Arvid Norberg 6b4fcfcd38 fixed assert 2009-05-31 10:43:29 +00:00
Arvid Norberg 177a7e881c fixed handling of dropped request 2009-05-31 05:50:07 +00:00
Arvid Norberg 31cae31ccc fix invariant check failure 2009-05-30 04:27:26 +00:00
Arvid Norberg d25d09cb70 fixed assert in peer_connection invariant check 2009-05-30 04:03:57 +00:00
Arvid Norberg 7b8ac7276c added some more asserts around m_outstanding_bytes 2009-05-26 16:12:09 +00:00
Arvid Norberg 30c704523c caches the time every 100 ms and use the cache where high resolution timer is not needed 2009-05-25 02:45:51 +00:00
Arvid Norberg e3c07c0934 converted some recursive mutexes to regular ones 2009-05-23 21:36:09 +00:00
Daniel Wallin 6014ac1e7a Allocate memory for read/write handlers inplace inside peer_connection instance. 2009-05-20 08:57:08 +00:00
Arvid Norberg 31c422df0a added feature to set a separate global rate limit for local peers 2009-05-14 17:21:19 +00:00
Arvid Norberg d5164b1b1e fixed typo. made it possible to set max_outstanding_disk_bytes_per_connection to 0 2009-05-12 17:57:52 +00:00
Arvid Norberg bc20af9375 ban self-connections, in order to not try them again 2009-05-07 05:10:19 +00:00
Arvid Norberg c8176cca55 optimized peer storage in resume data an in memory. Should use far less memory than previously for the peer list. Introduced peer source affinity, to avoid problem with a peer list that's diluted with stale peers 2009-05-06 22:36:24 +00:00
Arvid Norberg 89ac9916d7 replaced std::set with std::vector for accept fast piece list 2009-05-04 00:08:00 +00:00
Arvid Norberg 641abc6c4a slight memory optimization and some header cleanup 2009-05-03 20:21:24 +00:00
Arvid Norberg 06b609aa1f fixed unchoke bug. made the automatic unchoke strategy the default 2009-05-02 03:15:52 +00:00
Arvid Norberg 3cf34e3a91 greatly optimised memory usage for peer list 2009-04-30 05:49:46 +00:00
Arvid Norberg c7dd73dd08 add asserts to catch negative m_outstanding_bytes 2009-04-26 19:44:08 +00:00
Arvid Norberg 7109b86566 greatly simplified the rate limiter and generalized all rate limits (peer, torrent, global) to allow for arbitrary rate limit configurations 2009-04-26 00:21:59 +00:00
Arvid Norberg fba4ae541c fixed invalid iterator access in debug mode 2009-04-25 08:19:21 +00:00
Arvid Norberg 679a594f4e fixed typo in verbose bandwidth logging 2009-04-24 17:40:40 +00:00
Arvid Norberg 3c51ceb7c5 fixed bug when receiving keepalive message 2009-04-21 19:27:52 +00:00
Arvid Norberg 90ce06bb47 web seed fix 2009-04-11 20:45:14 +00:00
Arvid Norberg c6f2aa129c minor peer_connection fixes 2009-04-04 16:19:19 +00:00
Arvid Norberg e6f2073cd3 IPv6 fix 2009-04-04 10:08:07 +00:00
Arvid Norberg aba5b2e9d0 dropped some iostream dependencies 2009-04-04 09:52:25 +00:00
Arvid Norberg db8487be46 auto unchoke improvement 2009-04-04 07:55:34 +00:00
Arvid Norberg 33912a0fb7 invariant check fix 2009-03-31 18:01:12 +00:00
Arvid Norberg 0070232f7c attempt to fix #493 by keeping io_service running while there are still peer connections 2009-03-31 08:02:25 +00:00
Arvid Norberg 9c4c49c443 logging build fix and indentation fix 2009-03-27 17:14:15 +00:00
Arvid Norberg fb5ae3dc97 fixed dual IP stack issue 2009-03-22 20:34:57 +00:00
Arvid Norberg 31054ef069 first implementation of set_piece_deadline 2009-03-17 09:34:44 +00:00
Arvid Norberg 84a513bffb initial support for merkle hash tree torrents 2009-03-13 06:09:39 +00:00
Arvid Norberg f07ff08dd2 we can send requests when we're choked (for allowed fast pieces) 2009-03-12 17:27:59 +00:00
Arvid Norberg 0de21dc815 fixed bug related to ignoring upload slots and made the piece rejection code more robust to handle similar bugs better 2009-03-12 17:06:41 +00:00
Arvid Norberg 93eda7c7fa fix ignore unchoke slot invariant check 2009-03-01 07:20:08 +00:00
Arvid Norberg b25a8db2a6 added more error codes. consolidated exception classes into one. moved over more places to use error_code instead of strings. fixed proper error handling for torrent_info 2009-02-23 01:21:19 +00:00
Arvid Norberg 7fff6ace1b added download queue time estimate 2009-02-17 02:33:45 +00:00
Arvid Norberg 1ac8f806fa added seed mode support (lazy hash checking) 2009-02-03 07:46:24 +00:00
Arvid Norberg 2623037482 local peers are excempt from unchoke slots. #469 2009-01-28 06:14:21 +00:00
Arvid Norberg 8030454c96 fixes problem whith lexical_cast being locale dependent 2009-01-27 06:17:55 +00:00
Arvid Norberg c951ab3507 fixed potential problem if there are not enough references to a peer_connection when its disconnected 2009-01-25 02:45:31 +00:00
Arvid Norberg b3a17b1787 added disk buffer instrumentation and log parser 2009-01-23 09:13:31 +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 725fdef85e IP overhead calculation fix 2008-12-28 20:06:59 +00:00
Arvid Norberg 952ed687cd made session stats config build 2008-12-26 07:00:21 +00:00
Arvid Norberg 5bc4a2089d fixed seeding choking algorithm to be more fair (proper round robin) 2008-12-10 23:07:44 +00:00
Arvid Norberg 5fb854d724 improved super seeding with strict option 2008-12-09 07:56:37 +00:00
Arvid Norberg b41cdd6469 initial super seeding support 2008-12-08 06:36:22 +00:00
Arvid Norberg a00ddba109 fixed bug that would grossly underestimate the TCP/IP overhead 2008-12-01 07:23:58 +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 70119a6b53 consider 0-sized piece messages to be reject messages 2008-11-17 19:29:14 +00:00
Arvid Norberg 370ee02ef6 fixed incorrect assert when receiving a 0-size piece message 2008-11-17 19:12:34 +00:00
Arvid Norberg c3bbf138a4 estimate TCP/IP overhead more accurately 2008-11-14 20:51:49 +00:00
Arvid Norberg a5ba060240 when calculating desired queue size, block size should not depend on whether or not they are merged in the requests 2008-11-12 00:54:44 +00:00
Arvid Norberg a7af4d806b verbose logging improvement 2008-11-11 23:45:43 +00:00
Arvid Norberg 3412c0f709 added option to set peers in a state where it doesn't download 2008-11-06 08:34:56 +00:00
Arvid Norberg e0bea061b5 disabled an expensive assert when TORRENT_EXPENSIVE_INVARIANT_CHECKS is not defined 2008-11-01 19:44:39 +00:00
Arvid Norberg 44e9ff70de disconnect_if_redundant fix 2008-11-01 10:14:11 +00:00
Arvid Norberg 971f437b41 added num_pieces to peer_info. Fixes #385 2008-10-24 00:15:39 +00:00
Arvid Norberg 392dbb71da more fixes to avoid unwanted exceptions 2008-10-23 04:10:23 +00:00
Arvid Norberg a6ba48a60a removed exception usage in dht implementation and peer_connection 2008-10-21 17:10:11 +00:00
Arvid Norberg 8b835bf75f fix to faster unchoke a new peer if an unchoked peer becomes uninterested 2008-10-18 22:12:05 +00:00
Arvid Norberg f5f03ff681 improved seeding of files with small pieces to avoid swithing back and forth between unchoke sets 2008-10-17 04:33:22 +00:00
Arvid Norberg 2d1b72628e fix for unchoke_compare 2008-10-15 04:52:07 +00:00
Arvid Norberg 9152bc8712 fix to peer_connection::unchoke_compare 2008-10-15 02:18:59 +00:00
Arvid Norberg f0cd0c152c removed incorrect assert from recent check-in 2008-10-14 03:01:19 +00:00
Arvid Norberg fdadccf7a2 asserts for unchoke slot handling 2008-10-14 02:03:54 +00:00
Arvid Norberg c709cd28a8 fixes seeding behavior to avoid flipping unchoke slots back and forth too often 2008-10-14 00:57:58 +00:00
Arvid Norberg 62e365225b made some moer invariant checks count as expensive 2008-10-10 07:08:46 +00:00
Arvid Norberg b417a03877 removed unnecessary invariant check 2008-10-10 05:38:19 +00:00
Arvid Norberg 8499fd2fe2 moved some invariant checks into 'full-invariant-checks' builds 2008-10-10 05:25:55 +00:00
Arvid Norberg d06fea3d6c fix to handle 0-size piece response without asserting 2008-10-06 03:23:47 +00:00
Arvid Norberg ccd75006d4 fixed failing invariant check caused by a life-time issue in debug mode 2008-10-05 23:36:50 +00:00
Arvid Norberg 7733f74d7a fixed invariant check in peer_connection 2008-10-05 22:09:33 +00:00
Arvid Norberg 47c476dc0a include TCP handshake overhead 2008-09-26 06:10:21 +00:00
Andrew Resch 4189e0b697 add peer_info::progress 2008-09-25 20:39:06 +00:00
Arvid Norberg a3751cfcbe fixed bug in peer_connection::incoming_piece() in case blocks were skipped. Fixed warnings. 2008-09-25 20:12:53 +00:00
Arvid Norberg bb674134e3 fixed bind_port for outgoing peer connections 2008-09-25 07:40:55 +00:00
Arvid Norberg 13b343c1af added assertions that the stats is updated properly when receiving and sending bytes on peer_connections 2008-09-21 17:12:26 +00:00
Arvid Norberg f3d542fb2c fixed inconsistent upload_only and seed in some cases when running a metadata-less torrent 2008-09-19 23:02:45 +00:00
Arvid Norberg eb89269b6a update_interest fix for torrents without metadata 2008-09-19 07:14:24 +00:00
Arvid Norberg e85cb90652 fixed assert in peer_connection 2008-09-19 02:37:05 +00:00
Arvid Norberg e7df553fdd fixed race condition when calling a function that re-evaluates the interested flags on peers (such as prioritize files) right after the metadata is received, but before the connections are initialized 2008-09-18 20:17:49 +00:00
Arvid Norberg a61c1ee01d more disconnect handling for upload-only 2008-09-07 10:00:58 +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 c7c0974d3f fixed bugs in verbose logging 2008-09-04 14:39:02 +00:00
Arvid Norberg d179280da2 fixed off-by-one error when receiving a piece which skipped a bunch of requests 2008-09-01 17:41:13 +00:00
Arvid Norberg 92ed7fb364 fixed metadata extension issues 2008-08-29 17:21:56 +00:00
Arvid Norberg 238dcea91d fixed missing 'set_error' when write failed 2008-08-26 23:10:42 +00:00
Arvid Norberg 7cdc7b2912 fixed typo 2008-08-25 21:10:13 +00:00
Arvid Norberg f407c6d24e fixed bug in piece time-out code. Fixes #388 2008-08-25 15:25:46 +00:00
Arvid Norberg 71db0f32db removed incorrect assert. Fixes #309 2008-08-21 11:54:38 +00:00
Arvid Norberg 37389e4fe4 added test to measure peak download rate and introduced performance warning alert when disk buffer limit and request limit are reached 2008-08-19 15:04:14 +00:00
Arvid Norberg 89907cdae8 fix no-metadata case to not send any other messages before the bitfield (which is sent once we have the metadata) 2008-08-16 22:07:15 +00:00
Arvid Norberg 68b61e4df6 removed redundant condition 2008-08-12 09:27:42 +00:00