Move pMiningKey init out of StartRPCThreads
This commit decouples the pMiningKey initialization and shutdown from the RPC threads. `getwork` and `getblocktemplate` rely on pMiningKey, and can also be ran from the debug window in the UI even when the RPC server is not running. Solves issue #2706.
This commit is contained in:
parent
ba35ecc003
commit
d98bf10f23
4 changed files with 21 additions and 10 deletions
|
@ -30,10 +30,6 @@ using namespace boost;
|
|||
using namespace boost::asio;
|
||||
using namespace json_spirit;
|
||||
|
||||
// Key used by getwork/getblocktemplate miners.
|
||||
// Allocated in StartRPCThreads, free'd in StopRPCThreads
|
||||
CReserveKey* pMiningKey = NULL;
|
||||
|
||||
static std::string strRPCUserColonPass;
|
||||
|
||||
// These are created by StartRPCThreads, destroyed in StopRPCThreads
|
||||
|
@ -726,9 +722,6 @@ static void RPCAcceptHandler(boost::shared_ptr< basic_socket_acceptor<Protocol,
|
|||
|
||||
void StartRPCThreads()
|
||||
{
|
||||
// getwork/getblocktemplate mining rewards paid here:
|
||||
pMiningKey = new CReserveKey(pwalletMain);
|
||||
|
||||
strRPCUserColonPass = mapArgs["-rpcuser"] + ":" + mapArgs["-rpcpassword"];
|
||||
if ((mapArgs["-rpcpassword"] == "") ||
|
||||
(mapArgs["-rpcuser"] == mapArgs["-rpcpassword"]))
|
||||
|
@ -848,8 +841,6 @@ void StartRPCThreads()
|
|||
|
||||
void StopRPCThreads()
|
||||
{
|
||||
delete pMiningKey; pMiningKey = NULL;
|
||||
|
||||
if (rpc_io_service == NULL) return;
|
||||
|
||||
rpc_io_service->stop();
|
||||
|
|
|
@ -123,7 +123,9 @@ public:
|
|||
};
|
||||
|
||||
extern const CRPCTable tableRPC;
|
||||
extern CReserveKey* pMiningKey;
|
||||
|
||||
extern void InitRPCMining();
|
||||
extern void ShutdownRPCMining();
|
||||
|
||||
extern int64 nWalletUnlockTime;
|
||||
extern int64 AmountFromValue(const json_spirit::Value& value);
|
||||
|
|
|
@ -96,6 +96,7 @@ void Shutdown()
|
|||
RenameThread("bitcoin-shutoff");
|
||||
nTransactionsUpdated++;
|
||||
StopRPCThreads();
|
||||
ShutdownRPCMining();
|
||||
bitdb.Flush(false);
|
||||
StopNode();
|
||||
{
|
||||
|
@ -1081,6 +1082,8 @@ bool AppInit2(boost::thread_group& threadGroup)
|
|||
|
||||
StartNode(threadGroup);
|
||||
|
||||
// InitRPCMining is needed here so getwork/getblocktemplate in the GUI debug console works properly.
|
||||
InitRPCMining();
|
||||
if (fServer)
|
||||
StartRPCThreads();
|
||||
|
||||
|
|
|
@ -11,6 +11,21 @@
|
|||
using namespace json_spirit;
|
||||
using namespace std;
|
||||
|
||||
// Key used by getwork/getblocktemplate miners.
|
||||
// Allocated in InitRPCMining, free'd in ShutdownRPCMining
|
||||
static CReserveKey* pMiningKey = NULL;
|
||||
|
||||
void InitRPCMining()
|
||||
{
|
||||
// getwork/getblocktemplate mining rewards paid here:
|
||||
pMiningKey = new CReserveKey(pwalletMain);
|
||||
}
|
||||
|
||||
void ShutdownRPCMining()
|
||||
{
|
||||
delete pMiningKey; pMiningKey = NULL;
|
||||
}
|
||||
|
||||
Value getgenerate(const Array& params, bool fHelp)
|
||||
{
|
||||
if (fHelp || params.size() != 0)
|
||||
|
|
Loading…
Reference in a new issue