diff --git a/iguana/exchanges/LP_commands.c b/iguana/exchanges/LP_commands.c index 30424456a..14e1f6cbc 100644 --- a/iguana/exchanges/LP_commands.c +++ b/iguana/exchanges/LP_commands.c @@ -129,6 +129,7 @@ dividends(coin, height, )\n\ base = jstr(argjson,"base"); rel = jstr(argjson,"rel"); + coin = jstr(argjson,"coin"); if ( G.USERPASS[0] != 0 && strcmp(remoteaddr,"127.0.0.1") == 0 && port != 0 ) { if ( G.USERPASS_COUNTER == 0 ) @@ -345,6 +346,20 @@ dividends(coin, height, )\n\ retstr = LP_postedutxos(argjson); else if ( strcmp(method,"getprices") == 0 ) return(LP_prices()); + else if ( strcmp(method,"uitem") == 0 ) + { + bits256 txid; int32_t vout,height; uint64_t value; char *coinaddr; + txid = jbits256(argjson,"txid"); + vout = jint(argjson,"vout"); + height = jint(argjson,"ht"); + value = j64bits(argjson,"value"); + coinaddr = jstr(argjson,"coinaddr"); + if ( coin != 0 && coinaddr != 0 ) + { + char str[65]; printf("uitem %s %s %s/v%d %.8f ht.%d\n",coin,coinaddr,bits256_str(str,txid),vout,dstr(value),height); + LP_address_utxoadd(LP_coinfind(coin),coinaddr,txid,vout,value,height,-1); + } + } else if ( strcmp(method,"orderbook") == 0 ) return(LP_orderbook(base,rel,jint(argjson,"duration"))); else if ( strcmp(method,"listunspent") == 0 ) diff --git a/iguana/exchanges/LP_nativeDEX.c b/iguana/exchanges/LP_nativeDEX.c index f20f0165f..74fb5f1f1 100644 --- a/iguana/exchanges/LP_nativeDEX.c +++ b/iguana/exchanges/LP_nativeDEX.c @@ -311,7 +311,7 @@ void command_rpcloop(void *myipaddr) int32_t LP_mainloop_iter(void *ctx,char *myipaddr,struct LP_peerinfo *mypeer,int32_t pubsock,char *pushaddr,uint16_t myport) { static uint32_t counter,numpeers; - struct iguana_info *coin,*ctmp; char *retstr,*origipaddr; struct LP_peerinfo *peer,*tmp; uint32_t now; int32_t nonz = 0; + struct iguana_info *coin,*ctmp; char *retstr,*retstr2,*origipaddr; struct LP_peerinfo *peer,*tmp; uint32_t now; int32_t nonz = 0; now = (uint32_t)time(NULL); if ( (origipaddr= myipaddr) == 0 ) origipaddr = "127.0.0.1"; @@ -408,10 +408,13 @@ int32_t LP_mainloop_iter(void *ctx,char *myipaddr,struct LP_peerinfo *mypeer,int } if ( j == m ) { + //5.9.253.202 missing {"tx_hash":"3ff8700d545186b1dcb29f50ccb2d1a48b9b5a36dfae59254a96a7057ca55a3f","tx_pos":1,"height":8242,"value":"1000000000"} printf("%s missing %s\n",peer->ipaddr,jprint(item,0)); + if ( (retstr2= issue_LP_uitem(peer->ipaddr,peer->port,coin->symbol,coin->smartaddr,txid,v,jint(item,"height"),j64bits(item,"value"))) != 0 ) + free(retstr2); + post++; } } - post++; } free_json(array2); } @@ -422,8 +425,8 @@ int32_t LP_mainloop_iter(void *ctx,char *myipaddr,struct LP_peerinfo *mypeer,int } free_json(array); } - if ( post > 0 ) - LP_postutxos(coin->symbol,coin->smartaddr); + //if ( post > 0 ) + // LP_postutxos(coin->symbol,coin->smartaddr); } if ( coin->electrum != 0 ) continue; diff --git a/iguana/exchanges/LP_rpc.c b/iguana/exchanges/LP_rpc.c index 9b19e18d9..2d11e0ef5 100644 --- a/iguana/exchanges/LP_rpc.c +++ b/iguana/exchanges/LP_rpc.c @@ -57,6 +57,15 @@ char *issue_LP_getpeers(char *destip,uint16_t destport,char *ipaddr,uint16_t por return(retstr); } +char *issue_LP_uitem(char *destip,uint16_t destport,char *symbol,char *coinaddr,bits256 txid,int32_t vout,int32_t height,uint64_t value) +{ + char url[512],*retstr,str[65]; + if ( (retstr= LP_isitme(destip,destport)) != 0 ) + return(retstr); + sprintf(url,"http://%s:%u/api/stats/uitem?coin=%s&coinaddr=%s&txid=%s&vout=%d&ht=%d&value=%llu",destip,destport,symbol,coinaddr,bits256_str(str,txid),vout,height,(long long)value); + return(LP_issue_curl("uitem",destip,destport,url)); +} + char *issue_LP_notify(char *destip,uint16_t destport,char *ipaddr,uint16_t port,int32_t numpeers,uint32_t sessionid,char *rmd160str,bits256 pub) { char url[512],*retstr,str[65]; diff --git a/iguana/exchanges/LP_utxo.c b/iguana/exchanges/LP_utxo.c index ea9ecccb9..473b62ae1 100644 --- a/iguana/exchanges/LP_utxo.c +++ b/iguana/exchanges/LP_utxo.c @@ -175,6 +175,8 @@ int32_t LP_address_utxoadd(struct iguana_info *coin,char *coinaddr,bits256 txid, { struct LP_address *ap; struct LP_address_utxo *up,*tmp; int32_t flag,retval = 0; //printf("%s add addr.%s ht.%d\n",coin->symbol,coinaddr,height); + if ( coin == 0 ) + return(0); if ( spendheight > 0 ) // dont autocreate entries for spends we dont care about ap = LP_addressfind(coin,coinaddr); else ap = LP_address(coin,coinaddr);