Skip to content

Commit 5dcc932

Browse files
committed
Refresh cache on changes and handle access to evicted peer
1 parent 1dbc95c commit 5dcc932

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

lib/server/swarm.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,18 @@ Swarm.prototype.announce = function (params, cb) {
2121
// Mark the source peer as recently used in cache
2222
var peer = self.peers.get(id)
2323

24-
if (params.event === 'started') {
24+
// Get the peer back in swarm if missing
25+
if (params.event === 'started' || !peer) {
2526
self._onAnnounceStarted(params, peer)
26-
} else if (params.event === 'stopped') {
27+
}
28+
29+
if (params.event === 'stopped') {
2730
self._onAnnounceStopped(params, peer)
2831
} else if (params.event === 'completed') {
2932
self._onAnnounceCompleted(params, peer)
3033
} else if (params.event === 'update') {
3134
self._onAnnounceUpdate(params, peer)
32-
} else {
35+
} else if (params.event !== 'started') {
3336
cb(new Error('invalid event'))
3437
return
3538
}
@@ -91,6 +94,8 @@ Swarm.prototype._onAnnounceCompleted = function (params, peer) {
9194
this.complete += 1
9295
this.incomplete -= 1
9396
peer.complete = true
97+
var id = params.type === 'ws' ? params.peer_id : params.addr
98+
this.peers.set(id, peer)
9499
}
95100

96101
Swarm.prototype._onAnnounceUpdate = function (params, peer) {
@@ -103,6 +108,8 @@ Swarm.prototype._onAnnounceUpdate = function (params, peer) {
103108
this.complete += 1
104109
this.incomplete -= 1
105110
peer.complete = true
111+
var id = params.type === 'ws' ? params.peer_id : params.addr
112+
this.peers.set(id, peer)
106113
}
107114
}
108115

0 commit comments

Comments
 (0)