Commit Graph

1112 Commits

Author SHA1 Message Date
Arvid Norberg adb3a5523c some defensive programming. cleanup unused boost include. tighten up boost includes 2013-12-17 23:26:44 +00:00
Arvid Norberg 60a33f8cf8 make test_ssl build without openssl (and also not do anything) 2013-12-16 06:17:05 +00:00
Arvid Norberg 4f189e921d mark some expensive parts of invariant checks as expensive and disabled by default. introduce undead_peers to destruct all peer_connections in the network thread. they hang around while waiting for all outstanding disk jobs to complete. make the asio-debugging output a bit prettier 2013-12-05 07:42:32 +00:00
Arvid Norberg faa53d7657 member re-order and struct packing 2013-12-02 04:24:10 +00:00
Arvid Norberg fc2fc8dfb2 fix initialization order warnings. pack peer_connection and torrent 2013-11-26 07:47:48 +00:00
Arvid Norberg fe414878b2 cleanup of ABI breaking configuration options. TORRENT_DEBUG is believed to no longer affect the ABI of libtorrent. introduce a warning in gen_reference_doc.py for when defines are used in public structs. fix build with deprecated functions off 2013-11-17 22:38:37 +00:00
Arvid Norberg 5284de9d80 minor invariant check tweak 2013-11-10 10:49:57 +00:00
Arvid Norberg c147caca0d fix ssl issue in web_server.py 2013-11-04 10:06:14 +00:00
Arvid Norberg 90e7a4c9e3 merged some rate limiter polish from libtorrent_aio 2013-11-02 03:26:53 +00:00
Arvid Norberg cbe3a72a6e merged i2p fix from RC_0_16 2013-10-27 19:56:37 +00:00
Arvid Norberg af6dbc5d79 attempted fix for a crash in peer ranking 2013-10-23 06:45:23 +00:00
Arvid Norberg 5ae074994d revert a bad optimization from peer_connection's invariant check 2013-10-20 07:10:09 +00:00
Arvid Norberg 416d064489 optimize some invariant checks and make test_utp shorted, to complete much faster 2013-10-20 06:03:23 +00:00
Arvid Norberg 6542795d0a improved support for web seeds that don't support keep-alive 2013-10-20 02:40:43 +00:00
Arvid Norberg b7ae64fd1f don't try to fill send buffers after the torrent has started to shut down 2013-10-13 18:50:07 +00:00
Arvid Norberg 2df72d276e when evicting peers waiting to establish connection, evict the ones that have been trying for the longest first 2013-09-14 21:47:31 +00:00
Arvid Norberg 6a47271667 merge fix for deleting files from libtorrent_aio 2013-08-22 05:27:45 +00:00
Arvid Norberg 1afc0c6740 a bunch of fixes to make test_web_seeds a lot faster, and fail slightly fewer tests 2013-08-19 03:54:45 +00:00
Arvid Norberg a4d4b362e6 fix bug in duplicate-peer resolution. just take the port into account, not the whole IP, because the different ends may have different ideas of what their IP is 2013-08-15 05:29:05 +00:00
Arvid Norberg 6a1e861a1d introduce mechanism for plugins to prevent libtorrent to disconnect peers for time-out reasons 2013-08-09 07:55:12 +00:00
Arvid Norberg f7ec370723 extend peer_plugin to also be notified of disconnects and successful connect events 2013-08-03 23:31:43 +00:00
Arvid Norberg e1c4101817 improve peer_connect_alert 2013-08-01 00:44:14 +00:00
Arvid Norberg df97a76c2f enable request logging in regression testing 2013-07-30 15:59:41 +00:00
Arvid Norberg 2599acf451 merged time critical pieces improvement from RC_0_16 2013-07-27 17:43:34 +00:00
Arvid Norberg 1cb0161f0e merge fix from RC_0_16 2013-07-26 16:59:10 +00:00
Arvid Norberg 93993002ab merged unchoke algorithm fix from RC_0_16 2013-06-01 22:33:11 +00:00
Arvid Norberg fcff3e0e00 merged bootstrap.sh script from RC_0_16 2013-05-29 02:11:15 +00:00
Arvid Norberg 4395437c3b remove resolve countries build configuration from the public API (make linking easier) 2013-04-09 00:37:53 +00:00
Arvid Norberg c55bd0d1d4 merged piece request fix from RC_0_16 2013-04-08 02:55:07 +00:00
Arvid Norberg 5aa85c9ca2 merge graceful pause fix from aio 2013-04-07 01:20:09 +00:00
Arvid Norberg 22b1c968a4 back-ported choking issue at high uplod rates 2013-03-26 04:45:38 +00:00
Arvid Norberg be6afa74f3 optimized rate limiter by allowing peers to request more bandwidth while waiting on the socket 2013-03-24 18:00:58 +00:00
Arvid Norberg a220b8df0c merged fix from RC_0_16 2013-03-23 03:01:13 +00:00
Arvid Norberg a0caa0f4b2 disable invariant_check functions when invariant checks are disabled 2013-02-25 04:13:46 +00:00
Arvid Norberg d9b37f05cc merged changes from RC_0_16 2013-01-21 10:18:25 +00:00
Arvid Norberg f1b8582a95 add gen_todo.py script. include todo.html and mark up some todos in the code with priority 2013-01-20 23:21:53 +00:00
Arvid Norberg e45124fc22 back-port heavy weight refcount invariant checking from libtorrent_aio (disabled by default). and also backport piece-picker refcounting bug fix 2013-01-06 04:02:29 +00:00
Arvid Norberg 970ddba29b refactor find_disconnect_candidate_torrent to match libtorrent_aio 2013-01-02 07:39:02 +00:00
Arvid Norberg aab59d04c7 improve the external IP discovery to work with multiple external IPs (specifically IPv4 and IPv6) 2013-01-01 23:12:16 +00:00
Arvid Norberg ac5a9e9882 introduce global connection priority for improved swarm performance 2012-12-31 06:54:54 +00:00
Arvid Norberg 35032a6950 merge verbose logging feature from libtorrent_aio 2012-10-06 23:45:36 +00:00
Arvid Norberg 24103c6603 include info-hash in verbose logs filenames 2012-10-06 00:33:10 +00:00
Arvid Norberg e44225cb57 merged uTP fix from RC_0_16 2012-10-05 03:20:40 +00:00
Arvid Norberg bff648a89e update copyright dates and add tool to do so 2012-10-02 03:16:33 +00:00
Arvid Norberg c56901e864 improve web seed hash failure mode 2012-09-29 17:46:41 +00:00
Arvid Norberg 9a11c44984 metadata extension fix 2012-08-09 22:30:45 +00:00
Arvid Norberg 0657690b1c attempt at fixing shutdown hang caused by connection_queue 2012-07-15 23:22:23 +00:00
Arvid Norberg bdada3766a peer disconnect fix 2012-07-04 16:13:20 +00:00
Arvid Norberg 57769bab11 fix some compiler warnings 2012-06-25 14:17:51 +00:00
Arvid Norberg dbf6b0a02c fix bandwidth limiter issue for incoming connections (not associated with a torrent) 2012-06-08 04:28:37 +00:00
Arvid Norberg d6a53200a2 add a force-flag to cancel_request 2012-06-06 16:05:25 +00:00
Arvid Norberg 5275e75fa5 back-port deletion of the redundant peer_connection constructor from libtorrent_aio 2012-05-14 05:43:45 +00:00
Arvid Norberg 2ca32646b9 fix build 2012-05-13 04:37:31 +00:00
Arvid Norberg 6737374c59 add aserts to make_time_critical() 2012-05-12 21:22:06 +00:00
Arvid Norberg e74fc839e9 fixed time critical piece accounting in the request queue 2012-05-12 07:14:07 +00:00
Arvid Norberg 94ae0e433b fixed semantics of rate_limit_utp to also ignore per-torrent limits 2012-05-06 07:09:49 +00:00
Arvid Norberg 86b4c78871 fix unsigned comparison warnings 2012-05-03 01:51:56 +00:00
Arvid Norberg ada35c021a improved multiple bitfield and have_all/have_none unit test and fixed peer_connection accordingly 2012-05-02 18:03:12 +00:00
Arvid Norberg bf3751640a fix multiple bitfields issue 2012-05-02 01:08:25 +00:00
Arvid Norberg 9a3d77b400 delete duplicate code and fix metadata issue where piece refcounts would be counted up twice 2012-04-30 21:08:43 +00:00
Arvid Norberg 2da535c556 assert peers are not initialized twice 2012-04-30 20:15:11 +00:00
Arvid Norberg 5583ed407a fix some overflow and division by zero issues 2012-04-28 05:05:39 +00:00
Arvid Norberg 2016251b4f replace is_seed() with has_picker() 2012-04-27 04:36:12 +00:00
Arvid Norberg 2fc7f2191f is_seed() is not a good indicator of whether or not we have a piece picker. use has_picker() instead 2012-04-25 19:16:22 +00:00
Arvid Norberg 4ae349f61f make sure we don't download pieces while the torrent is checking 2012-04-24 18:43:56 +00:00
Arvid Norberg 49f74be42f make super-seeding a bit more robust 2012-04-23 05:48:46 +00:00
Arvid Norberg 48b85ba586 added more asserts in an attempt to track down invalid policy peer pointers in the piece picker. also fixed a web seed related crash when geoip support is enabled 2012-04-12 05:00:20 +00:00
Arvid Norberg 6acde24799 merged SSL fix from RC_0_16 2012-04-05 04:17:19 +00:00
Arvid Norberg 697fa4911b add asserts for peers to be destructed in the network thread 2012-03-30 04:29:54 +00:00
Arvid Norberg 289921e276 log hash of data on incoming pieces 2012-03-26 15:24:14 +00:00
Arvid Norberg 6fcc469aef support banning web seeds that send corrupt data 2012-03-24 01:29:31 +00:00
Arvid Norberg b58a96d76b log stats of incoming piece requests 2012-03-09 06:24:01 +00:00
Arvid Norberg e08718428e revert mistake 2012-03-09 02:18:46 +00:00
Arvid Norberg ce3405c0ce don't prevent sending bytes just because the peer was waiting on the disk 2012-03-09 01:19:30 +00:00
Arvid Norberg 9bd40e950b add send_buffer_low_watermark in an attempt to improve seed ramp-up time 2012-03-07 02:59:50 +00:00
Arvid Norberg 57eb57ac78 move trust point and hashfailure counter logic to where they belong 2012-03-06 07:35:56 +00:00
Arvid Norberg 5a8037dba2 added performance alert for address-in-use errors 2012-03-03 02:29:37 +00:00
Arvid Norberg ccf9c5a0fd log more stats 2012-03-02 08:52:54 +00:00
Arvid Norberg bcf1d6eee8 fixed upload_mode assert 2012-02-21 06:46:36 +00:00
Arvid Norberg a31134d4a4 fix some invariant check failures in metadata transfer edge cases 2012-02-10 07:31:40 +00:00
Arvid Norberg be339c244f fix invalid invariant check 2012-02-09 07:46:23 +00:00
Arvid Norberg 98b3e6eb74 cleanup 2012-02-09 06:56:16 +00:00
Arvid Norberg 679abf2e57 this time, actually remove the encrypted torrent (AES-256 encrypted peer connections) 2012-02-09 06:47:22 +00:00
Arvid Norberg f7b5c10b2b add asserts to try to catch crash in peer_connection::received_valid_data 2012-02-09 06:24:58 +00:00
Arvid Norberg 94a1cae4a3 don't disconnect peers that don't have metadata 2012-02-07 09:18:07 +00:00
Arvid Norberg a6b5f761e8 rename is_local to is_outgoing and m_active to m_outgoing 2012-02-07 03:46:21 +00:00
Arvid Norberg c77ca19140 fix shutdown issue when building without SSL 2012-01-29 23:04:22 +00:00
Arvid Norberg 6e9ef9edab fix connection asserts 2012-01-25 07:58:39 +00:00
Arvid Norberg 818620a5a8 fixed release build 2012-01-23 05:14:12 +00:00
Arvid Norberg 5fc9224072 remove invalid assert 2012-01-22 21:24:51 +00:00
Arvid Norberg 4706807300 fix issue with outgoing connections not being tied to a torrent 2012-01-21 21:29:22 +00:00
Arvid Norberg 7f90a241b6 don't let hung outgoing connection attempts block incoming connections 2012-01-21 09:05:34 +00:00
Arvid Norberg 88c5b35826 add asio debugging to the async shutdown of ssl sockets 2012-01-20 04:41:54 +00:00
Arvid Norberg ae90a8f85e verify that torrent names matches the DNS name in its certificate (RFC 2818-style). Fix issues that was breaking SSL support and tidy up a bit 2012-01-15 23:34:43 +00:00
Arvid Norberg 4a40e68a82 landed ssl branch back into trunk 2012-01-14 16:04:25 +00:00
Arvid Norberg dd2db79896 fix overflow bug in progress_ppm field 2012-01-09 14:13:24 +00:00
Arvid Norberg 61e8d3dd49 improved peer exchange performance by sharing incoming connections which advertize listen port 2012-01-04 20:49:54 +00:00
Arvid Norberg 152cee19f1 add compile-time feature to enable logging of all peer requests 2011-12-29 12:15:29 +00:00
Arvid Norberg 7f3aac3959 fix issue with unchoke_slots_limit not preserving its value correctly 2011-12-19 05:53:11 +00:00
Arvid Norberg 8e8f798905 get rid of read-recurse hack 2011-11-30 20:07:18 +00:00
Arvid Norberg cab1f3d207 fix issue when peer list is full, previously we would sometimes reject new connections 2011-11-24 17:50:57 +00:00
Arvid Norberg fdc5e7e8b2 keep track of where redundant downloads come from. make the timing out of block requests more reasonable in an attempt to actually complete pieces from other peers when stuck on a slow one 2011-11-16 02:29:59 +00:00
Arvid Norberg c4232065d8 introduced a more scalable API for torrent status updates (post_torrent_updates()) 2011-11-15 02:34:00 +00:00
Arvid Norberg 3eb1b1839d add verbose peer logging for setting TOS byte 2011-11-10 09:18:55 +00:00
Arvid Norberg 9a49372368 fix invariant check now that interest is calculated lazily 2011-11-03 09:20:16 +00:00
Arvid Norberg ec80a85bdb fixed connection setup and teardown issues 2011-10-28 23:34:55 +00:00
Arvid Norberg dfda3c9a95 another channel state fix 2011-10-28 22:56:23 +00:00
Arvid Norberg 85ff124503 one more channel stat fix 2011-10-28 21:38:45 +00:00
Arvid Norberg becd714bc8 channel state fix 2011-10-27 08:42:51 +00:00
Arvid Norberg 602e0089f9 fixed silly typo 2011-10-26 01:00:53 +00:00
Arvid Norberg e58e27e83a change peer_states to be a bitmask (bw_limit, bw_network, bw_disk) 2011-10-25 17:34:42 +00:00
Arvid Norberg 9afd09d797 optimize sending buffers on peer sockets by corking and uncorking 2011-10-24 04:22:53 +00:00
Arvid Norberg d3fb55e1da optimize socket send buffers a bit 2011-10-19 02:40:37 +00:00
Arvid Norberg a9b51e1579 fix overflow issue when determining number of outstanding bytes 2011-10-18 16:22:36 +00:00
Arvid Norberg 8b6522a763 log buffer sizes passed to read() and write() at the socket layer (to identify performane problems) 2011-10-17 06:54:02 +00:00
Arvid Norberg aab4cb6937 log number of asio messages passed through the queue per second (to track down performance issue) 2011-10-17 05:17:21 +00:00
Arvid Norberg 451c31828f changed semantics of send_buffer_watermark_factor to be specified as a percentage 2011-09-23 21:12:28 +00:00
Arvid Norberg 61ceacca9b fix non-openssl logging build 2011-09-21 03:51:07 +00:00
Arvid Norberg 469414d486 initial BitTorrent over SSL support 2011-09-12 03:51:49 +00:00
Arvid Norberg 92bcb9ebfd feature to encrypt peer connections with a secret AES-256 key stored in .torrent file 2011-09-05 05:50:41 +00:00
Arvid Norberg 51c10cc76f on disk errors, only set upload-only for some errors. For all others, pause the torrent. Also fixed some release asserts 2011-08-22 01:37:56 +00:00
Arvid Norberg 1d40d7aad9 fixing up some asserts and verbose logging 2011-08-13 18:46:52 +00:00
Arvid Norberg d4958c9286 support for dont-have extension message 2011-08-07 00:41:13 +00:00
Arvid Norberg 6a4708ef15 fix potential infinite loop in request_time_critical_pieces 2011-08-05 17:35:09 +00:00
Arvid Norberg 57f24128a9 add more default reporting about the request and download queue of peers to track end-game stall issue 2011-06-06 04:24:12 +00:00
Arvid Norberg ae76e77065 fix up some cases where we shouldn't be in end-game mode 2011-06-01 09:14:21 +00:00
Arvid Norberg 88fa0b9393 optimize send buffer allocation and deallocation by not allowing requiring contiguous buffers 2011-05-19 02:41:28 +00:00
Arvid Norberg 6e23b9f5a6 allow torrents to keep running when they encounter an error (such as disk full) but still report the error in the torrent's error string 2011-05-16 07:47:21 +00:00
Arvid Norberg e946ba654f release assert fixes 2011-05-08 23:52:06 +00:00
Arvid Norberg a73960aa5a support release asserts 2011-05-08 09:04:59 +00:00
Arvid Norberg 449733d518 logging fixes 2011-05-01 08:58:45 +00:00
Arvid Norberg eaea22be71 make torrent priority stricly prefer unchoking peers on high priority torrents 2011-04-30 20:33:35 +00:00
Arvid Norberg 90719bf77d fixed bug when receiving a have message before having the metadata 2011-04-29 02:45:02 +00:00
Arvid Norberg bbde8f772a fix bug in seed mode when a piece fails hash check 2011-04-28 06:36:44 +00:00
Arvid Norberg ebd116cce3 clean up disk callbacks a bit with regards to whether the torrent is still alive 2011-04-28 03:23:14 +00:00
Arvid Norberg 1723e2d4f7 don't time out peers as long as we can upload to them 2011-04-27 08:05:37 +00:00
Arvid Norberg 573a291495 first step to remove recursion in bandwidth channel 2011-04-21 03:13:53 +00:00
Arvid Norberg 6a9865b7c9 fix invariant check for graceful pause 2011-04-11 02:57:32 +00:00
Arvid Norberg 3435da235d make is_upload_only() be accurate and deal with super seeding special case only where necessary. Fix pointless assert in invariant check 2011-04-09 23:57:56 +00:00
Arvid Norberg 65943e7ff7 fixed reconnect delay when leaving upload only mode 2011-03-25 05:14:14 +00:00
Arvid Norberg 7e07f7469f fixed bug in web_connection_base when receiving chunked encoding and made sure the unit tests pass 2011-03-24 16:46:26 +00:00
Arvid Norberg 057dab11e0 fix bug in recent performance warning 2011-03-17 04:56:02 +00:00
Arvid Norberg 6db11079c8 add performance warning when disk write queue exceeds half of the write cache size 2011-03-16 07:45:51 +00:00
Arvid Norberg f9f5e3138c fix suggest piece bug 2011-03-15 01:58:48 +00:00
Arvid Norberg be4f593ddf fix warning 2011-03-13 08:07:33 +00:00
Arvid Norberg 209bee16bf choker fix. some logic had made it into the bittyrant choker that would never be used 2011-03-02 07:26:09 +00:00
Arvid Norberg 83e8700615 minor fixes 2011-03-01 21:57:03 +00:00
Arvid Norberg 56937edf56 cleaned up some exception handling and introduced macros like BOOST_TRY/BOOST_CATCH to make the optional exception handling nicer 2011-02-25 17:00:36 +00:00
Arvid Norberg 141ada013f fixed a whole bunch of build warnings on gcc and msvc, along with some fixes discovered along the way 2011-02-21 05:24:41 +00:00
Arvid Norberg 7f981ece6c fixed incorrect assert 2011-02-15 10:11:36 +00:00
Arvid Norberg c4c1773ceb fixed some warnings 2011-02-15 10:05:25 +00:00
Arvid Norberg 7eba4cc310 fix verbose logging build 2011-02-15 07:39:25 +00:00
Arvid Norberg 7d300c807a no handshake counts as a connect failure 2011-02-14 06:37:22 +00:00
Arvid Norberg 247ad31dc0 more disconnect granularity in stats logging 2011-02-14 05:38:59 +00:00
Arvid Norberg b471e40064 log more details on the cause of disconnects 2011-02-14 04:48:02 +00:00
Arvid Norberg 8bb71da401 disk write queue watermark fix 2011-02-13 22:27:02 +00:00
Arvid Norberg a42d42fd11 CPU optimization for end-game piece picker 2011-02-09 02:56:00 +00:00
Arvid Norberg 5df4e7edd9 added more piece picker stats 2011-02-07 00:51:20 +00:00
Arvid Norberg 3d616f894e end-game mode optimizations 2011-02-06 23:40:21 +00:00
Arvid Norberg adb250cf5c fixed missing logging of peer disconnects 2011-02-04 07:14:00 +00:00
Arvid Norberg fa40cf38aa demoted some errors to regular disconnect messages 2011-02-04 06:55:39 +00:00
Arvid Norberg 88663bfbde log more peer errors in stats log 2011-02-04 04:31:20 +00:00
Arvid Norberg 9715fbdb3a only post peer error alerts for actual errors 2011-02-04 03:49:20 +00:00
Arvid Norberg bf77ee4199 extended stats logging 2011-02-03 06:22:22 +00:00
Arvid Norberg 5456f2ac91 provide more stats with stats builds 2011-02-03 04:09:50 +00:00
Arvid Norberg 6ecf04137f fix stats build 2011-02-01 17:25:06 +00:00
Arvid Norberg 012bfba3f7 fix disk queue counters 2011-02-01 16:55:32 +00:00
Arvid Norberg d393bb4097 report number of peers blocked on disk in session_status 2011-01-30 10:04:15 +00:00
Arvid Norberg 0c16163e71 fix build with no extensions support 2011-01-29 12:13:49 +00:00
Arvid Norberg b230c385d9 clean up logic around waiting for disk write queue to fall below low watermark. optimize peer disconnect. Fix integer overflow bug in uTP/TCP mixed mode algorithm. Fixed some invariant checks for closing connections issues 2011-01-25 08:03:35 +00:00
Arvid Norberg 021a774168 rate limit outstanding-disk performance warnings. don't throttle reading form peers because of disk congestion if the peer isn't downloading payload. Don't time out peers that are not waiting on the network 2011-01-23 02:09:54 +00:00
Arvid Norberg 8c851b4d34 move an assert 2011-01-16 22:22:33 +00:00
Arvid Norberg 8cec51fc47 fixes to make valgrind happy 2010-12-24 01:22:49 +00:00
Arvid Norberg c4422cd34e optimize test_transfer. fix set_upload_mode() bug for seeds. clean up some verbose logging. fix tests to not fail by EAGAIN on stdout 2010-12-24 00:37:01 +00:00
Arvid Norberg 76f1a9aad0 verbose logging cleanup 2010-12-19 19:40:32 +00:00
Arvid Norberg 20d4279177 optimized piece picking to not cause busy loops in some end-game modes 2010-12-18 10:19:34 +00:00
Arvid Norberg f4746f4090 verbose logging cleanup 2010-12-01 04:22:03 +00:00
Arvid Norberg e5f980d80d merged uTP branch into trunk (yay) 2010-11-29 01:33:05 +00:00
Arvid Norberg 2e871382d7 add debug configuration to debug shutdown-stall bugs / outstanding async operations 2010-11-28 01:47:30 +00:00
Arvid Norberg 7cd628e78d fix for unchoking optimistically unchoked peers 2010-11-23 20:36:27 +00:00
Arvid Norberg dc639193db don't time out peers for inactivity if it's caused by a download rate limit or blocking on disk 2010-11-02 06:44:25 +00:00
Arvid Norberg 24916ac908 fixed typo 2010-10-31 22:26:22 +00:00
Arvid Norberg 8737a339c8 refactored verbose peer logging to use format strings 2010-10-31 22:12:26 +00:00
Arvid Norberg e4de1fc8b1 graceful disconnect mode which finishes transactions before disconnecting peers 2010-10-30 08:36:18 +00:00
Arvid Norberg d737dd051d added support for chunked encoding for web seeds 2010-10-27 06:39:18 +00:00
Arvid Norberg cadd4f1b8d anti-leach seeding unchoke mode 2010-10-21 05:53:13 +00:00
Arvid Norberg eba657d8ad reports redundant downloads to tracker, fixed downloaded calculation to be more stable when not including redundant. Improved redundant data accounting to be more accurate 2010-10-18 00:10:33 +00:00
Arvid Norberg 977c2d34dd log ratelimits in peer bandwidth request entry 2010-10-17 17:39:11 +00:00
Arvid Norberg e494cb219b made seeding choking algorithm configurable 2010-10-09 21:11:03 +00:00
Arvid Norberg 21cbd1fac4 deprecated setters for max connections, max half-open, upload and download rates and unchoke slots. These are now set through session_settings 2010-10-09 19:09:38 +00:00
Arvid Norberg 087552f52a fixed another assert in disconnect 2010-10-04 15:49:30 +00:00
Arvid Norberg e1948fa203 make the invariant check less expensive 2010-10-04 03:26:42 +00:00
Arvid Norberg 7d94fff11a fixed one more assert 2010-10-04 03:06:51 +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 4600dae248 more attempts to fix and catch invariant failure in download_queue 2010-10-03 01:22:11 +00:00
Arvid Norberg d0dab83104 potential fix for long standing invariant check failure 2010-10-02 21:01:11 +00:00
Arvid Norberg a7c87e14dd added functions to query an individual peer's upload and download limit 2010-10-01 16:09:22 +00:00
Arvid Norberg b6f92aa981 added initial support for share-mode 2010-09-05 16:01:36 +00:00
Arvid Norberg 18a3d545b0 fixed potential hang issue when receiving faster than we can handle the incoming messages 2010-08-28 19:44:50 +00:00
Arvid Norberg e2ca3e1545 rate limiter fix 2010-08-27 14:52:42 +00:00
Arvid Norberg b44f71e217 post alerts for socks failures. fix unit tests 2010-08-25 06:22:49 +00:00
Arvid Norberg a85f1f5c61 improved logging 2010-08-18 17:14:40 +00:00
Arvid Norberg 0f8d75c607 removed invalid assert 2010-08-13 15:55:52 +00:00
Arvid Norberg fd5f1bf80b improved SOCKS5 support 2010-08-03 09:08:37 +00:00
Arvid Norberg 1e70456f58 improved support for multi-homed clients 2010-07-17 07:13:14 +00:00
Arvid Norberg 4c6be42b74 added feature to not count downloaded bytes from web seeds in stats 2010-07-15 06:27:44 +00:00
Arvid Norberg 4e576f93fd removed the session mutex for improved performance 2010-07-14 04:16:38 +00:00
Arvid Norberg b3128685d9 replace &x[0] with x.c_str() 2010-06-28 01:12:54 +00:00
Arvid Norberg 06190d8920 fixed bug in web_peer_connection which could cause a hang when downloading from web servers 2010-06-22 18:09:04 +00:00
Arvid Norberg 69001e6a6b fixed bug in metadata extensions combined with encryption 2010-06-18 05:44:08 +00:00
Arvid Norberg b882914461 refactored socket reading code to not use async. operations unnecessarily 2010-06-18 04:43:20 +00:00
Arvid Norberg 2042593750 peer receive logic fix 2010-05-23 21:39:03 +00:00
Arvid Norberg 2b65d104c7 log send suggest message 2010-05-16 22:30:48 +00:00
Arvid Norberg 4ddf87c53e fixed typo 2010-05-13 08:23:04 +00:00
Arvid Norberg 23ba8c8a72 fixed synchronization issue between download queue and piece picker 2010-05-13 06:29:33 +00:00
Arvid Norberg 1a0d33a592 reverted mistake 2010-05-11 05:11:08 +00:00
Arvid Norberg 962c83822e updated project page 2010-05-11 04:49:45 +00:00
Arvid Norberg d1a7e0a581 fixed typo in previous check-in 2010-05-09 06:00:11 +00:00
Arvid Norberg 330f1a2785 fix to incoming-starts-paused torrent 2010-05-09 00:55:22 +00:00
Arvid Norberg c0635f0391 added some asserts to track down issue with peer counter in busy piece picker requests 2010-05-01 16:17:37 +00:00
Arvid Norberg dce2edb6cc fixed vs 2010 build 2010-04-30 19:08:16 +00:00
Arvid Norberg d7c30bc01b fixed potential issue where a piece could be checked twice 2010-04-22 01:53:09 +00:00
Arvid Norberg 56054fac58 another attempt to set peer send state when stalled on disk 2010-04-17 02:21:48 +00:00
Arvid Norberg 17b4cb027c set the peer write state properly when stalled on disk 2010-04-16 19:14:30 +00:00
Arvid Norberg 2a55fe8c70 debug logging fixes 2010-04-14 18:52:13 +00:00
Arvid Norberg 483112bb14 fix bug when accepting incoming connections to paused torrents 2010-04-09 05:54:36 +00:00
Arvid Norberg 7e851818b1 support more fine-grained torrent states between which peer sources it announces too 2010-03-29 00:34:04 +00:00
Arvid Norberg 3e77b161c2 made the send_buffer_watermark performance warning more meaningful 2010-03-20 02:46:33 +00:00
Arvid Norberg 5224e0c340 complete_ago extension 2010-03-19 18:39:51 +00:00
Arvid Norberg 06a043a489 add send_watermark_factor 2010-03-12 02:36:55 +00:00
Arvid Norberg 5247db7f90 fixed rare bug where we might erase an entry from the policy peer list when we shouldn't 2010-03-08 08:03:53 +00:00
Arvid Norberg e8523a3ad4 fixed issue with 0-sized torrents and verify_piece assert 2010-03-02 07:08:29 +00:00
Arvid Norberg f223708b0b fixed assert when using odd piece size 2010-02-23 23:47:40 +00:00
Arvid Norberg eff49e42a7 added support for torrents with odd piece sizes 2010-02-23 16:26:24 +00:00
Arvid Norberg cebb0b8212 fast piece optimization 2010-02-21 09:07:09 +00:00
Arvid Norberg 54b4bc7754 better rate limiter fix 2010-02-21 01:32:57 +00:00
Arvid Norberg cead1b5780 rate limiter fix for metadata extension 2010-02-20 18:56:53 +00:00
Arvid Norberg 875e332997 fixed merge error 2010-02-18 05:19:20 +00:00
Arvid Norberg c050b22d8f optimized memory usage for torrent objects 2010-02-14 01:39:55 +00:00
Arvid Norberg 3d5d9eb807 start torrent on incoming connection feature 2010-02-11 04:39:04 +00:00
Arvid Norberg fb47469834 experimental support for the BitTyrant choking algorithm 2010-02-09 03:04:41 +00:00
Arvid Norberg 0dba0f5dcc never time out a peer because we're waiting for the disk. allow connection_speed = 0. post an alert when rejecting a peer because of the connection limit 2010-02-06 21:40:55 +00:00
Arvid Norberg 53ef3dfb22 tuning of guided read cache 2010-02-01 00:38:32 +00:00
Arvid Norberg 3bc40b9980 fix builds for all combinations of stats and disk stats 2010-01-31 20:32:12 +00:00
Arvid Norberg ca20d2d600 fixed broken build 2010-01-31 20:22:35 +00:00
Arvid Norberg 5b747f58f7 add guided read cache and update tuning docs 2010-01-31 19:14:00 +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 2d7705e38b disabled feature to drop requests after having been skipped too many times 2010-01-14 02:16:23 +00:00
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