diff --git a/core/node/provider.go b/core/node/provider.go index 7632a9775..9b2c6f5e5 100644 --- a/core/node/provider.go +++ b/core/node/provider.go @@ -2,7 +2,6 @@ package node import ( "context" - "errors" "fmt" "time" @@ -18,11 +17,8 @@ import ( "github.com/ipfs/kubo/config" "github.com/ipfs/kubo/repo" irouting "github.com/ipfs/kubo/routing" - dht_pb "github.com/libp2p/go-libp2p-kad-dht/pb" + "github.com/libp2p/go-libp2p-kad-dht/dual" "github.com/libp2p/go-libp2p-kad-dht/reprovider" - "github.com/libp2p/go-libp2p/core/host" - peer "github.com/libp2p/go-libp2p/core/peer" - ma "github.com/multiformats/go-multiaddr" mh "github.com/multiformats/go-multihash" "go.uber.org/fx" ) @@ -169,19 +165,6 @@ func OnlineProviders(provide bool, providerStrategy string, reprovideInterval ti ) } -type kadClient interface { - GetClosestPeers(context.Context, string) ([]peer.ID, error) - Provide(context.Context, cid.Cid, bool) error - Context() context.Context - Host() host.Host - MessageSender() dht_pb.MessageSender -} - -type kadClientWithAddrsFilter interface { - kadClient - FilteredAddrs() []ma.Multiaddr -} - func SweepingReprovider(provide bool, reprovideStrategy string, opts ...reprovider.Option) fx.Option { if !provide { return OfflineProviders() @@ -196,32 +179,10 @@ func SweepingReprovider(provide bool, reprovideStrategy string, opts ...reprovid return fx.Options( keyProvider, - fx.Provide(func(router irouting.ProvideManyRouter, keyProvider provider.KeyChanFunc, opts ...reprovider.Option) (provider.Provider, error) { + fx.Provide(func(d *dual.DHT, keyProvider provider.KeyChanFunc, opts ...reprovider.Option) (provider.Provider, error) { ctx := context.Background() - - dhtClient, ok := router.(kadClient) - if !ok { - return nil, errors.New("reprovide sweep only available for normal and accelerated DHT clients") - } - - var selfAddrs func() []ma.Multiaddr - if client, addrsFilter := dhtClient.(kadClientWithAddrsFilter); addrsFilter { - selfAddrs = client.FilteredAddrs - } else { - // Accelerated DHT doesn't have an address filter - selfAddrs = dhtClient.Host().Addrs - } - - opts = append(opts, - reprovider.WithPeerID(dhtClient.Host().ID()), - reprovider.WithRouter(dhtClient), - reprovider.WithSelfAddrs(selfAddrs), - reprovider.WithMessageSender(dhtClient.MessageSender()), - reprovider.WithAddLocalRecord(func(h mh.Multihash) error { return dhtClient.Provide(ctx, cid.NewCidV1(cid.Raw, h), false) }), - ) - // Create DHT Sweeping Reprovider - r, err := reprovider.NewReprovider(dhtClient.Context(), opts...) + r, err := d.NewSweepingReprovider(opts...) if err != nil { return nil, err } diff --git a/docs/examples/kubo-as-a-library/go.mod b/docs/examples/kubo-as-a-library/go.mod index b7978096c..31d7d4fb2 100644 --- a/docs/examples/kubo-as-a-library/go.mod +++ b/docs/examples/kubo-as-a-library/go.mod @@ -112,7 +112,7 @@ require ( github.com/libp2p/go-doh-resolver v0.5.0 // indirect github.com/libp2p/go-flow-metrics v0.3.0 // indirect github.com/libp2p/go-libp2p-asn-util v0.4.1 // indirect - github.com/libp2p/go-libp2p-kad-dht v0.33.2-0.20250611084458-65bebac64139 // indirect + github.com/libp2p/go-libp2p-kad-dht v0.33.2-0.20250611122759-3d39daf2369d // indirect github.com/libp2p/go-libp2p-kbucket v0.7.1-0.20250514131430-6bb8b16e312b // indirect github.com/libp2p/go-libp2p-pubsub v0.14.2 // indirect github.com/libp2p/go-libp2p-pubsub-router v0.6.0 // indirect diff --git a/docs/examples/kubo-as-a-library/go.sum b/docs/examples/kubo-as-a-library/go.sum index 7e5ad5f0c..190e83512 100644 --- a/docs/examples/kubo-as-a-library/go.sum +++ b/docs/examples/kubo-as-a-library/go.sum @@ -428,8 +428,8 @@ github.com/libp2p/go-libp2p-asn-util v0.4.1 h1:xqL7++IKD9TBFMgnLPZR6/6iYhawHKHl9 github.com/libp2p/go-libp2p-asn-util v0.4.1/go.mod h1:d/NI6XZ9qxw67b4e+NgpQexCIiFYJjErASrYW4PFDN8= github.com/libp2p/go-libp2p-core v0.2.4/go.mod h1:STh4fdfa5vDYr0/SzYYeqnt+E6KfEV5VxfIrm0bcI0g= github.com/libp2p/go-libp2p-core v0.3.0/go.mod h1:ACp3DmS3/N64c2jDzcV429ukDpicbL6+TrrxANBjPGw= -github.com/libp2p/go-libp2p-kad-dht v0.33.2-0.20250611084458-65bebac64139 h1:u1/4EtZc/8faeg7o+L4BSnAHJQD73Ogia5oTMBLrf2Q= -github.com/libp2p/go-libp2p-kad-dht v0.33.2-0.20250611084458-65bebac64139/go.mod h1:aclSBU9n3XgL5VucPNW2eanQtLYvRHaFVTx1L/Rz0Nw= +github.com/libp2p/go-libp2p-kad-dht v0.33.2-0.20250611122759-3d39daf2369d h1:bZnem+ck3Bl7u0h47VWOm0fdu5QzEyxH9zpcdZmcDr8= +github.com/libp2p/go-libp2p-kad-dht v0.33.2-0.20250611122759-3d39daf2369d/go.mod h1:aclSBU9n3XgL5VucPNW2eanQtLYvRHaFVTx1L/Rz0Nw= github.com/libp2p/go-libp2p-kbucket v0.3.1/go.mod h1:oyjT5O7tS9CQurok++ERgc46YLwEpuGoFq9ubvoUOio= github.com/libp2p/go-libp2p-kbucket v0.7.1-0.20250514131430-6bb8b16e312b h1:qh7OgCwt5AjJohJH+oXKZw6iDeIWKJOZaLXwkxrW0WQ= github.com/libp2p/go-libp2p-kbucket v0.7.1-0.20250514131430-6bb8b16e312b/go.mod h1:3CofRbwJbTybT8WVM2z/h5dj2FPNar6YLyxUc4Tmv1E= diff --git a/go.mod b/go.mod index fd40cd8ba..1aa56e1a1 100644 --- a/go.mod +++ b/go.mod @@ -53,9 +53,9 @@ require ( github.com/libp2p/go-doh-resolver v0.5.0 github.com/libp2p/go-libp2p v0.43.0 github.com/libp2p/go-libp2p-http v0.5.0 - github.com/libp2p/go-libp2p-kad-dht v0.33.2-0.20250611084458-65bebac64139 - github.com/libp2p/go-libp2p-pubsub v0.14.2 + github.com/libp2p/go-libp2p-kad-dht v0.33.2-0.20250611122759-3d39daf2369d github.com/libp2p/go-libp2p-kbucket v0.7.1-0.20250514131430-6bb8b16e312b + github.com/libp2p/go-libp2p-pubsub v0.14.2 github.com/libp2p/go-libp2p-pubsub-router v0.6.0 github.com/libp2p/go-libp2p-record v0.3.1 github.com/libp2p/go-libp2p-routing-helpers v0.7.5 diff --git a/go.sum b/go.sum index 1cd99d9ca..f94c832ef 100644 --- a/go.sum +++ b/go.sum @@ -514,8 +514,8 @@ github.com/libp2p/go-libp2p-gostream v0.6.0 h1:QfAiWeQRce6pqnYfmIVWJFXNdDyfiR/qk github.com/libp2p/go-libp2p-gostream v0.6.0/go.mod h1:Nywu0gYZwfj7Jc91PQvbGU8dIpqbQQkjWgDuOrFaRdA= github.com/libp2p/go-libp2p-http v0.5.0 h1:+x0AbLaUuLBArHubbbNRTsgWz0RjNTy6DJLOxQ3/QBc= github.com/libp2p/go-libp2p-http v0.5.0/go.mod h1:glh87nZ35XCQyFsdzZps6+F4HYI6DctVFY5u1fehwSg= -github.com/libp2p/go-libp2p-kad-dht v0.33.2-0.20250611084458-65bebac64139 h1:u1/4EtZc/8faeg7o+L4BSnAHJQD73Ogia5oTMBLrf2Q= -github.com/libp2p/go-libp2p-kad-dht v0.33.2-0.20250611084458-65bebac64139/go.mod h1:aclSBU9n3XgL5VucPNW2eanQtLYvRHaFVTx1L/Rz0Nw= +github.com/libp2p/go-libp2p-kad-dht v0.33.2-0.20250611122759-3d39daf2369d h1:bZnem+ck3Bl7u0h47VWOm0fdu5QzEyxH9zpcdZmcDr8= +github.com/libp2p/go-libp2p-kad-dht v0.33.2-0.20250611122759-3d39daf2369d/go.mod h1:aclSBU9n3XgL5VucPNW2eanQtLYvRHaFVTx1L/Rz0Nw= github.com/libp2p/go-libp2p-kbucket v0.3.1/go.mod h1:oyjT5O7tS9CQurok++ERgc46YLwEpuGoFq9ubvoUOio= github.com/libp2p/go-libp2p-kbucket v0.7.1-0.20250514131430-6bb8b16e312b h1:qh7OgCwt5AjJohJH+oXKZw6iDeIWKJOZaLXwkxrW0WQ= github.com/libp2p/go-libp2p-kbucket v0.7.1-0.20250514131430-6bb8b16e312b/go.mod h1:3CofRbwJbTybT8WVM2z/h5dj2FPNar6YLyxUc4Tmv1E= diff --git a/test/dependencies/go.mod b/test/dependencies/go.mod index f7aa5fc76..d07d83d76 100644 --- a/test/dependencies/go.mod +++ b/test/dependencies/go.mod @@ -169,7 +169,7 @@ require ( github.com/libp2p/go-flow-metrics v0.3.0 // indirect github.com/libp2p/go-libp2p v0.43.0 // indirect github.com/libp2p/go-libp2p-asn-util v0.4.1 // indirect - github.com/libp2p/go-libp2p-kad-dht v0.33.2-0.20250611084458-65bebac64139 // indirect + github.com/libp2p/go-libp2p-kad-dht v0.33.2-0.20250611122759-3d39daf2369d // indirect github.com/libp2p/go-libp2p-kbucket v0.7.1-0.20250514131430-6bb8b16e312b // indirect github.com/libp2p/go-libp2p-record v0.3.1 // indirect github.com/libp2p/go-libp2p-routing-helpers v0.7.5 // indirect diff --git a/test/dependencies/go.sum b/test/dependencies/go.sum index 6d0499f87..4cd5347f4 100644 --- a/test/dependencies/go.sum +++ b/test/dependencies/go.sum @@ -431,8 +431,8 @@ github.com/libp2p/go-libp2p v0.43.0 h1:b2bg2cRNmY4HpLK8VHYQXLX2d3iND95OjodLFymvq github.com/libp2p/go-libp2p v0.43.0/go.mod h1:IiSqAXDyP2sWH+J2gs43pNmB/y4FOi2XQPbsb+8qvzc= github.com/libp2p/go-libp2p-asn-util v0.4.1 h1:xqL7++IKD9TBFMgnLPZR6/6iYhawHKHl950SO9L6n94= github.com/libp2p/go-libp2p-asn-util v0.4.1/go.mod h1:d/NI6XZ9qxw67b4e+NgpQexCIiFYJjErASrYW4PFDN8= -github.com/libp2p/go-libp2p-kad-dht v0.33.2-0.20250611084458-65bebac64139 h1:u1/4EtZc/8faeg7o+L4BSnAHJQD73Ogia5oTMBLrf2Q= -github.com/libp2p/go-libp2p-kad-dht v0.33.2-0.20250611084458-65bebac64139/go.mod h1:aclSBU9n3XgL5VucPNW2eanQtLYvRHaFVTx1L/Rz0Nw= +github.com/libp2p/go-libp2p-kad-dht v0.33.2-0.20250611122759-3d39daf2369d h1:bZnem+ck3Bl7u0h47VWOm0fdu5QzEyxH9zpcdZmcDr8= +github.com/libp2p/go-libp2p-kad-dht v0.33.2-0.20250611122759-3d39daf2369d/go.mod h1:aclSBU9n3XgL5VucPNW2eanQtLYvRHaFVTx1L/Rz0Nw= github.com/libp2p/go-libp2p-kbucket v0.7.1-0.20250514131430-6bb8b16e312b h1:qh7OgCwt5AjJohJH+oXKZw6iDeIWKJOZaLXwkxrW0WQ= github.com/libp2p/go-libp2p-kbucket v0.7.1-0.20250514131430-6bb8b16e312b/go.mod h1:3CofRbwJbTybT8WVM2z/h5dj2FPNar6YLyxUc4Tmv1E= github.com/libp2p/go-libp2p-record v0.3.1 h1:cly48Xi5GjNw5Wq+7gmjfBiG9HCzQVkiZOUZ8kUl+Fg=