That way, it won't be possible to construct a host with a PSK
when WebTransport is enabled. This is desireable since WebTransport doesn't
support private network (same as QUIC).
* Revert "transport.Listener returns a list of multiaddrs"
This reverts commit 8962b2ae33.
* Support multiple QUIC versions on the same listener
* No long running accept loop
* Don't use a goroutine
* PR comments
* quic: add an integration test for QUIC version support
* quic: refactor the stateless reset test
* quic: simplify the interface of the noreuseConn
DecreaseCount now closes the underlying UDP conn, so that callers don't
need to pay attention if they're dealing with a reuseConn or a
noreuseConn.
* implement a quicreuse to manage QUIC connections
* quicreuse: introduce options
* config: construct the quicreuse.ConnManager using fx
* webtransport: use the quicreuse
* add integration test for QUIC and WebTranport sharing the same UDP addr
* Handle errors in accept loop goroutine
* Add comment
* Remove todo
* Rename mutexes
* Cleanup extra close
* Only log on err
* Use webtransport-go 0.4.0
* Fix expected error
Co-authored-by: Marco Munizaga <git@marcopolo.io>
* transport.Listener returns a list of multiaddrs
* Support both QUIC versions in QUIC transport
* Support only QUIC v1 in webtransport
* Update dialMatcher
* Update tests
* Only use draft 29 when dialing if the server is a draft 29 server
* Removes QUIC draft 29 addrs if we have a QUIC v1 addr
* Lint fix
* Add changes to deterministic certhashes after rebase
* Update p2p/transport/quic/options.go
Co-authored-by: Marten Seemann <martenseemann@gmail.com>
* Update p2p/transport/quic/listener.go
Co-authored-by: Marten Seemann <martenseemann@gmail.com>
* Update p2p/transport/quic/quic_multiaddr.go
Co-authored-by: Marten Seemann <martenseemann@gmail.com>
* Stylize QUIC correctly
* Update doc around ListenClose
* Preallocate a bit extra to avoid paying for an allocation later
* Keep a list of multiaddrs, then join
* PR nits
* Close transport or listener just once
* Update go-multiaddr
Co-authored-by: Marten Seemann <martenseemann@gmail.com>
* Preallocate slices
* Move slice allocs to right before they're used
* Revert slice assignments to append
* Don't preallocate for tests or deprecated code
* Don't preallocate too much
* Muxer selection in TLS handshake first cut
* Clean up some part of the code
* Change earlydata to ConnectionState for security connection.
* resolve merging conflicts
* Add stubs for noise
* clean up code
* Switch over to passing muxers to security transport constructors
* Address feedback points
* Update p2p/net/upgrader/upgrader.go
Co-authored-by: Marten Seemann <martenseemann@gmail.com>
* clean up accidental checked file.
* Review points round 2
* Address some go nit points
* Update tls transport test to address review points
Co-authored-by: Marten Seemann <martenseemann@gmail.com>
With WebTransport's /webtransport/certhash/xyz addresses, the assumption that
the last component of a multiaddr identifies the transport to use for dialing
doesn't hold any more.
Note that WebRTC will probably also use the certhash multiaddr component to
encode its certificate hashes.
* Add Resolver interface to transport
* Move resolve test to swarm_dial_test
* Use proper peer id in test
* Only import go-multiaddr once
* Cleanup
* Use SNI in websocket
* Update go-multiaddr
* Update p2p/net/swarm/swarm.go
Co-authored-by: Marten Seemann <martenseemann@gmail.com>
* PR comments on websocket.go
* Use unresolved/resolved map
* Set sni
* Refactor websocket multiaddr parsing code, add server test
* Delete superflous helpers
* Update callsites
* Fix typo in p2p/transport/websocket/websocket.go
Co-authored-by: Marten Seemann <martenseemann@gmail.com>
* fix: don't prefer local ports from other addresses when dialing
This address may already be in-use (on that other address) somewhere
else.
Thanks to @schomatis for figuring this out.
fixes#1611
* chore: document reuseport dialer logic
* bump go.mod to Go 1.18 and run go fix
* bump go.mod to Go 1.18 and run go fix
* bump go.mod to Go 1.18 and run go fix
* bump go.mod to Go 1.18 and run go fix
* run gofmt -s
* update .github/workflows/go-test.yml
* update .github/workflows/go-check.yml
* stop using the deprecated io/ioutil package
Co-authored-by: web3-bot <web3-bot@users.noreply.github.com>
Co-authored-by: Marten Seemann <martenseemann@gmail.com>
* fix: return the best _acceptable_ conn in NewStream
Otherwise, we can return, e.g., a transient connection that can't
actually be used.
* fix: fail dial if we can't have a usable connection
If we have a transient connection, don't want to use a transient
connection, and haven't specified "force direct dial", fail the dial.
The previous location would prevent explicit calls to `Connect`, but not
implicit connections on `NewStream`. Given that the host calls `Connect`
before calling `NewStream`, it's unclear whether or not this would
likely be triggered by user code, but we still need to fix it.
* Fix flaky timing dependent tests
* Update go-libp2p-peerstore dependency
* Register notifiee synchronously
* Only a single connection
* Remove WaitForDisconnectNotification hack since notifs are now synchronous
* Add debug logging to identify tests
* Close chan once