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) { function reply (err, value) {
const closerNodes = nodes.encode(self.bucket.closest(message.target, 20)) 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) 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) this.send(Message.encode(message), peer)
} }
error (request, error, closerNodes, peer) { error (request, error, closerNodes, peer, value) {
const message = { const message = {
type: TYPE.RESPONSE, type: TYPE.RESPONSE,
rid: request.rid, rid: request.rid,
id: this.id, id: this.id,
closerNodes, closerNodes,
error: error.message error: error.message,
value: value
} }
this.send(Message.encode(message), peer) this.send(Message.encode(message), peer)
} }

4
lib/query-stream.js

@ -84,7 +84,9 @@ class QueryStream extends Readable {
} }
if (message.error) { 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() this._readMaybe()
return return
} }

Loading…
Cancel
Save