ensure we only accept AddProvider records if the peer is the sender
Brian Tiger Chow committed
Feb 4, 2015 at 04:27 UTC
64a431dd3264a0c4e3c0d74823b8ecf06ad16b99
1 file changed
+11
-4
routing/supernode/server.go
+11
-4
@@ -71,10 +71,17 @@ func (s *Server) handleMessage(
71
return p.ID, response
72
73
case dhtpb.Message_ADD_PROVIDER:
74
- storeProvidersToPeerstore(s.peerstore, p, req.GetProviderPeers())
75
-
76
- if err := putRoutingProviders(s.routingBackend, util.Key(req.GetKey()), req.GetProviderPeers()); err != nil {
77
- return "", nil
74
+ for _, provider := range req.GetProviderPeers() {
75
+ providerID := peer.ID(provider.GetId())
76
+ if providerID == p {
77
+ store := []*dhtpb.Message_Peer{provider}
78
+ storeProvidersToPeerstore(s.peerstore, p, store)
79
+ if err := putRoutingProviders(s.routingBackend, util.Key(req.GetKey()), store); err != nil {
80
+ return "", nil
81
+ }
82
+ } else {
83
+ log.Event(ctx, "addProviderBadRequest", p, req)
84
+ }
85
}
86
return "", nil
87