@cryptotaxi247 / kubo / commits / fb8eab837

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