diff --git a/iguana/dpow/dpow_fsm.c b/iguana/dpow/dpow_fsm.c index 615733269..4129a2d08 100755 --- a/iguana/dpow/dpow_fsm.c +++ b/iguana/dpow/dpow_fsm.c @@ -669,8 +669,11 @@ void dpow_statemachinestart(void *ptr) fprintf(stderr, "[%s] Cant find tx.%s rebroadcasting...\n", dp->dest, bits256_str(str,bp->desttxid)); send_dest = 1; } else fprintf(stderr, "[%s] get raw transaction error\n", dp->dest); - if ( send_dest == 1 ) - dpow_sendrawtransaction(myinfo, bp->destcoin, desttx); + if ( send_src == 1 ) + { + char *tmpstr = dpow_sendrawtransaction(myinfo, bp->destcoin, desttx); + free(tmpstr); + } } // get the confirms for srctxid @@ -701,7 +704,10 @@ void dpow_statemachinestart(void *ptr) send_src = 1; } else fprintf(stderr, "[%s] get raw transaction error\n", dp->symbol); if ( send_src == 1 ) - dpow_sendrawtransaction(myinfo, bp->srccoin, srctx); + { + char *tmpstr = dpow_sendrawtransaction(myinfo, bp->srccoin, srctx); + free(tmpstr); + } } } #endif diff --git a/iguana/dpow/dpow_rpc.c b/iguana/dpow/dpow_rpc.c index 9e6011a1f..57c148f32 100755 --- a/iguana/dpow/dpow_rpc.c +++ b/iguana/dpow/dpow_rpc.c @@ -111,75 +111,55 @@ int32_t Notaries_minsigs = DPOW_MIN_ASSETCHAIN_SIGS; uint16_t Notaries_port = DPOW_SOCKPORT; char *Notaries_seeds[65]; -int32_t komodo_initjson2(char *fstr) +int32_t komodo_initjson(char *fname) { - char *field,*hexstr; cJSON *array,*item,*argjson; uint16_t port; int32_t i,n,num,retval = -1; - static portable_mutex_t notaries_mutex; static int32_t initflag; - if ( initflag == 0 ) + char *fstr,*field,*hexstr; cJSON *argjson,*array,*item; long fsize; uint16_t port; int32_t i,n,num,retval = -1; + if ( (fstr= OS_filestr(&fsize,fname)) != 0 ) { - portable_mutex_init(¬aries_mutex); - initflag = 1; - } - - portable_mutex_lock(¬aries_mutex); - if ( (argjson= cJSON_Parse(fstr)) != 0 ) - { - // memset arrays to 0! - memset(Notaries_seeds,0,sizeof(Notaries_seeds)); - memset(Notaries_elected,0,sizeof(Notaries_elected)); - - if ( (port= juint(argjson,"port")) != 0 ) - Notaries_port = port; - if ( (num= juint(argjson,"BTCminsigs")) > Notaries_BTCminsigs ) - Notaries_BTCminsigs = num; - Notaries_minsigs = juint(argjson,"minsigs"); - if ( (array= jarray(&n,argjson,"seeds")) != 0 && n <= 64 ) + if ( (argjson= cJSON_Parse(fstr)) != 0 ) { - for (i=0; i Notaries_BTCminsigs ) + Notaries_BTCminsigs = num; + Notaries_minsigs = juint(argjson,"minsigs"); + if ( (array= jarray(&n,argjson,"seeds")) != 0 && n <= 64 ) { - Notaries_seeds[i] = clonestr(jstri(array,i)); - //printf("%s ",Notaries_seeds[i]); + for (i=0; iFULLNODE < 0 ) { if ( (retstr= bitcoind_passthru(coin->symbol,coin->chain->serverport,coin->chain->userpass,"getiguanajson","")) != 0 ) { - //printf("NOTARIES retstr.%s\n", retstr); - if ( komodo_initjson2(retstr) < 0 ) - printf("init notaries failed!\n"); + if ( (retjson= cJSON_Parse(retstr)) != 0 ) + { + portable_mutex_lock(¬aries_mutex); + Notaries_minsigs = juint(retjson,"minsigs"); + portable_mutex_unlock(¬aries_mutex); + if ( (array= jarray(&n,retjson,"notaries")) != 0 && n <= 64 ) + { + for (i=0; i 0 ) { for (i=0; idestcoin->symbol : bp->srccoin->symbol,bp->height,DPOW_MODIND(bp,0),j,myind,jprint(item,0),j); + char *txinfo = jprint(item,0); + printf("bestk.%d %llx %s height.%d mod.%d VINI.%d myind.%d MINE.(%s) j.%d\n",bestk,(long long)bestmask,(src_or_dest != 0) ? bp->destcoin->symbol : bp->srccoin->symbol,bp->height,DPOW_MODIND(bp,0),j,myind,txinfo,j); + free(txinfo); cp->siglens[bestk] = (int32_t)strlen(sigstr) >> 1; if ( src_or_dest != 0 ) bp->destsigsmasks[bestk] |= (1LL << myind); diff --git a/iguana/iguana_notary.c b/iguana/iguana_notary.c index d232867f8..0108c46f9 100755 --- a/iguana/iguana_notary.c +++ b/iguana/iguana_notary.c @@ -403,6 +403,7 @@ THREE_STRINGS_AND_DOUBLE(iguana,dpow,symbol,dest,pubkey,freq) printf("src validation error %s %s %s\n",src->symbol,srcaddr,retstr); } free(retstr); + free_json(json); retstr = 0; } else printf("%s %s didnt return anything\n",src->symbol,srcaddr); bitcoin_address(destaddr,destcoin->chain->pubtype,dp->minerkey33,33); @@ -417,6 +418,7 @@ THREE_STRINGS_AND_DOUBLE(iguana,dpow,symbol,dest,pubkey,freq) printf("dest validation error %s %s %s\n",src->symbol,srcaddr,retstr); } free(retstr); + free_json(json); retstr = 0; } else printf("%s %s didnt return anything\n",destcoin->symbol,destaddr); if ( srcvalid <= 0 || destvalid <= 0 ) diff --git a/iguana/iguana_wallet.c b/iguana/iguana_wallet.c index 8e3eb0e28..15dfc9dc9 100755 --- a/iguana/iguana_wallet.c +++ b/iguana/iguana_wallet.c @@ -1405,6 +1405,7 @@ TWOSTRINGS_AND_INT(bitcoinrpc,walletpassphrase,password,permanentfile,timeout) if ( (ismine= jobj(json,"ismine")) != 0 && is_cJSON_True(ismine) != 0 ) destvalid = 1; else destvalid = 0; + free(ismine); free(tmpstr); free(retjson); tmpstr = 0; @@ -1995,4 +1996,3 @@ TWO_INTS(bitcoinrpc,listaccounts,minconf,includewatchonly) } #include "../includes/iguana_apiundefs.h" -