Fix utxos

This commit is contained in:
jl777
2019-07-03 02:07:03 -11:00
parent 665a272e72
commit 456d4a9bfb

View File

@@ -128,16 +128,16 @@ struct NSPV_utxosresp
uint16_t numutxos,pad16; uint16_t numutxos,pad16;
}; };
int32_t NSPV_rwutxosresp(int32_t rwflag,uint8_t *serialized,uint16_t *vecsizep,struct NSPV_utxosresp **ptrp) // check mempool int32_t NSPV_rwutxosresp(int32_t rwflag,uint8_t *serialized,struct NSPV_utxosresp *ptr) // check mempool
{ {
int32_t i,vsize,len = 0; int32_t i,len = 0;
len += iguana_rwnum(rwflag,&serialized[len],sizeof(*vecsizep),vecsizep); len += iguana_rwnum(rwflag,&serialized[len],sizeof(ptr->numutxos),&ptr->numutxos);
if ( (vsize= *vecsizep) != 0 ) if ( ptr->numutxos != 0 )
{ {
if ( *ptrp == 0 ) if ( ptr->utxos == 0 )
*ptrp = (struct NSPV_utxosresp *)calloc(sizeof(**ptrp),vsize); // relies on uint16_t being "small" to prevent mem exhaustion ptr->utxos = (struct NSPV_utxoresp *)calloc(sizeof(*ptr->utxos),ptr->numutxos); // relies on uint16_t being "small" to prevent mem exhaustion
for (i=0; i<vsize; i++) for (i=0; i<ptr->numutxos; i++)
len += NSPV_rwutxoresp(rwflag,&serialized[len],&(*ptrp)[i]); len += NSPV_rwutxoresp(rwflag,&serialized[len],&ptr->utxos[i]);
} }
len += iguana_rwnum(rwflag,&serialized[len],sizeof(ptr->total),&ptr->total); len += iguana_rwnum(rwflag,&serialized[len],sizeof(ptr->total),&ptr->total);
len += iguana_rwnum(rwflag,&serialized[len],sizeof(ptr->interest),&ptr->interest); len += iguana_rwnum(rwflag,&serialized[len],sizeof(ptr->interest),&ptr->interest);
@@ -459,7 +459,7 @@ void komodo_nSPVreq(CNode *pfrom,std::vector<uint8_t> request) // received a req
slen = NSPV_getaddressutxos(&U,coinaddr); slen = NSPV_getaddressutxos(&U,coinaddr);
response.resize(1 + slen); response.resize(1 + slen);
response[0] = NSPV_UTXOSRESP; response[0] = NSPV_UTXOSRESP;
if ( NSPV_rwutxosresp(1,&response[1],&U.numutxos,&U.utxos) == slen ) if ( NSPV_rwutxosresp(1,&response[1],&U.utxos) == slen )
{ {
pfrom->PushMessage("nSPV",response); pfrom->PushMessage("nSPV",response);
pfrom->lastutxos = timestamp; pfrom->lastutxos = timestamp;