diff --git a/iguana/exchanges/LP_ordermatch.c b/iguana/exchanges/LP_ordermatch.c index bd498f918..8333b4d32 100644 --- a/iguana/exchanges/LP_ordermatch.c +++ b/iguana/exchanges/LP_ordermatch.c @@ -1498,7 +1498,7 @@ char *LP_autobuy(void *ctx,int32_t fomoflag,char *myipaddr,int32_t mypubsock,cha { uint64_t median,minutxo,maxutxo; maxprice = 0.; // fomo -> price is 1. and needs to be set - LP_address_minmax(&median,&minutxo,&maxutxo,relcoin,relcoin->smartaddr); // limit to largest utxo + LP_address_minmax(0,&median,&minutxo,&maxutxo,relcoin,relcoin->smartaddr); // limit to largest utxo if ( maxutxo > 0 ) { relvolume = dstr(maxutxo) - dstr(desttxfee)*3; diff --git a/iguana/exchanges/LP_signatures.c b/iguana/exchanges/LP_signatures.c index 43ba6f6dc..329172271 100644 --- a/iguana/exchanges/LP_signatures.c +++ b/iguana/exchanges/LP_signatures.c @@ -440,7 +440,7 @@ char *LP_pricepings(void *ctx,char *myipaddr,int32_t pubsock,char *base,char *re jaddstr(reqjson,"pubsecp",pubsecpstr); if ( (kmd= LP_coinfind("KMD")) != 0 && (ap= LP_address(kmd,kmd->smartaddr)) != 0 && ap->instantdex_credits != 0 ) jaddnum(reqjson,"credits",dstr(ap->instantdex_credits)); - if ( (numutxos= LP_address_minmax(&median,&minsize,&maxsize,basecoin,basecoin->smartaddr)) != 0 ) + if ( (numutxos= LP_address_minmax(1,&median,&minsize,&maxsize,basecoin,basecoin->smartaddr)) != 0 ) { //printf("send %s numutxos.%d median %.8f min %.8f max %.8f\n",base,numutxos,dstr(median),dstr(minsize),dstr(maxsize)); jaddstr(reqjson,"utxocoin",base); diff --git a/iguana/exchanges/LP_utxo.c b/iguana/exchanges/LP_utxo.c index bc5efb6c3..e51b4082a 100644 --- a/iguana/exchanges/LP_utxo.c +++ b/iguana/exchanges/LP_utxo.c @@ -283,7 +283,7 @@ struct LP_address *LP_address(struct iguana_info *coin,char *coinaddr) return(ap); } -int32_t LP_address_minmax(uint64_t *medianp,uint64_t *minp,uint64_t *maxp,struct iguana_info *coin,char *coinaddr) +int32_t LP_address_minmax(int32_t iambob,uint64_t *medianp,uint64_t *minp,uint64_t *maxp,struct iguana_info *coin,char *coinaddr) { cJSON *array,*item; bits256 txid,zero; int64_t max,max2,value,*buf; int32_t i,m=0,vout,height,n = 0; *minp = *maxp = *medianp = max = max2 = 0; @@ -314,19 +314,26 @@ int32_t LP_address_minmax(uint64_t *medianp,uint64_t *minp,uint64_t *maxp,struct if ( m > 1 ) { revsort64s(buf,m,sizeof(*buf)); - if ( max == buf[0] && max2 == buf[1] ) + if ( iambob != 0 ) { - for (i=1; i= LP_DEPOSITSATOSHIS(buf[i]) ) + for (i=1; i= LP_DEPOSITSATOSHIS(buf[i]) ) + { + *maxp = buf[i]; + *medianp = buf[m/2]; + break; + } } - } + } else printf("sort error? max %.8f != %.8f\n",dstr(max),dstr(buf[0])); + } + else + { + *maxp = buf[0]; + *medianp = buf[m/2]; } - else printf("sort error? max %.8f != %.8f\n",dstr(max),dstr(buf[0])); } else *minp = *maxp = *medianp = 0; free(buf); }