bittorrent-dht
Advanced tools
Comparing version 6.3.2 to 6.4.0
@@ -130,4 +130,4 @@ module.exports = DHT | ||
} | ||
if (isMutable && typeof opts.sign !== 'function') { | ||
throw new Error('opts.sign function required for mutable put') | ||
if (isMutable && typeof opts.sign !== 'function' && !Buffer.isBuffer(opts.sig)) { | ||
throw new Error('opts.sign function or options.sig signature is required for mutable put') | ||
} | ||
@@ -173,3 +173,4 @@ if (isMutable && opts.salt && opts.salt.length > 64) { | ||
message.a.seq = opts.seq | ||
if (!message.a.sig) message.a.sig = opts.sign(encodeSigData(message.a)) | ||
if (typeof opts.sign === 'function') message.a.sig = opts.sign(encodeSigData(message.a)) | ||
else if (Buffer.isBuffer(opts.sig)) message.a.sig = opts.sig | ||
} | ||
@@ -176,0 +177,0 @@ |
{ | ||
"name": "bittorrent-dht", | ||
"description": "Simple, robust, BitTorrent DHT implementation", | ||
"version": "6.3.2", | ||
"version": "6.4.0", | ||
"author": { | ||
@@ -19,4 +19,4 @@ "name": "Feross Aboukhadijeh", | ||
"k-bucket": "^0.6.0", | ||
"k-rpc": "^3.5.1", | ||
"lru": "^1.2.0" | ||
"k-rpc": "^3.6.0", | ||
"lru": "^2.0.0" | ||
}, | ||
@@ -28,3 +28,3 @@ "devDependencies": { | ||
"run-parallel": "^1.1.4", | ||
"standard": "^5.4.1", | ||
"standard": "^6.0.4", | ||
"tape": "^4.4.0" | ||
@@ -31,0 +31,0 @@ }, |
@@ -73,3 +73,4 @@ # bittorrent-dht [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][downloads-url] | ||
bootstrap: [], // bootstrap servers (default: router.bittorrent.com:6881, router.utorrent.com:6881, dht.transmissionbt.com:6881) | ||
host: false // host of local peer, if specified then announces get added to local table (String, disabled by default) | ||
host: false, // host of local peer, if specified then announces get added to local table (String, disabled by default) | ||
concurrency: 16 // k-rpc option to specify maximum concurrent UDP requests allowed (Number, 16 by default) | ||
} | ||
@@ -167,3 +168,3 @@ ``` | ||
arr.forEach(function (node) { | ||
dht2.add(node) | ||
dht2.addNode(node) | ||
}) | ||
@@ -269,2 +270,13 @@ ``` | ||
If you receive a key/value pair and you want to re-add to the dht it to keep it | ||
alive you can just `put` it again. | ||
``` js | ||
dht.get(key, function (err, res) { | ||
dht.put(res, function () { | ||
// re-added the key/value pair | ||
}) | ||
}) | ||
``` | ||
#### `dht.get(hash, callback)` | ||
@@ -271,0 +283,0 @@ |
@@ -31,2 +31,69 @@ var common = require('./common') | ||
test('delegated put', function (t) { | ||
t.plan(5) | ||
var dht1 = new DHT({ bootstrap: false }) | ||
var dht2 = new DHT({ bootstrap: false }) | ||
var dht3 = new DHT({ bootstrap: false }) | ||
var dht4 = new DHT({ bootstrap: false }) | ||
t.once('end', function () { | ||
dht1.destroy() | ||
dht2.destroy() | ||
dht3.destroy() | ||
dht4.destroy() | ||
}) | ||
common.failOnWarningOrError(t, dht1) | ||
common.failOnWarningOrError(t, dht2) | ||
common.failOnWarningOrError(t, dht3) | ||
common.failOnWarningOrError(t, dht4) | ||
var pending = 4 | ||
dht1.listen(function () { | ||
dht2.addNode({ host: '127.0.0.1', port: dht1.address().port }) | ||
dht2.once('node', ready) | ||
}) | ||
dht2.listen(function () { | ||
dht1.addNode({ host: '127.0.0.1', port: dht2.address().port }) | ||
dht1.once('node', ready) | ||
}) | ||
dht3.listen(function () { | ||
dht4.addNode({ host: '127.0.0.1', port: dht3.address().port }) | ||
dht4.once('node', ready) | ||
}) | ||
dht4.listen(function () { | ||
dht3.addNode({ host: '127.0.0.1', port: dht4.address().port }) | ||
dht3.once('node', ready) | ||
}) | ||
function ready () { | ||
if (--pending !== 0) return | ||
var value = fill(500, 'abc') | ||
var opts = { | ||
v: value | ||
} | ||
dht1.put(opts, function (err, hash) { | ||
t.error(err) | ||
dht2.get(hash, function (err, res) { | ||
t.error(err) | ||
dht3.put(res, function (err) { | ||
t.error(err) | ||
dht4.get(hash, function (err, res) { | ||
t.error(err) | ||
t.equal(res.v.toString('utf8'), opts.v.toString('utf8'), 'got back what we put in') | ||
}) | ||
}) | ||
}) | ||
}) | ||
} | ||
}) | ||
test('multi-party immutable put/get', function (t) { | ||
@@ -33,0 +100,0 @@ t.plan(4) |
@@ -98,2 +98,74 @@ var common = require('./common') | ||
test('delegated put', function (t) { | ||
t.plan(5) | ||
var keypair = ed.createKeyPair(ed.createSeed()) | ||
var dht1 = new DHT({ bootstrap: false, verify: ed.verify }) | ||
var dht2 = new DHT({ bootstrap: false, verify: ed.verify }) | ||
var dht3 = new DHT({ bootstrap: false, verify: ed.verify }) | ||
var dht4 = new DHT({ bootstrap: false, verify: ed.verify }) | ||
t.once('end', function () { | ||
dht1.destroy() | ||
dht2.destroy() | ||
dht3.destroy() | ||
dht4.destroy() | ||
}) | ||
common.failOnWarningOrError(t, dht1) | ||
common.failOnWarningOrError(t, dht2) | ||
common.failOnWarningOrError(t, dht3) | ||
common.failOnWarningOrError(t, dht4) | ||
var pending = 4 | ||
dht1.listen(function () { | ||
dht2.addNode({ host: '127.0.0.1', port: dht1.address().port }) | ||
dht2.once('node', ready) | ||
}) | ||
dht2.listen(function () { | ||
dht1.addNode({ host: '127.0.0.1', port: dht2.address().port }) | ||
dht1.once('node', ready) | ||
}) | ||
dht3.listen(function () { | ||
dht4.addNode({ host: '127.0.0.1', port: dht3.address().port }) | ||
dht4.once('node', ready) | ||
}) | ||
dht4.listen(function () { | ||
dht3.addNode({ host: '127.0.0.1', port: dht4.address().port }) | ||
dht3.once('node', ready) | ||
}) | ||
function ready () { | ||
if (--pending !== 0) return | ||
var value = fill(500, 'abc') | ||
var opts = { | ||
k: keypair.publicKey, | ||
seq: 0, | ||
sign: sign(keypair), | ||
v: value | ||
} | ||
dht1.put(opts, function (err, hash) { | ||
t.error(err) | ||
dht2.get(hash, function (err, res) { | ||
t.error(err) | ||
dht3.put(res, function (err) { | ||
t.error(err) | ||
dht4.get(hash, function (err, res) { | ||
t.error(err) | ||
t.equal(res.v.toString('utf8'), opts.v.toString('utf8'), 'got back what we put in') | ||
}) | ||
}) | ||
}) | ||
}) | ||
} | ||
}) | ||
test('multiparty mutable put/get sequence', function (t) { | ||
@@ -100,0 +172,0 @@ t.plan(12) |
74039
2005
355
+ Addedlru@2.0.1(transitive)
- Removedlru@1.2.1(transitive)
Updatedk-rpc@^3.6.0
Updatedlru@^2.0.0