aboutsummaryrefslogtreecommitdiff
path: root/src/init.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/init.cpp')
-rw-r--r--src/init.cpp49
1 files changed, 31 insertions, 18 deletions
diff --git a/src/init.cpp b/src/init.cpp
index 0d3679657..829600a4f 100644
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -62,7 +62,7 @@ void Shutdown(void* parg)
delete pwalletMain;
CreateThread(ExitTimeout, NULL);
Sleep(50);
- printf("Bitcoin exiting\n\n");
+ printf("Bitcoin exited\n\n");
fExit = true;
exit(0);
}
@@ -162,7 +162,6 @@ bool static InitError(const std::string &str)
{
ThreadSafeMessageBox(str, _("Bitcoin"), wxOK | wxMODAL);
return false;
-
}
bool static InitWarning(const std::string &str)
@@ -204,7 +203,7 @@ std::string HelpMessage()
" -connect=<ip> " + _("Connect only to the specified node") + "\n" +
" -seednode=<ip> " + _("Connect to a node to retrieve peer addresses, and disconnect") + "\n" +
" -externalip=<ip> " + _("Specify your own public address") + "\n" +
- " -blocknet=<net> " + _("Do not connect to addresses in network <net> (IPv4 or IPv6)") + "\n" +
+ " -onlynet=<net> " + _("Only connect to nodes in network <net> (IPv4 or IPv6)") + "\n" +
" -discover " + _("Try to discover public IP address (default: 1)") + "\n" +
" -irc " + _("Find peers using internet relay chat (default: 0)") + "\n" +
" -listen " + _("Accept connections from outside (default: 1)") + "\n" +
@@ -352,7 +351,7 @@ bool AppInit2()
return false;
}
- // Make sure only a single bitcoin process is using the data directory.
+ // Make sure only a single Bitcoin process is using the data directory.
boost::filesystem::path pathLockFile = GetDataDir() / ".lock";
FILE* file = fopen(pathLockFile.string().c_str(), "a"); // empty lock file; created if it doesn't exist.
if (file) fclose(file);
@@ -365,15 +364,21 @@ bool AppInit2()
// Load data files
//
if (fDaemon)
- fprintf(stdout, "bitcoin server starting\n");
+ fprintf(stdout, "Bitcoin server starting\n");
int64 nStart;
InitMessage(_("Loading addresses..."));
printf("Loading addresses...\n");
nStart = GetTimeMillis();
- if (!LoadAddresses())
- strErrors << _("Error loading addr.dat") << "\n";
- printf(" addresses %15"PRI64d"ms\n", GetTimeMillis() - nStart);
+
+ {
+ CAddrDB adb;
+ if (!adb.Read(addrman))
+ printf("Invalid or missing peers.dat; recreating\n");
+ }
+
+ printf("Loaded %i addresses from peers.dat %"PRI64d"ms\n",
+ addrman.size(), GetTimeMillis() - nStart);
InitMessage(_("Loading block index..."));
printf("Loading block index...\n");
@@ -492,7 +497,7 @@ bool AppInit2()
// Add wallet transactions that aren't already in a block to mapTransactions
pwalletMain->ReacceptWalletTransactions();
- // Note: Bitcoin-QT stores several settings in the wallet, so we want
+ // Note: Bitcoin-Qt stores several settings in the wallet, so we want
// to load the wallet BEFORE parsing command-line arguments, so
// the command-line/bitcoin.conf settings override GUI setting.
@@ -572,12 +577,18 @@ bool AppInit2()
SoftSetBoolArg("-discover", false);
}
- if (mapArgs.count("-blocknet")) {
- BOOST_FOREACH(std::string snet, mapMultiArgs["-blocknet"]) {
+ if (mapArgs.count("-onlynet")) {
+ std::set<enum Network> nets;
+ BOOST_FOREACH(std::string snet, mapMultiArgs["-onlynet"]) {
enum Network net = ParseNetwork(snet);
if (net == NET_UNROUTABLE)
- return InitError(strprintf(_("Unknown network specified in -blocknet: '%s'"), snet.c_str()));
- SetLimited(net);
+ return InitError(strprintf(_("Unknown network specified in -onlynet: '%s'"), snet.c_str()));
+ nets.insert(net);
+ }
+ for (int n = 0; n < NET_MAX; n++) {
+ enum Network net = (enum Network)n;
+ if (!nets.count(net))
+ SetLimited(net);
}
}
@@ -605,21 +616,23 @@ bool AppInit2()
std::string strError;
if (mapArgs.count("-bind")) {
BOOST_FOREACH(std::string strBind, mapMultiArgs["-bind"]) {
- CService addrBind(strBind, GetListenPort(), false);
- if (!addrBind.IsValid())
+ CService addrBind;
+ if (!Lookup(strBind.c_str(), addrBind, GetListenPort(), false))
return InitError(strprintf(_("Cannot resolve -bind address: '%s'"), strBind.c_str()));
fBound |= Bind(addrBind);
}
} else {
struct in_addr inaddr_any;
inaddr_any.s_addr = INADDR_ANY;
- fBound |= Bind(CService(inaddr_any, GetListenPort()));
+ if (!IsLimited(NET_IPV4))
+ fBound |= Bind(CService(inaddr_any, GetListenPort()));
#ifdef USE_IPV6
- fBound |= Bind(CService(in6addr_any, GetListenPort()));
+ if (!IsLimited(NET_IPV6))
+ fBound |= Bind(CService(in6addr_any, GetListenPort()));
#endif
}
if (!fBound)
- return false;
+ return InitError(_("Not listening on any port"));
}
if (mapArgs.count("-externalip"))