diff options
Diffstat (limited to 'src/init.cpp')
| -rw-r--r-- | src/init.cpp | 49 |
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")) |