X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Finit.cpp;h=586e3dab4bba4b62a77b2347bea4ac166a3e8e2e;hb=6ec9d30905e8df77e60d0195074920271abb977a;hp=647bf4447de28d154c672658e598ab07d63e7ea7;hpb=4538e45c46d3829a21aed7685e6fbac7e8aafad3;p=novacoin.git
diff --git a/src/init.cpp b/src/init.cpp
index 647bf44..586e3da 100644
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -1,7 +1,7 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2012 The Bitcoin developers
// Distributed under the MIT/X11 software license, see the accompanying
-// file license.txt or http://www.opensource.org/licenses/mit-license.php.
+// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#include "headers.h"
#include "db.h"
#include "bitcoinrpc.h"
@@ -42,6 +42,17 @@ void ExitTimeout(void* parg)
#endif
}
+void StartShutdown()
+{
+#ifdef QT_GUI
+ // ensure we leave the Qt main loop for a clean GUI exit (Shutdown() is called in bitcoin.cpp afterwards)
+ QueueShutdown();
+#else
+ // Without UI, Shutdown() can simply be started in a new thread
+ CreateThread(Shutdown, NULL);
+#endif
+}
+
void Shutdown(void* parg)
{
static CCriticalSection cs_Shutdown;
@@ -67,7 +78,10 @@ void Shutdown(void* parg)
Sleep(50);
printf("Bitcoin exiting\n\n");
fExit = true;
+#ifndef QT_GUI
+ // ensure non UI client get's exited here, but let Bitcoin-Qt reach return 0; in bitcoin.cpp
exit(0);
+#endif
}
else
{
@@ -177,6 +191,7 @@ bool AppInit2(int argc, char* argv[])
" -min \t\t " + _("Start minimized") + "\n" +
" -splash \t\t " + _("Show splash screen on startup (default: 1)") + "\n" +
" -datadir=
\t\t " + _("Specify data directory") + "\n" +
+ " -dbcache= \t\t " + _("Set database cache size in megabytes (default: 25)") + "\n" +
" -timeout= \t " + _("Specify connection timeout (in milliseconds)") + "\n" +
" -proxy= \t " + _("Connect through socks4 proxy") + "\n" +
" -dns \t " + _("Allow DNS lookups for addnode and connect") + "\n" +
@@ -221,6 +236,7 @@ bool AppInit2(int argc, char* argv[])
" -rpcallowip= \t\t " + _("Allow JSON-RPC connections from specified IP address") + "\n" +
" -rpcconnect= \t " + _("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" +
+ " -upgradewallet \t " + _("Upgrade wallet to latest format") + "\n" +
" -keypool= \t " + _("Set key pool size to (default: 100)") + "\n" +
" -rescan \t " + _("Rescan the block chain for missing wallet transactions") + "\n" +
" -checkblocks= \t\t " + _("How many blocks to check at startup (default: 2500, 0 = all)") + "\n" +
@@ -379,6 +395,36 @@ bool AppInit2(int argc, char* argv[])
else
strErrors << _("Error loading wallet.dat") << "\n";
}
+
+ if (GetBoolArg("-upgradewallet", fFirstRun))
+ {
+ int nMaxVersion = GetArg("-upgradewallet", 0);
+ if (nMaxVersion == 0) // the -walletupgrade without argument case
+ {
+ printf("Performing wallet upgrade to %i\n", FEATURE_LATEST);
+ nMaxVersion = CLIENT_VERSION;
+ pwalletMain->SetMinVersion(FEATURE_LATEST); // permanently upgrade the wallet immediately
+ }
+ else
+ printf("Allowing wallet upgrade up to %i\n", nMaxVersion);
+ if (nMaxVersion < pwalletMain->GetVersion())
+ strErrors << _("Cannot downgrade wallet") << "\n";
+ pwalletMain->SetMaxVersion(nMaxVersion);
+ }
+
+ if (fFirstRun)
+ {
+ // Create new keyUser and set as default key
+ RandAddSeedPerfmon();
+
+ std::vector newDefaultKey;
+ if (!pwalletMain->GetKeyFromPool(newDefaultKey, false))
+ strErrors << _("Cannot initialize keypool") << "\n";
+ pwalletMain->SetDefaultKey(newDefaultKey);
+ if (!pwalletMain->SetAddressBookName(CBitcoinAddress(pwalletMain->vchDefaultKey), ""))
+ strErrors << _("Cannot write default address") << "\n";
+ }
+
printf("%s", strErrors.str().c_str());
printf(" wallet %15"PRI64d"ms\n", GetTimeMillis() - nStart);
@@ -491,24 +537,11 @@ bool AppInit2(int argc, char* argv[])
fAllowDNS = GetBoolArg("-dns");
fNoListen = !GetBoolArg("-listen", true);
- // This code can be removed once a super-majority of the network has upgraded.
- if (GetBoolArg("-bip16", true))
- {
- if (fTestNet)
- SoftSetArg("-paytoscripthashtime", "1329264000"); // Feb 15
- else
- SoftSetArg("-paytoscripthashtime", "1333238400"); // April 1 2012
-
- // Put "/P2SH/" in the coinbase so everybody can tell when
- // a majority of miners support it
- const char* pszP2SH = "/P2SH/";
- COINBASE_FLAGS << std::vector(pszP2SH, pszP2SH+strlen(pszP2SH));
- }
- else
- {
- const char* pszP2SH = "NOP2SH";
- COINBASE_FLAGS << std::vector(pszP2SH, pszP2SH+strlen(pszP2SH));
- }
+ // Continue to put "/P2SH/" in the coinbase to monitor
+ // BIP16 support.
+ // This can be removed eventually...
+ const char* pszP2SH = "/P2SH/";
+ COINBASE_FLAGS << std::vector(pszP2SH, pszP2SH+strlen(pszP2SH));
if (!fNoListen)
{
@@ -527,7 +560,7 @@ bool AppInit2(int argc, char* argv[])
CAddress addr(CService(strAddr, GetDefaultPort(), fAllowDNS));
addr.nTime = 0; // so it won't relay unless successfully connected
if (addr.IsValid())
- AddAddress(addr);
+ addrman.Add(addr, CNetAddr("127.0.0.1"));
}
}