204 Commits

Author SHA1 Message Date
Roman Borschel
2c66f82b11
Consolidate keypairs in core. (#972)
* Consolidate keypairs in core.

Introduce the concept of a node's identity keypair in libp2p-core,
instead of only the public key:

  * New module: libp2p_core::identity with submodules for the currently
    supported key types. An identity::Keypair and identity::PublicKey
    support the creation and verification of signatures. The public key
    supports encoding/decoding according to the libp2p specs.

  * The secio protocol is simplified as a result of moving code to libp2p-core.

  * The noise protocol is slightly simplified by consolidating ed25519
    keypairs in libp2p-core and using x25519-dalek for DH. Furthermore,
    Ed25519 to X25519 keypair conversion is now complete and tested.

Generalise over the DH keys in the noise protocol.

Generalise over the DH keys and thus DH parameter in handshake patterns
of the Noise protocol, such that it is easy to support other DH schemes
in the future, e.g. X448.

* Address new review comments.
2019-03-11 13:42:53 +01:00
Pierre Krieger
a64b18d5ab
Don't call the handler after it has shut down (#985) 2019-03-01 11:45:33 +01:00
Pierre Krieger
b1d55cc7cd
Fall back if no tokio executor available (#975) 2019-02-28 12:48:27 +01:00
Pierre Krieger
040d8c8c9a
Bump to v0.4 (#964) 2019-02-20 16:39:30 +01:00
Pierre Krieger
747478a55d
Fix simultaneous dialing test (#957) 2019-02-20 16:25:34 +01:00
Pierre Krieger
a380889e90
Add many tests for the raw swarm (#962) 2019-02-20 16:03:05 +01:00
Pierre Krieger
e1ad88f757
Fix an infinite loop in ProtocolsHandlerSelect (#961) 2019-02-20 15:06:49 +01:00
Pierre Krieger
4fa00725e4
Use different ports in the memory transport tests (#954) 2019-02-19 10:57:40 +01:00
Pierre Krieger
43e4d1f589
Rewrite the MemoryTransport to be similar to the TcpConfig (#951)
* Rewrite the MemoryTransport to be similar to the TcpConfig

* Add small test

* Test and bug fixes
2019-02-18 17:05:50 +01:00
Pierre Krieger
ca9534a38e
Add a user data to CollectionStream (#947)
* Add a user data to CollectionStream

* Make NodeEvent return a PeerMut

* Add PeerMut::user_data_mut()

* Return the previous user data in accept()
2019-02-18 16:10:00 +01:00
Pierre Krieger
2d31c2f733
Minor opti poll Fuse (#946) 2019-02-18 11:24:01 +01:00
Pierre Krieger
965c154093
Accept empty substreams in read_one (#943) 2019-02-18 10:58:12 +01:00
Pierre Krieger
1100325e63
Improve nodes state (#917)
* Improve the state consistency in src/nodes

* Add a user data parameter to tasks

* Remove the tasks HashMap in CollectionStream

* Add TODO
2019-02-14 13:46:52 +01:00
roignpar
f112f198b6 Add Ord implementation for KeepAlive (#918)
* Add Ord implementation for KeepAlive

* Fix import path

* Implement PartialOrd for KeepAlive

* remove Ord implementation

* Reimplement Ord for KeepAlive

* Add equality cases to KeepAlive Ord implementation
2019-02-14 11:35:24 +01:00
Pierre Krieger
3548c29dcf
Improvements to the helpers in upgrade::transfer (#937)
* Improvements to the helpers in upgrade::transfer

* Fix floodsub
2019-02-14 11:00:46 +01:00
Pierre Krieger
e377a58b49
Fix compiling for WASM with websockets disabled (#934)
* Fix compiling for WASM with websockets disabled

* Comment about usage
2019-02-11 17:45:22 +01:00
Roman Borschel
eeed66707b Address edition-2018 idioms. (#929) 2019-02-11 14:58:15 +01:00
Pierre Krieger
21810e46bd
Fix infinite loop in read_one (#910)
* Fix infinite loop in read_one

* Also fix request_respond
2019-02-11 14:02:29 +01:00
Pierre Krieger
63db253566
Fix duplicate external addresses inserted (#927) 2019-02-07 13:46:39 +01:00
Pierre Krieger
909f50f989
Swarm::dial adds addresses when pending (#919)
* Swarm::dial adds addresses when pending

* Bump libp2p-core to 0.3.3
2019-02-05 17:29:30 +01:00
Pierre Krieger
479924f8dc
Bump libp2p, libp2p-core, libp2p-core-derive and libp2p-kad (#916)
* Bump libp2p-core, libp2p-core-derive and libp2p-kad

* Bump libp2p as well
2019-02-04 15:46:08 +01:00
Pierre Krieger
c9b7e237b6
Add NetworkBehaviour::inject_replaced (#914)
* Add NetworkBehaviour::inject_replaced

* Address style

* Forgot to call set_disconnected

* Also add incoming addresses to kbuckets
2019-02-04 15:21:50 +01:00
Pierre Krieger
7f66c4f4b0
Add Swarm::add_external_address (#915) 2019-02-04 14:33:05 +01:00
Pierre Krieger
f999fd506a
Fix the dialing priority system (#907)
* Fix the dialing priority system

* Bump libp2p-core to 0.3.1

* Cancel dialing attempt if we don't have priority

* Add test for simultaneous dialing

* Improve test

* Fix test stuck forever
2019-02-01 15:21:20 +01:00
Pierre Krieger
fcb2ac36e6
Bump to v0.3.0 (#905) 2019-01-30 16:50:47 +01:00
Pierre Krieger
663ec7e8da
connection_keep_alive() now returns KeepAlive (#899)
* connection_keep_alive() now returns Option<Instant>

* Use KeepAlive instead of Option<Instant>
2019-01-30 16:37:34 +01:00
Toralf Wittner
bbf56c6371
Update protobuf to version 2.3.0 (#904)
Initially I had hoped that the deprecated `#![allow(clippy)]` would no
longer be put into the generated rust files, but -- as of 2019-01-30 --
it still is (see [1] for details). Since we explicitly update the
protobuf files I decided to *manually edit the generated code* and
replace this with `#![allow(clippy:all)]`. Hopefully, by the time we do
the next upgrade, no such manual tweaking would be necessary anymore. I
think the benefit of a less polluted clippy output is worth it this
time.

[1]: https://github.com/stepancheg/rust-protobuf/pull/332
2019-01-30 16:25:45 +01:00
Toralf Wittner
e23b2733e2
Fix some rustc/clippy warnings. (#895) 2019-01-30 15:41:54 +01:00
Pierre Krieger
a77da73010
Add inject_dial_failure and make addresses_of_peer mut (#901)
* Add inject_dial_failure and make addresses_of_peer mut

* Fix tests
2019-01-30 14:55:39 +01:00
Pierre Krieger
35ec7f053c
Proper shutdown in ProtocolsHandlerSelect (#870)
* Proper shutdown in ProtocolsHandlerSelect

* Fix infinite loop
2019-01-29 19:52:22 +01:00
Pierre Krieger
b8dfa724fd
Add some helpers for substream upgrades (#896)
* Add some helpers for substream upgrades

* Fix compilation

* Fix compilation for 32bits

* Fix some concerns

* Add read_one_then

* Fixes
2019-01-29 16:20:14 +01:00
Dan Robertson
fe4fc8c363 Move final crates to 2018 edition (#886) 2019-01-29 11:02:29 +01:00
Pierre Krieger
df923526ca
Embed the topology in the NetworkBehaviour (#889)
* Embed the topology in the NetworkBehaviour

* Put topologies inside of Floodsub and Kad

* Fix core tests

* Fix chat example

* More work

* Some cleanup

* Restore external addresses system
2019-01-26 23:57:53 +01:00
Pierre Krieger
30c082dfe5
Properly shut down protocols handler on useless timeout (#892) 2019-01-25 15:56:32 +01:00
Pierre Krieger
d9b30c6c6a
Make nodes generic over PeerId (#881) 2019-01-23 17:44:40 +01:00
Pierre Krieger
a2ab7ff4a9
Simplify the floodsub handler (#868) 2019-01-22 14:45:03 +01:00
badb
d59ec09a83 Add a maximum limit to the number of listeners (#809)
* add max_listeners to swarm

* add swarm builder

* swarm_builder's build takes ownership of self

* replace max listeners with incoming limit

* don't disconnect from node after incoming limit has been reached

* update code according to recent changes

* don't poll listeners at all if incoming connection limit is reached
2019-01-22 11:59:59 +01:00
Pierre Krieger
ad27a468f8
Deny connection with local PeerId (#859) 2019-01-17 12:20:02 +01:00
Pierre Krieger
21d219ef45
Bump to v0.2.1 (#851) 2019-01-14 14:58:07 +01:00
Pierre Krieger
bf52e9bd19
Add IntoNodeHandler and IntoProtocolsHandler traits (#848)
* Add IntoNodeHandler

* Add IntoProtocolsHandler
2019-01-14 14:22:25 +01:00
Pierre Krieger
e39d6d8bd2
Version 0.2 (#841) 2019-01-10 13:27:45 +01:00
Pierre Krieger
b8a312f7d5
Forbid dialing self (#839) 2019-01-10 11:49:36 +01:00
Pierre Krieger
dbff125df2
Add an Error associated type to transports (#835)
* Add an Error associated type to transports

* Improve raw swarm a bit

* Rename map_other to map

* Use source() instead of cause()

* RawSwarmIncErr -> IncomingError
2019-01-10 11:27:06 +01:00
Pierre Krieger
1e7fcc6d61
Move tests to separate files (#827) 2019-01-09 15:48:56 +01:00
Toralf Wittner
f1959252b7
multistream-select: Less allocations. (#800) 2019-01-09 15:09:35 +01:00
Pierre Krieger
aedf9c0c31
Add more methods on Topology (#826)
* Add more methods on Topology

* Add a DisconnectReason
2019-01-09 13:13:21 +01:00
Pierre Krieger
64b388ddd1
Add RawSwarm::incoming_negotiated (#821)
* Add RawSwarm::incoming_negotiated

* More tweaks

* Docfix
2019-01-07 11:54:42 +01:00
Pierre Krieger
5742a0000e
Add documentation to the core (#820) 2019-01-07 11:39:08 +01:00
Pierre Krieger
2eb7fe7c64
Switch libp2p-core to edition 2018 (#819) 2019-01-07 11:21:09 +01:00
Pierre Krieger
7da1a860be
Automatically close useless connections (#816)
* Automatically close useless connections

* Add a timeout before dropping the connection

* Rework the timeout

* Use OR to combine the outcome
2019-01-04 12:02:39 +01:00