* move host/relay to host/autorelay
* move autorelay wrapper host to package
* support v2 relays in autorelay
* test autorelay with both v1 and v2 relays
* fix test race
* go mod tidy examples/pubsub/chat
static checker complains; sigh.
* refactor reservation refresh loop
* merge background and refresh goroutines
* handle pushes synchronously from reservation refresh failures
* make connmanager tag a package level constant
* dont sleep to wait for identify, use IdentifyWait
* make relay protocol ids package-level constants
* add comment about v1 relays not having reservations
* use errgrp instead of WaitGroup with atomic int
* fix variable capture bug
* go get x/sync
* add circuitv1 protobuf
* add implementation of v1 circuit relay
Intended to be used by standalone daemons and tests
* remove references to go-libp2p-circuit from production code
* update tests to use the in-tree v1 Relay
* use go-log/v2 in relay v1 impl
* use in-tree v1 relay in relay example
* remove go-libp2p-circuit dep from examples go.mod, go mod tidy
* 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
* 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>