aboutsummaryrefslogtreecommitdiffstats
path: root/swarm/storage/netstore.go
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/storage/netstore.go
parentd3441ebb563439bac0837d70591f92e2c6080303 (diff)
downloaddexon-3f7acbbeb929bc3a2a3073bae15977ec69761bab.tar
dexon-3f7acbbeb929bc3a2a3073bae15977ec69761bab.tar.gz
dexon-3f7acbbeb929bc3a2a3073bae15977ec69761bab.tar.bz2
dexon-3f7acbbeb929bc3a2a3073bae15977ec69761bab.tar.lz
dexon-3f7acbbeb929bc3a2a3073bae15977ec69761bab.tar.xz
dexon-3f7acbbeb929bc3a2a3073bae15977ec69761bab.tar.zst
dexon-3f7acbbeb929bc3a2a3073bae15977ec69761bab.zip
swarm: prevent forever running retrieve request loops
Diffstat (limited to 'swarm/storage/netstore.go')
-rw-r--r--swarm/storage/netstore.go7
1 files changed, 5 insertions, 2 deletions
diff --git a/swarm/storage/netstore.go b/swarm/storage/netstore.go
index a3a552232..16bc48a9a 100644
--- a/swarm/storage/netstore.go
+++ b/swarm/storage/netstore.go
@@ -34,7 +34,7 @@ type (
)
type NetFetcher interface {
- Request(ctx context.Context)
+ Request(ctx context.Context, hopCount uint8)
Offer(ctx context.Context, source *enode.ID)
}
@@ -263,6 +263,9 @@ func (f *fetcher) Fetch(rctx context.Context) (Chunk, error) {
// If there is a source in the context then it is an offer, otherwise a request
sourceIF := rctx.Value("source")
+
+ hopCount, _ := rctx.Value("hopcount").(uint8)
+
if sourceIF != nil {
var source enode.ID
if err := source.UnmarshalText([]byte(sourceIF.(string))); err != nil {
@@ -270,7 +273,7 @@ func (f *fetcher) Fetch(rctx context.Context) (Chunk, error) {
}
f.netFetcher.Offer(rctx, &source)
} else {
- f.netFetcher.Request(rctx)
+ f.netFetcher.Request(rctx, hopCount)
}
// wait until either the chunk is delivered or the context is done