fix receive loop error handling
License: MIT Signed-off-by: Jeromy <why@ipfs.io>
Jeromy committed
May 17, 2016 at 15:59 UTC
fb8eab837134c5c15a4fbd6fee79ccab1d382033
2 files changed
+12
-3
exchange/bitswap/message/message.go
+3
@@ -135,7 +135,10 @@ func (m *impl) AddBlock(b blocks.Block) {
135
136
func FromNet(r io.Reader) (BitSwapMessage, error) {
137
pbr := ggio.NewDelimitedReader(r, inet.MessageSizeMax)
138
+ return FromPBReader(pbr)
139
+}
140
141
+func FromPBReader(pbr ggio.Reader) (BitSwapMessage, error) {
142
pb := new(pb.Message)
143
if err := pbr.ReadMsg(pb); err != nil {
144
return nil, err
exchange/bitswap/network/ipfs_impl.go
+9
-3
@@ -1,12 +1,15 @@
1
package network
2
3
import (
4
+ "io"
5
+
6
key "github.com/ipfs/go-ipfs/blocks/key"
7
bsmsg "github.com/ipfs/go-ipfs/exchange/bitswap/message"
8
routing "github.com/ipfs/go-ipfs/routing"
9
host "gx/ipfs/QmVL44QeoQDTYK8RVdpkyja7uYcK3WDNoBNHVLonf9YDtm/go-libp2p/p2p/host"
10
inet "gx/ipfs/QmVL44QeoQDTYK8RVdpkyja7uYcK3WDNoBNHVLonf9YDtm/go-libp2p/p2p/net"
11
ma "gx/ipfs/QmYzDkkgAEmrcNzFCiYo6L1dTX4EAG1gZkbtdbd9trL4vd/go-multiaddr"
12
+ ggio "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/io"
13
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
14
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
15
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
@@ -150,11 +153,14 @@ func (bsnet *impl) handleNewStream(s inet.Stream) {
153
return
154
}
155
156
+ reader := ggio.NewDelimitedReader(s, inet.MessageSizeMax)
157
for {
154
- received, err := bsmsg.FromNet(s)
158
+ received, err := bsmsg.FromPBReader(reader)
159
if err != nil {
156
- go bsnet.receiver.ReceiveError(err)
157
- log.Debugf("bitswap net handleNewStream from %s error: %s", s.Conn().RemotePeer(), err)
160
+ if err != io.EOF {
161
+ go bsnet.receiver.ReceiveError(err)
162
+ log.Debugf("bitswap net handleNewStream from %s error: %s", s.Conn().RemotePeer(), err)
163
+ }
164
return
165
}
166