Skip to content

Commit 1ca387f

Browse files
astrofeross
authored andcommitted
client IPv6 support [BEP-7]
1 parent 54b8d71 commit 1ca387f

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

client.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -499,6 +499,27 @@ Tracker.prototype._handleResponse = function (requestUrl, data) {
499499
self.client.emit('peer', peer.ip + ':' + peer.port)
500500
})
501501
}
502+
503+
if (Buffer.isBuffer(data.peers6)) {
504+
// tracker returned compact response
505+
var addrs
506+
try {
507+
addrs = compact2string.multi6(data.peers6)
508+
} catch (err) {
509+
return self.client.emit('warning', err)
510+
}
511+
addrs.forEach(function (addr) {
512+
self.client.emit('peer', addr)
513+
})
514+
} else if (Array.isArray(data.peers6)) {
515+
// tracker returned normal response
516+
data.peers.forEach(function (peer) {
517+
var ip = /:/.test(peer.ip) ?
518+
'[' + peer.ip + ']' :
519+
peer.ip
520+
self.client.emit('peer', ip + ':' + peer.port)
521+
})
522+
}
502523
} else if (requestUrl === self._scrapeUrl) {
503524
// NOTE: the unofficial spec says to use the 'files' key but i've seen 'host' in practice
504525
data = data.files || data.host || {}

0 commit comments

Comments
 (0)