Browse Source

test

release/v0.1
jl777 9 years ago
parent
commit
fc4f087468
  1. 16
      iguana/iguana_recv.c

16
iguana/iguana_recv.c

@ -814,7 +814,11 @@ struct iguana_bundlereq *iguana_recvblockhdrs(struct iguana_info *coin,struct ig
{
bp = 0, bundlei = -2;
if ( (bp= iguana_bundleset(coin,&block,&bundlei,(struct iguana_block *)&zblocks[i])) != 0 )
{
if ( block->height >= 0 && block->height+1 > coin->longestchain )
coin->longestchain = block->height+1;
_iguana_chainlink(coin,block);
}
//char str[65]; printf("HWM in hdr's prev[%d] bp.%p bundlei.%d block.%p %s\n",i,bp,bundlei,block,bp!=0?bits256_str(str,bp->hashes[bundlei]):"()");
}
if ( i > 0 && bits256_cmp(prevhash2,zblocks[i].RO.prev_block) == 0 )
@ -900,7 +904,7 @@ void iguana_autoextend(struct iguana_info *coin,struct iguana_bundle *bp)
struct iguana_bundlereq *iguana_recvblockhashes(struct iguana_info *coin,struct iguana_bundlereq *req,bits256 *blockhashes,int32_t num)
{
int32_t bundlei,i,starti; struct iguana_bundle *bp; bits256 allhash,zero; struct iguana_peer *addr; struct iguana_block *block; char str[65],str2[65]; // uint8_t serialized[512];
int32_t bundlei,i,starti; struct iguana_block *prevblock; struct iguana_bundle *bp; bits256 allhash,zero; struct iguana_peer *addr; struct iguana_block *block; char str[65],str2[65]; // uint8_t serialized[512];
memset(zero.bytes,0,sizeof(zero));
bp = 0, bundlei = -2;
iguana_bundlefind(coin,&bp,&bundlei,blockhashes[1]);
@ -948,6 +952,8 @@ struct iguana_bundlereq *iguana_recvblockhashes(struct iguana_info *coin,struct
// iguana_blockQ("speculate",coin,bp,-i,blockhashes[i],0);
if ( bp->blocks[i] == 0 )
bp->blocks[i] = iguana_blockhashset("recvhashes3",coin,bp->bundleheight+i,blockhashes[i],1);
if ( (prevblock= iguana_blockfind("prev",coin,blockhashes[i])) != 0 && prevblock->height+1 > coin->longestchain )
coin->longestchain = prevblock->height+1;
//printf("speculate new issue [%d:%d]\n",bp->hdrsi,i);
}
bp->speculative[0] = bp->hashes[0];
@ -1028,10 +1034,14 @@ struct iguana_bundlereq *iguana_recvblockhashes(struct iguana_info *coin,struct
struct iguana_bundlereq *iguana_recvblock(struct iguana_info *coin,struct iguana_peer *addr,struct iguana_bundlereq *req,struct iguana_zblock *origblock,int32_t numtx,int32_t datalen,int32_t recvlen,int32_t *newhwmp)
{
struct iguana_bundle *bp=0,*prev; int32_t n,bundlei = -2; struct iguana_block *block,*next; char str[65]; bits256 hash2;
struct iguana_bundle *bp=0,*prev; int32_t n,bundlei = -2; struct iguana_block *block,*next,*prevblock; char str[65]; bits256 hash2;
//printf("received.%s\n",bits256_str(str,origblock->RO.hash2));
if ( bits256_nonz(origblock->RO.prev_block) != 0 )
iguana_blockQ("prev",coin,0,-1,origblock->RO.prev_block,1);
{
if ( (prevblock= iguana_blockfind("prev",coin,origblock->RO.prev_block)) != 0 && prevblock->height+1 > coin->longestchain )
coin->longestchain = prevblock->height+1;
else iguana_blockQ("prev",coin,0,-1,origblock->RO.prev_block,1);
}
if ( (bp= iguana_bundleset(coin,&block,&bundlei,(struct iguana_block *)origblock)) != 0 && bp == coin->current && block != 0 && bp->speculative != 0 && bundlei >= 0 )
{
if ( bp->speculative != 0 && bp->numspec <= bundlei )

Loading…
Cancel
Save