From 30f00a52cfb7da46dfd27560129777b0f4d98ea2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20Rodr=C3=ADguez?= Date: Mon, 28 Dec 2015 14:53:40 -0500 Subject: [PATCH] Updated torrent.js --- lib/torrent.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/torrent.js b/lib/torrent.js index 71ee9dcb..5a41bf63 100644 --- a/lib/torrent.js +++ b/lib/torrent.js @@ -1055,6 +1055,8 @@ Torrent.prototype._request = function (wire, index, hotswap) { var self = this var numRequests = wire.requests.length + var webPeer = wire.remotePort === 80 || wire.remotePort === 443 + if (self.bitfield.get(index)) return false var maxOutstandingRequests = getPipelineLength(wire, PIPELINE_MAX_DURATION) @@ -1062,10 +1064,10 @@ Torrent.prototype._request = function (wire, index, hotswap) { // var endGame = (wire.requests.length === 0 && self.store.numMissing < 30) var piece = self.pieces[index] - var reservation = piece.reserve() + var reservation = webPeer ? piece.reserveRemaining() : piece.reserve() if (reservation === -1 && hotswap && self._hotswap(wire, index)) { - reservation = piece.reserve() + reservation = webPeer ? piece.reserveRemaining() : piece.reserve() } if (reservation === -1) return false @@ -1076,7 +1078,7 @@ Torrent.prototype._request = function (wire, index, hotswap) { r[i] = wire var chunkOffset = piece.chunkOffset(reservation) - var chunkLength = piece.chunkLength(reservation) + var chunkLength = webPeer ? piece.chunkLengthRemaining(reservation) : piece.chunkLength(reservation) wire.request(index, chunkOffset, chunkLength, function onChunk (err, chunk) { // TODO: what is this for? @@ -1092,7 +1094,7 @@ Torrent.prototype._request = function (wire, index, hotswap) { index, chunkOffset, chunkLength, wire.remoteAddress + ':' + wire.remotePort, err.message ) - piece.cancel(reservation) + webPeer ? piece.cancelRemaining(reservation) : piece.cancel(reservation) onUpdateTick() return }