diff --git a/src/cc/rogue/main.c b/src/cc/rogue/main.c index d814bcbd3..80d572a72 100644 --- a/src/cc/rogue/main.c +++ b/src/cc/rogue/main.c @@ -708,22 +708,25 @@ char *komodo_issuemethod(char *userpass,char *method,char *params,uint16_t port) #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; - sprintf(params,"[\"%s\"]",txid.GetHex().c_str()); - if ( (retstr= komodo_issuemethod(USERPASS,"getrawtransaction",params,ROGUE_PORT)) != 0 ) + sprintf(params,"[\"%s\"]",rawtx); + if ( (retstr= komodo_issuemethod(USERPASS,"sendrawtransaction",params,ROGUE_PORT)) != 0 ) { fprintf(stderr,"params.(%s) -> %s\n",params,retstr); + if ( is_hexstr(retstr,64) == 64 ) + { + free(retstr); + return(0); + } if ( (retjson= cJSON_Parse(retstr)) != 0 ) { - numconfs = juint(retjson,"confirmations"); free_json(retjson); } free(retstr); } - fprintf(stderr,"numconfs %d\n",numconfs); - return(numconfs); + return(-1); } 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)); 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 ) - return(0); + return; else { - while ( rogue_confirmed(rs->keytxid) < 2 ) + while ( rogue_sendrawtransaction(rs->keystrokeshex) == 0 ) { fprintf(stderr,"pre-rebroadcast\n"); - RelayTransaction(rs->keystrokestx); sleep(10); } } } - rs->keytxid = zeroid; + free(rs->keystrokeshex), rs->keystrokeshex = 0; } for (i=0; ikeystrokestx = tx; - rs->keytxid = txid; - fprintf(stderr,"set keystrokestx <- %s\n",txid.GetHex().c_str()); - } - } + if ( rs->keystrokeshex != 0 ) + free(rs->keystrokeshex); + rs->keystrokeshex = (char *)malloc(strlen(hexstr)+1); + strcpy(rs->keystrokeshex,hexstr); + fprintf(stderr,"set keystrokestx <- %s\n",txid.GetHex().c_str()); } free_json(retjson); } 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"); - RelayTransaction(rs->keystrokestx); sleep(3); } } diff --git a/src/cc/rogue/rogue.h b/src/cc/rogue/rogue.h index e5ea51771..e5422c3c2 100644 --- a/src/cc/rogue/rogue.h +++ b/src/cc/rogue/rogue.h @@ -361,10 +361,8 @@ typedef union _bits256 bits256; struct rogue_state { - uint256 keytxid; - CTransaction keystrokestx; uint64_t seed; - char *keystrokes; + char *keystrokes,*keystrokeshex; uint32_t needflush,replaydone; int32_t numkeys,ind,num,guiflag,counter,sleeptime,playersize,restoring,lastnum; struct rogue_player P;