arvidn
297b8943d0
move the DHT rate limiter into the dht_tracker class and remove the rate_limited_udp_socket type. This further simplifies the udp socket (preparing for moving it into the listen_socket structure)
2016-01-18 14:34:41 -05:00
arvidn
1f9f588e75
merge copyright year update and changelog from RC_1_0
2016-01-17 18:57:46 -05:00
arvidn
651b473908
add unit test for routing_table::update_node_id
2016-01-11 23:47:27 -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
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
30076218f8
entry is a class not a struct
2015-12-30 17:25:00 -08: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
505ae508f4
mark up some override functions and fix other clang warnings
2015-12-13 19:44:42 -05: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
98c9ac0448
fix msvc build
2015-12-03 19:28:57 -05:00
arvidn
69f4e94995
null_observer is used in a test now
2015-12-03 07:51:53 -05:00
arvidn
12dde0f415
actually add a test to the unit test
2015-11-30 19:07:35 -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
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
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
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
fba0762353
fix some msvc warnings
2015-11-19 19:01:54 -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
3cc464805f
update libsimulator submodule
2015-10-25 10:55:20 -04:00
arvidn
74ee06bff7
add more override annotation
2015-10-17 02:20:38 -04:00
Alden Torres
cf4c8d0058
Minor refactor in direct_traversal and some typos in bdecode header.
2015-10-08 09:15:16 -04:00
arvidn
41b8429cd1
clean up documentation makefile and documentation generation script
2015-10-07 00:48:43 -04:00
Alden Torres
62b24d8b67
Add set_dht_storage to session API.
2015-10-02 09:00:07 -04:00
Thomas Yuan
f9fa8ffdec
Use ping instead of get_peers if current bucket is full.
2015-09-22 10:35:10 -04:00
Alden Torres
25ed70b977
Create dht_storage_counters to avoid internal counter in future public API.
2015-09-21 07:46:23 -04:00
Alden Torres
e2d682275a
Implementing and using new dht storage interface
2015-09-16 08:30:27 -04:00
Thomas Yuan
bee620b4f1
Fix routing_table bucket_size(int bucket) out_of_range logic error.
2015-09-10 17:19:00 -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
Thomas Yuan
3d4ed9f37f
Add read-only support in dht_settings and outgoing query messages.
2015-09-07 14:24:46 -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
Thomas Yuan
ef16ae4e27
Handle response with unexpected format.
2015-08-31 22:37:46 -04:00
Thomas Yuan
b26d08c66a
Remove unnecessary selection statements.
2015-08-26 11:26:21 -04:00
arvidn
ffa870d280
fixed some GCC warnings
2015-08-20 01:33:20 +02:00
arvidn
a3608a39fe
fix some warnings
2015-08-19 02:00:46 +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
8d8c049d9e
fix warnings and invalid defines in disk_io_thread.cpp
2015-08-18 07:55:50 -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
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
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
a91e7ce25d
fix warnings
2015-08-06 02:30:06 -04:00
arvidn
655a3ae019
fix some warnings
2015-08-01 23:57:11 -04:00
Alden Torres
fcac7140f8
Added dht_get_peers and dht_announce at session_impl level.
2015-07-01 15:30:08 -04:00
Alden Torres
5c8c9cd653
Refactor to expose a more convenient get_peers function as part of the DHT api.
...
Now announce (a particular case of get_peers DHT operation) uses the function get_peers.
2015-06-24 21:22:24 -04:00
arvidn
9af8841244
remove some unnecessary asio typedefs in the libtorrent namespace, just pull ip::tcp and ip::udp
2015-06-06 13:49:18 -04:00
arvidn
41533205be
drop support for boost 1.35 and fix some more references to the asio namespace
2015-06-06 02:10:53 -04:00
Arvid Norberg
d43f7b56a2
update copyright year
2015-06-03 05:18:48 +00:00
Arvid Norberg
84849f3afd
some msvc fixes
2015-05-30 21:46:59 +00:00
Arvid Norberg
e44c8e9002
optimize logging of DHT packets by deferring copying and printing, to only do it if the alert category is enabled
2015-05-28 20:36:22 +00:00
Arvid Norberg
06bf225237
fix release build and tune want_tick
2015-05-26 20:09:19 +00:00
Arvid Norberg
9856a1fe0c
break out more tests from test_primitives
2015-05-23 01:38:47 +00:00
Arvid Norberg
0052fa6c19
some cleanup to dht observers (don't expose internals)
2015-05-22 02:42:26 +00:00
Arvid Norberg
b480f40a98
fix linux build and update code coverage script
2015-05-17 21:00:47 +00:00
Arvid Norberg
99de70604a
remove dht-verbose logging build configuration. tie it to the main logging configuration (which now is on by default) and make it less costly when dht logging alerts are disabled
2015-05-16 19:29:49 +00:00
Arvid Norberg
242dad0743
fix dht build
2015-05-10 18:24:09 +00:00
Arvid Norberg
2819d5f68e
remove the remains of the dht logging
2015-05-10 05:28:50 +00:00
Arvid Norberg
1357fd5265
clean up usage of printf attribute (encapsulate it in a macro)
2015-05-10 05:11:51 +00:00
Arvid Norberg
b60934288b
turn DHT logging into alerts instead of writing to a file
2015-05-10 04:54:02 +00:00
Arvid Norberg
ca581f2258
rename dht::node_impl -> dht::node, since this hasn't been a pimpl for quite a while
2015-05-09 19:00:22 +00:00
Arvid Norberg
6557910c7f
remove the DHT's last dependency on session_impl
2015-05-09 18:06:02 +00:00
Arvid Norberg
2fff222235
silence some warnings on msvc
2015-04-27 02:21:12 +00:00
Arvid Norberg
93a19b44c0
fix another format string issue and add comments to kademlia
2015-04-26 06:25:08 +00:00
Arvid Norberg
3951377d95
fix include paths for warning push and pop headers
2015-04-21 01:16:28 +00:00
Arvid Norberg
f5629eb403
cleanup and fixing of more warnings
2015-04-21 00:23:00 +00:00
Arvid Norberg
4d15f1410f
fix warnings, some clean-up and todo comments
2015-04-20 04:52:49 +00:00
Arvid Norberg
21751347bc
more warnings fixes and cleanup
2015-04-19 06:28:21 +00:00
Arvid Norberg
51e86ca2d5
more warning fixes and cleanup
2015-04-18 22:00:27 +00:00
Arvid Norberg
408232cfc8
raise warning level. fix a few of them. filter out warnings from boost
2015-04-18 02:33:39 +00:00
Arvid Norberg
013ed36f09
landed alert_queue feature branch into trunk
2015-04-03 20:15:48 +00:00
Arvid Norberg
32ccf61603
fix test_dht build
2015-03-17 01:30:57 +00:00
Arvid Norberg
1b07ec491d
fix build issue out of recent changes of exported functions
2015-03-16 04:38:28 +00:00
Arvid Norberg
6c1df7eb55
landed the bdecode branch in master. lazy_bdecode/lazy_entry is now being replaced by bdecode/bdecode_node
2015-03-12 05:20:12 +00:00
Arvid Norberg
c1dc982f4f
deprecate the ptime type and related time types. just use boost::chrono / std::chrono
2015-03-12 04:34:54 +00:00
Arvid Norberg
0afea4bb3e
move some DHT verbose stats logging over to performance counters
2015-01-18 01:06:36 +00:00
Arvid Norberg
22a02f4a1f
make dht_tracker be held by shared_ptr instead of intrusive_ptr. remove redundant performance counter (total dht sent/received). report DHT IP overhead to the IP overhead counters
2015-01-17 22:06:30 +00:00
Arvid Norberg
58d93e5aa1
add new (non-deprecated) access to dht stats, asynchronously via an alert
2015-01-17 17:02:58 +00:00
Arvid Norberg
35b41858cf
deprecated session_status and session::status() in favor of performance counters
2015-01-04 21:31:02 +00:00
Arvid Norberg
dbf461ac23
make DHT dos mitigation parameters configurable via dht_settings
2015-01-01 23:24:21 +00:00
Arvid Norberg
1ed1963f29
remove size_type typedef in favor of boost::int64_t
2014-12-03 04:32:50 +00:00
Arvid Norberg
658e2ceefd
merged Steven Siloti's peer crypto patch into trunk
2014-11-23 06:14:47 +00:00
Arvid Norberg
179df62379
merged changes from RC_1_0
2014-11-20 05:53:12 +00:00
Arvid Norberg
aae56c991c
merged changes from RC_1_0
2014-11-08 16:58:18 +00:00
Arvid Norberg
601f0dc434
merged changes from RC_1_0
2014-11-03 06:15:51 +00:00
Arvid Norberg
3742fd2699
merged changes from RC_1_0
2014-11-02 09:41:29 +00:00
Arvid Norberg
34af25beaa
merged chagnes from RC_1_0
2014-11-01 22:47:56 +00:00
Arvid Norberg
a91848962a
merge changes from RC_1_0
2014-10-12 04:18:34 +00:00
Arvid Norberg
8cbef3876a
post alert on outgoing get_peers
2014-09-22 19:49:32 +00:00
Arvid Norberg
48ea42c990
merged changes from RC_1_0
2014-08-27 05:57:37 +00:00
Arvid Norberg
3f88389f05
merged changes from RC_1_0
2014-08-16 07:46:06 +00:00
Arvid Norberg
a6f345181f
fixed some unused argument warnings
2014-07-07 06:28:48 +00:00
Arvid Norberg
7351389ce8
land libtorrent_aio branch in trunk
2014-07-06 19:18:00 +00:00
Arvid Norberg
c6b68ab683
fix warning
2014-03-23 01:41:00 +00:00
Arvid Norberg
0e04ab8d72
reorder the node-list in the DHT traversal algorithm if a node updates its ID
2014-03-03 05:09:53 +00:00
Arvid Norberg
8403e58f3c
make dht test program able to get and put mutable items. fixed some DHT bugs along the mutable put/get path
2014-03-02 23:35:35 +00:00