@@ -2,6 +2,7 @@ module.exports = Swarm
22
33var debug = require ( 'debug' ) ( 'bittorrent-tracker' )
44var randomIterate = require ( 'random-iterate' )
5+ var common = require ( '../common' )
56
67// Regard this as the default implementation of an interface that you
78// need to support when overriding Server.createSwarm() and Server.getSwarm()
@@ -13,7 +14,8 @@ function Swarm (infoHash, server) {
1314
1415Swarm . prototype . announce = function ( params , cb ) {
1516 var self = this
16- var peer = self . peers [ params . addr || params . peer_id ]
17+ var id = params . type === common . PEER_TYPES . websocket ? params . peer_id : params . addr
18+ var peer = self . peers [ id ]
1719
1820 if ( params . event === 'started' ) {
1921 self . _onAnnounceStarted ( params , peer )
@@ -49,7 +51,8 @@ Swarm.prototype._onAnnounceStarted = function (params, peer) {
4951
5052 if ( params . left === 0 ) this . complete += 1
5153 else this . incomplete += 1
52- peer = this . peers [ params . addr || params . peer_id ] = {
54+ var id = params . type === common . PEER_TYPES . websocket ? params . peer_id : params . addr
55+ peer = this . peers [ id ] = {
5356 complete : params . left === 0 ,
5457 peerId : params . peer_id , // as hex
5558 ip : params . ip , // only http, udp
@@ -66,7 +69,8 @@ Swarm.prototype._onAnnounceStopped = function (params, peer) {
6669
6770 if ( peer . complete ) this . complete -= 1
6871 else this . incomplete -= 1
69- this . peers [ params . addr || params . peer_id ] = null
72+ var id = params . type === common . PEER_TYPES . websocket ? params . peer_id : params . addr
73+ this . peers [ id ] = null
7074}
7175
7276Swarm . prototype . _onAnnounceCompleted = function ( params , peer ) {
0 commit comments