diff --git a/lib/services/bitcoind.js b/lib/services/bitcoind.js index 788066bb..c459fd2d 100644 --- a/lib/services/bitcoind.js +++ b/lib/services/bitcoind.js @@ -1681,10 +1681,13 @@ Bitcoin.prototype.getBlockHashesByTimestamp = function(high, low, callback) { * @param {String|Number} block - A block hash or block height * @param {Function} callback */ -Bitcoin.prototype.getBlockHeader = function(block, callback) { +Bitcoin.prototype.getBlockHeader = function(blockArg, callback) { var self = this; - function queryHeader(blockhash) { + function queryHeader(err, blockhash) { + if (err) { + return callback(err); + } self._tryAll(function(done) { self.client.getBlockHeader(blockhash, function(err, response) { if (err) { @@ -1711,23 +1714,7 @@ Bitcoin.prototype.getBlockHeader = function(block, callback) { }, callback); } - if (_.isNumber(block)) { - self._tryAll(function(done) { - self.client.getBlockHash(block, function(err, response) { - if (err) { - return callback(self._wrapRPCError(err)); - } - done(null, response.result); - }); - }, function(err, blockhash) { - if (err) { - return callback(err); - } - queryHeader(blockhash); - }); - } else { - queryHeader(block); - } + self._maybeGetBlockHash(blockArg, queryHeader); }; /** diff --git a/test/services/bitcoind.unit.js b/test/services/bitcoind.unit.js index 8dd46391..d6b8f0cf 100644 --- a/test/services/bitcoind.unit.js +++ b/test/services/bitcoind.unit.js @@ -3567,6 +3567,18 @@ describe('Bitcoin Service', function() { describe('#getBlockHeader', function() { var blockhash = '00000000050a6d07f583beba2d803296eb1e9d4980c4a20f206c584e89a4f02b'; + it('will give error from getBlockHash', function() { + var bitcoind = new BitcoinService(baseConfig); + var getBlockHash = sinon.stub().callsArgWith(1, {code: -1, message: 'Test error'}); + bitcoind.nodes.push({ + client: { + getBlockHash: getBlockHash + } + }); + bitcoind.getBlockHeader(10, function(err) { + err.should.be.instanceof(Error); + }); + }); it('it will give rpc error from client getblockheader', function() { var bitcoind = new BitcoinService(baseConfig); var getBlockHeader = sinon.stub().callsArgWith(1, {code: -1, message: 'Test error'}); @@ -3790,6 +3802,20 @@ describe('Bitcoin Service', function() { done(); }); }); + it('will give error from client.getBlock', function(done) { + var bitcoind = new BitcoinService(baseConfig); + var getBlock = sinon.stub().callsArgWith(2, {code: -1, message: 'test'}); + bitcoind.nodes.push({ + client: { + getBlock: getBlock + } + }); + bitcoind.getBlockOverview(blockhash, function(err) { + err.should.be.instanceOf(Error); + err.message.should.equal('test'); + done(); + }); + }); it('will give expected result', function(done) { var bitcoind = new BitcoinService(baseConfig); var blockResult = {