mirror of
https://github.com/ipfs/kubo.git
synced 2026-03-02 06:47:51 +08:00
Merge 57e7598dd5 into 1301710a91
This commit is contained in:
commit
44bdbfe25c
@ -2,12 +2,14 @@ package cmdutils
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"slices"
|
||||
|
||||
cmds "github.com/ipfs/go-ipfs-cmds"
|
||||
|
||||
"github.com/ipfs/boxo/path"
|
||||
"github.com/ipfs/go-cid"
|
||||
coreiface "github.com/ipfs/kubo/core/coreiface"
|
||||
"github.com/libp2p/go-libp2p/core/peer"
|
||||
)
|
||||
|
||||
const (
|
||||
@ -84,3 +86,13 @@ func PathOrCidPath(str string) (path.Path, error) {
|
||||
// Send back original err.
|
||||
return nil, originalErr
|
||||
}
|
||||
|
||||
// CloneAddrInfo returns a copy of the AddrInfo with a cloned Addrs slice.
|
||||
// This prevents data races if the sender reuses the backing array.
|
||||
// See: https://github.com/ipfs/kubo/issues/11116
|
||||
func CloneAddrInfo(ai peer.AddrInfo) peer.AddrInfo {
|
||||
return peer.AddrInfo{
|
||||
ID: ai.ID,
|
||||
Addrs: slices.Clone(ai.Addrs),
|
||||
}
|
||||
}
|
||||
|
||||
@ -11,6 +11,7 @@ import (
|
||||
|
||||
"github.com/ipfs/kubo/config"
|
||||
cmdenv "github.com/ipfs/kubo/core/commands/cmdenv"
|
||||
"github.com/ipfs/kubo/core/commands/cmdutils"
|
||||
"github.com/ipfs/kubo/core/node"
|
||||
mh "github.com/multiformats/go-multihash"
|
||||
|
||||
@ -89,7 +90,7 @@ var findProvidersRoutingCmd = &cmds.Command{
|
||||
defer cancel()
|
||||
pchan := n.Routing.FindProvidersAsync(ctx, c, numProviders)
|
||||
for p := range pchan {
|
||||
np := p
|
||||
np := cmdutils.CloneAddrInfo(p)
|
||||
routing.PublishQueryEvent(ctx, &routing.QueryEvent{
|
||||
Type: routing.Provider,
|
||||
Responses: []*peer.AddrInfo{&np},
|
||||
|
||||
Loading…
Reference in New Issue
Block a user