bittorrent-dht
Advanced tools
Comparing version 2.6.2 to 2.6.3
@@ -118,3 +118,3 @@ module.exports = DHT | ||
* Peer address data (tracker storage) | ||
* @type {Object} infoHash:string -> array of peers | ||
* @type {Object} infoHash:string -> Object {index:Object, list:Array.<Buffer>} | ||
*/ | ||
@@ -321,15 +321,10 @@ self.peers = {} | ||
var peers = self.peers[infoHash] | ||
if (!peers) { | ||
peers = self.peers[infoHash] = [] | ||
if (!peers) peers = self.peers[infoHash] = { | ||
index: {}, // addr -> true | ||
list: [] // compactAddr | ||
} | ||
var compactPeerInfo = string2compact(addr) | ||
// TODO: make this faster using a set | ||
var exists = peers.some(function (peer) { | ||
return bufferEqual(peer, compactPeerInfo) | ||
}) | ||
if (!exists) { | ||
peers.push(compactPeerInfo) | ||
if (!peers.index[addr]) { | ||
peers.index[addr] = true | ||
peers.list.push(string2compact(addr)) | ||
self._debug('addPeer %s %s', addr, infoHash) | ||
@@ -352,9 +347,8 @@ self.emit('announce', addr, infoHash) | ||
var peers = self.peers[infoHash] | ||
if (peers) { | ||
if (peers && peers.index[addr]) { | ||
peers.index[addr] = null | ||
var compactPeerInfo = string2compact(addr) | ||
// TODO: make this faster using a set | ||
peers.some(function (peer, index) { | ||
peers.list.some(function (peer, index) { | ||
if (bufferEqual(peer, compactPeerInfo)) { | ||
peers.splice(index, 1) | ||
peers.list.splice(index, 1) | ||
self._debug('removePeer %s %s', addr, infoHash) | ||
@@ -893,3 +887,3 @@ return true // abort early | ||
var peers = self.peers[infoHashHex] | ||
var peers = self.peers[infoHashHex] && self.peers[infoHashHex].list | ||
if (peers) { | ||
@@ -896,0 +890,0 @@ // We know of peers for the target info hash. Peers are stored as an array of |
{ | ||
"name": "bittorrent-dht", | ||
"description": "Simple, robust, BitTorrent DHT implementation", | ||
"version": "2.6.2", | ||
"version": "2.6.3", | ||
"author": { | ||
@@ -6,0 +6,0 @@ "name": "Feross Aboukhadijeh", |
54262
1440