Commit Graph

5714 Commits

Author SHA1 Message Date
arvidn 74554de330 forward port GetAdaptersAddresses from RC_1_0 and fix error categories in enum_net.cpp 2016-02-05 01:08:09 -05:00
arvidn b0cc0f84ab support NULL being passed as the listen interface to session constructor 2016-02-02 23:17:51 -05:00
arvidn 0f747695b7 fix error handling bug in logging 2016-02-02 01:57:56 -05:00
arvidn e3fc6083bb fix typo in listen_failed_alert 2016-02-01 20:53:58 -05:00
arvidn 88b7e3768f add sim test for optimistic unchoke round-robin distribution 2016-02-01 20:28:30 -05:00
arvidn f2ce2284da optimize the optimistic unchoke logic. extend the API for extensions to be able to affect the order of optimistic unchokes 2016-02-01 20:28:22 -05:00
Arvid Norberg 764c8a7f0c Merge pull request #446 from arvidn/default-gateway-fix-1.1
forward port removal of special case for windows and mingw-1.1
2016-02-01 01:50:28 -05:00
arvidn 55024ccc4b forward port removal of special case for windows and mingw in get_default_gateway that appeared wrong 2016-01-31 21:14:15 -05:00
arvidn e113e8cdf3 minor cleanup of listen sockets 2016-01-31 19:40:31 -05:00
arvidn e584c30b29 forward-port reuse address patch for windows 2016-01-31 18:16:26 -05:00
arvidn acd929381e restore the endpoint field in listen_failed_alert (but deprecated) and add a port field 2016-01-31 10:20:10 -05:00
arvidn efe32c6a0e rewrite most of web_peer_connection::on_receive to make it a lot simpler and fix edge cases with pad-files 2016-01-28 01:58:33 -05:00
arvidn f31d17c9c5 allow specifying which tracker to scrape in torrent_hadnle::scrape_tracker 2016-01-26 18:14:32 -05:00
arvidn 73289cb8ae fix use of uninitialized variables in default_storage 2016-01-25 19:11:57 -05:00
Alden Torres f71d775238 Allow xp compilation with the use GetFileInformationByHandleEx. 2016-01-25 12:22:33 -05:00
Steven Siloti 21feab838d Enable SNI for outgoing SSL connections
Fixes #429
2016-01-24 12:24:33 -08:00
arvidn 2a0e64df46 add run-time check to file_storage::map_block and improve its documentation 2016-01-22 17:17:35 -05:00
Alden Torres 5c94b286b0 Removed file::m_path windows specific field
Removed default_storage::sparse_end
Typos
2016-01-21 12:11:33 -05:00
Alden Torres 218d33c545 Documentation typos and minor cleanup 2016-01-20 20:48:23 -05:00
arvidn fbb246094b fix windows build 2016-01-19 21:21:00 -05:00
arvidn 2fa84b3aa5 fix incorrect use of WaitForMultipleObjects 2016-01-19 18:47:21 -05:00
arvidn 784f8806a4 fix asio debugging feature 2016-01-18 23:13:50 -05:00
arvidn 595fe157a9 fix shutdown issue 2016-01-18 20:48:27 -05:00
arvidn 4cbbb0620e only strip trailing dots and spaces from filenames on windows 2016-01-18 13:07:04 -05:00
arvidn 1f9f588e75 merge copyright year update and changelog from RC_1_0 2016-01-17 18:57:46 -05:00
Arvid Norberg fa391d4961 Merge pull request #394 from arvidn/forward-port-http-fix
forward port fix for web seeds not being used by torrents added by URL
2016-01-17 17:47:25 -05:00
arvidn 0c971d0d62 forward port fix for web seeds not being used by torrents added by URL 2016-01-16 23:57:33 -05:00
arvidn 3cd57b59e0 when a tracker is force announced or scraped by the user/client, the resulting response or failure alert is now posted regardless of the alert mask. Since it's user initiated, it's reasonable to expect the user to be interested in the response 2016-01-16 21:24:04 -05:00
arvidn 78d306157b forward port of windows symlink fix from RC_1_0 2016-01-16 01:53:27 -05:00
Arvid Norberg cdc3e720d6 Merge pull request #386 from arvidn/win-file-error-handling
fix missing error handling in windows preadv/pwritev emulation
2016-01-13 21:50:49 -05:00
arvidn c8f119c1a1 fix typo 2016-01-13 01:07:27 -05:00
arvidn 4a28e95ce0 fix missing error handling in windows preadv/pwritev emulation 2016-01-13 00:49:17 -05:00
arvidn 13f03ce38a print the actual stats in session_stats_alert::message() and make parse_session_stats.py parse the alert output. add stats_metric objects for all performance counters 2016-01-12 23:34:37 -05:00
arvidn f4d643bd2d instead of restarting the whole DHT when changing external IP, just rebuild the routing table and change the node IDs 2016-01-11 21:17:25 -05:00
Alden Torres 20d8f4e3f7 Removed unused fields in field class 2016-01-11 12:07:36 -05:00
arvidn 4cc2e879c4 comment out verbose pex logging. fix bug in disabled_storage and an error reporting issue on short reads in default_storage 2016-01-10 11:50:56 -05:00
Alden Torres 0f442f59f3 Avoid pass IPv6 address to current implementation of DHT while adding a node 2016-01-09 18:46:19 -05:00
arvidn e06daa68a4 overhaul the dht simulator (setup_dht) to be more flexible and cheaper to run thousands of nodes 2016-01-09 01:08:52 -05:00
Alden Torres 7b34379c87 Doc typos 2016-01-05 08:31:04 -05:00
Arvid Norberg 7282195ef0 Merge pull request #355 from arvidn/dht-add-node
simplify dht routing table add
2016-01-03 09:54:30 -05:00
arvidn d954ae1b18 simplify dht routing table add 2016-01-02 20:03:18 -05:00
Alden Torres b9a5525ab2 Store dht_settings::max_peers in session state 2016-01-02 11:49:07 -05:00
arvidn 07ddb010c5 split buckets when exceeding the next bucket's size, to make sure we split before risking discarding nodes because the next bucket is smaller 2016-01-02 00:45:44 -05:00
arvidn e3ba811ae4 improve name of m_timer in dht_tracker 2016-01-01 16:42:44 -05:00
arvidn 01e6b93854 simplify and improve unit test for distance_exp. make some immutable variables const in the DHT implementation. instead of waking up periodically just to check if it's time to refresh the DHT secret key, set the timer to only wake up to refresh the key. If we don't have a DHT observer (to ask for our external IP) or if we don't know our external IP, don't generate a node ID based on 0.0.0.0, just generate a random ID instead. Simplified and improved node replacement logic in the routing table a little bit 2016-01-01 16:42:37 -05:00
Arvid Norberg ffb78f0378 Merge pull request #312 from ssiloti/export-verify-message
export verify_message and incoming_error
2015-12-30 22:51:38 -05:00
Steven Siloti ac01ccc43a add templated wrapper around verify_message
It was too easy to forget to update the ret and size parameters
when the size of desec changed. With this change we now automatically
get the size of desc and enforce that ret has the same size.

