Skip to content

Commit 5d970f7

Browse files
committed
make bignum an optional dependency
1 parent 0f29a4c commit 5d970f7

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

index.js

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
exports.Client = Client
22
exports.Server = Server
33

4-
var bignum = require('bignum')
4+
// optional compiled dependency. if it doesn't compile, no big deal.
5+
var bignum
6+
try {
7+
bignum = require('bignum')
8+
} catch (e) {}
9+
510
var bncode = require('bncode')
611
var compact2string = require('compact2string')
712
var dgram = require('dgram')
@@ -18,6 +23,7 @@ var url = require('url')
1823
var CONNECTION_ID = Buffer.concat([ toUInt32(0x417), toUInt32(0x27101980) ])
1924
var ACTIONS = { CONNECT: 0, ANNOUNCE: 1 }
2025
var EVENTS = { completed: 1, started: 2, stopped: 3 }
26+
var MAX_UINT = 4294967295
2127

2228
inherits(Client, EventEmitter)
2329

@@ -522,7 +528,16 @@ function toUInt32 (n) {
522528
}
523529

524530
function toUInt64 (n) {
525-
return bignum(n).toBuffer({ size: 8 })
531+
if (typeof bignum === 'function') {
532+
return bignum(n).toBuffer({ size: 8 })
533+
} else {
534+
// optional compiled dependency 'bignum' is not available, so round down to MAX_UINT.
535+
// These values are only used for tracker stats anyway.
536+
if (n > MAX_UINT) {
537+
n = MAX_UINT
538+
}
539+
return Buffer.concat([toUInt32(0), toUInt32(n)])
540+
}
526541
}
527542

528543
function bytewiseEncodeURIComponent (buf) {

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
"url": "https://github.com/feross/bittorrent-tracker/issues"
1212
},
1313
"dependencies": {
14-
"bignum": "^0.6.2",
1514
"bncode": "^0.5.2",
1615
"compact2string": "^1.2.0",
1716
"extend.js": "0.0.1",
@@ -26,6 +25,9 @@
2625
"portfinder": "^0.2.1",
2726
"tape": "2.x"
2827
},
28+
"optionalDependencies": {
29+
"bignum": "^0.6.2"
30+
},
2931
"homepage": "http://webtorrent.io",
3032
"keywords": [
3133
"torrent",

0 commit comments

Comments
 (0)