diff --git a/iguana/exchanges/LP_remember.c b/iguana/exchanges/LP_remember.c index 6292699a2..8f93bbc9b 100644 --- a/iguana/exchanges/LP_remember.c +++ b/iguana/exchanges/LP_remember.c @@ -538,7 +538,7 @@ cJSON *basilisk_remember(int64_t *KMDtotals,int64_t *BTCtotals,uint32_t requesti { struct iguana_info *coin; int32_t ht = -1; uint32_t locktime,blocktime; checktxid = jbits256(sentobj,"txid"); - if ( (coin= LP_coinfind(symbol)) != 0 && (ht= LP_txheight(&locktime,&blocktime,coin,sentobj)) > 0 && ht > 0 ) + if ( (coin= LP_coinfind(symbol)) != 0 && (ht= LP_txheight(&locktime,&blocktime,coin,txid)) > 0 && ht > 0 ) { if ( coin->firstrefht == 0 || ht < coin->firstrefht ) coin->firstrefht = ht; diff --git a/iguana/exchanges/LP_scan.c b/iguana/exchanges/LP_scan.c index 506ed7544..3e230f193 100644 --- a/iguana/exchanges/LP_scan.c +++ b/iguana/exchanges/LP_scan.c @@ -50,24 +50,28 @@ struct LP_transaction *LP_transactionadd(struct iguana_info *coin,bits256 txid,i return(tx); } -int32_t LP_txheight(uint32_t *timestampp,uint32_t *blocktimep,struct iguana_info *coin,cJSON *txobj) +int32_t LP_txheight(uint32_t *timestampp,uint32_t *blocktimep,struct iguana_info *coin,bits256 txid) { - bits256 blockhash; cJSON *blockobj; int32_t height = 0; - *timestampp = juint(txobj,"locktime"); - *blocktimep = juint(txobj,"blocktime"); - blockhash = jbits256(txobj,"blockhash"); - if ( bits256_nonz(blockhash) != 0 && (blockobj= LP_getblock(coin->symbol,blockhash)) != 0 ) + bits256 blockhash; cJSON *blockobj,*txobj; int32_t height = 0; + if ( (txobj= LP_gettx(coin->symbol,txid)) != 0 ) { - height = jint(blockobj,"height"); - //printf("%s LP_txheight.%d\n",coin->symbol,height); - free_json(blockobj); - } else printf("%sLP_txheight error (%s)\n",coin->symbol,jprint(txobj,0)); + *timestampp = juint(txobj,"locktime"); + *blocktimep = juint(txobj,"blocktime"); + blockhash = jbits256(txobj,"blockhash"); + if ( bits256_nonz(blockhash) != 0 && (blockobj= LP_getblock(coin->symbol,blockhash)) != 0 ) + { + height = jint(blockobj,"height"); + //printf("%s LP_txheight.%d\n",coin->symbol,height); + free_json(blockobj); + } else printf("%sLP_txheight error (%s)\n",coin->symbol,jprint(txobj,0)); + free_json(txobj); + } return(height); } int32_t LP_undospends(struct iguana_info *coin,int32_t lastheight) { - int32_t i,ht,num = 0; uint32_t timestamp,blocktime; struct LP_transaction *tx,*tmp; cJSON *txobj; + int32_t i,ht,num = 0; uint32_t timestamp,blocktime; struct LP_transaction *tx,*tmp; HASH_ITER(hh,coin->transactions,tx,tmp) { for (i=0; inumvouts; i++) @@ -76,11 +80,7 @@ int32_t LP_undospends(struct iguana_info *coin,int32_t lastheight) continue; if ( (ht= tx->outpoints[i].spendheight) == 0 ) { - if ( (txobj= LP_gettx(coin->symbol,tx->outpoints[i].spendtxid)) != 0 ) - { - tx->outpoints[i].spendheight = LP_txheight(×tamp,&blocktime,coin,txobj); - free_json(txobj); - } + tx->outpoints[i].spendheight = LP_txheight(×tamp,&blocktime,coin,tx->outpoints[i].spendtxid); } if ( (ht= tx->outpoints[i].spendheight) != 0 && ht > lastheight ) { @@ -130,7 +130,7 @@ int32_t LP_transactioninit(struct iguana_info *coin,bits256 txid) struct LP_transaction *tx; int32_t i,height,numvouts,numvins,spentvout; uint32_t timestamp,blocktime; cJSON *txobj,*vins,*vouts,*vout,*vin; bits256 spenttxid; char str[65]; if ( (txobj=LP_gettx(coin->symbol,txid)) != 0 ) { - height = LP_txheight(×tamp,&blocktime,coin,txobj); + height = LP_txheight(×tamp,&blocktime,coin,txid); if ( timestamp == 0 && height > 0 ) timestamp = blocktime; vins = jarray(&numvins,txobj,"vin");