@@ -271,7 +271,7 @@ func NewHost(n network.Network, opts *HostOpts) (*BasicHost, error) {
271271 h .hps , err = holepunch .NewService (h , h .ids , func () []ma.Multiaddr {
272272 addrs := h .AllAddrs ()
273273 if opts .AddrsFactory != nil {
274- addrs = opts .AddrsFactory (addrs )
274+ addrs = slices . Clone ( opts .AddrsFactory (addrs ) )
275275 }
276276 // AllAddrs may ignore observed addresses in favour of NAT mappings. Use both for hole punching.
277277 addrs = append (addrs , h .ids .OwnObservedAddrs ()... )
@@ -841,12 +841,10 @@ func (h *BasicHost) ConnManager() connmgr.ConnManager {
841841// When used with AutoRelay, and if the host is not publicly reachable,
842842// this will only have host's private, relay, and no public addresses.
843843func (h * BasicHost ) Addrs () []ma.Multiaddr {
844- addrs := h .AddrsFactory (h .AllAddrs ())
845844 // Make a copy. Consumers can modify the slice elements
846- res := make ([]ma.Multiaddr , len (addrs ))
847- copy (res , addrs )
845+ addrs := slices .Clone (h .AddrsFactory (h .AllAddrs ()))
848846 // Add certhashes for the addresses provided by the user via address factory.
849- return h .addCertHashes (ma .Unique (res ))
847+ return h .addCertHashes (ma .Unique (addrs ))
850848}
851849
852850// NormalizeMultiaddr returns a multiaddr suitable for equality checks.
0 commit comments