Browse Source

allow values with errors for error proof purposes

v4
David Mark Clements 5 years ago
committed by Mathias Buus
parent
commit
1aff258965
  1. 4
      index.js
  2. 6
      lib/io.js
  3. 4
      lib/query-stream.js

4
index.js

@ -154,7 +154,9 @@ class DHT extends EventEmitter {
function reply (err, value) {
const closerNodes = nodes.encode(self.bucket.closest(message.target, 20))
if (err) return self._io.error(message, err, closerNodes, peer)
if (err) {
return self._io.error(message, err, closerNodes, peer, value && cmd.outputEncoding.encode(value))
}
self._io.response(message, value && cmd.outputEncoding.encode(value), closerNodes, peer)
}
}

6
lib/io.js

@ -231,15 +231,15 @@ class IO {
this.send(Message.encode(message), peer)
}
error (request, error, closerNodes, peer) {
error (request, error, closerNodes, peer, value) {
const message = {
type: TYPE.RESPONSE,
rid: request.rid,
id: this.id,
closerNodes,
error: error.message
error: error.message,
value: value
}
this.send(Message.encode(message), peer)
}

4
lib/query-stream.js

@ -84,7 +84,9 @@ class QueryStream extends Readable {
}
if (message.error) {
this.emit('warning', new Error(message.error))
const { value } = message
const proof = value && this._decodeOutput(value)
this.emit('warning', new Error(message.error), proof)
this._readMaybe()
return
}

Loading…
Cancel
Save