Commit Graph

487 Commits

Author SHA1 Message Date
Arvid Norberg 2ac5c13e6f introduced a stricter timeout on piece requests and snubbing. exposed some more data about this through the peer_info. Fixes #40 2008-06-29 09:50:42 +00:00
Arvid Norberg ae9f1e0465 fixed typo 2008-06-29 06:01:20 +00:00
Arvid Norberg d1b2cd558e moved peer time out logic to second tick 2008-06-29 05:35:48 +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 964e8b93d0 added option to deliberately corrupt data from certain peers, to test the case when hash fails occurs 2008-06-23 15:37:24 +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 9a8fc4f713 self connection fixes 2008-06-16 13:54:14 +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 c883f4475c saves statistics from the last second from peer connections that are disconnected. Partly fixes #339 2008-06-03 05:21:00 +00:00
Arvid Norberg 68c31e48dc replaced vector<bool> with a custom bitfield type 2008-05-28 02:35:02 +00:00
Arvid Norberg c460704a5f streamlined class footprint by reducing padding 2008-05-19 02:52:32 +00:00
Arvid Norberg 111f5faecb upload only extension 2008-05-18 05:59:47 +00:00
Arvid Norberg 91d6099a55 fixed issue with torrents with 0 pieces. Fixes #306 2008-05-15 02:29:26 +00:00
Arvid Norberg f259e34f86 peer_connection fix for incoming connections 2008-05-12 10:10:39 +00:00
Arvid Norberg 2fbe53f880 assert fix 2008-05-12 06:31:54 +00:00
Arvid Norberg 971ead4a44 made redundant connction closing optional (defaults to on) 2008-05-12 06:25:53 +00:00
Arvid Norberg 068adcd9a9 indentation fix 2008-05-12 06:03:31 +00:00
Arvid Norberg eabe9cad2d improved plugin support 2008-05-12 03:05:27 +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 d15573ecc2 disk receive buffer cleanup 2008-05-05 06:25:22 +00:00
Arvid Norberg c7e6c04705 switched over to asio from boost-1.35 2008-05-03 16:05:42 +00:00
Arvid Norberg 441aacae32 fixed download bug affecting web seeds 2008-04-29 03:12:14 +00:00
Arvid Norberg a4b69e5b2d logging improvements 2008-04-20 17:17:58 +00:00
Arvid Norberg d4cfa126aa storage fixes 2008-04-12 22:08:07 +00:00
Arvid Norberg 42f55adcce support for country lookup through GeoIP 2008-04-11 08:46:43 +00:00
Arvid Norberg 093d912e9a receive buffer optimization. added receive_buffer_size and used_receive_buffer to peer_info. changed plugin api to make use of new disk_buffer_holder type 2008-04-10 10:03:23 +00:00
Arvid Norberg 2c77ae8307 fixed typo 2008-04-10 05:40:54 +00:00
Arvid Norberg 62daedeae0 fixed race condition when a torrent is removed while one of the connections is still in the connection queue 2008-04-09 20:12:52 +00:00
Arvid Norberg 5a6e21f484 peer_connection disconnect cleanup 2008-04-09 04:09:40 +00:00
Arvid Norberg e329403619 removed exceptions from peer_connection 2008-04-07 08:39:01 +00:00
Arvid Norberg 04a9dd77b5 assert fix 2008-04-07 08:15:31 +00:00
Arvid Norberg 35fd9aec61 msvc build fixes and warning fixes 2008-04-05 21:18:27 +00:00
Arvid Norberg 57d75e120a initial support for GeoIP (only AS mappings for now) 2008-04-05 04:53:22 +00:00
Arvid Norberg 0fcb204128 added peak rates to peer_info 2008-04-03 06:11:21 +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 e1eadab1b4 fixed memory leak on disk io failures 2008-03-24 02:33:42 +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 ab2354c9b4 small optimization to previous fix 2008-03-14 17:43:38 +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 8132c6aad6 added option to control TOS byte in peer traffic 2008-03-12 16:58:23 +00:00
Arvid Norberg 5173c7fe31 more invariant check in peer connection 2008-03-12 08:36:22 +00:00
Arvid Norberg a97be6937a unchoker counts bytes instead of rates 2008-03-10 03:30:01 +00:00
Arvid Norberg 35c113c0cb piece request fix + better logging of throttling 2008-02-27 20:37:41 +00:00
Arvid Norberg 333839c9b4 piece picker update 2008-02-18 03:07:14 +00:00
Arvid Norberg f1ceb44dc4 fixed assert. #271 2008-02-17 20:40:21 +00:00
Arvid Norberg cecd0dfcd2 added rtt estimation for outgoing connections 2008-02-09 22:42:56 +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 5d4d08b7ce fix problem introduced with new piece picker 2008-02-05 05:57:32 +00:00
Arvid Norberg 1c82ef36d8 improved support for out-of-memory conditions 2008-02-05 05:51: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 8b455be1d9 better exception handling and more invariant checks 2008-01-19 19:00:54 +00:00
Arvid Norberg 127d3e6ad5 bandwidth limiter fixes. proper priority that cannot starve connections 2008-01-17 17:40:46 +00:00
Arvid Norberg c69fa07e2d error handling fixes 2008-01-16 21:07:04 +00:00
Arvid Norberg b19bf337bf generalized peer read/write state 2008-01-13 23:46:43 +00:00
Arvid Norberg f48ded8a54 fast extension fix 2008-01-13 09:33:00 +00:00
Arvid Norberg 616a48b591 fix to count loopback connections as local peers 2008-01-11 05:40:19 +00:00
Arvid Norberg 471d81394d added invariant check 2008-01-10 22:44:32 +00:00
Arvid Norberg 3a727e99ff expose more info through peer_info 2008-01-10 22:13:23 +00:00
Arvid Norberg 4420473b88 made send buffer watermark configurable 2008-01-08 01:16:30 +00:00
Arvid Norberg 1d6e0f5bf6 bandwidth request block size optimization 2008-01-07 04:47:20 +00:00
Arvid Norberg 0dfb129b57 another failcount update fix 2008-01-07 04:07:31 +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 4271eda751 correctly increase the failcounter when appropriate 2008-01-07 00:33:20 +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 9d2c0e370e fixed broken assert 2007-12-31 10:11:10 +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 cfe5c8962e more asserts around send buffers and fixes potential race condition 2007-12-27 21:43:11 +00:00
Arvid Norberg ba172954e6 accept have messages without having metadata and without having received a bitfield 2007-12-20 23:58:58 +00:00
Arvid Norberg 3b4cccf1dd fixed broken assert 2007-12-20 23:53:03 +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 456f8f8677 fix to bound check piece index before use in incoming_allowed_fast 2007-12-18 04:40:19 +00:00
Arvid Norberg ac28fa7b62 some more asserts related to bandwidth manager 2007-12-14 18:02:06 +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 f054ae7c2d made the handshake timeout configurable and defaults to 10 seconds 2007-10-23 00:19:28 +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 d3bce762c5 added timeout logging in verbose logging mode 2007-10-22 04:56:09 +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 28113c9c42 parole mode improvement. Doesn't clear out the request queue when choked by a peer on parole anymore 2007-10-10 02:27:55 +00:00
Arvid Norberg f5f658f8fd fast extension fixes 2007-10-05 22:45:24 +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 2940d253c3 completed fast reconnect fix 2007-10-04 21:26:50 +00:00
Arvid Norberg d29fbdc453 added tests for fast extension features + fixes 2007-10-04 09:32:09 +00:00
Arvid Norberg 51f12e774e moved block_downloading_alert and block_finished_alert to debug level 2007-10-03 22:53:52 +00:00
Arvid Norberg c9d245e9f1 handles case where a request in the allow fast set is rejected 2007-10-03 16:57:20 +00:00
Arvid Norberg 1cbe23667b added check for valid allowed-fast messages 2007-10-01 01:12:00 +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 3b6aee6d86 switched out std::vector to use libtorrent::buffer as an optimization 2007-09-23 00:51:45 +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 33add5bb91 added a shorter timeout while waiting for a hanshake response from peers 2007-09-17 02:29:33 +00:00
Arvid Norberg 3a11c3bfad broadcast socket and piece_picker fix 2007-09-15 20:20:07 +00:00
Arvid Norberg bdd14cc155 added reject and suggest hooks to peer plugins 2007-09-14 03:38:38 +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 140fdae5b1 block_downloading_alert change 2007-09-06 18:33:15 +00:00
Arvid Norberg d2706b3600 fixed #122 2007-09-03 22:57:09 +00:00
Arvid Norberg c6b8b22679 replaced int64_t with size_type for portability 2007-09-03 21:20:28 +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 61c269efee added timeout for interested peers that don't request once they're unchoked. Added support for suggest_piece 2007-09-01 07:38:10 +00:00
Arvid Norberg fd42f3232b upnp more logging and error recovery 2007-09-01 04:08:39 +00:00
Arvid Norberg b6ee4fddbf fixed uninitialized connection ticket 2007-08-25 14:52:48 +00:00
Arvid Norberg 23a20a24c1 added more asserts for choke/unchoke states and a peer_info flag to indicate a peer being optimistically unchoked 2007-08-21 17:45:28 +00:00
Arvid Norberg e865852c74 fixes #136 2007-08-21 08:16:41 +00:00
Arvid Norberg 1a34478305 another (probably the final) attempt to fix to #133 2007-08-21 06:57:12 +00:00
Arvid Norberg a91b4e9ec3 another attempt to fix to #133 2007-08-21 06:38:27 +00:00
Arvid Norberg b8e48c061e attempt to fix build errors on windows. #134 2007-08-21 04:46:17 +00:00
Arvid Norberg c946afcfab fixed #133 2007-08-21 04:11:00 +00:00
Arvid Norberg a3d32dad4c fixed bugs in unchoke change check-in 2007-08-16 22:13:35 +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 b62bb7944f merged fast-extension => trunk. the fast extension branch is now closed 2007-08-14 17:47:48 +00:00
Arvid Norberg f7b3433ff8 added check to disallow requests > 16kB (since the buffer pool now requires that limit) 2007-08-03 16:12:32 +00:00
Arvid Norberg be1faccd1d peer_connection fixes for earlier pending disk buffer size limit 2007-08-03 08:19:10 +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 54aa76f940 exposed queued disk bytes in peer_info 2007-08-01 06:11:11 +00:00
Arvid Norberg 786d4e5f25 added a limit on how many bytes each connection can have pending in the disk write queue 2007-08-01 05:22:34 +00:00
Arvid Norberg c536ac1990 peer_connections stats fix. test_sleep fix. improved test_swarm and test Jamfile 2007-07-06 20:17:36 +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 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 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 f05b06d4e5 added required operator on time_duration 2007-06-14 23:15:30 +00:00
Arvid Norberg 46bf2970fb fixes to remote peer download rate etimation 2007-06-14 21:47:00 +00:00
Arvid Norberg 3b8670626a merged back async_io branch into trunk 2007-06-10 20:46:09 +00:00
Arvid Norberg 2030420f9a fix for previous peer download rate check-in 2007-06-07 00:53:48 +00:00
Arvid Norberg a3a2217276 an approximate peer download rate is now in peer_info 2007-06-07 00:05:18 +00:00
Arvid Norberg 273f8bd921 merged back encryption branch to trunk 2007-06-06 00:41:20 +00:00
Arvid Norberg 7e540a8d53 made inactivity time-out configurable 2007-05-31 19:57:15 +00:00
Arvid Norberg 9fe77101ed added support for lazy bitfields 2007-05-26 22:27:40 +00:00
Arvid Norberg 8679ee5916 have optimization is now optional, but on by default 2007-05-25 21:19:14 +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 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 3bfaaf1129 fixed a checked iterator assert 2007-05-16 18:21:08 +00:00
Arvid Norberg 13ca78e92b #47. introduced parole mode for peers that fails the hash check. 2007-05-16 04:12:13 +00:00
Arvid Norberg 421d4ee81d fixed recent send buffer optimization to work with metadata extension 2007-05-14 06:06:28 +00:00
Arvid Norberg 6faa11f7ab optimized web_peer_connection to use less memory and replaced std::copy with std::memmove in peer_connection 2007-05-11 18:40:22 +00:00
Arvid Norberg 23ae2e12c8 fixed warning in peer_connection 2007-05-10 06:27:52 +00:00
Arvid Norberg 57439bcec8 send buffer heap optimization 2007-05-10 06:20:29 +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 4956639171 piece picker optimization 2007-05-08 11:13:13 +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 54805ca60b added option to disable country resolving 2007-05-02 19:47:38 +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 ee1681e2cb added peer/piece categories to the piece picker. fixes #18 2007-04-27 00:27:37 +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 d9902d178f applied shyam's memory optimization patch 2007-04-25 17:36:12 +00:00