aboutsummaryrefslogtreecommitdiffstats
path: root/swarm/network/stream
diff options
context:
space:
mode:
authorBalint Gabor <balint.g@gmail.com>2018-09-25 23:35:54 +0800
committerJanos Guljas <janos@resenje.org>2018-09-26 17:34:40 +0800
commit3f7acbbeb929bc3a2a3073bae15977ec69761bab (patch)
treea1d371d0a8d043e51dff796ff04d0eb84599fa80 /swarm/network/stream
parentd3441ebb563439bac0837d70591f92e2c6080303 (diff)
downloadgo-tangerine-3f7acbbeb929bc3a2a3073bae15977ec69761bab.tar
go-tangerine-3f7acbbeb929bc3a2a3073bae15977ec69761bab.tar.gz
go-tangerine-3f7acbbeb929bc3a2a3073bae15977ec69761bab.tar.bz2
go-tangerine-3f7acbbeb929bc3a2a3073bae15977ec69761bab.tar.lz
go-tangerine-3f7acbbeb929bc3a2a3073bae15977ec69761bab.tar.xz
go-tangerine-3f7acbbeb929bc3a2a3073bae15977ec69761bab.tar.zst
go-tangerine-3f7acbbeb929bc3a2a3073bae15977ec69761bab.zip
swarm: prevent forever running retrieve request loops
Diffstat (limited to 'swarm/network/stream')
-rw-r--r--swarm/network/stream/delivery.go6
-rw-r--r--swarm/network/stream/stream.go2
2 files changed, 6 insertions, 2 deletions
diff --git a/swarm/network/stream/delivery.go b/swarm/network/stream/delivery.go
index 431136ab1..c2adb1009 100644
--- a/swarm/network/stream/delivery.go
+++ b/swarm/network/stream/delivery.go
@@ -128,6 +128,7 @@ func (s *SwarmChunkServer) GetData(ctx context.Context, key []byte) ([]byte, err
type RetrieveRequestMsg struct {
Addr storage.Address
SkipCheck bool
+ HopCount uint8
}
func (d *Delivery) handleRetrieveRequestMsg(ctx context.Context, sp *Peer, req *RetrieveRequestMsg) error {
@@ -148,7 +149,9 @@ func (d *Delivery) handleRetrieveRequestMsg(ctx context.Context, sp *Peer, req *
var cancel func()
// TODO: do something with this hardcoded timeout, maybe use TTL in the future
- ctx, cancel = context.WithTimeout(context.WithValue(ctx, "peer", sp.ID().String()), network.RequestTimeout)
+ ctx = context.WithValue(ctx, "peer", sp.ID().String())
+ ctx = context.WithValue(ctx, "hopcount", req.HopCount)
+ ctx, cancel = context.WithTimeout(ctx, network.RequestTimeout)
go func() {
select {
@@ -247,6 +250,7 @@ func (d *Delivery) RequestFromPeers(ctx context.Context, req *network.Request) (
err := sp.SendPriority(ctx, &RetrieveRequestMsg{
Addr: req.Addr,
SkipCheck: req.SkipCheck,
+ HopCount: req.HopCount,
}, Top)
if err != nil {
return nil, nil, err
diff --git a/swarm/network/stream/stream.go b/swarm/network/stream/stream.go
index ea7cce8cb..65b8dff5a 100644
--- a/swarm/network/stream/stream.go
+++ b/swarm/network/stream/stream.go
@@ -639,7 +639,7 @@ func (c *clientParams) clientCreated() {
// Spec is the spec of the streamer protocol
var Spec = &protocols.Spec{
Name: "stream",
- Version: 6,
+ Version: 7,
MaxMsgSize: 10 * 1024 * 1024,
Messages: []interface{}{
UnsubscribeMsg{},