openethereum/util
Jim Posen 01f825b0e1 Multiple improvements to discovery ping handling (#8771)
* discovery: Only add nodes to routing table after receiving pong.

Previously the discovery algorithm would add nodes to the routing table
before confirming that the endpoint is participating in the protocol. This
now tracks in-flight pings and adds to the routing table only after receiving
a response.

* discovery: Refactor packet creation into its own function.

This function is useful inside unit tests.

* discovery: Additional testing for new add_node behavior.

* discovery: Track expiration of pings to non-yet-in-bucket nodes.

Now that we may ping nodes before adding to a k-bucket, the timeout tracking
must be separate from BucketEntry.

* discovery: Verify echo hash on pong packets.

Stores packet hash with in-flight requests and matches with pong response.

* discovery: Track timeouts on FIND_NODE requests.

* discovery: Retry failed pings with exponential backoff.

UDP packets may get dropped, so instead of immediately booting nodes that fail
to respond to a ping, retry 4 times with exponential backoff.

* !fixup Use slice instead of Vec for request_backoff.
2018-07-11 21:22:06 +02:00
..
bloom Update license header and scripts (#8666) 2018-06-04 10:19:50 +02:00
blooms-db bump parking_lot to 0.6 (#9013) 2018-07-03 17:31:08 +02:00
dir Add separate database directory for light client (#8927) (#9064) 2018-07-11 16:17:35 +02:00
fake-fetch util fake-fetch (#8363) 2018-04-11 11:59:04 +02:00
fake-hardware-wallet Disable hardware-wallets on platforms that don't support libusb (#8464) 2018-06-26 09:03:38 +02:00
fetch fetch: replace futures-timer with tokio-timer (#9066) 2018-07-09 09:59:05 +01:00
io bump parking_lot to 0.6 (#9013) 2018-07-03 17:31:08 +02:00
journaldb Delete crates from parity-ethereum and fetch them from parity-common instead (#9083) 2018-07-10 14:59:19 +02:00
keccak-hasher Delete crates from parity-ethereum and fetch them from parity-common instead (#9083) 2018-07-10 14:59:19 +02:00
macros Update license header and scripts (#8666) 2018-06-04 10:19:50 +02:00
mem Add type for passwords. (#8920) 2018-06-22 15:09:15 +02:00
memory_cache Update license header and scripts (#8666) 2018-06-04 10:19:50 +02:00
migration-rocksdb db: remove wal disabling / fast-and-loose option. (#8963) 2018-07-10 17:33:25 +02:00
network Delete crates from parity-ethereum and fetch them from parity-common instead (#9083) 2018-07-10 14:59:19 +02:00
network-devp2p Multiple improvements to discovery ping handling (#8771) 2018-07-11 21:22:06 +02:00
panic_hook Attempt to graceful shutdown in case of panics (#8999) 2018-07-02 11:53:50 +02:00
patricia-trie-ethereum Delete crates from parity-ethereum and fetch them from parity-common instead (#9083) 2018-07-10 14:59:19 +02:00
reactor Update license header and scripts (#8666) 2018-06-04 10:19:50 +02:00
rlp_compress Delete crates from parity-ethereum and fetch them from parity-common instead (#9083) 2018-07-10 14:59:19 +02:00
rlp_derive Delete crates from parity-ethereum and fetch them from parity-common instead (#9083) 2018-07-10 14:59:19 +02:00
stats Update license header and scripts (#8666) 2018-06-04 10:19:50 +02:00
stop-guard Update license header and scripts (#8666) 2018-06-04 10:19:50 +02:00
trace-time Update license header and scripts (#8666) 2018-06-04 10:19:50 +02:00
triehash-ethereum Delete crates from parity-ethereum and fetch them from parity-common instead (#9083) 2018-07-10 14:59:19 +02:00
unexpected Update license header and scripts (#8666) 2018-06-04 10:19:50 +02:00
using_queue Update license header and scripts (#8666) 2018-06-04 10:19:50 +02:00
version Parity Ethereum 2.0.0 (#9052) 2018-07-11 13:35:10 +02:00