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