fix(bitswap) check for nil in public interface
Brian Tiger Chow committed
Sep 19, 2014 at 12:34 UTC
6e1c3b36bbcebf8d1478e6fed755afaf9d5b638a
1 file changed
+11
exchange/bitswap/bitswap.go
+11
@@ -1,6 +1,8 @@
1
package bitswap
2
3
import (
4
+ "errors"
5
+
6
context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
7
ds "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/datastore.go"
8
@@ -87,6 +89,9 @@ func (bs *bitswap) Block(parent context.Context, k u.Key) (*blocks.Block, error)
89
// get better guarantees. May need shared sequence numbers.
90
bs.strategy.MessageSent(p, message)
91
92
+ if response == nil {
93
+ return
94
+ }
95
bs.ReceiveMessage(ctx, p, response)
96
}(i)
97
}
@@ -112,6 +117,12 @@ func (bs *bitswap) HasBlock(ctx context.Context, blk blocks.Block) error {
117
func (bs *bitswap) ReceiveMessage(
118
ctx context.Context, p *peer.Peer, incoming bsmsg.BitSwapMessage) (
119
*peer.Peer, bsmsg.BitSwapMessage, error) {
120
+ if p == nil {
121
+ return nil, nil, errors.New("Received nil Peer")
122
+ }
123
+ if incoming == nil {
124
+ return nil, nil, errors.New("Received nil Message")
125
+ }
126
127
bs.strategy.MessageReceived(p, incoming)
128