This commit is contained in:
jl777
2019-02-27 03:15:49 -11:00
parent cc08fcbf12
commit 16341e10bc
2 changed files with 22 additions and 28 deletions

View File

@@ -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);
} }
} }

View File

@@ -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;