Browse Source

test

release/v0.1
jl777 9 years ago
parent
commit
552214cad0
  1. 2
      iguana/iguana777.h
  2. 19
      iguana/iguana_recv.c

2
iguana/iguana777.h

@ -252,7 +252,7 @@ struct iguana_block
{ {
struct iguana_blockRO RO; struct iguana_blockRO RO;
double PoW; // NOT consensus safe, for estimation purposes only double PoW; // NOT consensus safe, for estimation purposes only
int32_t height,fpos; uint32_t fpipbits,numrequests; int32_t height,fpos; uint32_t fpipbits,numrequests,issued;
uint16_t hdrsi,bundlei:12,mainchain:1,valid:1,queued:1,tbd:1,extra:8; uint16_t hdrsi,bundlei:12,mainchain:1,valid:1,queued:1,tbd:1,extra:8;
UT_hash_handle hh; UT_hash_handle hh;
} __attribute__((packed)); } __attribute__((packed));

19
iguana/iguana_recv.c

@ -713,15 +713,13 @@ int32_t iguana_blockQ(struct iguana_info *coin,struct iguana_bundle *bp,int32_t
printf("cant queue zerohash bundlei.%d\n",bundlei); printf("cant queue zerohash bundlei.%d\n",bundlei);
return(-1); return(-1);
} }
if ( bp != 0 ) block = iguana_blockfind(coin,hash2);
block = iguana_blockfind(coin,bp->hashes[bundlei]);
if ( priority != 0 || block == 0 || (block->queued == 0 && block->fpipbits == 0) ) if ( priority != 0 || block == 0 || (block->queued == 0 && block->fpipbits == 0) )
{ {
if ( block != 0 ) if ( block != 0 )
{ {
if ( block->fpipbits != 0 || block->queued != 0 ) if ( block->fpipbits != 0 || block->queued != 0 || block->issued+10 < time(NULL) )
return(0); return(0);
block->numrequests++;
} }
if ( priority != 0 ) if ( priority != 0 )
str = "priorityQ", Q = &coin->priorityQ; str = "priorityQ", Q = &coin->priorityQ;
@ -749,6 +747,11 @@ int32_t iguana_blockQ(struct iguana_info *coin,struct iguana_bundle *bp,int32_t
char str2[65]; char str2[65];
if ( 0 && (bundlei % 250) == 0 ) if ( 0 && (bundlei % 250) == 0 )
printf("%s %d %s %d numranked.%d qsize.%d\n",str,req->height,bits256_str(str2,hash2),coin->blocks.recvblocks,coin->peers.numranked,queue_size(Q)); printf("%s %d %s %d numranked.%d qsize.%d\n",str,req->height,bits256_str(str2,hash2),coin->blocks.recvblocks,coin->peers.numranked,queue_size(Q));
if ( block != 0 )
{
block->numrequests++;
block->issued = (uint32_t)time(NULL);
}
queue_enqueue(str,Q,&req->DL,0); queue_enqueue(str,Q,&req->DL,0);
return(1); return(1);
} else printf("null Q\n"); } else printf("null Q\n");
@ -859,20 +862,20 @@ int32_t iguana_reqblocks(struct iguana_info *coin)
_iguana_chainlink(coin,next); _iguana_chainlink(coin,next);
else if ( next->queued == 0 && next->fpipbits == 0 ) else if ( next->queued == 0 && next->fpipbits == 0 )
{ {
printf("HWM next %d\n",coin->blocks.hwmchain.height+1); //printf("HWM next %d\n",coin->blocks.hwmchain.height+1);
iguana_blockQ(coin,bp,bundlei,next->RO.hash2,1); iguana_blockQ(coin,bp,bundlei,next->RO.hash2,0);
} }
} }
else else
{ {
if ( bits256_nonz(bp->hashes[bundlei]) > 0 ) if ( bits256_nonz(bp->hashes[bundlei]) > 0 )
{ {
printf("next %d\n",coin->blocks.hwmchain.height+1); //printf("next %d\n",coin->blocks.hwmchain.height+1);
iguana_blockQ(coin,bp,bundlei,bp->hashes[bundlei],0); iguana_blockQ(coin,bp,bundlei,bp->hashes[bundlei],0);
} }
else if ( bp->speculative != 0 && bits256_nonz(bp->speculative[bundlei]) > 0 ) else if ( bp->speculative != 0 && bits256_nonz(bp->speculative[bundlei]) > 0 )
{ {
printf("speculative next %d\n",coin->blocks.hwmchain.height+1); //printf("speculative next %d\n",coin->blocks.hwmchain.height+1);
iguana_blockQ(coin,0,-1,bp->speculative[bundlei],0); iguana_blockQ(coin,0,-1,bp->speculative[bundlei],0);
} }
} }

Loading…
Cancel
Save