Commit Graph

268 Commits

Author SHA1 Message Date
15540a34c2 Add missing check for read of 0 bytes. (#194)
Forgot this one in PR #178.
2018-05-17 15:29:27 +02:00
86a21fc43e Remove all targets from log statements. (#195)
The default uses crate + module path anyway, so `target` has been
redundant, causes more work when renaming crates and makes log
lines longer.
2018-05-17 15:14:13 +02:00
cb800624f5 Change Transport::Dial to be Future and not IntoFuture (#193) 2018-05-17 13:09:22 +02:00
5c1890e66a Rename libp2p_swarm to libp2p_core (#189) 2018-05-16 12:59:36 +02:00
dc6d4df3f8 IdentifyTransport now outputs the observed addr (#188) 2018-05-15 11:30:57 +02:00
f787f3d8b8 Swarm rework (#182)
* Rename Transport::RawConn to Output

* Remove AsyncRead + AsyncWrite bound on Transport::Output

* UpgradedNode now always implements Transport

* Add and tweak modifiers for Transport and ConnectionUpgrade

* Secio upgrade now returns the pubkey in its output

* Add upgrade::apply

* Add Transport::and_then

* Rework the swarm

* Rustfmt

* Fix concerns
2018-05-14 15:55:16 +02:00
4382adcbde connection_reuse: drop dead connections. (#178)
Currently, connection substreams are added to
`connection_reuse::Shared::active_connections`, but never removed. This
is not least because the `StreamMuxer` trait defines its inbound and
outbound substream futures to always yield a substream and contains no
provision to signal that no more substreams can be created, which would
allow client code (e.g. `ConnectionReuse`) to detect this and purge its
caches.

This PR defines the `StreamMuxer` trait to optionally yield
inbound/outbound substreams and changes `libp2p-mplex` to handle
stream EOFs by marking the underlying resource as closed.
`ConnectionReuse` will remove stream muxers from its active connections
cache if a `None` substream is returned.
2018-05-14 14:49:29 +02:00
11f655dd6a Pin protobuf to 1.4 (#184) 2018-05-14 11:04:05 +02:00
ff7a191892 Remove the style check on travis (#186) 2018-05-14 10:39:49 +02:00
37881d511e Pass the host name with websockets (#177) 2018-05-08 22:07:07 +02:00
64278244de Add log statements to multistream-select. (#180)
Addresses issue #126.
2018-05-08 20:43:00 +02:00
d9e1e437b8 Try fix circleci again (#181) 2018-05-08 20:09:41 +02:00
773cf6c26d Add log statements to libp2p-mplex. (#179)
* Add log statements to libp2p-mplex.

Addresses issue #126.

* Run `cargo fmt`.

* Wording.

* Adjust log levels.
2018-05-08 19:20:57 +02:00
fd0d75f61e Remove rustc-serialize (#176) 2018-05-06 17:41:06 +02:00
9a7c278e83 Rename multiplex to libp2p-mplex (#153)
* Rename multiplex to libp2p-multiplex

* Rename multiplex to mplex

* Fmt

* Fix compilation
2018-05-04 15:27:49 +02:00
0fb92140e1 Fix circle-ci (#174) 2018-05-04 12:22:02 +02:00
383e16abea Return Option<bool> in PeerId::is_public_key`. (#172) 2018-05-03 15:42:50 +02:00
d346a6f495 Refactor transport into multiple modules. (#170)
Addresses #158.

Besides the refactoring, the type `EitherIncomingStream` has been
removed as it is not used.
2018-05-02 11:50:48 +02:00
3f2b6a5238 Add libp2p-ratelimit. (#161)
* Add libp2p-ratelimit.

* Run `cargo fmt`.

* Trigger another CI run.

* Add `target` to log statements.
2018-04-18 14:11:48 +02:00
590bc91d59 resolve PeerInfo deserialize error (#168) 2018-04-18 10:39:42 +02:00
96747441fc replace Vec with FuturesUnordered (#163)
* replace Vec with FuturesUnordered

* add err log
2018-04-16 11:55:16 +02:00
2445d9e9ee Various fixes and improvements (#166) 2018-04-11 17:32:32 +02:00
342a9f69d3 Bump multiaddr to 0.3 and remove patch in Cargo.toml (#164) 2018-04-10 18:08:01 +02:00
3954f3a2ca Update .editorconfig to align with rustfmt. (#162)
The current settings differ from rustfmt which is used during CI runs to
check the source code format. In particular, rustfmt will replace tabs
with spaces, therefore this commit attempts to use the same settings
already for editing.
2018-04-09 10:52:25 +02:00
4c1ab7f528 remove swarm controller from floodsub controller (#160) 2018-04-03 10:59:58 +02:00
Jef
29ca851f70 We don't need to immediately block if the cache is still filling (#155) 2018-03-21 17:08:43 +01:00
Jef
c487b489ce Add buffering to Substream using circular-buffer (#154)
* Add buffering to `Substream` using `circular-buffer`

* Fix freeze and add tests

* Fix tests

* fmt
2018-03-21 15:41:24 +01:00
Jef
5c4aefe457 Remove libp2p- prefix (#152)
* Remove `libp2p-` prefix

* More sed-fu
2018-03-20 14:44:46 +01:00
Jef
1e86c6ed35 Switch to bs (#150)
* Switch to `bs`

* fmt
2018-03-17 15:32:12 +01:00
d6f1b9bf5b Add logging to libp2p-swarm (#149)
* Add logging to libp2p-swarm

* Fix style
2018-03-16 16:39:02 +01:00
a3b1d785e4 floodsub example typo (#148) 2018-03-16 12:07:55 +01:00
18e1727842 Fix panics while logging (#140)
* Fix panic and logging

* Fix style
2018-03-15 18:03:39 +01:00
064706be39 Add logging to the examples (#138) 2018-03-15 16:56:55 +01:00
f81cc08027 Add logging to tcp-transport (#141) 2018-03-15 16:08:49 +01:00
fd9349d15a Add logging to libp2p-websocket (#142) 2018-03-15 15:45:11 +01:00
68299c40a5 Implement Kademlia peer discovery (#120)
* 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
2018-03-15 15:18:21 +01:00
89f95f7136 Implement first draft of floodsub (#144)
* 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
2018-03-15 11:58:11 +01:00
Jef
2ffcf9eea3 Make rustfmt output human-readable (#139) 2018-03-07 20:03:22 +01:00
32380a07fe Use upstream rust-multiaddr (#135) 2018-03-07 18:03:51 +01:00
Jef
5217e29fab Add rustfmt to travis (#137)
* RFC styling-based `rustfmt.toml`

* Add rustfmt to travis

* Remove rustfmt.toml and actually fix too-long lines instead of ignoring them
2018-03-07 16:20:55 +01:00
e8d29af359 Identify log (#129)
* 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

* Add logging for identify

* Fix concern
2018-03-07 14:24:00 +01:00
22a7159c41 Merge of #116 and #111 (#117)
* 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

* Fix websocket browser code

* Ignore errors in the swarm

* Fix multiplex test

* Fix some style concerns

* Fix concerns
2018-03-07 11:51:52 +01:00
39dde305b4 Rework libp2p-identify (#116)
* 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
2018-03-07 10:49:11 +01:00
3b859b6833 Implement libp2p-dns (#132)
* Implement libp2p-dns

* Some docs

* Add test

* Rustfmt on dns

* More work

* Rustfmt on libp2p-dns

* Fix concerns
2018-02-27 17:34:52 +01:00
9faf3fae29 Add logging for libp2p-ping (#128)
* Add logging for libp2p-ping

* Fix concern

* Fix concern again
2018-02-14 18:24:59 +01:00
242702a7a9 Improve and fix nat_traversal for browser websockets (#130)
* Improve and fix nat_traversal for browser websockets

* Also check that remainder of addr is empty

* Fix concerns
2018-02-14 14:46:11 +01:00
025bb04dea Add support for the unimplemented protocols in rust-multiaddr (#123)
* Add support for the unimplemented protocols in rust-multiaddr

* Fix concern
2018-02-14 14:10:55 +01:00
6f450eeef3 Add logging to secio (#127) 2018-02-14 13:02:56 +01:00
8628a59ecf Add a nat_traversal() method to Transport (#110)
* Add a nat_traversal() method to Transport

* Fix compilation
2018-02-08 13:50:16 +01:00
76a08c655d Remove public key system from peerstore (#118)
* Remove public key system from peerstore

* Add comment about PartialOrd on PeerInfo
2018-02-08 12:22:57 +01:00