Browse Source

test

release/v0.1
jl777 9 years ago
parent
commit
32ff075111
  1. 4
      iguana/SuperNET.c
  2. 4
      iguana/iguana777.h
  3. 8
      iguana/iguana_accept.c
  4. 6
      iguana/iguana_instantdex.c
  5. 28
      iguana/iguana_msg.c
  6. 41
      iguana/iguana_payments.c
  7. 5
      iguana/iguana_peers.c
  8. 2
      iguana/iguana_tx.c

4
iguana/SuperNET.c

@ -486,7 +486,7 @@ int32_t iguana_send_supernet(struct iguana_info *coin,struct iguana_peer *addr,c
if ( 1 && jstr(json,"method") != 0 && strcmp("getpeers",jstr(json,"method")) != 0 )
printf("SUPERSEND -> (%s) (%s) delaymillis.%d datalen.%d checkc.%x\n",jprint(SuperNET_bits2json(&serialized[sizeof(struct iguana_msghdr)],datalen),1),addr->ipaddr,delaymillis,datalen,checkc);
if ( 0 && memcmp(destpub.bytes,GENESIS_PUBKEY.bytes,sizeof(destpub)) == 0 )
qlen = iguana_queue_send(coin,addr,delaymillis,serialized,"SuperNET",datalen,0,0);
qlen = iguana_queue_send(addr,delaymillis,serialized,"SuperNET",datalen,0,0);
else
{
if ( (cipher= SuperNET_ciphercalc(&ptr,&cipherlen,&privkey,&destpub,&serialized[sizeof(struct iguana_msghdr)],datalen,space2,sizeof(space2))) != 0 )
@ -500,7 +500,7 @@ int32_t iguana_send_supernet(struct iguana_info *coin,struct iguana_peer *addr,c
printf(" cant decrypt cipherlen.%d otherpriv.%llx pub.%llx\n",cipherlen,(long long)testpriv.txid,(long long)pubkey.txid);
printf("encrypted mypriv.%llx destpub.%llx\n",(long long)privkey.txid,(long long)destpub.txid);
} // else printf("decrypted\n");
qlen = iguana_queue_send(coin,addr,delaymillis,&cipher[-sizeof(struct iguana_msghdr)],"SuperNETb",cipherlen,0,0);
qlen = iguana_queue_send(addr,delaymillis,&cipher[-sizeof(struct iguana_msghdr)],"SuperNETb",cipherlen,0,0);
if ( ptr != 0 )
free(ptr);
}

4
iguana/iguana777.h

@ -414,7 +414,7 @@ struct iguana_peer
{
struct queueitem DL;
queue_t sendQ;
bits256 iphash,pubkey,persistent; uint32_t lastpersist;
bits256 iphash,pubkey,persistent; uint32_t lastpersist; uint8_t netmagic[4];
struct iguana_msgaddress A;
char ipaddr[64],lastcommand[16],coinstr[16],symbol[16];
uint64_t pingnonce,totalsent,totalrecv,ipbits; double pingtime,sendmillis,pingsum,getdatamillis;
@ -550,7 +550,7 @@ struct bitcoin_spend
int32_t iguana_verifypeer(struct iguana_info *coin,void *key,void *value,int32_t itemind,int32_t itemsize);
int32_t iguana_peermetrics(struct supernet_info *myinfo,struct iguana_info *coin);
void iguana_peersloop(void *arg);
int32_t iguana_queue_send(struct iguana_info *coin,struct iguana_peer *addr,int32_t delay,uint8_t *serialized,char *cmd,int32_t len,int32_t getdatablock,int32_t forceflag);
int32_t iguana_queue_send(struct iguana_peer *addr,int32_t delay,uint8_t *serialized,char *cmd,int32_t len,int32_t getdatablock,int32_t forceflag);
uint32_t iguana_rwiAddrind(struct iguana_info *coin,int32_t rwflag,struct iguana_iAddr *iA,uint32_t ind);
void iguana_connections(void *arg);
uint32_t iguana_possible_peer(struct iguana_info *coin,char *ip_port);

8
iguana/iguana_accept.c

@ -196,7 +196,7 @@ int32_t iguana_process_msgrequestQ(struct supernet_info *myinfo,struct iguana_in
if ( (addr= msg->addr) != 0 && (len= iguana_peerblockrequest(coin,coin->blockspace,(int32_t)(sizeof(coin->blockspace) - sizeof(struct iguana_msghdr)),0,msg->hash2,0)) > 0 )
{
//char str[65]; printf("msg Sendlen.%d block %s to %s\n",len,bits256_str(str,msg->hash2),addr->ipaddr);
iguana_queue_send(coin,addr,0,coin->blockspace,"block",len,0,0);
iguana_queue_send(addr,0,coin->blockspace,"block",len,0,0);
}
}
}
@ -210,7 +210,7 @@ int32_t iguana_process_msgrequestQ(struct supernet_info *myinfo,struct iguana_in
{
char str[65],str2[65];
if ( bits256_cmp(msg->hash2,checktxid) == 0 )
iguana_queue_send(coin,msg->addr,0,coin->blockspace,"block",len,0,0);
iguana_queue_send(msg->addr,0,coin->blockspace,"block",len,0,0);
else printf("checktxid mismatch (%s) != (%s)\n",bits256_str(str,msg->hash2),bits256_str(str2,checktxid));
}
}
@ -234,7 +234,7 @@ int32_t iguana_process_msgrequestQ(struct supernet_info *myinfo,struct iguana_in
{
//iguana_sethdr((void *)coin->blockspace,coin->chain->netmagic,"quote",&coin->blockspace[sizeof(struct iguana_msghdr)],len);
//iguana_msgparser(coin,msg->addr,0,0,0,(void *)coin->blockspace,&coin->blockspace[sizeof(struct iguana_msghdr)],len);
iguana_queue_send(coin,msg->addr,0,coin->blockspace,"quote",len,0,0);
iguana_queue_send(msg->addr,0,coin->blockspace,"quote",len,0,0);
}
}
}
@ -310,7 +310,7 @@ int32_t iguana_peerhdrrequest(struct iguana_info *coin,uint8_t *serialized,int32
}
}
if ( flag != 0 )
retval = iguana_queue_send(coin,addr,0,serialized,"headers",len,0,0);
retval = iguana_queue_send(addr,0,serialized,"headers",len,0,0);
//printf("hdrs request retval.%d len.%d\n",retval,len);
} //else printf("couldnt find header\n");
return(retval);