It would be nice if we could use bdecode_node ret[static Size] from C99
but that is not widely supported.
2015-12-29 20:35:36 -08:00
arvidn 1698dc75dc remove redundant boost::bind 2015-12-25 15:59:50 -05:00
Arvid Norberg 03e90d45d8 Merge pull request #339 from arvidn/dht-storage-test
extend the unit test of dht_storage
2015-12-20 02:02:56 -05:00
arvidn 626baade75 fix dht_storage bug 2015-12-19 22:06:25 -05:00
arvidn 3460f203f3 extend testing of sanitize_append_path_element 2015-12-19 20:11:22 -05:00
arvidn 28749466a2 fix build 2015-12-19 02:40:10 -05:00
arvidn 15ec839d33 extend the unit test of dht_storage 2015-12-19 02:09:06 -05:00
arvidn e9b98c7d2e GetFileAttributesEx fix 2015-12-19 00:12:11 -05:00
arvidn 1f3f06a836 forward port fix for deleting files of magnet link to master 2015-12-18 18:33:31 -05:00
arvidn 645b121df6 deprecate resolve-countries 2015-12-14 21:32:30 -05:00
Arvid Norberg 87dcd690d8 Merge pull request #327 from arvidn/stop-when-ready-fix
polish the stop-when-ready flag and improve documentation
2015-12-14 00:42:57 -05:00
Arvid Norberg 3516e53fa2 Merge pull request #329 from arvidn/warnings-fix
mark up some override functions and fix other clang warnings
2015-12-13 22:12:52 -05:00
arvidn 1712a8e4b4 polish the stop-when-ready flag and improve documentation 2015-12-13 20:31:28 -05:00
arvidn 505ae508f4 mark up some override functions and fix other clang warnings 2015-12-13 19:44:42 -05:00
arvidn 4b6e11cc07 deprecate set_tracker_login 2015-12-13 15:14:19 -05:00
Arvid Norberg 9e51700739 Merge pull request #325 from arvidn/set_web_seeds
add set_web_seeds to torrent_info
2015-12-13 11:24:59 -05:00
arvidn 121b686a39 add set_web_seeds to torrent_info 2015-12-12 18:36:15 -05:00
arvidn 0f9d82ab22 fix bug in handling force-started checking torrents 2015-12-12 15:08:38 -05:00
Arvid Norberg 550b0bb047 Merge pull request #313 from arvidn/setup-swarm-cleanup
clean up setup-swarm simulation utility to be more flexible
2015-12-12 14:07:26 -05:00
arvidn d505f93d7a port sim tests to use the new setup_swarm API 2015-12-12 00:41:47 -05:00
arvidn d80a129871 fix gcc warnings 2015-12-12 07:15:24 +02:00
Steven Siloti c6f1e0bd7b export verify_message and incoming_error
Also move these functions to a new msg.cpp. They are useful for plugins
which implement DHT extensions.
2015-12-05 18:20:08 -08:00
arvidn cc3b064cff fix graceful pause issue. peers regularly check whether they should disconnect or not 2015-12-04 23:27:43 -05:00
Alden Torres 409cfaccc1 Fix num_alert_types. 2015-12-03 22:04:32 -05:00
arvidn 8732863a9a another fix to receiving malformed DHT error message 2015-12-03 01:08:27 -05:00
arvidn 2acb3dcb24 clean up use of getrlimit() by wrapping it and move it to platform_util.cpp. Also take the opportunity to make it simulator friendly (consistent in simulation) 2015-12-02 00:45:34 -05:00
arvidn 12dde0f415 actually add a test to the unit test 2015-11-30 19:07:35 -05:00
arvidn 7540a6e5cc correctly check incoming DHT error messages 2015-11-30 18:02:00 -05:00
Arvid Norberg d0da753fb8 Merge pull request #302 from arvidn/fix-save-resume
fix save_resume_data in client_test
2015-11-30 17:17:57 -05:00
arvidn 60df41cd85 fix save_resume_data in client_test and make torrent a bit more instrumentable. This could be greatly simplified if resume data would not have file_sizes and timestamps 2015-11-29 20:31:57 -05:00
arvidn 87b64f083a fix python build 2015-11-29 11:12:58 -05:00
arvidn 332799bff2 make alert types declared final and disable the log alert declarations when logging is disabled 2015-11-29 10:16:02 -05:00
arvidn e9c0fc8eb5 fix bug that disabled rarest-first piece picking. introduced when removing speed-affinity in the piece picker 2015-11-29 08:26:00 -05:00
arvidn fd3b53604c add new piece picker logging alert category 2015-11-29 08:25:55 -05:00
arvidn 2c3d7ee0ef fix a bug where the torrent's invariant was not always maintained as well as a shutdown issue (now covered by test as well) 2015-11-28 14:14:49 -05:00
Arvid Norberg 359fc5648b Merge pull request #296 from arvidn/udp-read-handler
more efficient handler allocation for udp and second_tick
2015-11-28 01:06:10 -05:00
arvidn a8e31fd8ca add first coverage of test_transfer as a proper sim 2015-11-28 00:59:39 -05:00
arvidn 98c3b75b55 use more efficient (in-place) handler allocation for udp async_read and session second_tick 2015-11-28 00:57:44 -05:00
arvidn 51df32a25b fix logging issue 2015-11-27 14:04:46 -05:00
arvidn 847cd340ee extend tracker sim test and fix some bugs in tracker error reporting 2015-11-24 23:38:49 -05:00
arvidn 06b648203f clean up use of error categories 2015-11-24 00:50:51 -05:00
arvidn e3dad98fbe fix an old use of posix_category. make http_connection translate IPs into proper endpoints when connecting over socks (instead of passing the IP on as a hostname string). add test coverage 2015-11-24 00:39:02 -05:00
arvidn 92236a9923 clean up error_code use, and use error_condition to test for errors in test_http_connection 2015-11-24 00:39:01 -05:00
arvidn 174e0aeb46 fix semantics of socks5_stream and http_connection to make them not close themselves. Add socks5 and socks4 proxy coverage in test_http_connection 2015-11-24 00:39:01 -05:00
arvidn 91868f2086 add test for gzipped http responses 2015-11-24 00:39:01 -05:00
Thomas Yuan 603ef84c65 Fix observer_size. 2015-11-23 11:06:20 -05:00
Steven Siloti 9c7edf803e add override and a TODO 2015-11-22 18:58:32 -08:00
Steven Siloti 9f7aa7f3a6 fix segfault in put_data
If less than three nodes are found to put an item to then traversal_algorithm::start
will add router nodes. This leads to a crash in put_data::invoke when it tries to
read a token from uninitialized memory in a null_observer.
2015-11-22 16:05:24 -08:00
Steven Siloti 1f13343a70 const correctness 2015-11-22 10:02:26 -08:00
Steven Siloti 8a984effa7 allow done() with a non-zero invoke count 2015-11-22 10:02:26 -08:00
Steven Siloti 6c5bed63d3 whitespace cleanup 2015-11-22 10:02:26 -08:00
Arvid Norberg ddddce6e2a Merge pull request #280 from arvidn/stop-start-test
stop-start test
2015-11-21 02:31:11 -05:00
Arvid Norberg 42b129b9d5 Merge pull request #178 from thomas-yuan/put
Make dht_put_alert more accurate.
2015-11-21 02:30:45 -05:00
arvidn c0d6b20634 extend swarm simulation test to include stopping and starting and graceful pause 2015-11-20 22:27:12 -05:00
Arvid Norberg 2eabf99307 Merge pull request #276 from arvidn/msvc-warnings
attempt to fix some msvc warnings
2015-11-20 08:04:38 -05:00
arvidn 4c790043a1 fix invariant check failure in torrent::pause 2015-11-20 01:38:21 -05:00
Thomas Yuan ab70ad3e05 fix comments and unit test 2015-11-20 00:06:08 -05:00
Thomas Yuan 194ad410dc Make dht_put_alert more accurate. 2015-11-20 00:06:08 -05:00
arvidn 4aaa8ca4a9 silence msvc performance warnings. introduce more override and finals 2015-11-19 23:37:45 -05:00
arvidn fba0762353 fix some msvc warnings 2015-11-19 19:01:54 -05:00
arvidn 964031c070 factor out readwritev to a free function, to allow unit testing of it 2015-11-19 17:58:55 -05:00
arvidn cec6748e0c remove the concept of slots, and just talk about pieces (since we don't do compact allocation anymore). Remove the section about compact allocation 2015-11-19 01:38:04 -05:00
Steven Siloti 86116caf4c fix assert after a DHT get/put request
If an observer is abandoned due to there being more than 100 results in a
traversal then the traversal may complete while the observer is still
outstanding. When the observer times out or is aborted it calls
traversal_algorithm::failed() which asserts because m_invoke_count has been
cleared to zero by traversal_algorithm::done().

To fix this add a check when abandoning observers to see if they have an
outstanding query. If they do then flag them as done to prevent them from
calling back into the traversal and decrement the invoke count.

Fixes #271
2015-11-16 21:05:32 -08:00
Steven Siloti ba1ccdec66 fix assert in dht::observer
This is was introduced by c2277b3ea5
"fix traversal_algorithm::done() being invoked more than once".
2015-11-14 18:30:42 -08:00
Arvid Norberg 64aba31e30 Merge pull request #263 from thomas-yuan/dead_loop_on_ios
Fix iOS dead loop issue.
2015-11-14 12:55:53 -05:00
Arvid Norberg bdfed667e3 Merge pull request #267 from arvidn/storage-fix
fix support for incomplete reads/writes from disk
2015-11-14 12:54:57 -05:00
arvidn c7a4eefd69 fixed typo 2015-11-14 02:22:35 -05:00
Thomas Yuan b536cd4ab4 Fix iOS dead loop issue. 2015-11-14 00:53:39 -05:00
arvidn fb2f2731cf fix support for incomplete reads/writes from disk 2015-11-14 00:21:03 -05:00
Alden Torres 611d0c1c6e Fixed to make it compatible with mingw-w64 and generic linux 2015-11-13 07:55:28 -05:00
Steven Siloti 1bd706ac14 the simulator always supports IPv6 2015-11-12 20:52:30 -08:00
Arvid Norberg ef1f399fd3 Merge pull request #259 from arvidn/deterministic-rand
use a consistent random number generator
2015-11-12 21:45:09 -05:00
Arvid Norberg 401f12b287 Merge pull request #260 from arvidn/ip-filter
fix IP filter bug when adding a torrent after setting the filter
2015-11-12 21:44:40 -05:00
arvidn 524cf00fcb forward port of version change from RC_1_0 2015-11-12 21:35:50 -05:00
arvidn d4d5f37222 fix typo 2015-11-12 01:42:44 -05:00
arvidn 2626159abe use a consistent random number generator to make simulations deterministic 2015-11-12 00:21:56 -05:00
arvidn 8fa6863e15 fix IP filter bug when adding a torrent after setting the filter 2015-11-11 20:43:42 -05:00
Arvid Norberg bae2b3394f Merge pull request #258 from arvidn/version
forward-port version function from RC_1_0
2015-11-11 19:13:44 -05:00
arvidn fbf152abc0 attribute external IP voting to the actual tracker IP we connected to, and preserve endpoint list in http_connection to make the re-announce to IPv6 logic robust 2015-11-11 01:30:28 -05:00
arvidn 4c0b00c390 forward-port version function from RC_1_0 2015-11-11 00:57:51 -05:00
Steven Siloti c2277b3ea5 fix traversal_algorithm::done() being invoked more than once
A traversal can be done while there are still outstanding queries (i.e.
m_invoke_count is non-zero) if K good responses have already been received and
none of the outstanding queries are closer than the nodes which have responded.

When this happens and the outstanding queries eventually complete or timeout
they call traversal_algorithm::failed() or traversal_algorithm::finished() as
usual which will cause traversal_algorithm::done() to be called yet again.

The fix is to always set the done flag on all queried observers in
traversal_algorithm::done() so that the observers will refrain from calling
back into the traversal.

This also makes traversal_algorithm::abort() redundant since this was the only
thing it did before it called into done().
2015-11-09 20:47:33 -08:00
arvidn 4814855933 update cache_size docs and raise the cap for 32 bit builds 2015-11-08 10:49:38 -05:00
arvidn 9c10e99aef forward port fix to not auto-detect disk cache size greater than the virtual address space for 32 bit builds 2015-11-07 22:00:20 -05:00
Arvid Norberg 61138630a3 Merge pull request #245 from arvidn/invalid-request
handle receiving an invalid request
2015-11-07 21:19:31 -05:00
arvidn a48cb785d0 forward port piece_block patch from RC_1_0 2015-11-07 18:50:54 -05:00
arvidn a138b2daa9 handle receiving an invalid request 2015-11-07 14:58:08 -05:00
arvidn 1fa184ba8a fix msvc-10.0 build 2015-11-07 10:01:01 -05:00
arvidn 00090b8284 fix typo in test_checking, introduced by recent error_code in torrent_status patch 2015-11-07 01:01:07 -05:00
arvidn ced0f74bf8 minor moving around of code 2015-11-06 00:38:42 -05:00
arvidn ebb9fdaf54 add error_code to torrent_status instead of error string 2015-11-05 20:43:23 -05:00
arvidn ee714306be forward port IPv6 IP address resolution in URLs fix 2015-11-01 17:26:45 -05:00
arvidn f5da27ba9e support large info-sections in torrent_info 2015-10-31 10:53:39 -04:00
arvidn 3462c061a7 merged error handling fix from RC_1_0 2015-10-31 10:06:15 -04:00
Steven Siloti bd0c237134 simulator: support IPv6 in enum_routes() 2015-10-29 20:43:51 -07:00
arvidn 729a8e9152 update libsimulator. add simulation/test for announcing twice to trackers over IPv4 and IPv6. fix bugs preventing libtorrent from doing that correctly 2015-10-27 00:21:07 -04:00
arvidn 3cc464805f update libsimulator submodule 2015-10-25 10:55:20 -04:00
arvidn a75dfe2eb6 silence warnings in boost headers in dht_storage 2015-10-25 09:30:56 -04:00
arvidn 234ac8adeb update libsimulator submodule with IPv6 support 2015-10-24 15:57:22 -04:00
arvidn e31433d952 flush and close the partfile when releasing files in default storage 2015-10-24 15:35:42 -04:00
Steven Siloti 4151c8e366 assert that the signature is valid when assigning a mutable value to an item 2015-10-21 20:29:29 -07:00
Arvid Norberg ea86785d45 Merge pull request #202 from arvidn/stop-when-ready
Stop when ready
2015-10-04 16:18:59 -04:00
arvidn 8eded0a2a0 forward port set_allow_peers bugfix 2015-10-04 14:41:58 -04:00
arvidn 51c6079c42 add stop-when-ready feature, to support checking torrents without starting the download afterwards 2015-10-04 13:08:23 -04:00
arvidn e59d03f684 fix strict aliasing violation 2015-10-03 15:13:45 -04:00
arvidn 3d54c02450 fix build 2015-10-03 11:42:21 -04:00
arvidn c798e388a9 forward port fix to proxy_peer_connections to master 2015-10-03 11:20:10 -04:00
Arvid Norberg b785e789b6 Merge pull request #199 from arvidn/parse-magnet-fix
fix bug in parse_magnet_uri and improve unit test
2015-10-03 02:09:34 -04:00
arvidn c1955ecb18 fix bug in parse_magnet_uri and improve unit test 2015-10-02 23:24:17 -04:00
Alden Torres 62b24d8b67 Add set_dht_storage to session API. 2015-10-02 09:00:07 -04:00
Arvid Norberg c56e878ff4 Merge pull request #194 from arvidn/merge_http
forward port merge web seed patch
2015-10-01 01:46:18 -04:00
Arvid Norberg d7cdcf9369 Merge pull request #183 from thomas-yuan/ta_init
start 'find' from near nodes instead of all of nodes in routing table.
2015-09-30 00:43:14 -04:00
arvidn 424e51b737 fix build 2015-09-30 00:41:41 -04:00
arvidn a00e5aa6c7 forward port patch to have resume data web seeds override .torrent file web seeds, and a flag to merge them 2015-09-30 00:41:41 -04:00
arvidn 5da511f140 now that force-started torrents aren't affected by the auto-manager, they need to be explicitly kicked when entering checking state (it would be nice if all this could be done through set_state()) 2015-09-29 20:49:38 -04:00
arvidn dab0f8b8d0 simplify the queuing logic for checking torrents. make all non-auto-managed torrents always be exempt from any queuing mechanism (including checking). Extend documentation on how it works 2015-09-29 20:49:37 -04:00
arvidn 8b30e78d69 forward port fix for bug where dont_count_slow_torrents could not be disabled, into master 2015-09-25 14:22:38 -07:00
Alden Torres 197a443465 Fix of dht_storage_counters::peers counter. 2015-09-24 10:50:04 -04:00
Thomas Yuan 0d2644802d start 'find' from near nodes instead of all of nodes in routing table. 2015-09-23 17:04:33 -04:00
Thomas Yuan f9fa8ffdec Use ping instead of get_peers if current bucket is full. 2015-09-22 10:35:10 -04:00
Arvid Norberg 50ccce6eed Merge pull request #174 from arvidn/fallocate-hack
remove fallocate hack (in master)
2015-09-22 07:18:07 -07:00
arvidn 5bdb583162 remove fallocate hack (in master) 2015-09-21 20:22:19 -07:00
Thomas Yuan 7fec9e488d make immutable/mutable items lifetime configurable. 2015-09-21 20:32:37 -04:00
Arvid Norberg 01193fcf7c Merge pull request #163 from aldenml/dht-storage-counters
Create dht_storage_counters to avoid internal counter in future public API
2015-09-21 13:51:39 -07:00
Alden Torres 25ed70b977 Create dht_storage_counters to avoid internal counter in future public API. 2015-09-21 07:46:23 -04:00
arvidn fb2f659a31 fix bug in time keeping of active_time, seeding_time, finished_time etc. 2015-09-21 00:38:56 -07:00
Arvid Norberg 6bf1971452 Merge pull request #162 from thomas-yuan/bootstrap
Only re-bootstrap when there is no enough nodes in routing table.
2015-09-20 14:52:16 -04:00
arvidn cf15453388 forward port auto-manage fix from RC_1_0 2015-09-19 02:10:50 -04:00
arvidn 2715ae475c expose whether torrents are announcing to trackers, lsd and dht. these can be disabled by the queuing logic 2015-09-19 01:54:47 -04:00
arvidn b628692223 separate out announce_entry and torrent_status into their own headers 2015-09-18 08:08:08 -04:00
Arvid Norberg c54f8445bd Merge pull request #164 from thomas-yuan/alert_message
Fix dht_put_alert::message() for immutable items.
2015-09-17 18:25:17 -04:00
Thomas Yuan 20708fa5b6 Only re-bootstrap when there is no enough nodes in routing table. 2015-09-17 11:22:23 -04:00
arvidn c9a0212ee0 add simulation of tracker announces 2015-09-16 20:49:10 -04:00
Thomas Yuan 1fac816d37 Fix dht_put_alert::message() for immutable items. 2015-09-16 15:21:05 -04:00
Alden Torres e2d682275a Implementing and using new dht storage interface 2015-09-16 08:30:27 -04:00
Arvid Norberg dc91e7f507 Merge pull request #154 from thomas-yuan/counter
Fix dht counters.
2015-09-11 21:45:39 -04:00
Thomas Yuan c0d20d7708 Fix dht counters. 2015-09-11 13:58:33 -04:00
Arvid Norberg 4fd56fd220 Merge pull request #145 from arvidn/super-seeding-fix2
fix super seeding assert (forward port from RC_1_0)
2015-09-10 20:13:14 -04:00
Arvid Norberg 8b6b8240c1 Merge pull request #144 from thomas-yuan/master
load_state should restart dht/proxy if there is dht state/proxy.
2015-09-10 00:13:07 -04:00
Arvid Norberg 7114648f33 Merge pull request #146 from arvidn/convert-from-native
correctly convert error messages from native to utf8
2015-09-10 00:09:37 -04:00
Thomas Yuan a06a8fe19e load_state should restart dht/proxy if there is dht state/proxy. 2015-09-08 21:34:49 -04:00
Arvid Norberg abe994c191 Merge pull request #128 from thomas-yuan/patch2
Add read-only support in dht_settings and outgoing query messages.
2015-09-08 19:47:18 -04:00
arvidn a10438addd correctly convert error messages from native to utf8 2015-09-08 19:27:15 -04:00
arvidn c0a4f7ba26 fix super seeding assert (forward port from RC_1_0) 2015-09-08 18:17:13 -04:00
Thomas Yuan 4d6de4bcd8 save/load all dht_settings. 2015-09-08 11:03:27 -04:00
Thomas Yuan d6bb387ab9 Use dht_settings directly instead of add a read_only member variable.
Since rpc_manager has a reference of dht_settings, needn't pass it
as a parameter for incoming().
2015-09-08 10:35:30 -04:00
arvidn ee3cb6cf86 move some internal headers to aux_ to fix documentation 2015-09-07 17:00:27 -04:00
Thomas Yuan 3d4ed9f37f Add read-only support in dht_settings and outgoing query messages. 2015-09-07 14:24:46 -04:00
arvidn 05c580572d disable simulation on travis osx. fix more warnings 2015-09-06 22:55:42 -04:00
arvidn a2ea8b32db fix more warnings 2015-09-06 22:55:41 -04:00
arvidn 17c5759829 disable warning for unused command line argument and fix warnings. remove redundant travis build config. use new preprocessor on clang to avoid warnings 2015-09-06 22:55:41 -04:00
arvidn b45c585a78 use gcc on linux and clang on osx 2015-09-06 22:55:41 -04:00
arvidn 379fd8ce81 fix simulation build 2015-09-06 22:52:25 -04:00
arvidn 9cb4e3d1ca forward-port supports_ipv6() fix for linux from RC_1_0 (and fix bug in it) 2015-09-06 20:53:06 -04:00
arvidn cb65694578 fix const correctness in xml_parse(). update unit tests rss and upnp to use new signature for parser callback 2015-09-06 00:38:33 -04:00
arvidn 43ee75ce02 only post listen_succeeded_alert once all sockets have succeeded, since we may re-open previously successful ones if a later one fails 2015-09-05 22:14:04 -04:00
Arvid Norberg d7c6a3b3ea Merge pull request #130 from thomas-yuan/invalid_node_id
A node with an invalid node_id, shouldn't be added to routing table.
2015-09-05 13:30:40 -04:00
Thomas Yuan 97217a1fd6 A node with an invalid node_id, shouldn't be added to routing table. 2015-09-04 14:04:49 -04:00
arvidn a344c659e5 Revert "use handler allocator for UDP socket read handler"
This reverts commit 3ccb4f7dca.
2015-09-03 07:29:24 -04:00
arvidn 3ccb4f7dca use handler allocator for UDP socket read handler 2015-09-02 01:15:02 -04:00
Arvid Norberg 7285520521 Merge pull request #117 from thomas-yuan/master
Fix bug caused by RP #96.
2015-08-31 23:49:08 -04:00
Thomas Yuan ef16ae4e27 Handle response with unexpected format. 2015-08-31 22:37:46 -04:00
Arvid Norberg 351798648a Merge pull request #120 from thomas-yuan/patch1
reorganize code to make it straightforward.
2015-08-31 20:25:58 -04:00
Thomas Yuan 71b6b3c262 Fix bug caused by RP #96. 2015-08-31 18:13:47 -04:00
Thomas Yuan 314f134e35 reorganize code to make it straightforward. 2015-08-31 13:53:49 -04:00
arvidn 0e3e3ea793 add simple unit test for creating hard links 2015-08-30 20:14:55 -04:00
arvidn 434be2bd83 add more logging around the test failure 2015-08-30 08:52:58 -04:00
arvidn 0d9d632465 initial support for disabling proxy for tracker connections 2015-08-29 19:44:54 -04:00
arvidn ba95aa27d6 cleanup unused code 2015-08-29 16:07:19 -04:00
arvidn 0f760d3fb4 expand tracker unit test to assert the session correctly receives the right peers 2015-08-29 16:04:35 -04:00
arvidn 5757b0ad13 polish some behavior when setting piece and file priorities for torrents with no metadata. Fix the initialization order of peers once we do get the metadata 2015-08-29 10:21:15 -04:00
arvidn beb5455331 add disk I/O read asserts and fix i2p issue if a tracker responds with i2p peers when i2p is not configured on the client 2015-08-28 07:20:21 -04:00
arvidn 6012306557 add more asserts for the size of the bitfields peers send 2015-08-27 21:48:52 -04:00
Alden Torres 88b1063f13 The constant siocgifmtu is used in the context of all these macros. 2015-08-26 17:46:54 -04:00
arvidn d1768b9c4c extend settings_pack unit test 2015-08-24 18:48:43 +02:00
arvidn 82a3683f7d polish removal of web seeds logic 2015-08-23 11:01:55 +02:00
Alden Torres 5be9dfb6db Removed unnecessary call to node_id copy constructor. 2015-08-22 16:01:53 -04:00
arvidn e7b8b6da49 forward port DHT routing table fix from RC_1_0 2015-08-22 15:51:28 +02:00
Arvid Norberg 746cd4c1a6 Merge pull request #96 from thomas-yuan/master
Parsing message correctly when message type is error.
2015-08-22 10:42:01 +02:00
arvidn d43af6e3b7 remove functionality to initiate MTU based on the MTU on the nic (this is error prone and has questionable value) 2015-08-22 08:09:09 +02:00
arvidn a42f9e0c63 fix more warnings 2015-08-22 00:28:12 +02:00
arvidn 42fdd0f896 fix some more warnings 2015-08-21 22:56:57 +02:00
arvidn 4873004df7 warnings as errors 2015-08-21 14:52:07 +02:00
arvidn d8065b8941 fix some warnings 2015-08-21 14:03:16 +02:00
arvidn 26b721973f fix typo 2015-08-21 10:43:14 +02:00
arvidn b7b0dafcca fix some warnings 2015-08-21 10:05:51 +02:00
arvidn 904da120d7 fixed some warnings 2015-08-20 22:28:00 +02:00
arvidn fa450b4bf7 attempt to fix invalid vector subscript bug in piece_picker 2015-08-20 21:37:22 +02:00
Arvid Norberg ef47b5f33f Merge pull request #105 from aldenml/torrent-alert-constructor
Recoded torrent_alert constructor logic to build the name.
2015-08-20 21:36:30 +02:00
arvidn 40a67ecbc8 fix unknown pragma warning on msvc 2015-08-20 21:14:39 +02:00
Alden Torres 203605bd3a Recoded torrent_alert constructor logic to build the name.
Fixed compilation issue in Mac OS X.
2015-08-20 13:57:03 -04:00
Thomas dbfc2fd5ea Parsing message correctly when message type is error.
Also, an error response should call reply() of observer, instead of timeout().

Reference: http://www.libtorrent.org/dht_store.html#errors
2015-08-19 22:20:48 -04:00
arvidn 8cf8e65861 turn linked_list into a template to improve type safety and remove some casts 2015-08-20 02:02:46 +02:00
arvidn ffa870d280 fixed some GCC warnings 2015-08-20 01:33:20 +02:00
arvidn bd177a857f make tailequeue a template, introduce type safety, remove old-style casts 2015-08-19 15:22:05 +02:00
arvidn a3608a39fe fix some warnings 2015-08-19 02:00:46 +02:00
Arvid Norberg 6bcac425f1 Merge pull request #95 from arvidn/postpone_dht_start
DHT router name lookups
2015-08-19 01:44:26 +02:00
arvidn 8bc4bf1e1a remove incorrect check for m_dht 2015-08-19 01:43:44 +02:00
arvidn 5c8fc818c1 fix more warnings 2015-08-19 01:39:01 +02:00
arvidn 347d976a70 since starting the DHT can be delayed now, also cache dht nodes added while waiting 2015-08-18 23:35:27 +02:00
arvidn cc4368b45a attempt to postpone DHT until all outstanding dht router name lookups complete 2015-08-18 22:56:00 +02:00
arvidn a3c4a0a3e6 attempt to fix msvc build 2015-08-18 21:40:22 +02:00
arvidn 26fecaf037 fix more warnings 2015-08-18 16:42:03 +02:00
arvidn 12da02ae52 fix some warnings 2015-08-18 09:33:00 -04:00
arvidn 8d8c049d9e fix warnings and invalid defines in disk_io_thread.cpp 2015-08-18 07:55:50 -04:00
arvidn f6b86dc4b5 add typesafety to piece_picker torrent_peer pointers. and fix a few incorrect uses 2015-08-18 04:25:13 -04:00
arvidn eecdd3121d fix some build warnings 2015-08-17 09:01:43 -04:00
arvidn b1a3a36eae remove some old leftover code from upnp 2015-08-16 12:21:39 -04:00
arvidn 9a0092c120 fix some warnings 2015-08-16 12:17:23 -04:00
arvidn 16bb2de6ed fix some warnings 2015-08-13 23:52:25 -04:00
arvidn 225b82d9a0 move test_trackers_extensions over to a simulation and some minor metadata extension and tracker re-announce fixes 2015-08-13 23:07:04 -04:00
arvidn 2c89fa40e2 fix up i2p merge 2015-08-13 22:22:20 -04:00
Arvid Norberg 68bc4f2cf4 Merge pull request #12 from mlt/wip/i2p
Few i2p fixes
2015-08-13 21:55:27 -04:00
Alden Torres 12fb68e8e3 Refactor of utp stream logging functions.
Renamed utp-stats option to utp-log.
2015-08-13 18:43:58 -04:00
Alden Torres 02afc8b640 Added utp-stats bjam option to enable utp stream log (utp.log file). 2015-08-13 18:43:58 -04:00
arvidn 213958f98d uTP timeout fix. introduced when fixing the recent vulnerability 2015-08-12 23:05:33 -04:00
arvidn d2819cd1b9 fix uninitialized variable in test_pe_crypto simulation 2015-08-12 20:18:47 -04:00
arvidn 243b31b56b trouble shoot segfault on travis 2015-08-12 18:54:57 -04:00
Alden Torres b303a36ac2 Removed unnecessary full namespace reference to udp::endpoint in new dht_direct_request feature.
Add default value to userdata argument in dht_direct_request.
Minor spelling fix.
2015-08-12 00:49:09 -04:00
Steven Siloti 1b4b1c4403 fix error handling for DHT direct requests 2015-08-10 20:33:05 -07:00
Steven Siloti 8e00172af7 return a bdecode_node rather than taking one by reference 2015-08-10 20:33:04 -07:00
Steven Siloti 1ff48aef60 add comment 2015-08-10 20:33:04 -07:00
Steven Siloti 3564562dab pass raw buffer in dht_direct_response_alert 2015-08-10 20:33:04 -07:00
Steven Siloti 182c30f2d6 fix typo in class name 2015-08-10 20:33:04 -07:00
Steven Siloti 86fd8c3048 enable arbitrary direct dht requests and extension dht requests
If you're wondering why I used an alert for handling responses but not requests,
it's because the former was easy to do that way but the latter would have
involved some major refactoring or kludging. The DHT node is written with the
(IMO reasonable) assumption that all responses will be generated immediately, so
there was no way to easily accommodate getting a response asynchronously via
an alert.
2015-08-10 20:33:04 -07:00
arvidn a81ca2391b fix some warnings 2015-08-10 20:03:24 -04:00
arvidn 4fa0aa62da simulate IP routes, interfaces and page size when building in simulation mode 2015-08-09 15:01:01 -04:00
arvidn 6068418def fix and re-enable simulations 2015-08-09 00:56:37 -04:00
arvidn 1c1698459c fix warnings 2015-08-08 22:53:11 -04:00
Arvid Norberg 27c5a28637 Merge pull request #70 from thomas-yuan/master
Call callback function immediately when get data for mutable data.
2015-08-08 21:51:18 -04:00
Thomas e51b61870a Call callback function immediately when get mutable data. 2015-08-08 20:28:53 -04:00
arvidn 72286eb0dc minor asio.ssl abstraction cleanup. update libsimulator with build fix. only run simulator on one of the build variants on travis, since the simulator does not support ssl 2015-08-08 16:19:44 -04:00
arvidn 50925d7652 fix some more warnings 2015-08-08 02:48:01 -04:00
arvidn 46803b75f8 support building libtorrent in simulation mode (using libsimulator, which is a git submodule) 2015-08-07 21:31:59 -04:00
arvidn 1cbd9a9d5e make ssthresh set less aggressive in uTP 2015-08-07 21:31:59 -04:00
Arvid Norberg e3c9e75452 Merge pull request #72 from aldenml/peer-connection-null-error
Avoid a possible null pointer error when logging in on_connection_complete
2015-08-07 00:54:39 -04:00
arvidn 97571b4ad4 fixed more warnings 2015-08-07 00:30:29 -04:00
Alden Torres 1356332496 Avoid a possible null pointer error when logging on peer_connection::on_connection_complete. 2015-08-07 00:30:28 -04:00
arvidn a91e7ce25d fix warnings 2015-08-06 02:30:06 -04:00
arvidn 788e41c3bb merged udp socket fallback fix from RC_1_0 2015-08-05 22:22:57 -04:00
arvidn fb34607313 fix crash when loading a resume file where all files have priority 0 (and the torrent finishes before having downloaded anything) and add unit test for this case 2015-08-05 20:13:58 -04:00
Alden Torres eef9f16b3b Removed unused flag bandwidth-limit-logging and related code. 2015-08-04 01:47:15 -04:00
Alden Torres 94c59354fa Removed minimal optimization inside silly_hash to avoid another include. 2015-08-03 23:01:46 -04:00
Alden Torres 5866bb7974 Indentation. 2015-08-03 18:16:43 -04:00
Alden Torres a1a8e1fc48 Avoid performance penalty if disk write access log is not enable. 2015-08-03 18:16:43 -04:00
Alden Torres cd8a4d2511 Moved TORRENT_DISK_STATS to default_storage with the option of enable/disable at runtime. 2015-08-03 18:16:43 -04:00
arvidn e0c3d28321 fix some warnings 2015-08-02 15:55:05 -04:00
arvidn bb64887f30 merge total wanted fix from RC_1_0 2015-08-02 15:18:21 -04:00
arvidn 7080b8bac8 fixed build 2015-08-02 02:16:21 -04:00
arvidn 655a3ae019 fix some warnings 2015-08-01 23:57:11 -04:00
arvidn 990aabe36f fix warnings and no-deprecated functions build 2015-08-01 19:55:36 -04:00
arvidn f86283ac30 allow clearing the notify function in alert manager 2015-07-30 21:34:55 -04:00
arvidn 52b4aed466 merge bdecode patch from RC_1_0. an empty string now produces an error rather than an empty bdecoded struct 2015-07-30 21:29:22 -04:00
arvidn 3dda8f97d6 merge include fix from RC_1_0 2015-07-30 20:23:35 -04:00
arvidn 4d89c7da97 fixed uTP vulnerability 2015-07-29 22:25:59 -04:00
Alden Torres 57f14808d8 Restore the option to compile with target Windows XP. 2015-07-29 14:56:31 -04:00
arvidn 5657772114 limit how often the DHT can wake up 2015-07-28 23:04:15 -04:00
arvidn 7f695f05d5 use boost.asio as headers only library again (simplify builds and hopefully fix shared linking of python module on gcc linux) 2015-07-27 23:09:24 -07:00
arvidn 29c618c3e5 merge bittorrent-slow start fix from RC_1_0 2015-07-27 16:53:25 -07:00
arvidn f34f09ca58 merge more lenient utf8 conversion from RC_1_0 2015-07-27 08:59:38 -07:00
arvidn 105c105867 merge seed mode test and fixes from RC_1_0 2015-07-27 00:01:19 -07:00
Arvid Norberg 742548b69c Merge pull request #49 from ssiloti/plugin-exported-api
Only use exported types in the plugin api
2015-07-25 15:53:22 -07:00
Steven Siloti e6b3df3696 pass torrent_handle by const ref in the plugin api 2015-07-25 09:57:55 -07:00
Steven Siloti 72dcc20073 pass peer_connection_handle by const ref in the plugin api 2015-07-25 09:15:24 -07:00
Steven Siloti 423a18ecb1 add missing include 2015-07-25 08:58:32 -07:00
arvidn 40c7596da9 merge loading of piece priorities from resume data fix from RC_1_0 2015-07-24 22:34:53 -07:00
Steven Siloti e0e06bc87a switch to peer_connection_handle for optimistic unchoking
This is necessary to enable external plugins since the vector is passed to
plugins via on_optimistic_unchoke.
2015-07-23 20:48:35 -07:00
Steven Siloti 2c1f24c036 switch to session_handle in plugin api 2015-07-23 20:13:32 -07:00
Steven Siloti fbc67b4e21 switch to torrent_handle in plugin api 2015-07-23 19:52:23 -07:00
arvidn bb705e9a52 improved seed-mode handling (seed-mode will now automatically be left when performing operations implying it's not a seed). fixed issue with file priorities and override resume data 2015-07-21 10:12:37 -07:00
arvidn 6c5aec3476 fix request queue size performance issue 2015-07-20 08:20:17 -07:00
arvidn 6c7c0cd878 fix up some old logging defines and improve the log output for send buffer watermark and request queue length 2015-07-17 23:54:25 -04:00
arvidn 51dd174303 fix performance issue when receiving UDP packets (the udp tracker would not reject DHT packets immediately) 2015-07-17 18:48:20 -04:00
arvidn f85d62b601 merged DHT update of /8 blocks form RC_1_0 2015-07-16 21:56:06 -04:00
arvidn 7a3cabfe12 fixed some resume issues, specifically around file priorities and override resume data 2015-07-16 21:56:06 -04:00
arvidn a65b71b855 improve logging of adding peers and the state of torrents. the default flags for the external connect_peer() call now assumes encryption, uTP and holepunch support 2015-07-16 21:53:31 -04:00
Arvid Norberg 3340bbbfb4 Merge pull request #32 from ssiloti/peer_connection_handle
peer_connection_handle
2015-07-14 22:51:34 -04:00
Jakob Petsovits 08a6ba4161 Avoid a warning if BOOST_ASIO_DECL was defined but empty. 2015-07-14 21:08:57 -04:00
Jakob Petsovits 4853d0250f Avoid a warning if _BSD_SOURCE is already defined.
As _BSD_SOURCE has been deprecated since glibc 2.20, also add
_DEFAULT_SOURCE to the definitions. Both can be any value as long
as they're defined, so in order to save two lines, just #undef
them instead of checking with #ifdef/#endif.
2015-07-14 21:07:05 -04:00
Jakob Petsovits 27fe9822ad m_num_peers is a regular int, not long: print %d instead of %ld. 2015-07-14 17:49:12 -04:00
Mikhail Titov 2751d90368 Don't store 0.0.0.0 for i2p peers in resume data 2015-07-14 14:13:17 -05:00
Mikhail Titov 9c489e2291 Don't include yourip (0.0.0.0) in i2p handshake 2015-07-14 14:13:16 -05:00
Mikhail Titov 70a99e6f62 Don't attempt to resolve base64 destination for i2p tracker 2015-07-14 14:13:15 -05:00
Mikhail Titov 020f0816df fixup! Don't break SAM connection if error occurs
Propagate i2p result code, related to #3
2015-07-14 14:13:14 -05:00
Mikhail Titov 3f2e660fcf Wait for i2p acceptor before announcing
This somewhat closes #1 in an ugly way
2015-07-14 14:13:13 -05:00
Mikhail Titov fda379729c There is no need to escape self i2p ip in Base 64 2015-07-14 14:13:12 -05:00
Mikhail Titov df21a7e8ce Use scrape & i2p bitset flags for request 2015-07-14 14:13:10 -05:00
Mikhail Titov 5d3938b39b Parse compact response from I2P tracker
This fixes #2
2015-07-14 14:13:09 -05:00
Mikhail Titov 007a580207 Options to use lowercase base32 encoding without padding 2015-07-14 12:41:12 -05:00
Steven Siloti d911ed456a stub out disabled functions rather than removing them 2015-07-12 20:17:45 -07:00
Steven Siloti 825fd22c1e cut down on the size of the peer_connection_handle interface 2015-07-12 16:31:29 -07:00
Steven Siloti 9bf1d6c5e9 peer_connection_handle 2015-07-12 14:40:03 -07:00
Alden Torres 761486ce43 Using PRId64 macro for portability. 2015-07-12 13:05:29 -04:00
Alden Torres 89f3b3bee3 Using the standard log method for round trip time in rcp_manager. 2015-07-12 12:59:38 -04:00
Alden Torres 73e5f795cb Merge with master. 2015-07-12 10:37:16 -04:00
Alden Torres a856ae6e9b Added dht_get_peers and dht_announce at session level.
Refactored dht_put_item to dht_put_immutable_item in session_impl since the get operations are not overloaded (consistency).
Added allow_threading_guard to add_dht_node python binding.
Making dht_put_item in session returns a zeroed hash if TORRENT_DISABLE_DHT (avoid unnecessary calculation and it's more consistent).
Added missing DHT operations to the python binding.
Added missing allow_threading_guard to add_dht_node in the python binding.
2015-07-12 10:37:16 -04:00
arvidn 42638c3540 don't ignore errors from setup_listener() 2015-07-11 23:16:37 -04:00
arvidn 2739def57f minor cleanups. use libtorrent typedefs for asio. failing to bind IPv6 UDP socket is no longer fatal. removed some redundant listen_failed_alerts 2015-07-11 23:01:27 -04:00
arvidn ed8e4135b2 move include statement to correct place 2015-07-11 22:04:04 -04:00
arvidn 2ab445135a only retry binding the socket to a new port if the last attempt failed with address-in-use. On other errors, give up immediately 2015-07-11 18:49:53 -04:00
Steven Siloti 1d55bcba72 make session inherit from session_handle and remove wrapper functions 2015-07-11 11:17:28 -07:00
Steven Siloti b072b0ca5f create session_handle
The session_handle class exposes the same public interface to session_impl as
the session class. The difference being that session_handle does not own the
underlying session_impl so multiple session_handle instances can be created
and copied about as needed.

The intent is to chenge the plugin API to pass an instance of session_handle
instead of a pointer to session_impl. This change will be made in a separate
patch.

To maintain ABI compatibilty, the type signature of session was not changed.
The relevent functions have been modified to forward to session_handle and
all enums have been left in session.
2015-07-11 11:17:28 -07:00
arvidn 2b05b1c85c fix cppcheck warnings 2015-07-11 10:36:13 -04:00
Chocobo1 b5486fb6ce Add parentheses 2015-07-11 15:23:55 +08:00
Arvid Norberg bbe51268d3 Merge pull request #23 from Chocobo1/igd_version
Add support for IGD version 2
2015-07-10 19:20:51 -04:00