From 971e740ea32b4f5a819e9ce904405c4954881b99 Mon Sep 17 00:00:00 2001 From: Evgenii Stratonikov Date: Mon, 17 Mar 2025 15:24:15 +0300 Subject: [PATCH] [#35] network: Use AppendComponent() for TLS encapsulation As advocated explicitly in https://github.com/multiformats/go-multiaddr/blob/master/v015-MIGRATION.md Answering a question about safety: AppendComponent() appends to `a.ma`` in place. `a.ma` is created by FromString() function, so there is only a single goroutine appending to it. Thus, assuming `FromString()` itself is called from a single goroutine, no data race is introduced. Signed-off-by: Evgenii Stratonikov --- pkg/network/address.go | 2 +- pkg/network/tls.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/network/address.go b/pkg/network/address.go index 45d5939..dff8614 100644 --- a/pkg/network/address.go +++ b/pkg/network/address.go @@ -66,7 +66,7 @@ func (a *Address) FromString(s string) error { if err == nil { a.ma, err = multiaddr.NewMultiaddr(s) if err == nil && hasTLS { - a.ma = a.ma.Encapsulate(tls) + a.ma = a.ma.AppendComponent(tls) } } } diff --git a/pkg/network/tls.go b/pkg/network/tls.go index b3e9663..f30c99e 100644 --- a/pkg/network/tls.go +++ b/pkg/network/tls.go @@ -9,7 +9,7 @@ const ( ) // tls var is used for (un)wrapping other multiaddrs around TLS multiaddr. -var tls, _ = multiaddr.NewMultiaddr("/" + tlsProtocolName) +var tls, _ = multiaddr.NewComponent(tlsProtocolName, "") // IsTLSEnabled searches for wrapped TLS protocol in multiaddr. func (a Address) IsTLSEnabled() bool {