6
iguana/iguana_instantdex.c

@ -429,7 +429,7 @@ char *instantdex_sendcmd(struct supernet_info *myinfo,struct instantdex_offer *o
memcpy(&serialized[sizeof(struct iguana_msghdr)],(uint8_t *)msg,msg->sig.allocsize);
if ( (coin= iguana_coinfind("BTCD")) != 0 )//&& (max= coin->peers.numranked) > 0 )
{
iguana_queue_send(coin,addr,0,serialized,"InstantDEX",msg->sig.allocsize,0,0);
iguana_queue_send(addr,0,serialized,"InstantDEX",msg->sig.allocsize,0,0);
/*r = (rand() % max);
for (i=0; i<max; i++)
{
@ -925,7 +925,7 @@ int32_t instantdex_inv2data(struct supernet_info *myinfo,struct iguana_info *coi
printf(" nhashes\n");
len = iguana_inv2packet(serialized,sizeof(serialized),MSG_QUOTE,hashes,n);
//printf("Send inv2[%d] -> (%s)\n",n,addr->ipaddr);
return(iguana_queue_send(coin,addr,0,serialized,"inv2",len,0,0));
return(iguana_queue_send(addr,0,serialized,"inv2",len,0,0));
}
return(-1);
}
@ -1038,7 +1038,7 @@ void instantdex_propagate(struct supernet_info *myinfo,struct exchange_info *exc
if ( (addr= coin->peers.ranked[i]) != 0 && addr->supernet != 0 && addr->usock >= 0 && GETBIT(ap->peerhas,addr->addrind) == 0 && strcmp("0.0.0.0",addr->ipaddr) != 0 && strcmp("127.0.0.1",addr->ipaddr) != 0 )
{
char str[65]; printf("send quote.(%s) <- [%d] %s %llx\n",addr->ipaddr,len,bits256_str(str,orderhash),(long long)orderhash.txid);
iguana_queue_send(coin,addr,0,serialized,"quote",len,0,0);
iguana_queue_send(addr,0,serialized,"quote",len,0,0);
}
}
}

28
iguana/iguana_msg.c

@ -148,7 +148,7 @@ int32_t iguana_rwblockhash(int32_t rwflag,uint8_t *serialized,uint32_t *nVersion
}
//printf("iguana_request_data.%d %s ht.%d\n",n,bits256_str(hashes[0]),iguana_height(coin,hashes[0]));
addr->getdatamillis = milliseconds();
len = iguana_queue_send(coin,addr,0,serialized,"getdata",len,iguana_height(coin,hashes[n-1]),forceflag);
len = iguana_queue_send(addr,0,serialized,"getdata",len,iguana_height(coin,hashes[n-1]),forceflag);
return(len);
}*/
@ -164,7 +164,7 @@ void iguana_gotversion(struct iguana_info *coin,struct iguana_peer *addr,struct
addr->height = vers->nStartingHeight;
addr->relayflag = 1;
iguana_gotdata(coin,addr,addr->height);
iguana_queue_send(coin,addr,0,serialized,"verack",0,0,0);
iguana_queue_send(addr,0,serialized,"verack",0,0,0);
//iguana_send_ping(coin,addr);
}
else if ( (vers->nServices & (1<<7)) == 0 )
@ -181,7 +181,7 @@ void iguana_gotversion(struct iguana_info *coin,struct iguana_peer *addr,struct
addr->dead = 1;
} else coin->longestchain = vers->nStartingHeight;
}
iguana_queue_send(coin,addr,0,serialized,"getaddr",0,0,0);
iguana_queue_send(addr,0,serialized,"getaddr",0,0,0);
}
int32_t iguana_send_version(struct iguana_info *coin,struct iguana_peer *addr,uint64_t myservices)
@ -196,7 +196,7 @@ int32_t iguana_send_version(struct iguana_info *coin,struct iguana_peer *addr,ui
msg.nStartingHeight = coin->blocks.hwmchain.height;
iguana_gotdata(coin,addr,msg.nStartingHeight);
len = iguana_rwversion(1,&serialized[sizeof(struct iguana_msghdr)],&msg,addr->ipaddr,0);
return(iguana_queue_send(coin,addr,0,serialized,"version",len,0,1));
return(iguana_queue_send(addr,0,serialized,"version",len,0,1));
}
int32_t iguana_send_VPNversion(struct iguana_info *coin,struct iguana_peer *addr,uint64_t myservices)
@ -210,7 +210,7 @@ int32_t iguana_send_VPNversion(struct iguana_info *coin,struct iguana_peer *addr
sprintf(msg.strSubVer,"/Satoshi:0.11.99/");
msg.nStartingHeight = coin->blocks.hwmchain.height;
len = iguana_rwversion(1,&serialized[sizeof(struct iguana_msghdr)],(void *)&msg,addr->ipaddr,117);
return(iguana_queue_send(coin,addr,0,serialized,"version",len,0,1));
return(iguana_queue_send(addr,0,serialized,"version",len,0,1));
}
void iguana_gotverack(struct iguana_info *coin,struct iguana_peer *addr)
@ -220,7 +220,7 @@ void iguana_gotverack(struct iguana_info *coin,struct iguana_peer *addr)
{
//printf("gotverack from %s\n",addr->ipaddr);
addr->A.nTime = (uint32_t)time(NULL);
iguana_queue_send(coin,addr,0,serialized,"getaddr",0,0,0);
iguana_queue_send(addr,0,serialized,"getaddr",0,0,0);
if ( addr->supernet != 0 )
{
printf("send getpeers to %s\n",addr->ipaddr);
@ -255,7 +255,7 @@ void iguana_gotping(struct iguana_info *coin,struct iguana_peer *addr,uint64_t n
len = iguana_rwnum(1,&serialized[sizeof(struct iguana_msghdr)],sizeof(uint64_t),&nonce);
if ( memcmp(data,&serialized[sizeof(struct iguana_msghdr)],sizeof(nonce)) != 0 )
printf("ping ser error %llx != %llx\n",(long long)nonce,*(long long *)data);
iguana_queue_send(coin,addr,0,serialized,"pong",len,0,0);
iguana_queue_send(addr,0,serialized,"pong",len,0,0);
if ( addr->supernet != 0 )
{
iguana_send_supernet(coin,addr,SUPERNET_GETPEERSTR,0);
@ -272,11 +272,11 @@ int32_t iguana_send_ping(struct iguana_info *coin,struct iguana_peer *addr)
addr->pingtime = (uint32_t)time(NULL);
}
//printf("pingnonce.%llx from (%s)\n",(long long)nonce,addr->ipaddr);
iguana_queue_send(coin,addr,0,serialized,"getaddr",0,0,0);
iguana_queue_send(addr,0,serialized,"getaddr",0,0,0);
len = iguana_rwnum(1,&serialized[sizeof(struct iguana_msghdr)],sizeof(uint64_t),&nonce);
if ( addr->supernet != 0 )
iguana_send_supernet(coin,addr,SUPERNET_GETPEERSTR,0);
return(iguana_queue_send(coin,addr,0,serialized,"ping",len,0,0));
return(iguana_queue_send(addr,0,serialized,"ping",len,0,0));
}
int32_t iguana_send_ConnectTo(struct iguana_info *coin,struct iguana_peer *addr)
@ -285,7 +285,7 @@ int32_t iguana_send_ConnectTo(struct iguana_info *coin,struct iguana_peer *addr)
r = rand();
len = iguana_rwnum(1,&serialized[sizeof(struct iguana_msghdr)],sizeof(uint32_t),&r);
len += iguana_rwnum(1,&serialized[sizeof(struct iguana_msghdr)+len],sizeof(port),&port);
return(iguana_queue_send(coin,addr,0,serialized,"ConnectTo",len,0,0));
return(iguana_queue_send(addr,0,serialized,"ConnectTo",len,0,0));
}
void iguana_gotpong(struct iguana_info *coin,struct iguana_peer *addr,uint64_t nonce)
@ -483,7 +483,7 @@ int32_t iguana_send_hashes(struct iguana_info *coin,char *command,struct iguana_
nVersion = 0;
len = iguana_rwblockhash(1,&serialized[sizeof(struct iguana_msghdr)],&nVersion,&varint,hashes,&stophash);
//printf("%s send_hashes.%d %s height.%d\n",addr->ipaddr,n,bits256_str(hashes[0]),iguana_height(coin,hashes[0]));
retval = iguana_queue_send(coin,addr,0,serialized,command,len,0,0);
retval = iguana_queue_send(addr,0,serialized,command,len,0,0);
myfree(serialized,size);
} else printf("iguana_send_hashes: unexpected n.%d\n",n);
return(retval);
@ -728,7 +728,7 @@ int32_t iguana_msgparser(struct iguana_info *coin,struct iguana_peer *addr,struc
iguana_gotpong(coin,addr,nonce);
addr->msgcounts.pong++;
}
iguana_queue_send(coin,addr,0,serialized,"getaddr",0,0,0);
iguana_queue_send(addr,0,serialized,"getaddr",0,0,0);
}
}
}
@ -775,7 +775,7 @@ int32_t iguana_msgparser(struct iguana_info *coin,struct iguana_peer *addr,struc
}
printf("x.%d\n",(int32_t)x);
}
retval = iguana_queue_send(coin,addr,0,addr->blockspace,"addr",sendlen,0,0);
retval = iguana_queue_send(addr,0,addr->blockspace,"addr",sendlen,0,0);
}
addr->msgcounts.getaddr++;
}
@ -814,7 +814,7 @@ int32_t iguana_msgparser(struct iguana_info *coin,struct iguana_peer *addr,struc
}
else if ( addr != 0 && strcmp(H->command,"ConnectTo") == 0 )
{
iguana_queue_send(coin,addr,0,serialized,"getaddr",0,0,0);
iguana_queue_send(addr,0,serialized,"getaddr",0,0,0);
len = 6;
}
else if ( strcmp(H->command,"reject") == 0 )

