diff options
author | Feross Aboukhadijeh <feross@feross.org> | 2016-05-30 11:29:42 +0300 |
---|---|---|
committer | Feross Aboukhadijeh <feross@feross.org> | 2016-05-30 11:29:42 +0300 |
commit | a10118a4936d3a04390209a20861caf600d9c0b8 (patch) | |
tree | 1bf6f42ee64c9b0e1c86862422ef7764e91599eb | |
parent | 7fb250f6767796bdc88f9a1d4536dbc6c731e465 (diff) | |
parent | 69227bd5899294d43b9bee0f5a075a8190b1af75 (diff) |
Merge pull request #821 from feross/safe-buffer
Use safe-buffer
-rw-r--r-- | index.js | 7 | ||||
-rw-r--r-- | lib/webconn.js | 23 | ||||
-rw-r--r-- | package.json | 1 | ||||
-rw-r--r-- | test/browser/basic.js | 3 | ||||
-rw-r--r-- | test/client-add.js | 5 | ||||
-rw-r--r-- | test/client-destroy.js | 3 | ||||
-rw-r--r-- | test/client-seed.js | 3 | ||||
-rw-r--r-- | test/node/swarm-basic.js | 5 | ||||
-rw-r--r-- | test/node/swarm-reconnect.js | 5 | ||||
-rw-r--r-- | test/node/swarm-timeout.js | 5 | ||||
-rw-r--r-- | test/swarm.js | 5 |
11 files changed, 42 insertions, 23 deletions
@@ -1,5 +1,6 @@ module.exports = WebTorrent +var Buffer = require('safe-buffer').Buffer var concat = require('simple-concat') var createTorrent = require('create-torrent') var debug = require('debug')('webtorrent') @@ -59,9 +60,9 @@ function WebTorrent (opts) { } else if (Buffer.isBuffer(opts.peerId)) { self.peerId = opts.peerId.toString('hex') } else { - self.peerId = new Buffer(VERSION_PREFIX + hat(48)) + self.peerId = Buffer.from(VERSION_PREFIX + hat(48)) } - self.peerIdBuffer = new Buffer(self.peerId, 'hex') + self.peerIdBuffer = Buffer.from(self.peerId, 'hex') if (typeof opts.nodeId === 'string') { self.nodeId = opts.nodeId @@ -70,7 +71,7 @@ function WebTorrent (opts) { } else { self.nodeId = hat(160) } - self.nodeIdBuffer = new Buffer(self.nodeId, 'hex') + self.nodeIdBuffer = Buffer.from(self.nodeId, 'hex') self.destroyed = false self.listening = false diff --git a/lib/webconn.js b/lib/webconn.js index bff2f89..c52dad6 100644 --- a/lib/webconn.js +++ b/lib/webconn.js @@ -1,6 +1,7 @@ module.exports = WebConn var BitField = require('bitfield') +var Buffer = require('safe-buffer').Buffer var debug = require('debug')('webtorrent:webconn') var get = require('simple-get') var inherits = require('inherits') @@ -101,7 +102,12 @@ WebConn.prototype.httpRequest = function (pieceIndex, offset, length, cb) { // Send requests in parallel and wait for them all to come back var numRequestsSucceeded = 0 var hasError = false - if (requests.length > 1) var ret = new Buffer(length) + + var ret + if (requests.length > 1) { + ret = Buffer.alloc(length) + } + requests.forEach(function (request) { var url = request.url var start = request.start @@ -129,14 +135,17 @@ WebConn.prototype.httpRequest = function (pieceIndex, offset, length, cb) { return cb(new Error('Unexpected HTTP status code ' + res.statusCode)) } debug('Got data of length %d', data.length) + if (requests.length === 1) { // Common case: fetch piece in a single HTTP request, return directly - return cb(null, data) - } - // Rare case: reconstruct multiple HTTP requests across 2+ files into one piece buffer - data.copy(ret, request.fileOffsetInRange) - if (++numRequestsSucceeded === requests.length) { - cb(null, ret) + cb(null, data) + } else { + // Rare case: reconstruct multiple HTTP requests across 2+ files into one + // piece buffer + data.copy(ret, request.fileOffsetInRange) + if (++numRequestsSucceeded === requests.length) { + cb(null, ret) + } } }) }) diff --git a/package.json b/package.json index f8bec4b..b90b5fd 100644 --- a/package.json +++ b/package.json @@ -51,6 +51,7 @@ "render-media": "^2.0.0", "run-parallel": "^1.0.0", "run-parallel-limit": "^1.0.2", + "safe-buffer": "^5.0.0", "simple-concat": "^1.0.0", "simple-get": "^2.0.0", "simple-peer": "^6.0.0", diff --git a/test/browser/basic.js b/test/browser/basic.js index 395fe8e..7bc488e 100644 --- a/test/browser/basic.js +++ b/test/browser/basic.js @@ -1,7 +1,8 @@ +var Buffer = require('safe-buffer').Buffer var test = require('tape') var WebTorrent = require('../../') -var img = new Buffer('R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7', 'base64') +var img = Buffer.from('R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7', 'base64') img.name = 'img.png' function verifyImage (t, err, elem) { diff --git a/test/client-add.js b/test/client-add.js index d30fea0..a3a18cd 100644 --- a/test/client-add.js +++ b/test/client-add.js @@ -1,3 +1,4 @@ +var Buffer = require('safe-buffer').Buffer var extend = require('xtend') var fixtures = require('webtorrent-fixtures') var test = require('tape') @@ -84,7 +85,7 @@ test('client.add: info hash, buffer', function (t) { t.equal(torrent.infoHash, fixtures.leaves.parsedTorrent.infoHash) t.ok(torrent.magnetURI.indexOf('magnet:?xt=urn:btih:' + fixtures.leaves.parsedTorrent.infoHash) === 0) - client.remove(new Buffer(fixtures.leaves.parsedTorrent.infoHash, 'hex'), function (err) { t.error(err, 'torrent destroyed') }) + client.remove(Buffer.from(fixtures.leaves.parsedTorrent.infoHash, 'hex'), function (err) { t.error(err, 'torrent destroyed') }) t.equal(client.torrents.length, 0) client.destroy(function (err) { t.error(err, 'client destroyed') }) @@ -204,5 +205,5 @@ test('client.add: invalid torrent id: short buffer', function (t) { }) client.on('warning', function (err) { t.fail(err) }) - client.add(new Buffer('abc')) + client.add(Buffer.from('abc')) }) diff --git a/test/client-destroy.js b/test/client-destroy.js index deda9f3..956c966 100644 --- a/test/client-destroy.js +++ b/test/client-destroy.js @@ -1,3 +1,4 @@ +var Buffer = require('safe-buffer').Buffer var fixtures = require('webtorrent-fixtures') var test = require('tape') var WebTorrent = require('../') @@ -16,7 +17,7 @@ test('after client.destroy(), throw on client.add() or client.seed()', function client.add('magnet:?xt=urn:btih:' + fixtures.leaves.parsedTorrent.infoHash) }) t.throws(function () { - client.seed(new Buffer('sup')) + client.seed(Buffer.from('sup')) }) }) diff --git a/test/client-seed.js b/test/client-seed.js index 1f50d9b..eede4a3 100644 --- a/test/client-seed.js +++ b/test/client-seed.js @@ -1,5 +1,6 @@ /* global Blob */ +var Buffer = require('safe-buffer').Buffer var fixtures = require('webtorrent-fixtures') var test = require('tape') var WebTorrent = require('../') @@ -34,7 +35,7 @@ test('client.seed: torrent file (Buffer), set name on buffer', function (t) { client.on('error', function (err) { t.fail(err) }) client.on('warning', function (err) { t.fail(err) }) - var buf = new Buffer(fixtures.leaves.content) + var buf = Buffer.from(fixtures.leaves.content) buf.name = 'Leaves of Grass by Walt Whitman.epub' client.seed(buf, function (torrent) { diff --git a/test/node/swarm-basic.js b/test/node/swarm-basic.js index f81c3a4..cdc54ef 100644 --- a/test/node/swarm-basic.js +++ b/test/node/swarm-basic.js @@ -1,11 +1,12 @@ +// var Buffer = require('safe-buffer').Buffer // var hat = require('hat') // var Swarm = require('../../lib/swarm') // var test = require('tape') // var infoHash = 'd2474e86c95b19b8bcfdb92bc12c9d44667cfa36' // var infoHash2 = 'd2474e86c95b19b8bcfdb92bc12c9d44667cfa37' -// var peerId = new Buffer('-WW0001-' + hat(48), 'utf8').toString('hex') -// var peerId2 = new Buffer('-WW0001-' + hat(48), 'utf8').toString('hex') +// var peerId = Buffer.from('-WW0001-' + hat(48), 'utf8').toString('hex') +// var peerId2 = Buffer.from('-WW0001-' + hat(48), 'utf8').toString('hex') // test('two swarms listen on same port', function (t) { // t.plan(2) diff --git a/test/node/swarm-reconnect.js b/test/node/swarm-reconnect.js index abf3cc2..1eaec47 100644 --- a/test/node/swarm-reconnect.js +++ b/test/node/swarm-reconnect.js @@ -1,10 +1,11 @@ +// var Buffer = require('safe-buffer').Buffer // var hat = require('hat') // var Swarm = require('../../lib/swarm') // var test = require('tape') // var infoHash = 'd2474e86c95b19b8bcfdb92bc12c9d44667cfa36' -// var peerId1 = new Buffer('-WW0001-' + hat(48), 'utf8').toString('hex') -// var peerId2 = new Buffer('-WW0001-' + hat(48), 'utf8').toString('hex') +// var peerId1 = Buffer.from('-WW0001-' + hat(48), 'utf8').toString('hex') +// var peerId2 = Buffer.from('-WW0001-' + hat(48), 'utf8').toString('hex') // test('reconnect when peer disconnects', function (t) { // t.plan(10) diff --git a/test/node/swarm-timeout.js b/test/node/swarm-timeout.js index 50c9822..97fcdf2 100644 --- a/test/node/swarm-timeout.js +++ b/test/node/swarm-timeout.js @@ -1,10 +1,11 @@ +// var Buffer = require('safe-buffer').Buffer // var hat = require('hat') // var Swarm = require('../../lib/swarm') // var test = require('tape') // var infoHash = 'd2474e86c95b19b8bcfdb92bc12c9d44667cfa36' -// var peerId1 = new Buffer('-WW0001-' + hat(48), 'utf8').toString('hex') -// var peerId2 = new Buffer('-WW0001-' + hat(48), 'utf8').toString('hex') +// var peerId1 = Buffer.from('-WW0001-' + hat(48), 'utf8').toString('hex') +// var peerId2 = Buffer.from('-WW0001-' + hat(48), 'utf8').toString('hex') // test('timeout if no handshake in 25 seconds', function (t) { // t.plan(4) diff --git a/test/swarm.js b/test/swarm.js index 023455b..6b57951 100644 --- a/test/swarm.js +++ b/test/swarm.js @@ -1,11 +1,12 @@ +// var Buffer = require('safe-buffer').Buffer // var hat = require('hat') // var Swarm = require('../lib/swarm') // var test = require('tape') // var infoHash = 'd2474e86c95b19b8bcfdb92bc12c9d44667cfa36' // var infoHash2 = 'd2474e86c95b19b8bcfdb92bc12c9d44667cfa37' -// var peerId = new Buffer('-WW0001-' + hat(48), 'utf8').toString('hex') -// var peerId2 = new Buffer('-WW0001-' + hat(48), 'utf8').toString('hex') +// var peerId = Buffer.from('-WW0001-' + hat(48), 'utf8').toString('hex') +// var peerId2 = Buffer.from('-WW0001-' + hat(48), 'utf8').toString('hex') // test('create swarm, check invariants', function (t) { // var swarm = new Swarm(infoHash, peerId) |