Commit Graph
114 Commits
Author SHA1 Message Date
Adrien Béraud eea097961a dht: add message counting 2015-10-06 11:58:26 -04:00
Adrien Béraud 80363a9343 dht: header cleanup 2015-09-30 23:05:34 -04:00
Adrien Béraud ca8fb2b3ec dht: revert to 15-45 minutes secret rotation 2015-09-01 22:47:25 +02:00
Adrien Béraud 461dfb29f3 dht: expire search with only candidates 2015-09-01 18:10:30 +02:00
Adrien Beraud 6e6882ca7a dht: cleanup 2015-09-01 18:10:00 +02:00
Adrien Beraud 0ea48ed1de dht: remove custom memmem 2015-09-01 17:42:07 +02:00
Adrien Béraud 2e38a307f9 log: unify format 2015-09-01 17:42:07 +02:00
Adrien Béraud 4096e7ff03 dht: bootstrap local id on first connection 2015-09-01 16:46:42 +02:00
Adrien Béraud 98908f7284 dht: add version to UA 2015-09-01 16:44:21 +02:00
Adrien Béraud ac08beb582 dht: search own id 2015-08-24 16:38:40 +02:00
Adrien Béraud fe3ded9d0f dht: my_v cleanup 2015-08-23 17:36:24 +02:00
Adrien Béraud 564467b5b3 dht: properly parse error messages 2015-08-23 17:29:15 +02:00
Adrien Béraud 790c32048c ValueSerializable: refactoring 2015-08-18 10:57:46 -04:00
Adrien Béraud 70dfb4bbcf use msgpack for dht protocol and value serialization 2015-08-13 11:28:29 -04:00
Adrien Béraud 873fbd3d8e dht: add public address reporting 2015-08-06 15:41:16 -04:00
Adrien Béraud 15f3dee293 introduce configuration structure 2015-08-05 21:55:20 -04:00
Adrien Béraud c10494557c dht: fix done callback sometimes called more than once 2015-07-29 16:58:15 -04:00
Adrien Béraud f13b28fed4 dht: add connectivityChanged() 2015-07-28 16:26:35 -04:00
Adrien Béraud 3cbae5526a dht: add bootstap mode
The bootstrap mode is used only for bootstrap nodes.

A bootstrap node will maintain a tree of the whole dht
up to 6 bits deep (8*2^6 = 4096 nodes).

This allows to provide better initial answers to new nodes.

Bootstrap nodes act otherwise normally.
2015-07-27 14:47:58 -04:00
Adrien Béraud 8287416164 dht: add getNodes, isExpired with no time argument 2015-07-27 14:33:47 -04:00
Adrien Béraud ced114eba4 dht: combine counting of get and announce/listen requests 2015-07-27 14:33:39 -04:00
Adrien Béraud 433f690bed dht: don't make new nodes candidates 2015-07-27 14:33:39 -04:00
Adrien Béraud 5323ebd6b1 dht: use a listen keep-alive of 30 seconds 2015-07-27 14:33:39 -04:00
Adrien Béraud a2eed7e7af dht: limit total node number per search 2015-07-24 01:02:35 -04:00
Adrien Béraud 178eeae94f dht: log cleanup 2015-07-24 01:02:35 -04:00
Adrien Béraud d95b11aefa dht:use appropriate node array size 2015-07-23 11:06:16 -04:00
Adrien Béraud a090baba08 doc update 2015-07-23 11:06:16 -04:00
Adrien Béraud ae178c4d25 fix some compiler warnings 2015-07-23 11:06:04 -04:00
Adrien Béraud d2ed99742e zero-initialise sockaddr structures 2015-07-23 11:05:50 -04:00
Adrien Béraud 3d2a74be49 python: add PyNode 2015-07-13 13:24:55 -04:00
Adrien Béraud e2004d69cb prevent sending listen or announce to unsynched nodes 2015-07-11 18:38:11 -04:00
Adrien Béraud 7a3a95bf3e dht: use time_point::min() as invalid time_point value 2015-07-11 18:38:11 -04:00
Adrien Béraud 5bec9f6764 log cleanup 2015-07-10 23:31:09 -04:00
Adrien Béraud d2c57b867d update copyright headers 2015-07-10 23:25:43 -04:00
Adrien Béraud d0f4f57116 dht: fix typo, warnings 2015-07-04 23:56:16 -04:00
Adrien Béraud f05ce4865d dht: round 2 of search performance optimisations
This patch makes search nodes candidates when they failed to reply
to a first message. This allows the search operations to go forward,
while preserving the node opportunity to reply.
2015-07-02 02:59:28 -04:00
Adrien Béraud f1ff9a1a87 dht: optimisations in search behavior
A candidate flag is added to new search nodes when a search
is already synced.
The flag is waived when a token is retreived from the node.
Candidate nodes behave normally but are not considered
to evaluate the search state (synced etc.).

The behavior of searches if also changed so GET_NODES
updates are now done the same way, no matter if the search
is currently synced. This allow candidate nodes to behave
normally and makes token update asynchronous, causing
less frequent performance hickups.
2015-07-02 02:59:28 -04:00
Adrien Béraud 04623d09f8 dht: simplify get search node selection 2015-07-02 02:59:28 -04:00
Adrien Béraud a63fc649b6 refactoring: move Node out of Dht 2015-07-02 02:59:01 -04:00
Adrien Béraud 680186976f dht: add node list to done callback 2015-06-25 15:56:03 -04:00
Adrien Béraud 40f0488203 dht: address family can be omited in isRunning 2015-06-17 22:34:57 -04:00
cberaud 41406833a8 add crypto::random_device 2015-05-15 19:57:04 +05:30
Guillaume Roguez 98233954c4 dht: drop incoming msg with unknown protocol
We filter out incoming packet if my_v field is not known.
This prevents to be flooded by others bittorrent-like clients.

Signed-off-by: Guillaume Roguez <guillaume.roguez@savoirfairelinux.com>
2015-05-14 13:44:11 -04:00
Guillaume Roguez 23961ad9f3 dht: fix buffer-overflow in Dht::blacklistNode
ASAN build shows a buffer-overflow that happens frequently
when blacklistNode tryies to remove blacklisted node from
searches using erase/remove_if std C++ pattern.
This is more frequent using optimized build (gcc -O3).
erase/remove_if pattern is a valid design, so it may be a
failure in stdc++ implementation (not confirmed).
To solve that we fallback to an explicit search loop/erase
pattern.

Signed-off-by: Guillaume Roguez <guillaume.roguez@savoirfairelinux.com>
2015-05-14 09:28:49 -04:00
Adrien Béraud c5c61b838e dht: fix compilation for LLVM 3.5 2015-04-27 15:14:46 -04:00
Adrien Béraud d42f404f26 dht: improve update time consistency 2015-04-07 11:07:48 -04:00
Adrien Béraud 06988396e9 searches: only remove old expired nodes 2015-04-06 12:35:09 -04:00
Adrien Béraud d03f09f810 dht: proprely update receive time 2015-04-06 02:07:47 -04:00
Adrien Béraud 39b8ca3fce searches: prefer to remove expired nodes 2015-04-06 00:04:10 -04:00
Adrien Béraud 8f9089abba dht: don't expire some ongoing searches 2015-04-05 23:31:27 -04:00