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>
* Use deterministic TLS certificates for webtransport
* Update test to work with buckets
* Make sure to overlap and use a random offset
* Fixup mistaken change in other test
* Add QuickCheck tests for cert behavior
* Lint fix
* Add more tests
* Add webtransport integration test
* Use same key
* Actually offset by at least clockSkew
* Use seeded key for certs after reboot test
* PR comments
* Remove debug code
* Fix calculation for cert having been valid
Fixes the logic that a cert has been valid for a clockSkew by
subtracting the clockSkew from the start time rather than incorporating
it into the offset. The offset should be used to shift the buckets.
* Update comment
* Lint fix
* Update TestGetCurrentBucketStartTimeIsWithinBounds to include clockSkew calculation
* Rebase fixes
* noise: make it possible for the server to send early data
* noise: use separate early data handlers for initiator and responder
* noise: use a 2 kb buffer for all handshake operations
* Add comments around EarlyData(Handler)
* noise: send early data with 2nd and 3rd handshake message
* Update p2p/security/noise/session_transport.go
Co-authored-by: Marco Munizaga <git@marcopolo.io>