Browse Source

test

release/v0.1
jl777 9 years ago
parent
commit
2b25df90c5
  1. 12
      deprecated/obsolete.h
  2. 10
      iguana/iguana777.h
  3. 6
      iguana/iguana_bundles.c
  4. 4
      iguana/iguana_peers.c
  5. 126
      iguana/iguana_ramchain.c
  6. 56
      iguana/iguana_unspents.c
  7. 2
      iguana/main.c

12
deprecated/obsolete.h

@ -14503,5 +14503,17 @@ len = 0;
}
}
}
/*for (j=0; j<num; j++)
if ( ipbits[j] == fpipbits )
{
ptr = ptrs[j];
filesize = filesizes[j];
break;
}
if ( j == num )
{
printf("j.%d num.%d bundlei.%d\n",j,num,bundlei);
break;
}*/
#endif

10
iguana/iguana777.h

@ -473,7 +473,7 @@ struct iguana_info
portable_mutex_t scripts_mutex[2]; FILE *scriptsfp[2]; void *scriptsptr[2]; long scriptsfilesize[2];
//struct scriptinfo *scriptstable[2];
struct iguana_bundle *bundles[IGUANA_MAXBUNDLES],*current,*lastpending;
struct iguana_ramchain RTramchain;
struct iguana_ramchain RTramchain; struct OS_memspace RTmem,RThashmem;
int32_t numremain,numpendings,zcount,recvcount,bcount,pcount,lastbundle,numsaved,pendbalances,numverified;
uint32_t recvtime,hdrstime,backstoptime,lastbundletime,numreqsent,numbundlesQ,lastbundleitime,lastdisp;
double backstopmillis; bits256 backstophash2; int64_t spaceused;
@ -804,10 +804,16 @@ int32_t iguana_sendblockreqPT(struct iguana_info *coin,struct iguana_peer *addr,
int32_t iguana_blockreq(struct iguana_info *coin,int32_t height,int32_t priority);
int64_t iguana_bundlecalcs(struct iguana_info *coin,struct iguana_bundle *bp);
void iguana_ramchain_prefetch(struct iguana_info *coin,struct iguana_ramchain *ramchain);
void iguana_realtime_update(struct iguana_info *coin);
int32_t iguana_realtime_update(struct iguana_info *coin);
int32_t iguana_mapvolatiles(struct iguana_info *coin,struct iguana_ramchain *ramchain);
void iguana_purgevolatiles(struct iguana_info *coin,struct iguana_ramchain *ramchain);
int32_t iguana_volatileinit(struct iguana_info *coin);
int64_t iguana_ramchainopen(struct iguana_info *coin,struct iguana_ramchain *ramchain,struct OS_memspace *mem,struct OS_memspace *hashmem,int32_t bundleheight,bits256 hash2);
int32_t iguana_ramchain_free(struct iguana_info *coin,struct iguana_ramchain *ramchain,int32_t deleteflag);
void iguana_blocksetcounters(struct iguana_info *coin,struct iguana_block *block,struct iguana_ramchain * ramchain);
int32_t iguana_ramchain_iterate(struct iguana_info *coin,struct iguana_ramchain *dest,struct iguana_ramchain *ramchain,struct iguana_bundle *bp);
void *iguana_bundlefile(struct iguana_info *coin,long *filesizep,struct iguana_bundle *bp,int32_t bundlei);
int32_t iguana_mapchaininit(struct iguana_info *coin,struct iguana_ramchain *mapchain,struct iguana_bundle *bp,int32_t bundlei,struct iguana_block *block,void *ptr,long filesize);
extern int32_t HDRnet,netBLOCKS;

6
iguana/iguana_bundles.c

@ -594,7 +594,7 @@ int32_t iguana_bundleissue(struct iguana_info *coin,struct iguana_bundle *bp,int
int32_t iguana_bundleready(struct iguana_info *coin,struct iguana_bundle *bp)
{
int32_t i,ready,valid; struct iguana_block *block;
int32_t i,ready,valid,hdrsi,checki; struct iguana_block *block; char fname[1024]; static bits256 zero;
for (i=ready=0; i<bp->n; i++)
{
if ( (block= bp->blocks[i]) != 0 )
@ -602,7 +602,9 @@ int32_t iguana_bundleready(struct iguana_info *coin,struct iguana_bundle *bp)
//printf("(%x:%x) ",(uint32_t)block->RO.hash2.ulongs[3],(uint32_t)bp->hashes[i].ulongs[3]);
if ( block->fpipbits == 0 || (bp->bundleheight+i > 0 && bits256_nonz(block->RO.prev_block) == 0) || iguana_blockvalidate(coin,&valid,block,1) < 0 )
{
char str[65]; printf(">>>>>>> ipbits.%x null prevblock error at ht.%d patch.(%s) and reissue\n",block->fpipbits,bp->bundleheight+i,bits256_str(str,block->RO.prev_block));
if ( (checki= iguana_peerfname(coin,&hdrsi,GLOBALTMPDIR,fname,0,block->RO.hash2,zero,1)) == i )
OS_removefile(fname,0);
char str[65]; printf(">>>>>>> ipbits.%x null prevblock error at ht.%d patch.(%s) and reissue %s\n",block->fpipbits,bp->bundleheight+i,bits256_str(str,block->RO.prev_block),fname);
block->fpipbits = 0;
block->fpos = -1;
block->queued = 0;

4
iguana/iguana_peers.c

@ -695,7 +695,7 @@ void *iguana_iAddriterator(struct iguana_info *coin,struct iguana_iAddr *iA)
{
if ( iguana_rwiAddrind(coin,1,iA,iA->hh.itemind) > 0 )
{
//printf("iA.%p iguana_startconnection.(%s) status.%d pending.%d\n",iA,addr->ipaddr,iA->status,addr->pending);
printf("iA.%p iguana_startconnection.(%s) status.%d pending.%d\n",iA,addr->ipaddr,iA->status,addr->pending);
iA->status = IGUANA_PEER_CONNECTING;
addr->pending = (uint32_t)time(NULL);
iguana_launch(coin,"connection",iguana_startconnection,addr,IGUANA_CONNTHREAD);
@ -755,7 +755,7 @@ uint32_t iguana_possible_peer(struct iguana_info *coin,char *ipaddr)
expand_ipbits(checkaddr,ipbits);
if ( strcmp(checkaddr,ipaddr) == 0 )
{
//printf("valid ipaddr.(%s) MAXPEERS.%d\n",ipaddr,coin->MAXPEERS);
printf("valid ipaddr.(%s) MAXPEERS.%d\n",ipaddr,coin->MAXPEERS);
if ( (iA= iguana_iAddrhashfind(coin,ipbits,1)) != 0 )
{
if ( iA->status != IGUANA_PEER_CONNECTING && iA->status != IGUANA_PEER_READY && iA->status != IGUANA_PEER_ELIGIBLE )

126
iguana/iguana_ramchain.c

@ -2086,23 +2086,32 @@ int32_t iguana_oldbundlefiles(struct iguana_info *coin,uint32_t *ipbits,void **p
return(num);
}
int32_t iguana_bundlefiles(struct iguana_info *coin,uint32_t *ipbits,void **ptrs,long *filesizes,struct iguana_bundle *bp,int32_t starti,int32_t endi)
void *iguana_bundlefile(struct iguana_info *coin,long *filesizep,struct iguana_bundle *bp,int32_t bundlei)
{
int32_t bundlei,checki,hdrsi,num = 0; char fname[1024]; static bits256 zero;
for (bundlei=starti; bundlei<=endi; bundlei++)
{
int32_t checki,hdrsi; char fname[1024]; void *ptr = 0; static bits256 zero;
*filesizep = 0;
if ( (checki= iguana_peerfname(coin,&hdrsi,GLOBALTMPDIR,fname,0,bp->hashes[bundlei],zero,1)) != bundlei || bundlei < 0 || bundlei >= coin->chain->bundlesize )
{
printf("B iguana_ramchain_map.(%s) illegal hdrsi.%d bundlei.%d checki.%d\n",fname,hdrsi,bundlei,checki);
return(bp == coin->current ? num : 0);
return(0);
}
if ( (ptrs[num]= OS_mapfile(fname,&filesizes[num],0)) == 0 )
if ( (ptr= OS_mapfile(fname,filesizep,0)) == 0 )
{
printf("error mapping.(%s) bundlei.%d\n",fname,bundlei);
return(bp == coin->current ? num : 0);
return(0);
}
//printf("%s mapped ptrs[%d] filesize.%ld bundlei.%d ipbits.%x fpos.%d\n",fname,num,(long)filesizes[num],bundlei,fpipbits,bp->fpos[bundlei]);
return(ptr);
}
int32_t iguana_bundlefiles(struct iguana_info *coin,uint32_t *ipbits,void **ptrs,long *filesizes,struct iguana_bundle *bp,int32_t starti,int32_t endi)
{
int32_t bundlei,num = 0;
for (bundlei=starti; bundlei<=endi; bundlei++)
{
if ( (ptrs[num]= iguana_bundlefile(coin,&filesizes[num],bp,bundlei)) != 0 )
num++;
else return(bp == coin->current ? num : 0);
//printf("%s mapped ptrs[%d] filesize.%ld bundlei.%d ipbits.%x fpos.%d\n",fname,num,(long)filesizes[num],bundlei,fpipbits,bp->fpos[bundlei]);
}
return(num);
}
@ -2278,7 +2287,6 @@ struct iguana_ramchain *iguana_bundleload(struct iguana_info *coin,struct iguana
return(mapchain);
}
int64_t iguana_ramchainopen(struct iguana_info *coin,struct iguana_ramchain *ramchain,struct OS_memspace *mem,struct OS_memspace *hashmem,int32_t bundleheight,bits256 hash2)
{
RAMCHAIN_DECLARE; int32_t i,numblocks = 0; uint32_t numtxids,numunspents,numspends,numpkinds,numexternaltxids,scriptspace; struct iguana_bundle *bp; struct iguana_ramchaindata *rdata;
@ -2289,7 +2297,21 @@ int64_t iguana_ramchainopen(struct iguana_info *coin,struct iguana_ramchain *ram
for (i=0; i<coin->bundlescount; i++)
if ( (bp= coin->bundles[i]) != 0 && (rdata= bp->ramchain.H.data) != 0 )
{
}
if ( rdata->numtxids > numtxids )
numtxids = rdata->numtxids;
if ( rdata->numpkinds > numpkinds )
numpkinds = rdata->numpkinds;
if ( rdata->numspends > numspends )
numspends = rdata->numspends;
if ( rdata->numunspents > numunspents )
numunspents = rdata->numunspents;
if ( rdata->numexternaltxids > numexternaltxids )
numexternaltxids = rdata->numexternaltxids;
if ( rdata->scriptspace > scriptspace )
scriptspace = rdata->scriptspace;
}
numtxids *= 1.5; numexternaltxids *= 1.5, scriptspace *= 1.5;
numunspents *= 1.5, numspends *= 1.5, numpkinds *= 1.5;
if ( iguana_ramchain_init(ramchain,mem,hashmem,1,numtxids,numunspents,numspends,numpkinds,numexternaltxids,scriptspace,1,numblocks) > 0 )
{
iguana_ramchain_link(ramchain,hash2,hash2,bundleheight/coin->chain->bundlesize,bundleheight,0,0,1,0);
@ -2301,12 +2323,42 @@ int64_t iguana_ramchainopen(struct iguana_info *coin,struct iguana_ramchain *ram
return(rdata->allocsize);
}
int32_t iguana_mapchaininit(struct iguana_info *coin,struct iguana_ramchain *mapchain,struct iguana_bundle *bp,int32_t bundlei,struct iguana_block *block,void *ptr,long filesize)
{
int32_t firsti = 1; RAMCHAIN_DECLARE;
mapchain->fileptr = ptr;
mapchain->filesize = filesize;
mapchain->H.data = (void *)(long)((long)ptr + block->fpos);
mapchain->H.ROflag = 1;
if ( block->fpos > filesize )
{
printf("fpos error %ld > %ld mapping hdrsi.%d bundlei.%d\n",block->fpos,filesize,bp->hdrsi,bundlei);
return(-1);
}
_iguana_ramchain_setptrs(MAPCHAIN_PTRS,mapchain->H.data);
if ( block->fpos+mapchain->H.data->allocsize > filesize || iguana_ramchain_size(MAPCHAIN_ARG,1,mapchain->H.data->scriptspace) != mapchain->H.data->allocsize )
{
printf("iguana_bundlesaveHT.%d ipbits.%x size mismatch %ld vs %ld vs filesize.%ld fpos.%ld bundlei.%d expanded.%d soff.%d\n",bp->bundleheight,block->fpipbits,(long)iguana_ramchain_size(MAPCHAIN_ARG,1,mapchain->H.data->scriptspace),(long)mapchain->H.data->allocsize,(long)filesize,(long)block->fpos,bundlei,mapchain->expanded,mapchain->H.data->scriptspace);
//getchar();
return(-1);
}
else if ( memcmp(bp->hashes[bundlei].bytes,mapchain->H.data->firsthash2.bytes,sizeof(bits256)) != 0 )
{
char str[65],str2[65]; printf("iguana_bundlesaveHT.[%d:%d] hash2 mismatch %s vs %s\n",bp->hdrsi,bundlei,bits256_str(str,bp->hashes[bundlei]),bits256_str(str2,mapchain->H.data->firsthash2));
return(-1);
}
iguana_ramchain_link(mapchain,bp->hashes[bundlei],bp->hashes[bundlei],bp->hdrsi,bp->bundleheight+bundlei,bundlei,1,firsti,1);
if ( bp->blocks[bundlei]->RO.txn_count == 0 )
bp->blocks[bundlei]->RO.txn_count = mapchain->H.data->numtxids - 1;
return(0);
}
// helper threads: NUM_HELPERS
int32_t iguana_bundlesaveHT(struct iguana_info *coin,struct OS_memspace *mem,struct OS_memspace *memB,struct iguana_bundle *bp,uint32_t starttime) // helper thread
{
static int depth; static bits256 zero;
RAMCHAIN_DESTDECLARE; RAMCHAIN_DECLARE;
void **ptrs,*ptr; long *filesizes,filesize; uint32_t *ipbits; char fname[1024];
void **ptrs; long *filesizes; uint32_t *ipbits; char fname[1024];
struct iguana_ramchain *R,*mapchain,*dest,newchain; uint32_t fpipbits;
int32_t i,starti,endi,bp_n,numtxids,valid,sigspace,pubkeyspace,numunspents,numspends,numpkinds,numexternaltxids,scriptspace; struct iguana_block *block; long fpos;
struct OS_memspace HASHMEM; int32_t err,j,num,hdrsi,bundlei,firsti= 1,retval = -1;
@ -2330,61 +2382,23 @@ int32_t iguana_bundlesaveHT(struct iguana_info *coin,struct OS_memspace *mem,str
sigspace = pubkeyspace = 0;
for (bundlei=starti,numtxids=numunspents=numspends=scriptspace=0; bundlei<=endi; bundlei++)
{
if ( (block= bp->blocks[bundlei]) != 0 )
fpipbits = block->fpipbits, fpos = block->fpos;
else fpipbits = fpos = 0;
mapchain = &R[bundlei];
/*for (j=0; j<num; j++)
if ( ipbits[j] == fpipbits )
{
ptr = ptrs[j];
filesize = filesizes[j];
break;
}
if ( j == num )
{
printf("j.%d num.%d bundlei.%d\n",j,num,bundlei);
break;
}*/
ptr = ptrs[bundlei];
filesize = filesizes[bundlei];
mapchain->fileptr = ptr;
mapchain->filesize = filesize;
mapchain->H.data = (void *)(long)((long)ptr + fpos);
mapchain->H.ROflag = 1;
if ( fpos > filesize )
{
iguana_bundlemapfree(coin,0,0,ipbits,ptrs,filesizes,num,R,starti,endi);
printf("fpos error %ld > %ld mapping hdrsi.%d bundlei.%d\n",fpos,filesize,bp->hdrsi,bundlei);
break;
}
if ( fpos+mapchain->H.data->allocsize > filesize || iguana_ramchain_size(MAPCHAIN_ARG,1,mapchain->H.data->scriptspace) != mapchain->H.data->allocsize )
if ( (block= bp->blocks[bundlei]) == 0 || bits256_nonz(block->RO.hash2) == 0 || block != iguana_blockfind(coin,block->RO.hash2) || memcmp(block->RO.hash2.bytes,bp->hashes[bundlei].bytes,sizeof(bits256)) != 0 )
{
printf("iguana_bundlesaveHT.%d ipbits.%x size mismatch %ld vs %ld vs filesize.%ld fpos.%ld bundlei.%d expanded.%d soff.%d\n",bp->bundleheight,fpipbits,(long)iguana_ramchain_size(MAPCHAIN_ARG,1,mapchain->H.data->scriptspace),(long)mapchain->H.data->allocsize,(long)filesize,(long)fpos,bundlei,mapchain->expanded,mapchain->H.data->scriptspace);
//getchar();
printf("block.%p error vs %p\n",block,iguana_blockfind(coin,block->RO.hash2));
break;
}
else if ( memcmp(bp->hashes[bundlei].bytes,mapchain->H.data->firsthash2.bytes,sizeof(bits256)) != 0 )
{
char str[65],str2[65]; printf("iguana_bundlesaveHT.[%d:%d] hash2 mismatch %s vs %s\n",bp->hdrsi,bundlei,bits256_str(str,bp->hashes[bundlei]),bits256_str(str2,mapchain->H.data->firsthash2));
fpipbits = block->fpipbits, fpos = block->fpos;
mapchain = &R[bundlei];
if ( iguana_mapchaininit(coin,mapchain,bp,bundlei,block,ptrs[bundlei],filesizes[bundlei]) < 0 )
break;
}
iguana_ramchain_link(mapchain,bp->hashes[bundlei],bp->hashes[bundlei],bp->hdrsi,bp->bundleheight+bundlei,bundlei,1,firsti,1);
_iguana_ramchain_setptrs(MAPCHAIN_PTRS,mapchain->H.data);
numtxids += (mapchain->H.data->numtxids - 1);
numunspents += (mapchain->H.data->numunspents - 1);
numspends += (mapchain->H.data->numspends - 1);
scriptspace += 1;//iguana_ramchain_scriptspace(coin,&sigsize,&pubkeysize,mapchain);
//sigspace += sigsize;
//pubkeyspace += pubkeysize;
if ( (block= bp->blocks[bundlei]) == 0 || bits256_nonz(block->RO.hash2) == 0 || block != iguana_blockfind(coin,block->RO.hash2) || memcmp(block->RO.hash2.bytes,bp->hashes[bundlei].bytes,sizeof(bits256)) != 0 )
{
printf("block.%p error vs %p\n",block,iguana_blockfind(coin,block->RO.hash2));
break;
}
//printf("%x ",(uint32_t)block->RO.hash2.ulongs[3]);
if ( bp->blocks[bundlei]->RO.txn_count == 0 )
bp->blocks[bundlei]->RO.txn_count = mapchain->H.data->numtxids - 1;
// _iguana_ramchain_setptrs(MAPCHAIN_PTRS,mapchain->H.data);
//printf("(%d %d).%d ",mapchain->H.data->numtxids,bp->blocks[bundlei]->RO.txn_count,numtxids);
//printf("%d ",numtxids);
}
@ -2438,7 +2452,7 @@ int32_t iguana_bundlesaveHT(struct iguana_info *coin,struct OS_memspace *mem,str
iguana_bundlemapfree(coin,mem,&HASHMEM,ipbits,ptrs,filesizes,num,R,starti,endi);
return(-1);
}
//destB[i] = block->RO;
destB[i] = block->RO;
} else printf("error getting block (%d:%d) %p vs %p\n",bp->hdrsi,i,block,iguana_blockfind(coin,bp->hashes[i]));
}
dest->H.txidind = dest->H.unspentind = dest->H.spendind = dest->pkind = dest->H.data->firsti;

56
iguana/iguana_unspents.c

@ -34,7 +34,7 @@ struct iguana_hhaccount *iguana_hhaccountfind(struct iguana_info *coin,uint16_t
return(hhacct);
}
int32_t iguana_utxoupdate(struct iguana_info *coin,uint16_t spent_hdrsi,uint32_t spent_unspentind,uint32_t spent_pkind,uint64_t spent_value,int32_t hdrsi,uint32_t spendind,uint32_t height)
int32_t iguana_utxoupdate(struct iguana_info *coin,int16_t spent_hdrsi,uint32_t spent_unspentind,uint32_t spent_pkind,uint64_t spent_value,int32_t hdrsi,uint32_t spendind,uint32_t height)
{
struct iguana_hhutxo *hhutxo,*tmputxo; struct iguana_hhaccount *hhacct,*tmpacct;
uint8_t buf[sizeof(spent_hdrsi) + sizeof(uint32_t)];
@ -808,24 +808,64 @@ int32_t iguana_volatileinit(struct iguana_info *coin)
void iguana_RTramchainfree(struct iguana_info *coin)
{
iguana_ramchain_free(coin,&coin->RTramchain,1);
}
void iguana_RTramchainalloc(struct iguana_info *coin)
void iguana_RTramchainalloc(struct iguana_info *coin,struct iguana_bundle *bp)
{
struct iguana_ramchain *dest = &coin->RTramchain;
if ( coin->RTramchain.H.data == 0 )
{
iguana_ramchainopen(coin,dest,&coin->RTmem,&coin->RThashmem,bp->bundleheight,bp->hashes[0]);
dest->H.txidind = dest->H.unspentind = dest->H.spendind = dest->pkind = dest->H.data->firsti;
dest->externalind = dest->H.stacksize = 0;
dest->H.scriptoffset = 1;
}
}
void iguana_realtime_update(struct iguana_info *coin)
int32_t iguana_realtime_update(struct iguana_info *coin)
{
struct iguana_bundle *bp;
if ( (bp= coin->current) != 0 && bp->hdrsi == coin->longestchain/coin->chain->bundlesize && bp->hdrsi == coin->balanceswritten )
struct iguana_bundle *bp; struct iguana_ramchaindata *rdata; int32_t bundlei,err;
struct iguana_block *block; struct iguana_blockRO *B; struct iguana_ramchain *dest,blockR;
long filesize; void *ptr;
if ( (bp= coin->current) != 0 && bp->hdrsi == coin->longestchain/coin->chain->bundlesize && bp->hdrsi == coin->balanceswritten && coin->RTheight >= bp->bundleheight && coin->RTheight < bp->bundleheight+bp->n )
{
iguana_RTramchainalloc(coin,bp);
if ( (rdata= coin->RTramchain.H.data) != 0 && coin->RTheight < coin->blocks.hwmchain.height)
{
dest = &coin->RTramchain;
B = (void *)(long)((long)rdata + rdata->Boffset);
bundlei = (coin->RTheight % coin->chain->bundlesize);
if ( (block= bp->blocks[bundlei]) != 0 )
{
iguana_blocksetcounters(coin,block,dest);
coin->blocks.RO[bp->bundleheight+bundlei] = block->RO;
B[bundlei] = block->RO;
if ( (ptr= iguana_bundlefile(coin,&filesize,bp,bundlei)) != 0 )
{
if ( iguana_mapchaininit(coin,&blockR,bp,bundlei,block,ptr,filesize) == 0 )
{
if ( (err= iguana_ramchain_iterate(coin,dest,&blockR,bp)) != 0 )
{
iguana_RTramchainalloc(coin);
printf("error adding height.%d\n",bp->bundleheight+bundlei);
if ( (block= bp->blocks[bundlei]) != 0 )
{
block->queued = 0;
block->fpipbits = 0;
bp->issued[bundlei] = 0;
block->issued = 0;
}
return(-1);
}
printf("added RTheight.%d hwm.%d longest.%d\n",coin->RTheight,coin->blocks.hwmchain.height,coin->longestchain);
coin->RTheight++;
coin->RTramchain.H.data->numblocks = bundlei + 1;
} else printf("error mapchaininit\n");
}
} else return(-1);
}
}
return(0);
}
int32_t iguana_balanceflush(struct iguana_info *coin,int32_t refhdrsi,int32_t purgedist)

2
iguana/main.c

@ -1128,7 +1128,7 @@ void iguana_main(void *arg)
sleep(1);
char *str;
//iguana_launchcoin(MYINFO.rpcsymbol,cJSON_Parse("{}"));
if ( 1 && (str= SuperNET_JSON(&MYINFO,cJSON_Parse("{\"startpend\":128,\"endpend\":128,\"userhome\":\"/Users/jimbolaptop/Library/Application Support\",\"agent\":\"iguana\",\"method\":\"addcoin\",\"services\":129,\"maxpeers\":128,\"newcoin\":\"BTCD\",\"active\":1,\"numhelpers\":4,\"poll\":1}"),0)) != 0 )
if ( 1 && (str= SuperNET_JSON(&MYINFO,cJSON_Parse("{\"startpend\":512,\"endpend\":512,\"userhome\":\"/Users/jimbolaptop/Library/Application Support\",\"agent\":\"iguana\",\"method\":\"addcoin\",\"services\":129,\"maxpeers\":128,\"newcoin\":\"BTCD\",\"active\":1,\"numhelpers\":8,\"poll\":1}"),0)) != 0 )
{
free(str);
if ( 0 && (str= SuperNET_JSON(&MYINFO,cJSON_Parse("{\"userhome\":\"/Users/jimbolaptop/Library/Application Support\",\"agent\":\"iguana\",\"method\":\"addcoin\",\"services\":1024,\"maxpeers\":256,\"newcoin\":\"BTCD\",\"active\":1}"),0)) != 0 )

Loading…
Cancel
Save