Browse Source

Fix duplicate gets

beta
jl777 8 years ago
parent
commit
3ceaa2820c
  1. 2
      iguana/exchanges/LP_include.h
  2. 8
      iguana/exchanges/LP_scan.c
  3. 6
      iguana/exchanges/LP_socket.c
  4. 2
      iguana/exchanges/LP_transaction.c
  5. 22
      iguana/exchanges/LP_utxo.c

2
iguana/exchanges/LP_include.h

@ -300,7 +300,7 @@ struct LP_address *_LP_address(struct iguana_info *coin,char *coinaddr);
int32_t iguana_signrawtransaction(void *ctx,char *symbol,uint8_t wiftaddr,uint8_t taddr,uint8_t pubtype,uint8_t p2shtype,uint8_t isPoS,int32_t height,struct iguana_msgtx *msgtx,char **signedtxp,bits256 *signedtxidp,struct vin_info *V,int32_t numinputs,char *rawtx,cJSON *vins,cJSON *privkeysjson);
int32_t LP_waitmempool(char *symbol,char *coinaddr,bits256 txid,int32_t duration);
struct LP_transaction *LP_transactionfind(struct iguana_info *coin,bits256 txid);
int32_t LP_transactioninit(struct iguana_info *coin,bits256 txid,int32_t iter);
int32_t LP_transactioninit(struct iguana_info *coin,bits256 txid,int32_t iter,cJSON *txobj);
int32_t LP_mempoolscan(char *symbol,bits256 searchtxid);
int32_t LP_txheight(struct iguana_info *coin,bits256 txid);
int32_t LP_address_utxoadd(struct iguana_info *coin,char *coinaddr,bits256 txid,int32_t vout,uint64_t value,int32_t height,int32_t spendheight);

8
iguana/exchanges/LP_scan.c

