Skip to content

Commit 0d97bb0

Browse files
committed
Add discovery drain event - Fix #93
1 parent dab99e0 commit 0d97bb0

3 files changed

Lines changed: 15 additions & 11 deletions

File tree

zeronet-zite/lib/file/stream.js

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ module.exports = function FileStream(data) {
1919

2020
let dlpath = data.path + "@" + data.site
2121
let othersize = 0
22-
//let fullchunk = []
2322

2423
log("init", dlpath, info)
2524

@@ -35,21 +34,18 @@ module.exports = function FileStream(data) {
3534
let chunks = []
3635

3736
function finishLoop(err) {
38-
if (chunks.length && err) sendErr = err
39-
if (chunks.length) return cb(null, chunks)
40-
return cb(err)
37+
return cb(err, chunks)
4138
}
4239

4340
function loop() {
44-
if (cur >= info.size) return finishLoop(!log("finished", dlpath, cur))
41+
if (cur >= info.size) return finishLoop(true, log("finished", dlpath, cur))
4542
let args = {
4643
site: data.site,
4744
location: cur,
4845
inner_path: data.path,
4946
}
5047
if (info.size) args.file_size = info.size
5148
peer.cmd("getFile", args, function (err, res) {
52-
//console.log("peere", peer.multiaddr, err)
5349
if (err) {
5450
peer.score -= 20
5551
return finishLoop() //goto: next
@@ -58,15 +54,13 @@ module.exports = function FileStream(data) {
5854
if (!info.size) return finishLoop()
5955
othersize++
6056
if (othersize == 2) {
61-
//require("fs").writeFileSync("/tmp/site-failed-download",Buffer.concat(fullchunk))
6257
return finishLoop(new Error("Other size"))
6358
}
6459
return finishLoop()
6560
}
6661
if (!info.size) info.size = res.size
6762
cur += res.body.length
6863
log("downloaded", dlpath, cur, info.size)
69-
//fullchunk.push(res.body)
7064
chunks.push(res.body)
7165
return loop()
7266
})

zeronet-zite/lib/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ module.exports = function Zite(config, node) { //describes a single zite
9696
i.version = i.authority.version
9797
node.logger("node")("Downloaded %s", i.path)
9898
}),
99-
tree.storage.writeStream(tree.zite.address, 0, i.path)
99+
tree.storage.writeStream(tree.zite.address, 0, i.path.replace(/^\//, ""))
100100
)
101101
})
102102
}, err => err ? console.error(err) : null)

zeronet-zite/lib/pool/stream.js

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,17 @@ module.exports = function PeerStream(zite) {
2424
function PeerList() { //gets peers
2525
const getter = new Getters.MetaGetter([new Getters.OnlineGetter(zite.pool), new Getters.OfflineGetter(zite.pool)])
2626
const dgetter = new Getters.MetaGetter([new Getters.DiscoveryCandidateGetter(zite.pool.main, zite.address)])
27+
let last0 = false
28+
let failedDiscovery = 0
2729
return function (end, cb) {
2830
if (end) return cb(end)
2931
log("peer:list:out read")
3032

33+
if (!last0) failedDiscovery = 0
34+
last0 = false
35+
3136
function getLoop() {
37+
if (failedDiscovery >= 3) return cb(new Error("PeerList drained"))
3238
if (getter.peers) {
3339
if (getter.peers <= 5) zite.discovery.discover() //low peers
3440
const peer_ = getter.getSync()
@@ -46,12 +52,16 @@ module.exports = function PeerStream(zite) {
4652
log("peer:list:out discovered a peer")
4753
return cb(null, peer)
4854
} else {
49-
log("peer:list:out discovery method fail")
55+
last0 = true
56+
failedDiscovery += 0.1
57+
log("peer:list:out discovery method fail (f = %s)", failedDiscovery)
5058
return getLoop()
5159
}
5260
})
5361
} else {
54-
log("peer:list:out drained. discover")
62+
log("peer:list:out drained. discover (f = %s)", failedDiscovery)
63+
last0 = true
64+
failedDiscovery += 1
5565
zite.discovery.discoverCB(() => {
5666
process.nextTick(getLoop)
5767
})

0 commit comments

Comments
 (0)