Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/webtorrent/webtorrent.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFeross Aboukhadijeh <feross@feross.org>2016-04-21 09:10:32 +0300
committerFeross Aboukhadijeh <feross@feross.org>2016-04-21 09:10:32 +0300
commit3daee2c66cbf752b9e6e49b99492b8c1914a4a58 (patch)
treefbdd6c10f6a64674268dc77d1b3ccb4a37c44a65 /lib/peer.js
parent7a7c4a8b8c49f5c92b7c20ff439bc8614f7d607e (diff)
BREAKING: Major cleanup
### Added - `client.listening` property to signal whether TCP server is listening for incoming connections. ### Changed - Merged `Swarm` class into `Torrent` object. Properties on `torrent.swarm` (like `torrent.swarm.wires`) now exist on `torrent` (e.g. `torrent.wires`). - `torrent.addPeer` can no longer be called before the `infoHash` event has been emitted. - Remove `torrent.on('listening')` event. Use `client.on('listening')` instead. - Remove support from `TCPPool` for listening on multiple ports. This was not used by WebTorrent and just added complexity. There is now a single `TCPPool` instance for the whole WebTorrent client. - Deprecate: Do not use `client.download()` anymore. Use `client.add()` instead. - Deprecate: Do not use `torrent.swarm` anymore. Use `torrent` instead. ### Fixed - When there is a `torrent.on('error')` listener, don't also emit `client.on('error')`. - Do not return existing torrent object when duplicate torrent is added. Fire an `'error'` event instead. - Memory leak of `Torrent` object caused by `RarityMap` - Memory leak of `Torrent` object caused by `TCPPool` - `client.ratio` and `torrent.ratio` are now calculated as `uploaded / received` instead of `uploaded / downloaded`.
Diffstat (limited to 'lib/peer.js')
-rw-r--r--lib/peer.js34
1 files changed, 11 insertions, 23 deletions
diff --git a/lib/peer.js b/lib/peer.js
index 06786c5..fcd296d 100644
--- a/lib/peer.js
+++ b/lib/peer.js
@@ -60,10 +60,10 @@ exports.createTCPOutgoingPeer = function (addr, swarm) {
/**
* Peer that represents a Web Seed (BEP17 / BEP19).
*/
-exports.createWebSeedPeer = function (url, parsedTorrent, swarm) {
+exports.createWebSeedPeer = function (url, swarm) {
var peer = new Peer(url, 'webSeed')
peer.swarm = swarm
- peer.conn = new WebConn(url, parsedTorrent)
+ peer.conn = new WebConn(url, swarm)
peer.onConnect()
@@ -71,7 +71,7 @@ exports.createWebSeedPeer = function (url, parsedTorrent, swarm) {
}
/**
- * Peer. Represents a peer in the Swarm.
+ * Peer. Represents a peer in the torrent swarm.
*
* @param {string} id "ip:port" string, peer id (for WebRTC peers), or url (for Web Seeds)
* @param {string} type the type of the peer
@@ -161,7 +161,7 @@ Peer.prototype.onHandshake = function (infoHash, peerId) {
return self.destroy(new Error('unexpected handshake info hash for this swarm'))
}
if (peerId === self.swarm.peerId) {
- return self.destroy(new Error('refusing to handshake with self'))
+ return self.destroy(new Error('refusing to connect to ourselves'))
}
debug('Peer %s got handshake %s', self.id, infoHash)
@@ -170,27 +170,12 @@ Peer.prototype.onHandshake = function (infoHash, peerId) {
self.retries = 0
- self.wire.on('download', function (downloaded) {
- if (self.destroyed) return
- self.swarm.downloaded += downloaded
- self.swarm.downloadSpeed(downloaded)
- self.swarm.emit('download', downloaded)
- })
-
- self.wire.on('upload', function (uploaded) {
- if (self.destroyed) return
- self.swarm.uploaded += uploaded
- self.swarm.uploadSpeed(uploaded)
- self.swarm.emit('upload', uploaded)
- })
-
- self.swarm.wires.push(self.wire)
-
var addr = self.addr
if (!addr && self.conn.remoteAddress) {
addr = self.conn.remoteAddress + ':' + self.conn.remotePort
}
- self.swarm.emit('wire', self.wire, addr)
+ self.swarm._onWire(self.wire, addr)
+
// swarm could be destroyed in user's 'wire' event handler
if (!self.swarm || self.swarm.destroyed) return
@@ -199,7 +184,10 @@ Peer.prototype.onHandshake = function (infoHash, peerId) {
Peer.prototype.handshake = function () {
var self = this
- self.wire.handshake(self.swarm.infoHash, self.swarm.peerId, self.swarm.handshakeOpts)
+ var opts = {
+ dht: self.swarm.private ? false : !!self.swarm.client.dht
+ }
+ self.wire.handshake(self.swarm.infoHash, self.swarm.client.peerId, opts)
self.sentHandshake = true
}
@@ -236,8 +224,8 @@ Peer.prototype.destroy = function (err) {
var conn = self.conn
var wire = self.wire
- self.conn = null
self.swarm = null
+ self.conn = null
self.wire = null
if (swarm && wire) {