remove traverse arg.

This commit is contained in:
Christopher Jeffrey 2014-12-08 13:36:54 -08:00
parent c4f204dfa8
commit eeec6573ae
2 changed files with 16 additions and 26 deletions

View File

@ -380,13 +380,11 @@ Bitcoin.prototype.getBlockHeight = function(height, callback) {
Bitcoin.prototype.getTransaction =
Bitcoin.prototype.getTx = function(txid, blockhash, callback) {
var traverse = true;
if (typeof txid === 'object' && txid) {
var options = txid;
callback = blockhash;
txid = options.txid || options.tx || options.txhash || options.id || options.hash;
blockhash = options.blockhash || options.block;
traverse = options.traverse !== false;
}
if (typeof blockhash === 'function') {
@ -405,13 +403,13 @@ Bitcoin.prototype.getTx = function(txid, blockhash, callback) {
}
}
return bitcoindjs.getTransaction(txid, blockhash, traverse, function(err, tx) {
return bitcoindjs.getTransaction(txid, blockhash, function(err, tx) {
if (err) return callback(err);
return callback(null, bitcoin.tx(tx));
});
if (blockhash && typeof blockhash === 'string') {
return bitcoindjs.getTransaction(txid, blockhash, traverse, function(err, tx) {
return bitcoindjs.getTransaction(txid, blockhash, function(err, tx) {
if (err) return callback(err);
if (tx.blockhash) {
bitcoin.db.set('tx-block/' + txid,
@ -422,8 +420,7 @@ Bitcoin.prototype.getTx = function(txid, blockhash, callback) {
}
return bitcoin.db.get('tx-block/' + txid, function(err, block) {
// Will traverse blockchain if no block - slow:
return bitcoinjs.getTransaction(txid, block ? block.hash : '', traverse, function(err, tx) {
return bitcoinjs.getTransaction(txid, block ? block.hash : '', function(err, tx) {
if (err) return callback(err);
if (!block && tx.blockhash) {
bitcoin.db.set('tx-block/' + txid,

View File

@ -403,7 +403,7 @@ static int64_t
SatoshiFromAmount(const CAmount& amount);
static int
get_tx(uint256 txid, uint256& blockhash, const bool traverse, CTransaction& ctx);
get_tx(uint256 txid, uint256& blockhash, CTransaction& ctx);
extern "C" void
init(Handle<Object>);
@ -460,7 +460,6 @@ struct async_tx_data {
std::string err_msg;
std::string txid;
std::string blockhash;
bool traverse;
CTransaction ctx;
Persistent<Function> callback;
};
@ -1117,23 +1116,14 @@ NAN_METHOD(GetTransaction) {
if (args.Length() < 3
|| !args[0]->IsString()
|| !args[1]->IsString()
|| (!args[2]->IsFunction() && !(args[2]->IsBoolean() && args[3]->IsFunction()))) {
|| !args[2]->IsFunction()) {
return NanThrowError(
"Usage: bitcoindjs.getTransaction(txid, [blockhash], [traverse], callback)");
"Usage: bitcoindjs.getTransaction(txid, [blockhash], callback)");
}
String::Utf8Value txid_(args[0]->ToString());
String::Utf8Value blockhash_(args[1]->ToString());
bool traverse = true;
Local<Function> callback;
if (args[2]->IsBoolean()) {
traverse = args[2]->ToBoolean()->IsTrue();
callback = Local<Function>::Cast(args[3]);
} else {
callback = Local<Function>::Cast(args[2]);
}
Local<Function> callback = Local<Function>::Cast(args[2]);
std::string txid = std::string(*txid_);
std::string blockhash = std::string(*blockhash_);
@ -1146,7 +1136,6 @@ NAN_METHOD(GetTransaction) {
data->err_msg = std::string("");
data->txid = txid;
data->blockhash = blockhash;
data->traverse = traverse;
data->callback = Persistent<Function>::New(callback);
uv_work_t *req = new uv_work_t();
@ -1169,8 +1158,12 @@ async_get_tx(uv_work_t *req) {
uint256 blockhash(data->blockhash);
CTransaction ctx;
//if (get_tx(hash, blockhash, data->traverse, ctx)) {
if (get_tx(hash, blockhash, true, ctx)) {
if (pwalletMain->mapWallet.count(hash)) {
const CWalletTx& wtx = pwalletMain->mapWallet[hash];
blockhash.SetHex(wtx.hashBlock.GetHex());
}
if (get_tx(hash, blockhash, ctx)) {
data->ctx = ctx;
data->blockhash = blockhash.GetHex();
} else {
@ -5846,10 +5839,10 @@ cblock_to_jsblock(const CBlock& cblock, CBlockIndex* cblock_index, Local<Object>
}
static int
get_tx(uint256 txid, uint256& blockhash, const bool traverse, CTransaction& ctx) {
get_tx(uint256 txid, uint256& blockhash, CTransaction& ctx) {
if (GetTransaction(txid, ctx, blockhash, true)) {
return 1;
} else if (traverse && blockhash != 0) {
} else if (blockhash != 0) {
CBlock block;
CBlockIndex* pblockindex = mapBlockIndex[blockhash];
if (ReadBlockFromDisk(block, pblockindex)) {
@ -5904,7 +5897,7 @@ ctx_to_jstx(const CTransaction& ctx, uint256 blockhash, Local<Object> jstx) {
Local<Object> jsprev = NanNew<Object>();
CTransaction prev_tx;
//if (get_tx(txin.prevout.hash, blockhash, true, prev_tx)) {
//if (get_tx(txin.prevout.hash, blockhash, prev_tx)) {
if (GetTransaction(txin.prevout.hash, prev_tx, blockhash, true)) {
CTxDestination from;
CTxOut prev_out = prev_tx.vout[txin.prevout.n];