Commit Graph

303 Commits

Author SHA1 Message Date
Łukasz Magiera
a0ad8cfd5c p2p: Optimize registry, move stream stuff around
License: MIT
Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
2018-09-11 04:57:40 +02:00
Łukasz Magiera
a037ae6c93 p2p: cleanup listening logic, make dial act like ssh -L
License: MIT
Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
2018-09-11 04:57:29 +02:00
Steven Allen
a6e617f55c gx: update peerstore
Also:

* Updates go-floodsub to fix a data race.
* Updates golang-lru

License: MIT
Signed-off-by: Steven Allen <steven@stebalien.com>
2018-09-07 23:40:08 -07:00
Steven Allen
46a1d9d39b gx update deps
License: MIT
Signed-off-by: Steven Allen <steven@stebalien.com>
2018-08-31 10:29:26 -07:00
Steven Allen
656d7cc1a6 gx: update go-cid, go-libp2p-peer, go-ipfs-cmds, go-ipfs-cmdkit
License: MIT
Signed-off-by: Steven Allen <steven@stebalien.com>
2018-08-21 17:39:56 -07:00
Steven Allen
594d95af5d update gogo-protobuf
fixes #3214

License: MIT
Signed-off-by: Steven Allen <steven@stebalien.com>
2018-08-08 18:56:13 -07:00
Steven Allen
3eba14aa24 gx update
Updates:

* go-kad-dht: Query performance improvements, DHT client fixes, validates
  records on *local* put.
* go-libp2p-swarm/go-libp2p-transport: Timeout improvements.
* go-multiaddr-net: Exposes useful Conn methods (CloseWrite, CloseRead, etc.)
* go-log: fixes possible panic when enabling/disabling events.
* go-multiaddr: fixes possible panic when stringifying malformed multiaddrs,
  adds support for consuming /p2p/ multiaddrs.

fixes #5113
unblocks #4895

License: MIT
Signed-off-by: Steven Allen <steven@stebalien.com>
2018-06-26 17:11:33 -07:00
Steven Allen
85acad9a01 gx update go-log, sys, go-crypto
* go-log
* sys
* go-crypto

License: MIT
Signed-off-by: Steven Allen <steven@stebalien.com>
2018-06-08 22:36:24 -07:00
Steven Allen
39f927aa04 update gx imports
License: MIT
Signed-off-by: Steven Allen <steven@stebalien.com>
2018-06-05 23:55:08 -07:00
Steven Allen
c9c9986c9e update multiplexers
License: MIT
Signed-off-by: Steven Allen <steven@stebalien.com>
2018-06-04 10:05:20 -07:00
Steven Allen
1e9e2f453c update deps
License: MIT
Signed-off-by: Steven Allen <steven@stebalien.com>
2018-05-31 17:59:17 -07:00
Steven Allen
b2cbfd299c gx: update go-log
License: MIT
Signed-off-by: Steven Allen <steven@stebalien.com>
2018-01-31 21:54:22 -08:00
Steven Allen
fe8846fcd7 gx: mass update
License: MIT
Signed-off-by: Steven Allen <steven@stebalien.com>
2018-01-24 15:58:44 -08:00
Steven Allen
dfe7ef4fcf gx: update go-multihash
License: MIT
Signed-off-by: Steven Allen <steven@stebalien.com>
2017-12-14 13:09:51 -08:00
Steven Allen
76e1da02a8 gx: massive update
Note: This commit is technically broken. However, I need to make a bunch of
cmds changes to make this work and I'd rather not bundle both changes into a
single commit.

License: MIT
Signed-off-by: Steven Allen <steven@stebalien.com>
2017-11-20 22:20:27 -08:00
Jeromy
94ec788555 update deps for new connmgr code
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2017-10-14 05:38:52 -07:00
Steven Allen
adfbecf3f7 use stream.Reset where appropriate
License: MIT
Signed-off-by: Steven Allen <steven@stebalien.com>
2017-09-14 16:10:38 -07:00
Steven Allen
8deaaa8d8c gx: update go-stream-muxer
Introduces a new Reset method on streams that kills both sides of the
connection. Close now officially just closes the write side (what it did all
along...)

