Test
This commit is contained in:
@@ -708,22 +708,25 @@ char *komodo_issuemethod(char *userpass,char *method,char *params,uint16_t port)
|
|||||||
|
|
||||||
#include "rogue.h"
|
#include "rogue.h"
|
||||||
|
|
||||||
int32_t rogue_confirmed(uint256 txid)
|
int32_t rogue_sendrawtransaction(char *rawtx)
|
||||||
{
|
{
|
||||||
char params[512],*retstr; cJSON *retjson; int32_t numconfs = -1;
|
char params[512],*retstr; cJSON *retjson; int32_t numconfs = -1;
|
||||||
sprintf(params,"[\"%s\"]",txid.GetHex().c_str());
|
sprintf(params,"[\"%s\"]",rawtx);
|
||||||
if ( (retstr= komodo_issuemethod(USERPASS,"getrawtransaction",params,ROGUE_PORT)) != 0 )
|
if ( (retstr= komodo_issuemethod(USERPASS,"sendrawtransaction",params,ROGUE_PORT)) != 0 )
|
||||||
{
|
{
|
||||||
fprintf(stderr,"params.(%s) -> %s\n",params,retstr);
|
fprintf(stderr,"params.(%s) -> %s\n",params,retstr);
|
||||||
|
if ( is_hexstr(retstr,64) == 64 )
|
||||||
|
{
|
||||||
|
free(retstr);
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
if ( (retjson= cJSON_Parse(retstr)) != 0 )
|
if ( (retjson= cJSON_Parse(retstr)) != 0 )
|
||||||
{
|
{
|
||||||
numconfs = juint(retjson,"confirmations");
|
|
||||||
free_json(retjson);
|
free_json(retjson);
|
||||||
}
|
}
|
||||||
free(retstr);
|
free(retstr);
|
||||||
}
|
}
|
||||||
fprintf(stderr,"numconfs %d\n",numconfs);
|
return(-1);
|
||||||
return(numconfs);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void rogue_progress(struct rogue_state *rs,int32_t waitflag,uint64_t seed,char *keystrokes,int32_t num)
|
void rogue_progress(struct rogue_state *rs,int32_t waitflag,uint64_t seed,char *keystrokes,int32_t num)
|
||||||
@@ -732,23 +735,22 @@ void rogue_progress(struct rogue_state *rs,int32_t waitflag,uint64_t seed,char *
|
|||||||
memset(&txid,0,sizeof(txid));
|
memset(&txid,0,sizeof(txid));
|
||||||
if ( rs->guiflag != 0 && Gametxidstr[0] != 0 )
|
if ( rs->guiflag != 0 && Gametxidstr[0] != 0 )
|
||||||
{
|
{
|
||||||
if ( rs->keytxid != zeroid )
|
if ( rs->keystrokeshex != 0 )
|
||||||
{
|
{
|
||||||
if ( rogue_confirmed(rs->keytxid) < 2 )
|
if ( rogue_sendrawtransaction(rs->keystrokeshex) == 0 )
|
||||||
{
|
{
|
||||||
if ( waitflag == 0 )
|
if ( waitflag == 0 )
|
||||||
return(0);
|
return;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
while ( rogue_confirmed(rs->keytxid) < 2 )
|
while ( rogue_sendrawtransaction(rs->keystrokeshex) == 0 )
|
||||||
{
|
{
|
||||||
fprintf(stderr,"pre-rebroadcast\n");
|
fprintf(stderr,"pre-rebroadcast\n");
|
||||||
RelayTransaction(rs->keystrokestx);
|
|
||||||
sleep(10);
|
sleep(10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
rs->keytxid = zeroid;
|
free(rs->keystrokeshex), rs->keystrokeshex = 0;
|
||||||
}
|
}
|
||||||
for (i=0; i<num; i++)
|
for (i=0; i<num; i++)
|
||||||
sprintf(&hexstr[i<<1],"%02x",keystrokes[i]&0xff);
|
sprintf(&hexstr[i<<1],"%02x",keystrokes[i]&0xff);
|
||||||
@@ -777,27 +779,21 @@ void rogue_progress(struct rogue_state *rs,int32_t waitflag,uint64_t seed,char *
|
|||||||
{
|
{
|
||||||
if ( (hexstr= jstr(retjson,"hex")) != 0 )
|
if ( (hexstr= jstr(retjson,"hex")) != 0 )
|
||||||
{
|
{
|
||||||
if ( DecodeHexTx(tx,rawtx) != 0 )
|
if ( rs->keystrokeshex != 0 )
|
||||||
{
|
free(rs->keystrokeshex);
|
||||||
txid = juint256(retjson,"txid");
|
rs->keystrokeshex = (char *)malloc(strlen(hexstr)+1);
|
||||||
if ( tx.GetHash() == txid )
|
strcpy(rs->keystrokeshex,hexstr);
|
||||||
{
|
fprintf(stderr,"set keystrokestx <- %s\n",txid.GetHex().c_str());
|
||||||
rs->keystrokestx = tx;
|
|
||||||
rs->keytxid = txid;
|
|
||||||
fprintf(stderr,"set keystrokestx <- %s\n",txid.GetHex().c_str());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
free_json(retjson);
|
free_json(retjson);
|
||||||
}
|
}
|
||||||
free(retstr);
|
free(retstr);
|
||||||
}
|
}
|
||||||
if ( waitflag != 0 && rs->keytxid != zeroid )
|
if ( waitflag != 0 && rs->keystrokeshex != 0 )
|
||||||
{
|
{
|
||||||
while ( rogue_confirmed(rs->keytxid) < 2 )
|
while ( rogue_sendrawtransaction(rs->keystrokeshex) == 0 )
|
||||||
{
|
{
|
||||||
fprintf(stderr,"post-rebroadcast\n");
|
fprintf(stderr,"post-rebroadcast\n");
|
||||||
RelayTransaction(rs->keystrokestx);
|
|
||||||
sleep(3);
|
sleep(3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -361,10 +361,8 @@ typedef union _bits256 bits256;
|
|||||||
|
|
||||||
struct rogue_state
|
struct rogue_state
|
||||||
{
|
{
|
||||||
uint256 keytxid;
|
|
||||||
CTransaction keystrokestx;
|
|
||||||
uint64_t seed;
|
uint64_t seed;
|
||||||
char *keystrokes;
|
char *keystrokes,*keystrokeshex;
|
||||||
uint32_t needflush,replaydone;
|
uint32_t needflush,replaydone;
|
||||||
int32_t numkeys,ind,num,guiflag,counter,sleeptime,playersize,restoring,lastnum;
|
int32_t numkeys,ind,num,guiflag,counter,sleeptime,playersize,restoring,lastnum;
|
||||||
struct rogue_player P;
|
struct rogue_player P;
|
||||||
|
|||||||
Reference in New Issue
Block a user