Commit Graph

158 Commits

Author SHA1 Message Date
vyzo 7872bd5a44 p2p-circuit v2 (#125)
* v2 client scaffolding

* gomod: go-libp2p-core and go-libp2p-transport-upgrader feature dependencies

* Conn implements network.ConnStat

* add reservation stub

* utilities

* dial scaffolding and v1 compat dialing

* stream handling scaffolding and v1 incoming connection handling

* implement hop tagging

* export timeout variables

* v2 protobuf

* v2 client protocol implementation

* implement Reserve

* go get go-libp2p-swarm@feat/transient-conns

* implement client.New

* rework pb status codes

* client responds with UNEXPECTED_MESSAGE when it's actually an unexpected message

* relay scaffolding, reservation implementation

* implement relaying

* implement missing details

* add options for resources/limit

* gc idle conn counts

* fix clown shoes in cancellation check

* end to end relay test

* untag peers with expired reservations

* add time limit test

* better debug log for accepted conns

* add data limit test

* add v2-v1 compatibility tests

* godocs

* add WithACL relay option

* only return public relay addrs in reservation record

* remove the refresh restriction madness

* set default limit Data to 128K

* fix typo in AllowReserve godoc

* fix some small issues

- remove context from constructor
- remove stream handler when closing the host
- remove the awkward cancellation check from handleStream

* fix tests

* address review comments

- Add deadline for Reserve calls
- Add deadline for dials
- Add some comments for things that confuse aarsh.

* humor aarsh and add initializers for slices

* comment nitpicks

* fix bug in slice pre-allocations

* add deadline to connectV1

* make Relay.Close thread-safe

* untag peers with reservations when closing the relay

* gomod: get go-libp2p-asn-util

* add IP/ASN reservation constraints

* gomod: update deps

* fix e2e test

* increase default limit duration to 2min

* update protocol for vouched relay addrs; provide absolute expiration time instead of TTL

* update for reservation changes

* add voucher to the reservation pb

* TODO about reservation vouchers

* deduplicate protocol ID definitions between relay and client

* add reservation vouchers

* emit and consume reservation vouchers

* improve limit data test

* deduplicate concurrent relay dials to the samke peer

* improve dialer deduplication

* add a short timeout to dialing the relay in order to aid deduplication

* gomod: fix go1.16 madness

* spec compliance: don't include p2p-circuit in reservation addrs

* spec compliance: refuse reservation and connection attempts over relayed connections

* test shim: add empty file in test directory

* spec compliance: update protobuf

* spec compliance: use libp2p envelopes for reservation vouchers

* fix staticcheck

Co-authored-by: Marten Seemann <martenseemann@gmail.com>
2021-09-02 20:25:16 +01:00
web3-bot 0741d17496
sync: update CI config files (#1166) 2021-08-21 11:00:06 +00:00
Marten Seemann ec3c9cbf49
implement the new mDNS spec, move the old mDNS implementation (#1161)
* move the current mdns discovery implementation to discovery_legacy

* use libp2p/zeroconf for mDNS discovery

* rename the discovery package to mdns

* don't store the context

* use a wait group for clean shutdown of the mdns resolver

* add comment about port numbers

* move the mdns packages p2p/discovery
2021-08-18 09:15:56 -07:00
Marten Seemann 650a77b7ff update dependencies 2021-08-17 13:15:00 +02:00
Marten Seemann 366bdea5a4 chore: update deps 2021-07-28 14:28:57 +02:00
Marten Seemann 255eb5dfd8 update go-tcp-transport to v0.2.4 2021-07-16 18:37:13 +02:00
Marten Seemann 0d8dd216b7 update go-tcp-transport to v0.2.3 and go-multiaddr to v0.3.3 2021-06-23 19:08:23 -07:00
Steven Allen dadeeeacac chore: update yamux to v0.5.4
This fixes a backwards incompatible change in a previous version.
2021-05-31 13:59:57 -07:00
Steven Allen 45cbfc1fdf chore(deps): update yamux 2021-05-10 13:01:48 -07:00
Steven Allen 4fa48655bb chore: update yamux 2021-05-04 21:43:48 -07:00
Steven Allen 7ab7b978b7 chore: update deps 2021-05-04 19:56:06 -07:00
Steven Allen 0a1044392a chore: update go-libp2p-peerstore
Fixes an issue where, when using peerstore.UpdateAddrs to set the "TTL"
to 0, the specified addresses might subsequently be returned from
peerstore.Addrs.
2021-04-29 20:39:51 -07:00
web3-bot 252fd257d4 set Go version to 1.15 and run go mod tidy 2021-04-29 21:35:37 +00:00
Steven Allen 2ad02f79b2 chore: update to go-log v2 2021-04-29 14:15:17 -07:00
Steven Allen 2a72777ef9 fix: address review feedback 2021-04-29 14:13:54 -07:00
Steven Allen 58b40c1ca8 chore: update deps
- update go-libp2p-swarm to fix some dialing issues.
- update go-netroute/go-sockaddr to fix some (theoretical) memory safety
  issues on windows.
2021-04-26 12:32:31 -07:00
vyzo b313b4af98 option for custom dns resolver 2021-04-12 12:42:56 +03:00
Steven Allen 6c0336634a chore: update deps
* update go-log & zap.
* update golang.org/x deps to pull in bug fixes.
* update autonat to simplify some logic
2021-03-18 17:02:28 -07:00
Steven Allen c39da30592 chore: update deps 2021-03-08 13:35:26 -08:00
Aarsh Shah 69916ed465
Emit event for User's NAT Type i.e. Hard NAT or Easy NAT (#1042)
* emit NAT device type
2021-02-19 15:14:03 +05:30
vyzo 8ea7ba4a88 gomod: update deps 2021-02-17 12:38:11 +02:00
Aarsh Shah c575ec40e1
Finish and Test the simultaneous connect problem in libp2p peers (#1041)
* Implement support for SimOpen.
2021-02-17 13:36:40 +05:30
Marten Seemann 7e81b7e411 update yamux and mplex, to actually use the context passed to OpenStream 2020-12-19 15:56:29 +07:00
Marten Seemann 34eb40850b use a context when opening streams 2020-12-19 12:05:19 +07:00
Steven Allen 7a98f28856 feat: update to go-libp2p-core 0.7.0 interface changes
This patch updates go-libp2p for the stream interface changes in go-libp2p-core
0.7.0. This is a _significant_ breaking change to streams and all users should
read https://github.com/libp2p/go-libp2p-core/releases/tag/v0.7.0. In practice,
this change should remove a significant footgun.

TL;DR:

* `Stream.Close` now behaves like `net.TCPConn.Close`.
* There is a new `Stream.CloseWrite` (send an EOF) and `Stream.CloseRead` (close
  for reading), behaving like their counterparts in `net.TCPConn`.
2020-11-11 09:35:37 -08:00
vyzo 868f975b78 gomod: go-datastore dependency 2020-09-14 15:58:25 +03:00
Adin Schmahmann fb3179e617 chore: update go-multiaddr 2020-08-25 15:32:03 -04:00
Steven Allen db5f196114 feat: switch from SECIO to Noise as the default security transport
This is a backwards incompatible change and will require a major version bump
plus an announcement. Users can choose to re-enable SECIO by passing
`libp2p.Security(secio.ID, secio.New)` to the constructor.
2020-08-19 11:15:02 -07:00
Adin Schmahmann 6b509be0eb chore: update deps 2020-08-19 02:54:41 -04:00
Will 7cfc4e645e
Bump Autonat version & validate fixed call loop in `.Addrs` (#988)
* add test for host address with attached autonat
* bump autonat release
2020-08-03 14:33:21 -04:00
Raúl Kripalani aae9c77cd8
upgrade go-libp2p-circuit to v0.3.1. (#986) 2020-07-30 13:03:22 +01:00
Raúl Kripalani a5786f0415
upgrade deps + interoperable uvarint delimited writer/reader. (#985) 2020-07-30 12:42:57 +01:00
Raúl Kripalani 985120b6f9
upgrade swarm; add ID() on mock conns and streams. (#970) 2020-06-16 19:45:28 +01:00
Steven Allen a5b6745ff9 chore: update deps
* Updates yamux to reduce lock contention.
* Updates the peerstore to remove an issue where we'd forget our peer's addresses instead of extending the TTL.
2020-06-09 15:37:17 -07:00
vyzo 2ca365a944 gomod: update go-libp2p-circuit 2020-06-04 14:42:53 +03:00
Aarsh Shah 1b36fd8697 first draft 2020-06-03 15:27:01 -07:00
vyzo ae7645ce85 gomod: update dependencies
go-libp2p-core@v0.5.7
go-libp2p-connmgr@v0.2.4 [indirect]
go-eventbus@v0.2.1
2020-06-03 22:44:35 +03:00
Aarsh Shah 3a1d20b748
Filter Interface Addresses (#936)
* Filter Host Addresses
2020-05-29 19:46:58 +05:30
Raúl Kripalani 7abe2e4c63
release v0.9.0: upgrade dependencies. (#937) 2020-05-19 13:23:26 +01:00
Aarsh Shah 887f2c40cf
implement connection gating at the top level (#881) 2020-05-15 17:31:03 +01:00
Aarsh Shah 973933ad7d
Remove race between ID, Push & Delta (#907)
* Solve races between Identify, Push and Delta.
2020-05-13 10:50:37 +05:30
Steven Allen c833e2c9fc
Merge pull request #876 from libp2p/dependabot/go_modules/github.com/libp2p/go-libp2p-peerstore-0.2.3
build(deps): bump github.com/libp2p/go-libp2p-peerstore from 0.2.2 to 0.2.3
2020-04-27 19:46:37 -07:00
Steven Allen 9cc9d5c201
Merge pull request #893 from libp2p/dependabot/go_modules/github.com/libp2p/go-stream-muxer-multistream-0.3.0
build(deps): bump github.com/libp2p/go-stream-muxer-multistream from 0.2.0 to 0.3.0
2020-04-27 19:46:13 -07:00
Steven Allen 6dc5d50fc5
Merge pull request #892 from libp2p/dependabot/go_modules/github.com/libp2p/go-conn-security-multistream-0.2.0
build(deps): bump github.com/libp2p/go-conn-security-multistream from 0.1.0 to 0.2.0
2020-04-27 19:45:51 -07:00
Steven Allen 34867586a3
Merge pull request #895 from libp2p/dependabot/go_modules/github.com/libp2p/go-ws-transport-0.3.1
build(deps): bump github.com/libp2p/go-ws-transport from 0.3.0 to 0.3.1
2020-04-27 19:45:42 -07:00
Steven Allen 75a12253a3
Merge pull request #896 from libp2p/dependabot/go_modules/github.com/libp2p/go-libp2p-discovery-0.4.0
build(deps): bump github.com/libp2p/go-libp2p-discovery from 0.3.0 to 0.4.0
2020-04-27 19:45:31 -07:00
dependabot-preview[bot] 408e4d1286
build(deps): bump github.com/libp2p/go-libp2p-circuit
Bumps [github.com/libp2p/go-libp2p-circuit](https://github.com/libp2p/go-libp2p-circuit) from 0.2.1 to 0.2.2.
- [Release notes](https://github.com/libp2p/go-libp2p-circuit/releases)
- [Commits](https://github.com/libp2p/go-libp2p-circuit/compare/v0.2.1...v0.2.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-27 11:27:49 +00:00
dependabot-preview[bot] a276aade96
build(deps): bump github.com/libp2p/go-libp2p-discovery
Bumps [github.com/libp2p/go-libp2p-discovery](https://github.com/libp2p/go-libp2p-discovery) from 0.3.0 to 0.4.0.
- [Release notes](https://github.com/libp2p/go-libp2p-discovery/releases)
- [Commits](https://github.com/libp2p/go-libp2p-discovery/compare/v0.3.0...v0.4.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-25 03:12:09 +00:00
Steven Allen af58b8095d
Merge pull request #898 from libp2p/fix/set-protocols-race
fix: refactor logic for identifying connections
2020-04-24 20:08:24 -07:00
Steven Allen bd040ba050 fix: refactor logic for identifying connections
0. NEVER call `peerstore.SetProtocols(p)` (clear the protocol set). Given the
   new identify events, if someone looked in the peerstore at the wrong time, they
   could decide that the peer no longer speaks some protocol.
1. Reliably wait for identify before trying to open a stream. The old logic was
   _really_ racy.
2. Avoids potentially calling identify on the same connection multiple times.
3. Calls identify as early as possible. Previously, we'd invoke identify on
   inbound connections using an event that was only invoked _after_ all `Connected`
   event handlers completed. Now we invoke identify from a `Connected` handler.
2020-04-24 19:05:22 -07:00