@@ -52,16 +52,15 @@ func (dht *IpfsDHT) handlerForMsgType(t pb.Message_MessageType) dhtHandler {
5252}
5353
5454func (dht * IpfsDHT ) handleGetValue (ctx context.Context , p peer.ID , pmes * pb.Message ) (_ * pb.Message , err error ) {
55- // setup response
56- resp := pb .NewMessage (pmes .GetType (), pmes .GetKey (), pmes .GetClusterLevel ())
57-
5855 // first, is there even a key?
5956 k := pmes .GetKey ()
6057 if len (k ) == 0 {
6158 return nil , errors .New ("handleGetValue but no key was provided" )
62- // TODO: send back an error response? could be bad, but the other node's hanging.
6359 }
6460
61+ // setup response
62+ resp := pb .NewMessage (pmes .GetType (), pmes .GetKey (), pmes .GetClusterLevel ())
63+
6564 rec , err := dht .checkLocalDatastore (k )
6665 if err != nil {
6766 return nil , err
@@ -150,6 +149,10 @@ func cleanRecord(rec *recpb.Record) {
150149
151150// Store a value in this peer local storage
152151func (dht * IpfsDHT ) handlePutValue (ctx context.Context , p peer.ID , pmes * pb.Message ) (_ * pb.Message , err error ) {
152+ if len (pmes .GetKey ()) == 0 {
153+ return nil , errors .New ("handleGetValue but no key was provided" )
154+ }
155+
153156 rec := pmes .GetRecord ()
154157 if rec == nil {
155158 logger .Debugw ("got nil record from" , "from" , p )
@@ -253,6 +256,10 @@ func (dht *IpfsDHT) handleFindPeer(ctx context.Context, from peer.ID, pmes *pb.M
253256 resp := pb .NewMessage (pmes .GetType (), nil , pmes .GetClusterLevel ())
254257 var closest []peer.ID
255258
259+ if len (pmes .GetKey ()) == 0 {
260+ return nil , fmt .Errorf ("handleFindPeer with empty key" )
261+ }
262+
256263 // if looking for self... special case where we send it on CloserPeers.
257264 targetPid := peer .ID (pmes .GetKey ())
258265 if targetPid == dht .self {
@@ -300,12 +307,15 @@ func (dht *IpfsDHT) handleFindPeer(ctx context.Context, from peer.ID, pmes *pb.M
300307}
301308
302309func (dht * IpfsDHT ) handleGetProviders (ctx context.Context , p peer.ID , pmes * pb.Message ) (_ * pb.Message , _err error ) {
303- resp := pb .NewMessage (pmes .GetType (), pmes .GetKey (), pmes .GetClusterLevel ())
304310 key := pmes .GetKey ()
305311 if len (key ) > 80 {
306312 return nil , fmt .Errorf ("handleGetProviders key size too large" )
313+ } else if len (key ) == 0 {
314+ return nil , fmt .Errorf ("handleGetProviders key is empty" )
307315 }
308316
317+ resp := pb .NewMessage (pmes .GetType (), pmes .GetKey (), pmes .GetClusterLevel ())
318+
309319 // check if we have this value, to add ourselves as provider.
310320 has , err := dht .datastore .Has (convertToDsKey (key ))
311321 if err != nil && err != ds .ErrNotFound {
@@ -341,7 +351,9 @@ func (dht *IpfsDHT) handleGetProviders(ctx context.Context, p peer.ID, pmes *pb.
341351func (dht * IpfsDHT ) handleAddProvider (ctx context.Context , p peer.ID , pmes * pb.Message ) (_ * pb.Message , _err error ) {
342352 key := pmes .GetKey ()
343353 if len (key ) > 80 {
344- return nil , fmt .Errorf ("handleAddProviders key size too large" )
354+ return nil , fmt .Errorf ("handleAddProvider key size too large" )
355+ } else if len (key ) == 0 {
356+ return nil , fmt .Errorf ("handleAddProvider key is empty" )
345357 }
346358
347359 logger .Debugf ("adding provider" , "from" , p , "key" , key )
0 commit comments