From 44e76f5929b6392dbba9506d18a0fc1aea5fb730 Mon Sep 17 00:00:00 2001 From: guillaumemichel Date: Thu, 23 Jan 2025 15:33:49 +0100 Subject: [PATCH] fix: don't copy message to OnRequestHook --- dht.go | 9 +++++---- dht_net.go | 2 +- dht_options.go | 2 +- internal/config/config.go | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/dht.go b/dht.go index 3aa962b9f..436c511ba 100644 --- a/dht.go +++ b/dht.go @@ -40,8 +40,10 @@ import ( "go.uber.org/zap" ) -const tracer = tracing.Tracer("go-libp2p-kad-dht") -const dhtName = "IpfsDHT" +const ( + tracer = tracing.Tracer("go-libp2p-kad-dht") + dhtName = "IpfsDHT" +) var ( logger = logging.Logger("dht") @@ -164,7 +166,7 @@ type IpfsDHT struct { // Mostly used to filter out localhost and local addresses. addrFilter func([]ma.Multiaddr) []ma.Multiaddr - onRequestHook func(ctx context.Context, s network.Stream, req pb.Message) + onRequestHook func(ctx context.Context, s network.Stream, req *pb.Message) } // Assert that IPFS assumptions about interfaces aren't broken. These aren't a @@ -420,7 +422,6 @@ func makeRoutingTable(dht *IpfsDHT, cfg dhtcfg.Config, maxLastSuccessfulOutbound df, err := peerdiversity.NewFilter(dht.rtPeerDiversityFilter, "rt/diversity", func(p peer.ID) int { return kb.CommonPrefixLen(dht.selfKey, kb.ConvertPeerID(p)) }) - if err != nil { return nil, fmt.Errorf("failed to construct peer diversity filter: %w", err) } diff --git a/dht_net.go b/dht_net.go index 3fd113fcf..e0f78b8c9 100644 --- a/dht_net.go +++ b/dht_net.go @@ -101,7 +101,7 @@ func (dht *IpfsDHT) handleNewMessage(s network.Stream) bool { ) if dht.onRequestHook != nil { - dht.onRequestHook(ctx, s, req) + dht.onRequestHook(ctx, s, &req) } handler := dht.handlerForMsgType(req.GetType()) diff --git a/dht_options.go b/dht_options.go index 5939d2653..793d9bf68 100644 --- a/dht_options.go +++ b/dht_options.go @@ -375,7 +375,7 @@ func WithCustomMessageSender(messageSenderBuilder func(h host.Host, protos []pro // incoming DHT protocol message. // Note: Ensure that the callback executes efficiently, as it will block the // entire message handler. -func OnRequestHook(f func(ctx context.Context, s network.Stream, req pb.Message)) Option { +func OnRequestHook(f func(ctx context.Context, s network.Stream, req *pb.Message)) Option { return func(c *dhtcfg.Config) error { c.OnRequestHook = f return nil diff --git a/internal/config/config.go b/internal/config/config.go index 919c2d0dd..0cfcfae97 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -65,7 +65,7 @@ type Config struct { BootstrapPeers func() []peer.AddrInfo AddressFilter func([]ma.Multiaddr) []ma.Multiaddr - OnRequestHook func(ctx context.Context, s network.Stream, req pb.Message) + OnRequestHook func(ctx context.Context, s network.Stream, req *pb.Message) // test specific Config options DisableFixLowPeers bool