41
iguana/iguana_payments.c

@ -336,7 +336,7 @@ bits256 iguana_sendrawtransaction(struct supernet_info *myinfo,struct iguana_inf
for (i=0; i<8; i++)
{
if ( (addr= coin->peers.ranked[i]) != 0 && addr->dead == 0 && addr->usock >= 0 )
iguana_queue_send(coin,addr,0,serialized,"tx",len,0,0);
iguana_queue_send(addr,0,serialized,"tx",len,0,0);
}
free(serialized);
txid = bits256_doublesha256(0,&serialized[sizeof(struct iguana_msghdr)],len);
@ -406,11 +406,11 @@ void iguana_unspentslock(struct supernet_info *myinfo,struct iguana_info *coin,c
}
}
char *iguana_rawtxissue(struct supernet_info *myinfo,struct iguana_info *coin,cJSON **vinsp,uint32_t locktime,uint64_t satoshis,char *changeaddr,uint64_t txfee,cJSON *addresses,int32_t minconf,char *spendscriptstr)
char *iguana_rawtxissue(struct supernet_info *myinfo,char *symbol,cJSON **vinsp,uint32_t locktime,uint64_t satoshis,char *changeaddr,uint64_t txfee,cJSON *addresses,int32_t minconf,char *spendscriptstr)
{
struct rawtx_queue *ptr; struct iguana_peer *addr; uint8_t spendscript[IGUANA_MAXSCRIPTSIZE]; int32_t i,n,spendlen,delay = 0; cJSON *reqjson,*valsobj,*txobj = 0; uint32_t rawtxtag; char *rawtx = 0; double expiration;
struct rawtx_queue *ptr; struct iguana_peer *addr; uint8_t spendscript[IGUANA_MAXSCRIPTSIZE]; int32_t i,j,n,spendlen,delay = 0; cJSON *reqjson,*valsobj,*txobj = 0; uint32_t rawtxtag; char *rawtx = 0; double expiration; struct iguana_info *coin;
*vinsp = 0;
if ( coin->VALIDATENODE != 0 || coin->RELAYNODE != 0 )
if ( (coin= iguana_coinfind(symbol)) != 0 && (coin->VALIDATENODE != 0 || coin->RELAYNODE != 0) )
{
if ( (txobj= bitcoin_txcreate(coin,locktime)) != 0 )
{
@ -426,7 +426,7 @@ char *iguana_rawtxissue(struct supernet_info *myinfo,struct iguana_info *coin,cJ
}
if ( txobj != 0 )
free_json(txobj);
if ( (n= coin->peers.numranked) > 0 )
if ( 1 )
{
reqjson = cJSON_CreateObject();
jaddstr(reqjson,"agent","iguana");
@ -440,7 +440,7 @@ char *iguana_rawtxissue(struct supernet_info *myinfo,struct iguana_info *coin,cJ
OS_randombytes((uint8_t *)&rawtxtag,sizeof(rawtxtag));
jaddnum(reqjson,"rawtxtag",rawtxtag);
valsobj = cJSON_CreateObject();
jaddstr(valsobj,"coin",coin->symbol);
jaddstr(valsobj,"coin",symbol);
jadd64bits(valsobj,"amount",satoshis);
jadd64bits(valsobj,"txfee",txfee);
jaddnum(valsobj,"minconf",minconf);
@ -448,11 +448,17 @@ char *iguana_rawtxissue(struct supernet_info *myinfo,struct iguana_info *coin,cJ
jadd(reqjson,"vals",valsobj);
//{\"agent\":\"iguana\",\"method\":\"rawtx\",\"changeaddr\":\"RRyBxbrAPRUBCUpiJgJZYrkxqrh8x5ta9Z\",\"addresses\":[\"RRyBxbrAPRUBCUpiJgJZYrkxqrh8x5ta9Z\"],\"vals\":{\"coin\":\"BTCD\",\"amount\":\"10000000\"},\"spendscriptstr\":\"76a914b7128d2ee837cf03e30a2c0e3e0181f7b9669bb688ac\"}
expiration = OS_milliseconds() + 10000;
for (i=0; i<n; i++)
for (i=0; i<IGUANA_MAXCOINS; i++)
{
if ( (addr= coin->peers.ranked[i]) != 0 && addr->supernet != 0 && addr->usock >= 0 )
if ( (coin= Coins[i]) != 0 && (n= coin->peers.numranked) > 0 )
{
iguana_send_supernet(coin,addr,jprint(reqjson,0),delay);
for (j=0; j<n; j++)
{
if ( (addr= coin->peers.ranked[j]) != 0 && addr->supernet != 0 && addr->usock >= 0 )
{
iguana_send_supernet(coin,addr,jprint(reqjson,0),delay);
}
}
}
}
free_json(reqjson);
@ -497,7 +503,7 @@ char *sendtoaddress(struct supernet_info *myinfo,struct iguana_info *coin,char *
bitcoin_addr2rmd160(&addrtype,rmd160,coinaddr);
spendlen = bitcoin_standardspend(spendscript,0,rmd160);
init_hexbytes_noT(spendscriptstr,spendscript,spendlen);
if ( (rawtx= iguana_rawtxissue(myinfo,coin,&vins,locktime,satoshis,coin->changeaddr,txfee,addresses,minconf,spendscriptstr)) != 0 )
if ( (rawtx= iguana_rawtxissue(myinfo,coin->symbol,&vins,locktime,satoshis,coin->changeaddr,txfee,addresses,minconf,spendscriptstr)) != 0 )
{
if ( (signedtx= iguana_signrawtx(myinfo,coin,&signedtxid,&completed,vins,rawtx)) != 0 )
{
@ -529,13 +535,13 @@ char *sendtoaddress(struct supernet_info *myinfo,struct iguana_info *coin,char *
return(clonestr("{\"error\":\"need address and amount\"}"));
}
char *iguana_createrawtx(struct supernet_info *myinfo,struct iguana_info *coin,cJSON **vinsp,uint32_t locktime,uint64_t satoshis,char *spendscriptstr,char *changeaddr,int64_t txfee,int32_t minconf,cJSON *addresses)
char *iguana_createrawtx(struct supernet_info *myinfo,char *symbol,cJSON **vinsp,uint32_t locktime,uint64_t satoshis,char *spendscriptstr,char *changeaddr,int64_t txfee,int32_t minconf,cJSON *addresses)
{
cJSON *retjson; char *signedtx,*rawtx=0; bits256 signedtxid; int32_t completed;
cJSON *retjson; struct iguana_info *coin; char *signedtx,*rawtx=0; bits256 signedtxid; int32_t completed;
*vinsp = 0;
if ( (rawtx= iguana_rawtxissue(myinfo,coin,vinsp,locktime,satoshis,changeaddr,txfee,addresses,minconf,spendscriptstr)) != 0 )
if ( (rawtx= iguana_rawtxissue(myinfo,symbol,vinsp,locktime,satoshis,changeaddr,txfee,addresses,minconf,spendscriptstr)) != 0 )
{
if ( (signedtx= iguana_signrawtx(myinfo,coin,&signedtxid,&completed,*vinsp,rawtx)) != 0 )
if ( (coin= iguana_coinfind(symbol)) != 0 && (signedtx= iguana_signrawtx(myinfo,coin,&signedtxid,&completed,*vinsp,rawtx)) != 0 )
{
iguana_unspentslock(myinfo,coin,*vinsp);
retjson = cJSON_CreateObject();
@ -559,14 +565,13 @@ STRING_ARRAY_OBJ_STRING(iguana,rawtx,changeaddr,addresses,vals,spendscriptstr)
cJSON *vins=0,*retjson; char *rawtx=0,*symbol=0; int64_t txfee,satoshis; uint32_t locktime,minconf;
printf("RAWTX changeaddr.%s\n",changeaddr==0?"":changeaddr);
retjson = cJSON_CreateObject();
if ( spendscriptstr != 0 && spendscriptstr[0] != 0 && (symbol= jstr(vals,"coin")) != 0 && (coin= iguana_coinfind(symbol)) != 0 )
if ( spendscriptstr != 0 && spendscriptstr[0] != 0 && (symbol= jstr(vals,"coin")) != 0 )
{
minconf = juint(vals,"minconf");
locktime = juint(vals,"locktime");
satoshis = j64bits(vals,"amount");
if ( (txfee= j64bits(vals,"txfee")) == 0 )
txfee = coin->txfee;
if ( (rawtx= iguana_createrawtx(myinfo,coin,&vins,locktime,satoshis,spendscriptstr,changeaddr,txfee,minconf,addresses)) != 0 )
txfee = j64bits(vals,"txfee");
if ( (rawtx= iguana_createrawtx(myinfo,symbol,&vins,locktime,satoshis,spendscriptstr,changeaddr,txfee,minconf,addresses)) != 0 )
{
jaddnum(retjson,"rawtxtag",(uint32_t)juint(json,"rawtxtag"));
jaddstr(retjson,"rawtx",rawtx);

5
iguana/iguana_peers.c

@ -455,7 +455,7 @@ int32_t iguana_send(struct iguana_info *coin,struct iguana_peer *addr,uint8_t *s
return(len);
}
int32_t iguana_queue_send(struct iguana_info *coin,struct iguana_peer *addr,int32_t delay,uint8_t *serialized,char *cmd,int32_t len,int32_t getdatablock,int32_t forceflag)
int32_t iguana_queue_send(struct iguana_peer *addr,int32_t delay,uint8_t *serialized,char *cmd,int32_t len,int32_t getdatablock,int32_t forceflag)
{
struct iguana_packet *packet; int32_t datalen;
if ( addr == 0 )
@ -470,7 +470,7 @@ int32_t iguana_queue_send(struct iguana_info *coin,struct iguana_peer *addr,int3
//return(iguana_send(coin,addr,serialized,len));
}
if ( (datalen= iguana_sethdr((void *)serialized,coin->chain->netmagic,cmd,&serialized[sizeof(struct iguana_msghdr)],len)) < 0 )
if ( (datalen= iguana_sethdr((void *)serialized,addr->netmagic,cmd,&serialized[sizeof(struct iguana_msghdr)],len)) < 0 )
return(-1);
if ( strcmp("getaddr",cmd) == 0 && time(NULL) < addr->lastgotaddr+300 )
return(0);
@ -1026,6 +1026,7 @@ int32_t iguana_vinsfname(struct iguana_info *coin,int32_t roflag,char *fname,int
int32_t iguana_peerslotinit(struct iguana_info *coin,struct iguana_peer *addr,int32_t slotid,uint64_t ipbits)
{
char fname[1024];
memcpy(addr->netmagic,coin->chain->netmagic,4);
addr->ipbits = ipbits;
addr->addrind = slotid;
iguana_voutsfname(coin,0,fname,addr->addrind);

2
iguana/iguana_tx.c

@ -289,7 +289,7 @@ int32_t iguana_peerblockrequest(struct iguana_info *coin,uint8_t *blockspace,int
if ( (checklen= iguana_gentxarray(coin,&RAWMEM,&txdata,&checklen,&blockspace[sizeof(struct iguana_msghdr)],total)) != total )
printf("Error reconstructing txarray checklen.%d total.%d\n",checklen,total);
}
return(iguana_queue_send(coin,addr,0,blockspace,"block",total,0,0));
return(iguana_queue_send(addr,0,blockspace,"block",total,0,0));
}
else
{

Loading…
Cancel
Save