From bd19af24ec5d2af1931f9c794d3fd6e7eaa41706 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 29 May 2016 18:32:25 -0500 Subject: [PATCH] test --- basilisk/basilisk.c | 47 ++++++++++++++++++++++---------------- basilisk/basilisk.h | 1 + iguana/SuperNET.c | 2 +- iguana/iguana777.c | 3 +++ iguana/iguana_instantdex.c | 34 ++++++++++++++++++--------- 5 files changed, 55 insertions(+), 32 deletions(-) diff --git a/basilisk/basilisk.c b/basilisk/basilisk.c index 0b8d7bc95..0849905a6 100755 --- a/basilisk/basilisk.c +++ b/basilisk/basilisk.c @@ -276,9 +276,34 @@ char *basilisk_iscomplete(struct basilisk_item *ptr) return(retstr); } +int32_t basilisk_sendcmd(char *ipaddr,char *msgstr) +{ + int32_t i,j,r,r2,k,l; struct iguana_info *coin; struct iguana_peer *addr; + r = rand(), r2 = rand(); + for (k=0; kpeers.active[i]) != 0 && addr->usock >= 0 ) + { + if ( addr->supernet != 0 && (ipaddr == 0 || ipaddr[0] == 0 || strcmp(addr->ipaddr,ipaddr) == 0) ) + { + //printf("send back.%s basilisk_result addr->supernet.%u to (%s).%d\n",retstr,addr->supernet,addr->ipaddr,addr->A.port); + return(iguana_send_supernet(addr,msgstr,0)); + } + } + } + } + return(-1); +} + char *basilisk_block(struct supernet_info *myinfo,struct iguana_info *coin,char *remoteaddr,struct basilisk_item *Lptr,struct basilisk_item *ptr) { - int32_t i,j; char *retstr = 0; struct iguana_peer *addr; cJSON *hexobj,*retjson,*valsobj; + char *retstr = 0; cJSON *hexobj,*retjson,*valsobj; if ( ptr == Lptr ) { if ( (retstr= Lptr->retstr) == 0 ) @@ -314,25 +339,7 @@ char *basilisk_block(struct supernet_info *myinfo,struct iguana_info *coin,char free_json(hexobj); free(retstr); retstr = jprint(retjson,1); - for (j=0; jpeers.active[i]) != 0 && addr->usock >= 0 ) - { - if ( addr->supernet != 0 && strcmp(addr->ipaddr,remoteaddr) == 0 ) - { - //printf("send back.%s basilisk_result addr->supernet.%u to (%s).%d\n",retstr,addr->supernet,addr->ipaddr,addr->A.port); - iguana_send_supernet(addr,retstr,0); - return(retstr); - } - } - if ( 0 && addr->ipbits != 0 ) - printf("i.%d (%s) vs (%s) %s\n",i,addr->ipaddr,remoteaddr,coin->symbol); - } - } + basilisk_sendcmd(remoteaddr,retstr); } return(retstr); } diff --git a/basilisk/basilisk.h b/basilisk/basilisk.h index c6d0a60f1..4581d66fa 100755 --- a/basilisk/basilisk.h +++ b/basilisk/basilisk.h @@ -41,5 +41,6 @@ struct basilisk_info struct basilisk_item *basilisk_issueremote(struct supernet_info *myinfo,char *methodstr,char *symbol,cJSON *vals,int32_t timeoutmillis,int32_t fanout,int32_t minresults,uint32_t basilisktag,void *metricfunc,char *retstr); void basilisks_init(struct supernet_info *myinfo); +int32_t basilisk_sendcmd(char *ipaddr,char *msgstr); #endif diff --git a/iguana/SuperNET.c b/iguana/SuperNET.c index 57f73f5ea..fc44082e8 100755 --- a/iguana/SuperNET.c +++ b/iguana/SuperNET.c @@ -807,7 +807,7 @@ char *SuperNET_p2p(struct iguana_info *coin,struct iguana_peer *addr,int32_t *de //printf("validpub.%d: %x vs %x priv.%llx senderpub.%llx\n",addr->validpub,checkc,othercheckc,(long long)myinfo->privkey.txid,(long long)senderpub.txid); } maxdelay = juint(json,"maxdelay"); - if ( 0 && jstr(json,"method") != 0 && strcmp(jstr(json,"method"),"getpeers") != 0 ) + if ( 1 && jstr(json,"method") != 0 && strcmp(jstr(json,"method"),"getpeers") != 0 ) printf("GOT >>>>>>>> SUPERNET P2P.(%s) from.%s %s valid.%d:%d\n",jprint(json,0),coin->symbol,addr->ipaddr,addr->validpub,addr->othervalid); if ( (myipaddr= jstr(json,"yourip")) != 0 ) SuperNET_checkipaddr(SuperNET_MYINFO(0),coin,addr,myipaddr,ipaddr); diff --git a/iguana/iguana777.c b/iguana/iguana777.c index 8589ce965..f9f9061cf 100755 --- a/iguana/iguana777.c +++ b/iguana/iguana777.c @@ -885,6 +885,9 @@ struct iguana_info *iguana_setcoin(char *symbol,void *launched,int32_t maxpeers, if ( jobj(json,"VALIDATE") != 0 ) coin->VALIDATENODE = juint(json,"VALIDATE"); else coin->VALIDATENODE = 1; +#ifdef __PNACL + coin->VALIDATENODE = coin->RELAYNODE = 0; +#endif if ( jobj(json,"validatedir") != 0 ) safecopy(coin->VALIDATEDIR,jstr(json,"validatedir"),sizeof(coin->VALIDATEDIR)); else strcpy(coin->VALIDATEDIR,GLOBAL_VALIDATEDIR); diff --git a/iguana/iguana_instantdex.c b/iguana/iguana_instantdex.c index c78080286..f44a9b38c 100755 --- a/iguana/iguana_instantdex.c +++ b/iguana/iguana_instantdex.c @@ -389,16 +389,29 @@ bits256 instantdex_rwoffer(int32_t rwflag,int32_t *lenp,uint8_t *serialized,stru char *instantdex_sendcmd(struct supernet_info *myinfo,struct instantdex_offer *offer,cJSON *argjson,char *cmdstr,bits256 desthash,int32_t hops,void *extraser,int32_t extralen,struct iguana_peer *addr,struct bitcoin_swapinfo *swap) { - char *reqstr,*hexstr,*retstr; struct instantdex_msghdr *msg; bits256 orderhash,tmphash; struct iguana_info *coin; int32_t i,j,len,serflag,olen,slen,datalen,max=-1; uint8_t serialized[sizeof(*offer) + sizeof(struct iguana_msghdr) + 4096 + INSTANTDEX_DECKSIZE*33]; uint64_t x,nxt64bits; + cJSON *sendjson; char *reqstr,*hexstr,*retstr,*str; struct instantdex_msghdr *msg; bits256 orderhash,tmphash; int32_t i,j,len,serflag,olen,slen,datalen; uint8_t *buf,serialized[sizeof(*offer) + sizeof(struct iguana_msghdr) + 4096 + INSTANTDEX_DECKSIZE*33]; uint64_t x,nxt64bits; //if ( strcmp(cmdstr,"poll") == 0 ) // return(clonestr("{\"result\":\"skip sending poll\"}")); - category_subscribe(myinfo,myinfo->instantdex_category,GENESIS_PUBKEY); - jaddstr(argjson,"cmd",cmdstr); - jaddstr(argjson,"agent","SuperNET"); - jaddstr(argjson,"method","DHT"); - jaddstr(argjson,"handle",myinfo->handle); - jaddbits256(argjson,"categoryhash",myinfo->instantdex_category); - jaddbits256(argjson,"traderpub",myinfo->myaddr.persistent); + //category_subscribe(myinfo,myinfo->instantdex_category,GENESIS_PUBKEY); + str = jprint(argjson,0); + buf = malloc(strlen(str)*2 + 1); + init_hexbytes_noT((char *)buf,(uint8_t *)str,(int32_t)strlen(str)); + free(str); + sendjson = cJSON_CreateObject(); + jaddstr(sendjson,"hexmsg",(char *)buf); + free(buf); + jaddstr(sendjson,"cmd",cmdstr); + jaddstr(sendjson,"agent","SuperNET"); + jaddstr(sendjson,"method","DHT"); + jaddstr(sendjson,"handle",myinfo->handle); + jaddnum(sendjson,"plaintext",1); + jaddbits256(sendjson,"categoryhash",myinfo->instantdex_category); + jaddbits256(sendjson,"traderpub",myinfo->myaddr.persistent); + str = jprint(sendjson,1); + basilisk_sendcmd(0,str); + free(str); + return(clonestr("{\"result\":\"success\"}")); + orderhash = instantdex_rwoffer(1,&olen,serialized,offer); if ( 1 ) { @@ -472,12 +485,11 @@ char *instantdex_sendcmd(struct supernet_info *myinfo,struct instantdex_offer *o { memset(serialized,0,sizeof(struct iguana_msghdr)); memcpy(&serialized[sizeof(struct iguana_msghdr)],(uint8_t *)msg,msg->sig.allocsize); - if ( (coin= iguana_coinfind("BTCD")) != 0 )//&& (max= coin->peers.numranked) > 0 ) - iguana_queue_send(addr,0,serialized,"InstantDEX",msg->sig.allocsize,0,0); - else printf("cant find coin.%p or no ranked.%d\n",coin,max); + iguana_queue_send(addr,0,serialized,"InstantDEX",msg->sig.allocsize,0,0); } else { + printf("instantdex_sendcmd: deprecated path\n"); if ( (hexstr= malloc(msg->sig.allocsize*2 + 1)) != 0 ) { init_hexbytes_noT(hexstr,(uint8_t *)msg,msg->sig.allocsize);