From 391351d406384b164c6e58daaa3f73bc1adb3dc8 Mon Sep 17 00:00:00 2001 From: dirkmc Date: Thu, 16 May 2019 09:41:11 -0600 Subject: [PATCH] fix: error handling for refs/refs local (#997) * fix: error handling for refs/refs local * fix: ensure errors are passed back from stream-to-value * chore: update interface-ipfs-core --- package.json | 2 +- src/files-regular/refs-local-readable-stream.js | 2 ++ src/files-regular/refs-readable-stream.js | 2 ++ src/utils/stream-to-value.js | 10 ++++------ 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index deeef433d..c5f2e5bad 100644 --- a/package.json +++ b/package.json @@ -85,7 +85,7 @@ "dirty-chai": "^2.0.1", "eslint-plugin-react": "^7.11.1", "go-ipfs-dep": "0.4.19", - "interface-ipfs-core": "~0.101.0", + "interface-ipfs-core": "~0.101.1", "ipfsd-ctl": "~0.42.0", "nock": "^10.0.2", "stream-equal": "^1.1.1" diff --git a/src/files-regular/refs-local-readable-stream.js b/src/files-regular/refs-local-readable-stream.js index 0d8bc15bf..09fddde1d 100644 --- a/src/files-regular/refs-local-readable-stream.js +++ b/src/files-regular/refs-local-readable-stream.js @@ -13,6 +13,8 @@ module.exports = (send) => { send({ path: 'refs/local', qs: opts }, (err, stream) => { if (err) { return pt.destroy(err) } + stream.once('error', (err) => pt.destroy(err)) + pump(stream, through.obj(function (r, enc, cb) { cb(null, { ref: r.Ref, err: r.Err }) }), pt) diff --git a/src/files-regular/refs-readable-stream.js b/src/files-regular/refs-readable-stream.js index 4c9ae2d1f..b5cf69c48 100644 --- a/src/files-regular/refs-readable-stream.js +++ b/src/files-regular/refs-readable-stream.js @@ -20,6 +20,8 @@ module.exports = (send) => { send({ path: 'refs', args, qs: opts }, (err, stream) => { if (err) { return pt.destroy(err) } + stream.once('error', (err) => pt.destroy(err)) + pump(stream, through.obj(function (r, enc, cb) { cb(null, { ref: r.Ref, err: r.Err }) }), pt) diff --git a/src/utils/stream-to-value.js b/src/utils/stream-to-value.js index fa7068d46..d28fd6130 100644 --- a/src/utils/stream-to-value.js +++ b/src/utils/stream-to-value.js @@ -7,14 +7,12 @@ const concat = require('concat-stream') Concatenate a stream to a single value. */ function streamToValue (response, callback) { + let data pump( response, - concat((data) => callback(null, data)), - (err) => { - if (err) { - callback(err) - } - }) + concat((d) => { data = d }), + (err) => callback(err, data) + ) } module.exports = streamToValue