* Impl Clone for SwarmController and remove 'static
* Implement Kademlia
* Implement ConnectionReuse correctly
* Implement ConnectionReuse correctly
* Add some tests and fixes
* Remove useless boolean in active_connections
* Correctly run tests
* Optimize the processing
* Rustfmt on libp2p-kad
* Improve Kademlia example
* Next incoming is now in two steps
* Some work
* Remove log
* Fix dialing a node even if we already have a connection
* Add a proper PeerId to Peerstore
* Turn identify into a transport layer
* Expose the dialed multiaddress
* Add identified nodes to the peerstore
* Allow configuring the TTL of the addresses
* Split identify in two modules
* Some comments and tweaks
* Run rustfmt
* More work
* Add test and bugfix
* Fix everything
* Start transition to new identify system
* More work
* Minor style
* Start implementation of Kademlia server upgrade
* Continue implementing the Kademlia server
* Start reimplementing high-level kademlia code
* Continue reimplementing high-level code
* More work
* More work
* More work
* Fix wrong address reported when dialing
* Make it work
* Remove cluster_level field everywhere
* Fix bug in varint-rs when encoding
* More work
* More work
* More work
* More work
* More work
* Bugfix
* More work
* Implement ping
* Style in kademlia_handler
* More work
* Better error handling in query.rs
* More work
* More work
* More work
* Debug impls
* Some cleanup in swarm
* More work
* Clean up changes in swarm
* Unpublish the kbucket module
* Fix examples and some warnings
* Fix websocket browser code
* Rustfmt on libp2p-kad
* Kad initialization process
* Add logging to the example
* Fix concerns
* Fix style
* Implement ConnectionReuse correctly
* Add some tests and fixes
* Remove useless boolean in active_connections
* Correctly run tests
* Optimize the processing
* Next incoming is now in two steps
* Remove log
* Fix dialing a node even if we already have a connection
* Add a proper PeerId to Peerstore
* Turn identify into a transport layer
* Expose the dialed multiaddress
* Add identified nodes to the peerstore
* Allow configuring the TTL of the addresses
* Split identify in two modules
* Some comments and tweaks
* Run rustfmt
* Add test and bugfix
* Fix wrong address reported when dialing
* Switch to futures-mutex of paritytech (#113)
* Remove public key system from peerstore (#118)
* Remove public key system from peerstore
* Add comment about PartialOrd on PeerInfo
* Add a nat_traversal() method to Transport (#110)
* Add a nat_traversal() method to Transport
* Fix compilation
* Implement floodsub
* Work on a floodsub example
* Finish example
* More work
* More work
* More work
* More work
* More work
* Rustfmt
* Some style improvements
* Store the whole Topic instead of just the hash
* Add a bunch of TODOs
* Fix introduced warning
* Fix style
* Fix concerns
* Only store the hash of the values in the received messages
* Fix style
* Improve comments
* Add a proper PeerId to Peerstore
* Turn identify into a transport layer
* Expose the dialed multiaddress
* Add identified nodes to the peerstore
* Allow configuring the TTL of the addresses
* Split identify in two modules
* Some comments and tweaks
* Run rustfmt
* Add test and bugfix
* Fix wrong address reported when dialing
* Fix websocket browser code
* Support the p2p protocol in libp2p-identify
* Fix concerns
* Fix libp2p-dns
* More concerns
* Try run the echo-dialer on circle-ci
* Fix attempt
* Fix attempt
* Fix attempt
* Fix attempt
* Fix attempt
* Fix attempt
* Fix attempt
* Fix echo dialer example to actually finish
* Fix the echo examples
* Use a proper image for the echo server
* Fix tag of js-echo-server
* Add circleci config file
* Try enable IPv6
* Make sure `test` uses machine executor
* Add an integration_test step in parallel
* Explicit docker runs for machine tests
* Try make the integration test work
* Hide Dockerfile in a subfolder
* Fix the ping example hanging
* Explicitely pass the port to the ping client