@ -42,7 +42,7 @@ int32_t LP_blockinit(struct iguana_info *coin,int32_t height)
if ( iter == 1 )
for (j=0; j<10; j++)
{
if (LP_transactioninit(coin,txid,iter) == 0 )
if (LP_transactioninit(coin,txid,iter,0) == 0 )
break;
printf("transaction ht.%d init error.%d, pause\n",height,j);
sleep(1);
@ -52,7 +52,7 @@ int32_t LP_blockinit(struct iguana_info *coin,int32_t height)
{
for (j=0; j<10; j++)
{
if (LP_transactioninit(coin,txid,iter) == 0 )
if (LP_transactioninit(coin,txid,iter,0) == 0 )
break;
printf("transaction ht.%d init error.%d, pause\n",height,j);
sleep(1);
@ -435,8 +435,8 @@ int32_t LP_mempoolscan(char *symbol,bits256 searchtxid)
txid = jbits256i(array,i);
if ( (tx= LP_transactionfind(coin,txid)) == 0 )
{
LP_transactioninit(coin,txid,0);
LP_transactioninit(coin,txid,1);
LP_transactioninit(coin,txid,0,0);
LP_transactioninit(coin,txid,1,0);
}
if ( bits256_cmp(txid,searchtxid) == 0 )
{

6
iguana/exchanges/LP_socket.c

@ -306,7 +306,7 @@ struct electrum_info *electrum_server(char *symbol,struct electrum_info *ep)
int32_t electrum_process_array(struct iguana_info *coin,char *coinaddr,cJSON *array)
{
int32_t i,v,n,flag = 0; char str[65]; uint64_t value; bits256 txid; cJSON *item; struct LP_transaction *tx;
int32_t i,v,n,flag = 0; char str[65]; uint64_t value; bits256 txid; cJSON *item,*txobj; struct LP_transaction *tx;
if ( array != 0 && coin != 0 && (n= cJSON_GetArraySize(array)) > 0 )
{
for (i=0; i<n; i++)
@ -315,8 +315,8 @@ int32_t electrum_process_array(struct iguana_info *coin,char *coinaddr,cJSON *ar
txid = jbits256(item,"tx_hash");
if ( (tx= LP_transactionfind(coin,txid)) == 0 )
{
LP_transactioninit(coin,txid,0);
LP_transactioninit(coin,txid,1);
txobj = LP_transactioninit(coin,txid,0,0);
LP_transactioninit(coin,txid,1,txobj);
tx = LP_transactionfind(coin,txid);
}
if ( tx != 0 )

2
iguana/exchanges/LP_transaction.c

@ -799,7 +799,6 @@ int32_t LP_swap_getcoinaddr(char *symbol,char *coinaddr,bits256 txid,int32_t vou
{
cJSON *retjson;
coinaddr[0] = 0;
printf("LP_swap_getcoinaddr\n");
if ( (retjson= LP_gettx(symbol,txid)) != 0 )
{
LP_txdestaddr(coinaddr,txid,vout,retjson);
@ -811,7 +810,6 @@ int32_t LP_swap_getcoinaddr(char *symbol,char *coinaddr,bits256 txid,int32_t vou
int32_t basilisk_swap_getsigscript(char *symbol,uint8_t *script,int32_t maxlen,bits256 txid,int32_t vini)
{
cJSON *retjson,*vins,*item,*skey; int32_t n,scriptlen = 0; char *hexstr;
printf("basilisk_swap_getsigscript\n");
if ( (retjson= LP_gettx(symbol,txid)) != 0 )
{
if ( (vins= jarray(&n,retjson,"vin")) != 0 && vini < n )

22
iguana/exchanges/LP_utxo.c

@ -407,12 +407,11 @@ uint64_t LP_txinterestvalue(uint64_t *interestp,char *destaddr,struct iguana_inf
return(value);
}
int32_t LP_transactioninit(struct iguana_info *coin,bits256 txid,int32_t iter)
int32_t LP_transactioninit(struct iguana_info *coin,bits256 txid,int32_t iter,cJSON *txobj)
{
struct LP_transaction *tx; int32_t i,height,numvouts,numvins,spentvout; cJSON *txobj,*vins,*vouts,*vout,*vin; bits256 spenttxid; char str[65];
if ( (txobj= LP_gettx(coin->symbol,txid)) != 0 )
struct LP_transaction *tx; int32_t i,height,numvouts,numvins,spentvout; cJSON *vins,*vouts,*vout,*vin; bits256 spenttxid; char str[65];
if ( txobj != 0 || (txobj= LP_gettx(coin->symbol,txid)) != 0 )
{
printf("LP_transactioninit.(%s)\n",jprint(txobj,0));
if ( coin->electrum == 0 )
height = LP_txheight(coin,txid);
else height = -1;
@ -456,10 +455,13 @@ int32_t LP_transactioninit(struct iguana_info *coin,bits256 txid,int32_t iter)
printf("spending same tx's %p vout ht.%d %s.[%d] s%d\n",tx,height,bits256_str(str,txid),tx!=0?tx->numvouts:0,spentvout);
}
}
free_json(txobj);
return(0);
if ( iter == 1 )
{
free_json(txobj);
return(0);
} else return(txobj);
} //else printf("LP_transactioninit error for %s %s\n",coin->symbol,bits256_str(str,txid));
return(-1);
return(0);
}
int32_t LP_txheight(struct iguana_info *coin,bits256 txid)
@ -532,7 +534,7 @@ int64_t basilisk_txvalue(char *symbol,bits256 txid,int32_t vout)
uint64_t LP_txvalue(char *coinaddr,char *symbol,bits256 txid,int32_t vout)
{
struct LP_transaction *tx; cJSON *txobj; uint64_t value; struct iguana_info *coin; char str[65],str2[65],_coinaddr[65];
struct LP_transaction *tx; cJSON *txobj=0; uint64_t value; struct iguana_info *coin; char str[65],str2[65],_coinaddr[65];
if ( bits256_nonz(txid) == 0 )
return(0);
if ( (coin= LP_coinfind(symbol)) == 0 || coin->inactive != 0 )
@ -541,8 +543,8 @@ uint64_t LP_txvalue(char *coinaddr,char *symbol,bits256 txid,int32_t vout)
coinaddr[0] = 0;
if ( (tx= LP_transactionfind(coin,txid)) == 0 )
{
LP_transactioninit(coin,txid,0);
LP_transactioninit(coin,txid,1);
txobj = LP_transactioninit(coin,txid,0,0);
LP_transactioninit(coin,txid,1,txobj);
tx = LP_transactionfind(coin,txid);
}
if ( tx != 0 )

Loading…
Cancel
Save