From 7bb7572712bb7c10a9c8d5294a120da8dee75783 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 19 Mar 2016 02:48:54 -0300 Subject: [PATCH] test --- iguana/iguana777.h | 4 ++-- iguana/iguana_bundles.c | 8 +++---- iguana/iguana_ramchain.c | 46 ++++++++++++++++++++-------------------- iguana/iguana_recv.c | 2 +- 4 files changed, 30 insertions(+), 30 deletions(-) diff --git a/iguana/iguana777.h b/iguana/iguana777.h index 3a660511f..5b39c378e 100755 --- a/iguana/iguana777.h +++ b/iguana/iguana777.h @@ -38,9 +38,9 @@ typedef int32_t (*blockhashfunc)(uint8_t *blockhashp,uint8_t *serialized,int32_t #define IGUANA_TAILPERCENTAGE 1.0 #define IGUANA_MAXPENDHDRS 1 #define _IGUANA_MAXPENDING 3 -#define IGUANA_MINPENDBUNDLES 4 +#define IGUANA_MINPENDBUNDLES 6 #define IGUANA_MAXPENDBUNDLES 100 -#define IGUANA_BUNDLELOOP 77 +#define IGUANA_BUNDLELOOP 777 #define IGUANA_RPCPORT 7778 #define IGUANA_MAXRAMCHAINSIZE ((uint64_t)1024L * 1024L * 1024L * 16) diff --git a/iguana/iguana_bundles.c b/iguana/iguana_bundles.c index 51fee05d9..1f2757bbe 100755 --- a/iguana/iguana_bundles.c +++ b/iguana/iguana_bundles.c @@ -510,8 +510,8 @@ int32_t iguana_bundleissue(struct iguana_info *coin,struct iguana_bundle *bp,int printf("currentflag.%d ht.%d s.%d finished.%d most.%d laggards.%d maxunfinished.%d\n",bp->currentflag,bp->bundleheight,bp->numsaved,finished,doneval,laggard,maxval); } } - //if ( bp == coin->current ) - // return(counter); + if ( bp == coin->current ) + return(counter); for (i=0; in; i++) { if ( (block= bp->blocks[i]) != 0 ) @@ -522,7 +522,7 @@ int32_t iguana_bundleissue(struct iguana_info *coin,struct iguana_bundle *bp,int { block->numrequests++; if ( bp == coin->current ) - printf("kick [%d:%d]\n",bp->hdrsi,i); + printf("[%d:%d] ",bp->hdrsi,i); iguana_blockQ("kick",coin,bp,i,block->RO.hash2,0); bp->issued[i] = block->issued = now; counter++; @@ -647,7 +647,7 @@ int64_t iguana_bundlecalcs(struct iguana_info *coin,struct iguana_bundle *bp) bp->minrequests = block->numrequests; if ( (bp->hdrsi == 0 && bundlei == 0) || bits256_nonz(block->RO.prev_block) > 0 ) { - if ( block->fpos >= 0 && block->fpipbits != 0 ) + if ( block->fpipbits != 0 ) //block->fpos >= 0 && numsaved++; if ( block->RO.recvlen != 0 ) { diff --git a/iguana/iguana_ramchain.c b/iguana/iguana_ramchain.c index 3fa2fb540..a2f70ecd6 100755 --- a/iguana/iguana_ramchain.c +++ b/iguana/iguana_ramchain.c @@ -2049,10 +2049,10 @@ 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 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,checki,hdrsi,num = 0; char fname[1024]; static bits256 zero; - for (bundlei=0; bundlein; bundlei++) + for (bundlei=starti; bundlei<=endi; bundlei++) { if ( (checki= iguana_peerfname(coin,&hdrsi,GLOBALTMPDIR,fname,0,bp->hashes[bundlei],zero,1)) != bundlei || bundlei < 0 || bundlei >= coin->chain->bundlesize ) { @@ -2070,9 +2070,9 @@ int32_t iguana_bundlefiles(struct iguana_info *coin,uint32_t *ipbits,void **ptrs return(num); } -void iguana_bundlemapfree(struct OS_memspace *mem,struct OS_memspace *hashmem,uint32_t *ipbits,void **ptrs,long *filesizes,int32_t num,struct iguana_ramchain *R,int32_t n) +void iguana_bundlemapfree(struct OS_memspace *mem,struct OS_memspace *hashmem,uint32_t *ipbits,void **ptrs,long *filesizes,int32_t num,struct iguana_ramchain *R,int32_t starti,int32_t endi) { - int32_t j; + int32_t j,n = (endi - starti + 1); for (j=0; jbundleheight == 166000 || bp->bundleheight == 316000 || bp->bundleheight == 142000 || bp->bundleheight == 306000 || bp->bundleheight == 128000 || bp->bundleheight == 254000 || bp->bundleheight == 190000 || bp->bundleheight == 118000 || bp->bundleheight == 62000 || bp->bundleheight == 148000 ) - //return(0); memset(&HASHMEM,0,sizeof(HASHMEM)); + starti = 0, endi = bp->n - 1; + bp_n = (endi - starti + 1); B = 0, Ux = 0, Sx = 0, P = 0, A = 0, X = 0, Kspace = TXbits = PKbits = 0, U = 0, S = 0, T = 0; R = mycalloc('s',bp->n,sizeof(*R)); ptrs = mycalloc('w',bp->n,sizeof(*ptrs)); ipbits = mycalloc('w',bp->n,sizeof(*ipbits)); filesizes = mycalloc('f',bp->n,sizeof(*filesizes)); - if ( (num= iguana_bundlefiles(coin,ipbits,ptrs,filesizes,bp)) == 0 ) + if ( (num= iguana_bundlefiles(coin,ipbits,ptrs,filesizes,bp,starti,endi)) == 0 ) { - iguana_bundlemapfree(0,0,ipbits,ptrs,filesizes,bp->n,R,bp->n); + iguana_bundlemapfree(0,0,ipbits,ptrs,filesizes,num,R,starti,endi); printf("iguana_bundlesaveHT: no bundlefiles error\n"); return(-1); } scriptspace = 1; sigspace = pubkeyspace = 0; - for (bundlei=numtxids=numunspents=numspends=scriptspace=0; bundlein; bundlei++) + for (bundlei=starti,numtxids=numunspents=numspends=scriptspace=0; bundlei<=endi; bundlei++) { if ( (block= bp->blocks[bundlei]) != 0 ) fpipbits = block->fpipbits, fpos = block->fpos; @@ -2290,7 +2290,7 @@ int32_t iguana_bundlesaveHT(struct iguana_info *coin,struct OS_memspace *mem,str mapchain->H.ROflag = 1; if ( fpos > filesize ) { - iguana_bundlemapfree(0,0,ipbits,ptrs,filesizes,num,R,bp->n); + iguana_bundlemapfree(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; } @@ -2326,7 +2326,7 @@ int32_t iguana_bundlesaveHT(struct iguana_info *coin,struct OS_memspace *mem,str } scriptspace += pubkeyspace*1.1 + sigspace*1.1; //printf("mem.%p mapchain txid tables, scriptspace.%u sigspace.%u pubkeyspace.%u bundlei.%d/%d\n",mem,scriptspace,sigspace,pubkeyspace,bundlei,bp->n); - if ( bundlei != bp->n ) + if ( bundlei != endi+1 ) { if ( (block= bp->blocks[bundlei]) != 0 ) { @@ -2336,7 +2336,7 @@ int32_t iguana_bundlesaveHT(struct iguana_info *coin,struct OS_memspace *mem,str block->RO.recvlen = 0; bp->issued[bundlei] = 0; } - iguana_bundlemapfree(0,0,ipbits,ptrs,filesizes,num,R,bp->n); + iguana_bundlemapfree(0,0,ipbits,ptrs,filesizes,num,R,starti,endi); printf("error mapping hdrsi.%d bundlei.%d\n",bp->hdrsi,bundlei); return(-1); } @@ -2347,18 +2347,18 @@ int32_t iguana_bundlesaveHT(struct iguana_info *coin,struct OS_memspace *mem,str numexternaltxids = numspends; //printf("E.%d depth.%d start bundle ramchain %d at %u started.%u lag.%d\n",coin->numemitted,depth,bp->bundleheight,now,starttime,now-starttime); depth++; - if ( iguana_ramchain_alloc(coin,dest,mem,&HASHMEM,numtxids,numunspents,numspends,numpkinds,numexternaltxids,scriptspace+sigspace,bp->bundleheight,bp->n) < 0 ) + if ( iguana_ramchain_alloc(coin,dest,mem,&HASHMEM,numtxids,numunspents,numspends,numpkinds,numexternaltxids,scriptspace+sigspace,bp->bundleheight+starti,bp_n) < 0 ) { printf("error iguana_ramchain_alloc for bundleheight.%d\n",bp->bundleheight); - iguana_bundlemapfree(mem,&HASHMEM,ipbits,ptrs,filesizes,num,R,bp->n); + iguana_bundlemapfree(mem,&HASHMEM,ipbits,ptrs,filesizes,num,R,starti,endi); return(-1); } - iguana_ramchain_link(dest,bp->hashes[0],bp->hashes[bp->n-1],bp->hdrsi,bp->bundleheight,0,bp->n,firsti,0); + iguana_ramchain_link(dest,bp->hashes[starti],bp->hashes[endi],bp->hdrsi,bp->bundleheight,0,bp->n,firsti,0); dest->expanded = 1; dest->H.scriptoffset = 1; _iguana_ramchain_setptrs(RAMCHAIN_DESTPTRS,dest->H.data); iguana_ramchain_extras(coin,dest,&HASHMEM,0); - for (i=0; in; i++) + for (i=starti; i<=endi; i++) { if ( (block= bp->blocks[i]) != 0 && block == iguana_blockfind(coin,bp->hashes[i]) ) { @@ -2371,7 +2371,7 @@ int32_t iguana_bundlesaveHT(struct iguana_info *coin,struct OS_memspace *mem,str block->fpipbits = 0; bp->issued[i] = 0; block->issued = 0; - iguana_bundlemapfree(mem,&HASHMEM,ipbits,ptrs,filesizes,num,R,bp->n); + iguana_bundlemapfree(mem,&HASHMEM,ipbits,ptrs,filesizes,num,R,starti,endi); return(-1); } //destB[i] = block->RO; @@ -2380,7 +2380,7 @@ int32_t iguana_bundlesaveHT(struct iguana_info *coin,struct OS_memspace *mem,str 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; - for (bundlei=0; bundlein; bundlei++) + for (bundlei=starti; bundlei<=endi; bundlei++) { if ( (block= bp->blocks[bundlei]) != 0 ) { @@ -2415,17 +2415,17 @@ int32_t iguana_bundlesaveHT(struct iguana_info *coin,struct OS_memspace *mem,str //printf(" about to save dest scriptoffset.%d stacksize.%d data scriptspace.%d\n",dest->H.scriptoffset,dest->H.stacksize,dest->H.data->scriptspace); depth--; memset(&newchain,0,sizeof(newchain)); - if ( bundlei == bp->n && iguana_ramchain_expandedsave(coin,RAMCHAIN_DESTARG,&newchain,&HASHMEM,0,bp) == 0 ) + if ( bundlei == endi+1 && iguana_ramchain_expandedsave(coin,RAMCHAIN_DESTARG,&newchain,&HASHMEM,0,bp) == 0 ) { //char str[65]; printf("d.%d ht.%d %s saved lag.%d elapsed.%ld\n",depth,dest->height,mbstr(str,dest->H.data->allocsize),now-starttime,time(NULL)-now); retval = 0; } else bp->generrs++; - iguana_bundlemapfree(mem,&HASHMEM,ipbits,ptrs,filesizes,num,R,bp->n); + iguana_bundlemapfree(mem,&HASHMEM,ipbits,ptrs,filesizes,num,R,starti,endi); if ( retval == 0 )//|| bp->generrs > 3 ) { char dirname[1024]; //printf("delete %d files hdrs.%d retval.%d\n",num,bp->hdrsi,retval); - for (j=0; jhashes[j],zero,1) >= 0 ) // ipbits[j] coin->peers.numfiles -= OS_removefile(fname,0); diff --git a/iguana/iguana_recv.c b/iguana/iguana_recv.c index ad93406a7..5e81fed12 100755 --- a/iguana/iguana_recv.c +++ b/iguana/iguana_recv.c @@ -569,7 +569,7 @@ struct iguana_bundlereq *iguana_recvblockhashes(struct iguana_info *coin,struct //iguana_blockQ(coin,0,-1,blockhashes[1],0); //iguana_blockQ(coin,0,-4,blockhashes[1],1); char str[65]; - if ( bp != 0 && bp->hdrsi == coin->bundlescount-1 ) + //if ( bp != 0 && bp->hdrsi == coin->bundlescount-1 ) printf("blockhashes[%d] %d of %d %s bp.%d[%d]\n",num,bp==0?-1:bp->hdrsi,coin->bundlescount,bits256_str(str,blockhashes[1]),bp==0?-1:bp->bundleheight,bundlei); if ( bp != 0 ) {