* Also pull through shiny new go-multiplexer fixes.
* Also pull in go-reuseport update.

License: MIT
Signed-off-by: Steven Allen <steven@stebalien.com>
2017-09-14 12:06:44 -07:00
Steven Allen
70d6629940 gx: update go-cid, go-multibase, base32
License: MIT
Signed-off-by: Steven Allen <steven@stebalien.com>
2017-09-01 17:46:49 -07:00
Steven Allen
19c3bd82a3 extract update go-testutil
License: MIT
Signed-off-by: Steven Allen <steven@stebalien.com>
2017-08-16 17:23:01 -07:00
Steven Allen
28be1d4c58 gx: update deps
License: MIT
Signed-off-by: Steven Allen <steven@stebalien.com>
2017-07-27 18:48:16 -07:00
Jeromy
cccc6a94a3 update go-multihash and bubble up changes
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2017-07-11 19:27:43 -07:00
Łukasz Magiera
bec54c2540 Rename PTP to P2P
License: MIT
Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
2017-06-19 21:30:58 +02:00
Jeromy
0e312f5caf initial vendoring of libp2p outside of the repo with gx
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2016-01-30 09:34:06 -08:00
Jeromy Johnson
f89a915ca0 Merge pull request #2114 from ipfs/remove-jenkins
ci: remove dead jenkins code
2016-01-15 23:55:20 +01:00
Jeromy
4d5af93f43 vendor in new go-datastore
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2016-01-12 08:22:55 -08:00
Jeromy
f4ba724dbe implement utp transport
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2016-01-12 08:22:55 -08:00
rht
bf26b59c37 s/\[0:/\[:/g
License: MIT
Signed-off-by: rht <rhtbot@gmail.com>
2016-01-12 08:22:55 -08:00
Tommi Virtanen
e49e610b07 p2p/net/filter: Guard with a mutex
Callers assume this is safe to call whenever, let's make it so.

License: MIT
Signed-off-by: Tommi Virtanen <tv@eagain.net>
2016-01-12 08:22:55 -08:00
Jeromy
e431f35a0c update multistream naming of lazyconn
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2016-01-12 08:21:13 -08:00
Jeromy
2c4eb60961 allow multistream to have zero rtt stream opening
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2016-01-12 08:21:13 -08:00
Jeromy
de50b21562 using multistream muxer
* ID service stream
* make the relay service use msmux
* fix nc tests

Note from jbenet: Maybe we should remove the old protocol/muxer
and see what breaks. It shouldn't be used by anything now.

License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
Signed-off-by: Juan Batiz-Benet <juan@benet.ai>
2016-01-12 08:21:13 -08:00
Juan Batiz-Benet
c48f456bdf remove msgio double wrap
There was doublewrapping with an unneeded msgio. given that we
use a stream muxer now, msgio is only needed by secureConn -- to
signal the boundaries of an encrypted / mac-ed ciphertext.

Side note: i think including the varint length in the clear is
actually a bad idea that can be exploited by an attacker. it should
be encrypted, too. (TODO)

License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2016-01-12 08:21:13 -08:00
Jeromy
3916e73eca force use of ipv4 in test
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2016-01-10 11:40:22 -08:00
Lars Gierth
711b95ed3b ci: remove dead jenkins code
License: MIT
Signed-off-by: Lars Gierth <larsg@systemli.org>
2016-01-01 15:11:32 -08:00
Juan Benet
63baf78d1e Merge pull request #1943 from ipfs/dht/speed
fix swarm dial backoff
2015-11-10 06:41:54 +00:00
Jeromy
94647ed884 only fail interface setup if all addresses fail
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2015-11-09 20:02:26 -08:00
Jeromy
724e6cb37d reuseport tcp is now a dial creation option
And other assorted PR feedback

License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2015-11-09 20:02:26 -08:00
Jeromy
8e6609e78a add timeout opt to transport dialer creation
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2015-11-09 20:02:26 -08:00
Jeromy
d26a918258 refactor net code to use transports, in rough accordance with libp2p
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2015-11-09 20:02:23 -08:00
Jeromy
097d40ba74 rewrite of backoff mechanism
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2015-11-08 13:09:36 -08:00
Jeromy
193d73080e fix dial backoff
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2015-11-08 13:09:36 -08:00
Jeromy
94bdce63a7 vendor logging lib update
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2015-11-05 15:57:21 -08:00
Jeromy
c023d187b5 update code to use new logging changes
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2015-10-27 11:04:56 -07:00
Jeromy
def4697852 fix a few race conditions in mocknet
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2015-10-19 17:20:33 -07:00
Jeromy
49733f4da1 order addresses to give certain address types priority
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2015-10-16 19:02:46 -07:00
Jeromy
663a0309e5 simplify rate limiting to remove potential panic
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2015-10-14 12:35:37 -07:00
Jeromy Johnson
c1c9a74a63 fix too many FD error on osx
License: MIT
Signed-off-by: Jeromy Johnson <why@ipfs.io>
2015-10-08 11:07:01 -07:00
Jeromy
1c2223dece rate limit concurrent peer dials
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2015-10-08 01:20:50 -07:00
Juan Batiz-Benet
a7576c98be mocknet: conn close idempotent with process.
License: MIT
Signed-off-by: Juan Batiz-Benet <juan@benet.ai>
2015-10-04 10:15:45 -04:00
Jeromy
8f0623255d replace imports with absolute path instead of using symlink
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2015-10-03 14:30:50 -07:00
Jeromy
e5a2896c0e extract logging
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2015-09-14 17:35:50 -07:00
Jeromy
5ebf962b2d cache nat port mappings for a short period of time
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2015-09-10 12:59:08 -07:00
Jeromy
1f415714f4 WIP: quick fix to the NAT spam too many open fd's bug
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2015-09-10 12:45:36 -07:00
Jeromy
7217d6a236 fix mock notification test
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2015-09-03 14:28:53 -07:00
rht
63c7741fb9 Refactor FullMeshLinked and ConnectAll()
License: MIT
Signed-off-by: rht <rhtbot@gmail.com>
2015-08-28 17:39:05 +07:00
Jeromy
94000e6490 replace nodebuilder with a nicer interface
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>

use NewNode instead of NewIPFSNode in most of the codebase

License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>

make mocknet work with node constructor better

License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>

finish cleanup of old construction method

License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>

blockservice.New doesnt return an error anymore

License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>

break up node construction into separate function

License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>

add error case to default filling on node constructor

License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2015-08-27 08:43:10 -07:00
rht
30e03b2da6 Replace context.TODO in test files with context.Background
License: MIT
Signed-off-by: rht <rhtbot@gmail.com>
2015-08-23 19:55:45 +07:00
Pavol Rusnak
d3efdcf0c3 remove elliptic.P224 usage
Fedora/RedHat distros comply with US patent law and remove this curve,
which makes it impossible to run ipfs with distro provided Golang.

License: MIT
Signed-off-by: Pavol Rusnak <stick@gk2.sk>
2015-08-03 16:41:10 +02:00
Jeromy
47cd70fa7d fix same test in swarm
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2015-07-22 16:15:50 -07:00
Jeromy
b60f494c1e fix race condition in notifications test
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2015-07-22 14:38:13 -07:00
Juan Benet
13d49d9abb Merge pull request #1471 from heems/master
add transport from netsim and bandwidth to mocknet
2015-07-19 23:36:25 -07:00
Jeromy
a4efe42567 make timing tests actually not run under CI
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2015-07-19 16:11:06 -07:00
Karthik Bala
0e597b3ae6 add transport logic to mocknet
License: MIT
Signed-off-by: Karthik Bala <karthikbala444@gmail.com>
2015-07-15 19:36:15 -07:00
Juan Batiz-Benet
cdb18d2833 Merge pull request #1473 from ipfs/godep-peerstream
update go-peerstream to newest version
2015-07-14 21:29:38 -07:00
Jeromy
a9c971fdbb update go-peerstream to newest version
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2015-07-14 16:23:30 -07:00
Jeromy
191ac62c12 making the daemon shutdown quicker
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2015-07-14 14:04:56 -07:00
Jeromy
a19ad97ea5 make ping its own protocol
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2015-07-13 19:19:25 -07:00
Juan Batiz-Benet
6e9c72ab37 expose internal/pb packages.
we shouldn't use internal packages.

License: MIT
Signed-off-by: Juan Batiz-Benet <juan@benet.ai>
2015-07-10 11:08:49 -07:00
rht
3daf749daa Make sure process context is set last
License: MIT
Signed-off-by: rht <rhtbot@gmail.com>
2015-07-05 09:35:36 +07:00
rht
0ceac5ded9 Use WithContextAndTeardown whenever possible
License: MIT
Signed-off-by: rht <rhtbot@gmail.com>
2015-07-05 09:19:06 +07:00
rht
007a12e7ef Change Process interface into object variable
License: MIT
Signed-off-by: rht <rhtbot@gmail.com>
2015-07-04 22:50:23 +07:00
rht
330b213777 Replace ctxgroup.ContextGroup -> goprocess.Process
License: MIT
Signed-off-by: rht <rhtbot@gmail.com>
2015-07-04 22:50:23 +07:00
Juan Batiz-Benet
0d42a6a7bc Merge pull request #1433 from ipfs/fix/addr-filter
add filters from config to addr filter in swarm
2015-07-02 17:00:36 -07:00
Lars Gierth
9c30b85180 swarm: fix peers_total metric
License: MIT
Signed-off-by: Lars Gierth <larsg@systemli.org>
2015-07-01 21:59:08 +02:00
Jeromy
7cc73f7b86 add command to manipulate address filters and a sharness test for them
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2015-06-30 18:25:34 -07:00
Jeromy
e7fd57f69a add filters from config to addr filter in swarm
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2015-06-30 15:03:56 -07:00
Lars Gierth
8b164f9e39 swarm: export ipfs_p2p_peers_total metric
License: MIT
Signed-off-by: Lars Gierth <larsg@systemli.org>
2015-06-30 16:32:46 +02:00
Juan Batiz-Benet
59d6a9a19c fix swarm notif tests
they were failing intermittently

License: MIT
Signed-off-by: Juan Batiz-Benet <juan@benet.ai>
2015-06-27 00:41:19 -07:00
Juan Batiz-Benet
f796615e10 mock: fix notif test
License: MIT
Signed-off-by: Juan Batiz-Benet <juan@benet.ai>
2015-06-27 00:18:12 -07:00
Juan Batiz-Benet
e37fefdfd3 daemon option to optionally disable secio
This commit adds an option to turn off all encryption. This is a mode
used for tests, debugging, achieving protocol implementation interop,
learning about how the protocol works (nc ftw), and worst case
networks which _demand_ to be able to snoop on all the traffic.
(sadly, there are some private intranets like this...). (We should
consider at least _signing_ all this traffic.)

Because of the severity of this sort of thing, this is an
all-or-nothing deal. Either encryption is ON or OFF _fully_.
This way, partially unencrypted nodes cannot be accidentally left
running without the user's understanding. Nodes without encrypted
connections will simply not be able to speak to any of the global
bootstrap nodes, or anybody in the public network.

License: MIT
Signed-off-by: Juan Batiz-Benet <juan@benet.ai>
2015-06-26 23:36:43 -07:00
Jeromy
0bf6b39caf filter incoming connections and add a test of functionality
- add extra check to dialblock test
- move filter to separate package
- also improved tests
- sunk filters down into p2p/net/conn/listener

License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
Signed-off-by: Juan Batiz-Benet <juan@benet.ai>
2015-06-23 01:30:16 -07:00
Jeromy
fbab2a7273 broke filters out into a struct
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2015-06-23 01:29:29 -07:00
Jeromy
e01f8e4f22 add in basic address dial filtering
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2015-06-23 01:29:29 -07:00
rht
78b6cc5f2d Replace Critical{,f} with Error{,f}
Except when there is an explicit os.Exit(1) after the Critical line,
then replace with Fatal{,f}.
golang's log and logrus already call os.Exit(1) by default with Fatal.

License: MIT
Signed-off-by: rht <rhtbot@gmail.com>
2015-06-18 10:03:57 +07:00
Juan Batiz-Benet
500bb51759 p2p/net/identify: clump addr observers into groups
Different mutliaddrs is not enough. Nodes may share transports.
NAT port mappings will likely only work on the base IP/TCP port
pair. We go one step further, and require different root (IP)
addrs. Just in case some NATs group by IP. In practice, this is
what we want: use addresses only if hosts that are on different
parts of the network have seen this address.
2015-06-07 17:00:56 -07:00
Juan Batiz-Benet
96ed20bffe p2p/protocol/identify: dont double count observers
If the same peer observed the same address twice, it would be
double counted as different observations. This change adds a map
to make sure we're counting each observer once.

This is easily extended to require more than two observations,
but i have not yet encountered NATs for whom this is relevant.
2015-06-07 16:48:02 -07:00
rht
e671ab2f42 Swap all 'crypto/rand' rng in tests with 'math/rand' 2015-06-03 18:12:34 +07:00
Jeromy
ef294431d4 move util.Key into its own package under blocks 2015-06-01 16:10:08 -07:00
Juan Batiz-Benet
ecdf14962c Merge pull request #1294 from rht/cleanup-tour
Cleanup tour
2015-05-29 16:59:17 -07:00
Henry
13a7d27b4c mdns: use my fork of hashicorp/mdns
upstream didn't respond to the request to update their dependencies
2015-05-29 01:30:44 +02:00
rht
3547f7ae33 Replace 'var * bytes.Buffer' with '\1 := new(bytes.Buffer)' 2015-05-26 23:18:04 +07:00
rht
ac7edddb94 Run 'gofmt -s -w' on these files 2015-05-19 06:11:15 +07:00
Juan Batiz-Benet
b84fa2b493 net/p2p + secio: parallelize crypto handshake
We had a very nasty problem: handshakes were serial so incoming
dials would wait for each other to finish handshaking. this was
particularly problematic when handshakes hung-- nodes would not
recover quickly. This led to gateways not bootstrapping peers
fast enough.

The approach taken here is to do what crypto/tls does:
defer the handshake until Read/Write[1]. There are a number of
reasons why this is _the right thing to do_:
- it delays handshaking until it is known to be necessary (doing io)
- it "accepts" before the handshake, getting the handshake out of the
  critical path entirely.
- it defers to the user's parallelization of conn handling. users
  must implement this in some way already so use that, instead of
  picking constants surely to be wrong (how many handshakes to run
  in parallel?)

[0] http://golang.org/src/crypto/tls/conn.go#L886
2015-05-12 05:54:09 -04:00
Dominic Tarr
e89e83f49e make comments describe what code actually does. 2015-05-06 15:33:26 +12:00
Juan Batiz-Benet
b71b7271c8 Merge pull request #1181 from ipfs/fix/mega-read
quick fix for OOM panic that has been plaguing us
2015-05-05 00:58:15 -04:00
Jeromy
517e2d121f quick fix for OOM panic that has been plaguing us 2015-05-01 23:24:47 -07:00
Juan Batiz-Benet
ea06ca0265 Merge pull request #1160 from ipfs/fix/dial-error-hiding
Fix/dial error hiding
2015-05-01 03:27:11 -07:00
Juan Batiz-Benet
e5bca45df5 Merge pull request #1165 from ipfs/fix/mdns-addr
advertise multiple addresses over mdns
2015-05-01 01:20:43 -07:00
Jeromy Johnson
c43b5c921d Update swarm_dial.go 2015-04-30 13:19:56 -07:00