@@ -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
96101Swarm . 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