diff --git a/routing/supernode/server.go b/routing/supernode/server.go index ee6ae678f981386c7cfc11abb298b3cb2122b68e..cbf240a193ec7f9fdb536472847b857d47886e79 100644 --- a/routing/supernode/server.go +++ b/routing/supernode/server.go @@ -71,10 +71,17 @@ func (s *Server) handleMessage( return p.ID, response case dhtpb.Message_ADD_PROVIDER: - storeProvidersToPeerstore(s.peerstore, p, req.GetProviderPeers()) - - if err := putRoutingProviders(s.routingBackend, util.Key(req.GetKey()), req.GetProviderPeers()); err != nil { - return "", nil + for _, provider := range req.GetProviderPeers() { + providerID := peer.ID(provider.GetId()) + if providerID == p { + store := []*dhtpb.Message_Peer{provider} + storeProvidersToPeerstore(s.peerstore, p, store) + if err := putRoutingProviders(s.routingBackend, util.Key(req.GetKey()), store); err != nil { + return "", nil + } + } else { + log.Event(ctx, "addProviderBadRequest", p, req) + } } return "", nil