From 6884032703db06d7144b15130d3bcd71651108bd Mon Sep 17 00:00:00 2001 From: jl777 Date: Mon, 30 Apr 2018 20:02:27 +0300 Subject: [PATCH] BTC 0.16 support for deprecated validate address --- iguana/dpow/dpow_rpc.c | 16 ++++++++++++++-- iguana/iguana777.c | 2 ++ includes/iguana_structs.h | 2 +- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/iguana/dpow/dpow_rpc.c b/iguana/dpow/dpow_rpc.c index a436abc00..088756159 100755 --- a/iguana/dpow/dpow_rpc.c +++ b/iguana/dpow/dpow_rpc.c @@ -375,11 +375,23 @@ cJSON *dpow_getblock(struct supernet_info *myinfo,struct iguana_info *coin,bits2 char *dpow_validateaddress(struct supernet_info *myinfo,struct iguana_info *coin,char *address) { - char buf[128],*retstr=0; + char buf[128],*retstr=0; cJSON *retjson; if ( coin->FULLNODE < 0 ) { sprintf(buf,"\"%s\"",address); - retstr = bitcoind_passthru(coin->symbol,coin->chain->serverport,coin->chain->userpass,"validateaddress",buf); + retstr = bitcoind_passthru(coin->symbol,coin->chain->serverport,coin->chain->userpass,coin->validateaddress,buf); + if ( (retjson= cJSON_Parse(retstr)) != 0 ) + { + if ( strcmp(coin->symbol,"BTC") == 0 && jobj(retjson,"error") == 0 && jobj(retjson,"ismine") == 0 && strcmp(coin->validateaddress,"validateaddress") == 0 ) + { + printf("autochange %s validateaddress -> getaddressinfo\n",coin->symbol); + strcpy(coin->validateaddress,"getaddressinfo"); + free_json(retjson); + free(retjson); + return(bitcoind_passthru(coin->symbol,coin->chain->serverport,coin->chain->userpass,coin->validateaddress,buf)); + } + free_json(retjson); + } usleep(10000); } else if ( coin->FULLNODE > 0 || coin->VALIDATENODE > 0 ) diff --git a/iguana/iguana777.c b/iguana/iguana777.c index 7cefce98d..69f6f8890 100755 --- a/iguana/iguana777.c +++ b/iguana/iguana777.c @@ -49,6 +49,8 @@ struct iguana_info *iguana_coinadd(char *symbol,char *name,cJSON *argjson,int32_ myinfo->allcoins_being_added = 1; coin = mycalloc('C',1,sizeof(*coin)); strcpy(coin->getinfostr,"getinfo"); + strcpy(coin->validateaddress,"validateaddress"); + strcpy(coin->estimatefeestr,"estimatefee"); coin->blockspacesize = IGUANA_MAXPACKETSIZE + 8192; coin->blockspace = calloc(1,coin->blockspacesize); if ( virtcoin != 0 || ((privatechain= jstr(argjson,"geckochain")) != 0 && privatechain[0] != 0) ) diff --git a/includes/iguana_structs.h b/includes/iguana_structs.h index afa17e6fa..7f2251dd7 100755 --- a/includes/iguana_structs.h +++ b/includes/iguana_structs.h @@ -528,7 +528,7 @@ struct iguana_info #ifdef DEPRECATED_HHUTXO struct iguana_hhaccount *accountstable; #endif - char lastdispstr[2048],getinfostr[64]; + char lastdispstr[2048],getinfostr[64],validateaddress[64],estimatefeestr[64]; double txidfind_totalmillis,txidfind_num,spendtxid_totalmillis,spendtxid_num; struct iguana_monitorinfo monitoring[256]; int32_t notarychain,didaddresses;