diff --git a/lib/bitcoind.js b/lib/bitcoind.js index 0e67bc29..e0aa55d7 100644 --- a/lib/bitcoind.js +++ b/lib/bitcoind.js @@ -394,29 +394,22 @@ Bitcoin.prototype.getTx = function(txHash, blockHash, callback) { blockHash = ''; } } - return bitcoinjs.getTransaction(txHash, blockHash, function(err, tx) { - if (err) return callback(err); - bitcoin.db.set('tx-block/' + txHash, { hash: tx.blockhash }, utils.NOOP); - return callback(null, bitcoin.tx(tx)); - }); if (blockHash && typeof blockHash === 'string') { return bitcoindjs.getTransaction(txHash, blockHash, function(err, tx) { if (err) return callback(err); - bitcoin.db.set('tx-block/' + txHash, { hash: blockHash }, utils.NOOP); + bitcoin.db.set('tx-block/' + txHash, + { hash: blockHash }, utils.NOOP); return callback(null, bitcoin.tx(tx)); }); } return bitcoin.db.get('tx-block/' + txHash, function(err, block) { - if (block) { - return bitcoinjs.getTransaction(txHash, block.hash, function(err, tx) { - if (err) return callback(err); - return callback(null, bitcoin.tx(tx)); - }); - } - // Will traverse blockchain - slow: - return bitcoinjs.getTransaction(txHash, blockHash, function(err, tx) { + // Will traverse blockchain if no block - slow: + return bitcoinjs.getTransaction(txHash, block ? block.hash : '', function(err, tx) { if (err) return callback(err); - bitcoin.db.set('tx-block/' + txHash, { hash: tx.blockhash }, utils.NOOP); + if (!block) { + bitcoin.db.set('tx-block/' + txHash, + { hash: tx.blockhash }, utils.NOOP); + } return callback(null, bitcoin.tx(tx)); }); });