X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Finit.cpp;h=6c454fe4b833d9e5fdfa61a6af4451fccb4633e4;hb=ef17ac0211ddd486127e1f94756fbb3fd704a9b4;hp=2f237c0d7d3b0e80ef814d2335748b7488bcb61c;hpb=db1eaec482383385156b3e7cb6b2baa9454975f0;p=novacoin.git diff --git a/src/init.cpp b/src/init.cpp index 2f237c0..6c454fe 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -8,6 +8,7 @@ #include "net.h" #include "init.h" #include "util.h" +#include "ipcollector.h" #include "ui_interface.h" #include "checkpoints.h" #include @@ -37,7 +38,6 @@ enum Checkpoints::CPMode CheckpointsMode; // Ping and address broadcast intervals extern int64_t nPingInterval; -extern int64_t nBroadcastInterval; extern int64_t nReserveBalance; ////////////////////////////////////////////////////////////////////////////// @@ -89,6 +89,7 @@ void Shutdown(void* parg) nTransactionsUpdated++; // CTxDB().Close(); bitdb.Flush(false); + StopRPCServer(); StopNode(); bitdb.Flush(true); boost::filesystem::remove(GetPidFile()); @@ -292,6 +293,7 @@ std::string HelpMessage() " -rpcconnect= " + _("Send commands to node running on (default: 127.0.0.1)") + "\n" + " -blocknotify= " + _("Execute command when the best block changes (%s in cmd is replaced by block hash)") + "\n" + " -walletnotify= " + _("Execute command when a wallet transaction changes (%s in cmd is replaced by TxID)") + "\n" + + " -peercollector= " + _("Execute command to collect peer addresses") + "\n" + " -confchange " + _("Require a confirmations for change (default: 0)") + "\n" + " -upgradewallet " + _("Upgrade wallet to latest format") + "\n" + " -keypool= " + _("Set key pool size to (default: 100)") + "\n" + @@ -306,13 +308,7 @@ std::string HelpMessage() "\n" + _("Block creation options:") + "\n" + " -blockminsize= " + _("Set minimum block size in bytes (default: 0)") + "\n" + " -blockmaxsize= " + _("Set maximum block size in bytes (default: 250000)") + "\n" + - " -blockprioritysize= " + _("Set maximum size of high-priority/low-fee transactions in bytes (default: 27000)") + "\n" + - - "\n" + _("SSL options: (see the Bitcoin Wiki for SSL setup instructions)") + "\n" + - " -rpcssl " + _("Use OpenSSL (https) for JSON-RPC connections") + "\n" + - " -rpcsslcertificatechainfile= " + _("Server certificate file (default: server.cert)") + "\n" + - " -rpcsslprivatekeyfile= " + _("Server private key (default: server.pem)") + "\n" + - " -rpcsslciphers= " + _("Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH)") + "\n"; + " -blockprioritysize= " + _("Set maximum size of high-priority/low-fee transactions in bytes (default: 27000)") + "\n"; return strUsage; } @@ -374,13 +370,12 @@ bool AppInit2() // ********************************************************* Step 2: parameter interactions - nNodeLifespan = (unsigned int)(GetArg("-addrlifespan", 7)); + nNodeLifespan = GetArgUInt("-addrlifespan", 7); fUseFastIndex = GetBoolArg("-fastindex", true); fUseMemoryLog = GetBoolArg("-memorylog", true); // Ping and address broadcast intervals nPingInterval = max(10 * 60, GetArg("-keepalive", 30 * 60)); - nBroadcastInterval = max(6 * nOneHour, GetArg("-addrsetlifetime", nOneDay)); CheckpointsMode = Checkpoints::STRICT; std::string strCpMode = GetArg("-cppolicy", "strict"); @@ -586,7 +581,7 @@ bool AppInit2() return false; } - if (filesystem::exists(GetDataDir() / strWalletFileName)) + if (boost::filesystem::exists(GetDataDir() / strWalletFileName)) { CDBEnv::VerifyResult r = bitdb.Verify(strWalletFileName, CWalletDB::Recover); if (r == CDBEnv::RECOVER_OK) @@ -778,8 +773,7 @@ bool AppInit2() strLoadError = _("Error loading block database"); break; } - } catch(std::exception &e) { - (void)e; + } catch(const std::exception&) { strLoadError = _("Error opening block database"); break; } @@ -900,7 +894,14 @@ bool AppInit2() if (!pwalletMain->GetKeyFromPool(newDefaultKey, false)) strErrors << _("Cannot initialize keypool") << "\n"; pwalletMain->SetDefaultKey(newDefaultKey); - if (!pwalletMain->SetAddressBookName(CBitcoinAddress(pwalletMain->vchDefaultKey.GetID()), "")) + if (!pwalletMain->SetAddressBookName(pwalletMain->vchDefaultKey.GetID(), "")) + strErrors << _("Cannot write default address") << "\n"; + + CMalleableKeyView keyView = pwalletMain->GenerateNewMalleableKey(); + CMalleableKey mKey; + if (!pwalletMain->GetMalleableKey(keyView, mKey)) + strErrors << _("Unable to generate new malleable key"); + if (!pwalletMain->SetAddressBookName(CBitcoinAddress(keyView.GetMalleablePubKey()), "")) strErrors << _("Cannot write default address") << "\n"; } @@ -943,13 +944,13 @@ bool AppInit2() StartShutdown(); } - filesystem::path pathBootstrap = GetDataDir() / "bootstrap.dat"; - if (filesystem::exists(pathBootstrap)) { + boost::filesystem::path pathBootstrap = GetDataDir() / "bootstrap.dat"; + if (boost::filesystem::exists(pathBootstrap)) { uiInterface.InitMessage(_("Importing bootstrap blockchain data file.")); FILE *file = fopen(pathBootstrap.string().c_str(), "rb"); if (file) { - filesystem::path pathBootstrapOld = GetDataDir() / "bootstrap.dat.old"; + boost::filesystem::path pathBootstrapOld = GetDataDir() / "bootstrap.dat.old"; LoadExternalBlockFile(file); RenameOver(pathBootstrap, pathBootstrapOld); } @@ -988,9 +989,13 @@ bool AppInit2() InitError(_("Error: could not start node")); if (fServer) - NewThread(ThreadRPCServer, NULL); + StartRPCServer(); - // ********************************************************* Step 12: finished + // ********************************************************* Step 13: IP collection thread + strCollectorCommand = GetArg("-peercollector", ""); + if (!fTestNet && strCollectorCommand != "") + NewThread(ThreadIPCollector, NULL); + // ********************************************************* Step 14: finished uiInterface.InitMessage(_("Done loading")); printf("Done loading\n"); @@ -1004,7 +1009,7 @@ bool AppInit2() #if !defined(QT_GUI) // Loop until process is exit()ed from shutdown() function, // called from ThreadRPCServer thread when a "stop" command is received. - while (1) + for ( ; ; ) Sleep(5000); #endif