From 92c613205b9c88ea17d5254e9a9fac27a9854489 Mon Sep 17 00:00:00 2001 From: jl777 Date: Mon, 16 May 2016 21:29:11 -0500 Subject: [PATCH] test --- iguana/SuperNET.c | 11 ++++++++--- iguana/iguana_payments.c | 9 +++++---- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/iguana/SuperNET.c b/iguana/SuperNET.c index 133e05566..45b409993 100755 --- a/iguana/SuperNET.c +++ b/iguana/SuperNET.c @@ -261,6 +261,8 @@ int32_t SuperNET_json2bits(uint8_t *serialized,int32_t maxsize,cJSON *json,bits2 othervalid = -100; else othervalid = _othervalid; tmp = juint(json,"broadcast"); + if ( juint(json,"request") != 0 ) + tmp |= 0x10; if ( tmp > SUPERNET_MAXHOPS ) broadcastflag = SUPERNET_MAXHOPS; else broadcastflag = tmp; @@ -335,7 +337,7 @@ int32_t SuperNET_json2bits(uint8_t *serialized,int32_t maxsize,cJSON *json,bits2 cJSON *SuperNET_bits2json(uint8_t *serialized,int32_t datalen) { char destip[64],method[64],checkstr[5],agent[64],myipaddr[64],str[65],*hexmsg; //uint64_t tag; - uint16_t apinum,checkc; int8_t othervalid; uint32_t destipbits,myipbits,timestamp; + uint16_t apinum,checkc; int8_t othervalid,requestflag; uint32_t destipbits,myipbits,timestamp; bits256 categoryhash,subhash,senderpub; cJSON *json = cJSON_CreateObject(); int32_t len = 0; uint32_t crc; uint8_t broadcastflag,plaintext; len += iguana_rwnum(0,&serialized[len],sizeof(uint32_t),&crc); @@ -357,7 +359,8 @@ cJSON *SuperNET_bits2json(uint8_t *serialized,int32_t datalen) } //char str2[65]; printf("set cat.(%s) sub.(%s)\n",bits256_str(str,categoryhash),bits256_str(str2,subhash)); plaintext = (broadcastflag & 0x80) != 0; - broadcastflag &= 0x3f; + requestflag = (broadcastflag & 0x10) != 0; + broadcastflag &= 0x1f; if ( broadcastflag > SUPERNET_MAXHOPS ) broadcastflag = SUPERNET_MAXHOPS; //printf("<<<<<<<<<<<<<<<< crc.%u ipbits.(%x %x) tag.%llx checkc.%x apinum.%d valid.%d other.%d broadcast.%d plaintext.%d\n",crc,destipbits,myipbits,(long long)tag,checkc,apinum,addr->validpub,othervalid,broadcastflag,plaintext); @@ -385,6 +388,8 @@ cJSON *SuperNET_bits2json(uint8_t *serialized,int32_t datalen) init_hexbytes_noT(checkstr,(void *)&checkc,sizeof(checkc)); jaddstr(json,"check",checkstr); jaddnum(json,"ov",othervalid); + if ( requestflag != 0 ) + jaddnum(json,"request",requestflag); if ( plaintext != 0 ) jaddnum(json,"plaintext",plaintext!=0); if ( broadcastflag != 0 ) @@ -649,7 +654,7 @@ int32_t SuperNET_destination(struct supernet_info *myinfo,uint32_t *destipbitsp, if ( juint(json,"broadcast") > 0 ) destflag |= SUPERNET_FORWARD; } - if ( jobj(json,"request") != 0 || remoteaddr == 0 || remoteaddr[0] == 0 || strcmp(remoteaddr,"127.0.0.1") == 0 ) + if ( juint(json,"request") != 0 || remoteaddr == 0 || remoteaddr[0] == 0 || strcmp(remoteaddr,"127.0.0.1") == 0 ) destflag |= SUPERNET_ISMINE; return(destflag); } diff --git a/iguana/iguana_payments.c b/iguana/iguana_payments.c index 9e79350d9..c1d14df98 100755 --- a/iguana/iguana_payments.c +++ b/iguana/iguana_payments.c @@ -374,7 +374,7 @@ void iguana_unspentslock(struct supernet_info *myinfo,struct iguana_info *coin,c char *iguana_rawtxissue(struct supernet_info *myinfo,uint32_t rawtxtag,char *symbol,cJSON **vinsp,uint32_t locktime,uint64_t satoshis,char *changeaddr,uint64_t txfee,cJSON *addresses,int32_t minconf,char *spendscriptstr) { - struct rawtx_queue *ptr; struct iguana_peer *addr; uint8_t buf[IGUANA_MAXSCRIPTSIZE]; int32_t i,j,n,spendlen,delay = 0; cJSON *hexjson,*reqjson,*valsobj,*txobj = 0; char *hexstr,*rawtx = 0; double expiration; struct iguana_info *coin; + struct rawtx_queue *ptr; struct iguana_peer *addr; uint8_t buf[IGUANA_MAXSCRIPTSIZE]; int32_t i,j,n,spendlen,delay = 0; cJSON *hexjson,*reqjson,*valsobj,*txobj = 0; char *str,*rawtx = 0; double expiration; struct iguana_info *coin; *vinsp = 0; if ( (coin= iguana_coinfind(symbol)) != 0 && (coin->VALIDATENODE != 0 || coin->RELAYNODE != 0) ) { @@ -409,15 +409,16 @@ char *iguana_rawtxissue(struct supernet_info *myinfo,uint32_t rawtxtag,char *sym jaddnum(valsobj,"minconf",minconf); jaddnum(valsobj,"locktime",locktime); jadd(hexjson,"vals",valsobj); - hexstr = jprint(hexjson,1); + str = jprint(hexjson,1); + init_hexbytes_noT((char *)buf,(uint8_t *)str,(int32_t)strlen(str)); + free(str); reqjson = cJSON_CreateObject(); jaddstr(reqjson,"agent","iguana"); jaddstr(reqjson,"method","rawtx"); jaddnum(reqjson,"plaintext",1); jaddnum(reqjson,"request",1); jaddnum(reqjson,"timeout",5000); - jaddstr(reqjson,"hexmsg",hexstr); - free(hexstr); + jaddstr(reqjson,"hexmsg",(char *)buf); //{\"agent\":\"iguana\",\"method\":\"rawtx\",\"changeaddr\":\"RRyBxbrAPRUBCUpiJgJZYrkxqrh8x5ta9Z\",\"addresses\":[\"RRyBxbrAPRUBCUpiJgJZYrkxqrh8x5ta9Z\"],\"vals\":{\"coin\":\"BTCD\",\"amount\":\"10000000\"},\"spendscriptstr\":\"76a914b7128d2ee837cf03e30a2c0e3e0181f7b9669bb688ac\"} expiration = OS_milliseconds() + 3333; for (i=0; i