From: Wladimir J. van der Laan Date: Sat, 3 Sep 2011 07:09:34 +0000 (+0200) Subject: Merge branch 'master' of https://github.com/bitcoin/bitcoin X-Git-Tag: v0.4.0-unstable~226^2~57^2~38 X-Git-Url: https://git.novaco.in/?a=commitdiff_plain;h=0a70a3f4d88ad8e4ab689bacff4eda0cdfa88e65;hp=0aca8577b55d218f72c7383b2464ca07b7f77d0d;p=novacoin.git Merge branch 'master' of https://github.com/bitcoin/bitcoin --- diff --git a/contrib/Bitcoin.app/Contents/Info.plist b/contrib/Bitcoin.app/Contents/Info.plist index bfeb2f8..a5c7da1 100644 --- a/contrib/Bitcoin.app/Contents/Info.plist +++ b/contrib/Bitcoin.app/Contents/Info.plist @@ -17,11 +17,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 0.3.25 + 0.4.00 CFBundleSignature ???? CFBundleVersion - 325 + 400 LSMinimumSystemVersion 10.5 CFBundleIconFile diff --git a/doc/README b/doc/README index 763fc41..772fd7f 100644 --- a/doc/README +++ b/doc/README @@ -1,4 +1,4 @@ -Bitcoin 0.3.25 BETA +Bitcoin 0.4.0rc1 BETA Copyright (c) 2009-2011 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/doc/README_windows.txt b/doc/README_windows.txt index e715b32..8378ae5 100644 --- a/doc/README_windows.txt +++ b/doc/README_windows.txt @@ -1,4 +1,4 @@ -Bitcoin 0.3.25 BETA +Bitcoin 0.4.00rc1 BETA Copyright (c) 2009-2011 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/doc/coding.txt b/doc/coding.txt index ec31ccd..b3c812a 100644 --- a/doc/coding.txt +++ b/doc/coding.txt @@ -43,38 +43,52 @@ bn CBigNum ------------------------- Locking/mutex usage notes -The code is multi-threaded, and uses mutexes and the CRITICAL_BLOCK/TRY_CRITICAL_BLOCK macros to protect data structures. +The code is multi-threaded, and uses mutexes and the +CRITICAL_BLOCK/TRY_CRITICAL_BLOCK macros to protect data structures. -Deadlocks due to inconsistent lock ordering (thread 1 locks cs_main and then cs_wallet, while thread 2 locks them in the opposite order: result, deadlock as each waits for the other to release its lock) are a problem. Compile with -DDEBUG_LOCKORDER to get lock order inconsistencies reported in the debug.log file. +Deadlocks due to inconsistent lock ordering (thread 1 locks cs_main +and then cs_wallet, while thread 2 locks them in the opposite order: +result, deadlock as each waits for the other to release its lock) are +a problem. Compile with -DDEBUG_LOCKORDER to get lock order +inconsistencies reported in the debug.log file. -Re-architecting the core code so there are better-defined interfaces between the various components is a goal, with any necessary locking done by the components (e.g. see the self-contained CKeyStore class and its cs_KeyStore lock for example). +Re-architecting the core code so there are better-defined interfaces +between the various components is a goal, with any necessary locking +done by the components (e.g. see the self-contained CKeyStore class +and its cs_KeyStore lock for example). ------- Threads StartNode : Starts other threads. -ThreadGetMyExternalIP : Determines outside-the-firewall IP address, sends addr message to connected peers when it determines it. +ThreadGetMyExternalIP : Determines outside-the-firewall IP address, +sends addr message to connected peers when it determines it. -ThreadIRCSeed : Joins IRC bootstrapping channel, watching for new peers and advertising this node's IP address. +ThreadIRCSeed : Joins IRC bootstrapping channel, watching for new +peers and advertising this node's IP address. ThreadSocketHandler : Sends/Receives data from peers on port 8333. -ThreadMessageHandler : Higher-level message handling (sending and receiving). +ThreadMessageHandler : Higher-level message handling (sending and +receiving). ThreadOpenConnections : Initiates new connections to peers. ThreadTopUpKeyPool : replenishes the keystore's keypool. -ThreadCleanWalletPassphrase : re-locks an encrypted wallet after user has unlocked it for a period of time. +ThreadCleanWalletPassphrase : re-locks an encrypted wallet after user +has unlocked it for a period of time. SendingDialogStartTransfer : used by pay-via-ip-address code (obsolete) ThreadDelayedRepaint : repaint the gui -ThreadFlushWalletDB : Close the wallet.dat file if it hasn't been used in 500ms. +ThreadFlushWalletDB : Close the wallet.dat file if it hasn't been used +in 500ms. -ThreadRPCServer : Remote procedure call handler, listens on port 8332 for connections and services them. +ThreadRPCServer : Remote procedure call handler, listens on port 8332 +for connections and services them. ThreadBitcoinMiner : Generates bitcoins diff --git a/doc/release-process.txt b/doc/release-process.txt index 4940afe..bcda64d 100644 --- a/doc/release-process.txt +++ b/doc/release-process.txt @@ -1,6 +1,9 @@ * update (commit) version in sources + src/serialize.h + share/setup.nsi * update (commit) version in OSX app bundle + contrib/Bitcoin.app/Contents/Info.plist * CFBundleShortVersionString should have value like 0.3.23 * CFBundleVersion should have value like 323 diff --git a/locale/cs/LC_MESSAGES/bitcoin.mo b/locale/cs/LC_MESSAGES/bitcoin.mo index 80354cf..8b6e444 100644 Binary files a/locale/cs/LC_MESSAGES/bitcoin.mo and b/locale/cs/LC_MESSAGES/bitcoin.mo differ diff --git a/locale/fr/LC_MESSAGES/bitcoin.mo b/locale/fr/LC_MESSAGES/bitcoin.mo index f4d669b..f60e15b 100644 Binary files a/locale/fr/LC_MESSAGES/bitcoin.mo and b/locale/fr/LC_MESSAGES/bitcoin.mo differ diff --git a/locale/nl/LC_MESSAGES/bitcoin.mo b/locale/nl/LC_MESSAGES/bitcoin.mo index c5ae848..836e91d 100644 Binary files a/locale/nl/LC_MESSAGES/bitcoin.mo and b/locale/nl/LC_MESSAGES/bitcoin.mo differ diff --git a/locale/pt/LC_MESSAGES/bitcoin.mo b/locale/pt/LC_MESSAGES/bitcoin.mo index 20e100f..35a3fd7 100644 Binary files a/locale/pt/LC_MESSAGES/bitcoin.mo and b/locale/pt/LC_MESSAGES/bitcoin.mo differ diff --git a/share/setup.nsi b/share/setup.nsi index b4bf3cf..6cf4777 100644 --- a/share/setup.nsi +++ b/share/setup.nsi @@ -5,7 +5,7 @@ SetCompressor /SOLID lzma # General Symbol Definitions !define REGKEY "SOFTWARE\$(^Name)" -!define VERSION 0.3.25 +!define VERSION 0.4.00 !define COMPANY "Bitcoin project" !define URL http://www.bitcoin.org/ @@ -45,13 +45,13 @@ Var StartMenuGroup !insertmacro MUI_LANGUAGE English # Installer attributes -OutFile bitcoin-0.3.25-win32-setup.exe +OutFile bitcoin-0.4.00-win32-setup.exe InstallDir $PROGRAMFILES\Bitcoin CRCCheck on XPStyle on BrandingText " " ShowInstDetails show -VIProductVersion 0.3.25.0 +VIProductVersion 0.4.00.0 VIAddVersionKey ProductName Bitcoin VIAddVersionKey ProductVersion "${VERSION}" VIAddVersionKey CompanyName "${COMPANY}" diff --git a/src/main.cpp b/src/main.cpp index 59a6984..d1fbbb1 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1830,7 +1830,9 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv) // Ask the first connected node for block updates static int nAskedForBlocks; - if (!pfrom->fClient && (nAskedForBlocks < 1 || vNodes.size() <= 1)) + if (!pfrom->fClient && + (pfrom->nVersion < 32000 || pfrom->nVersion >= 32400) && + (nAskedForBlocks < 1 || vNodes.size() <= 1)) { nAskedForBlocks++; pfrom->PushGetBlocks(pindexBest, uint256(0)); diff --git a/src/net.cpp b/src/net.cpp index 952102e..5fca17a 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1349,7 +1349,6 @@ void ThreadOpenConnections2(void* parg) CRITICAL_BLOCK(cs_mapAddresses) { // Add seed nodes if IRC isn't working - static bool fSeedUsed; bool fTOR = (fUseProxy && addrProxy.port == htons(9050)); if (mapAddresses.empty() && (GetTime() - nStart > 60 || fTOR) && !fTestNet) { @@ -1365,35 +1364,6 @@ void ThreadOpenConnections2(void* parg) addr.nTime = GetTime()-GetRand(nOneWeek)-nOneWeek; AddAddress(addr); } - fSeedUsed = true; - } - - if (fSeedUsed && mapAddresses.size() > ARRAYLEN(pnSeed) + 100) - { - // Disconnect seed nodes - set setSeed(pnSeed, pnSeed + ARRAYLEN(pnSeed)); - static int64 nSeedDisconnected; - if (nSeedDisconnected == 0) - { - nSeedDisconnected = GetTime(); - CRITICAL_BLOCK(cs_vNodes) - BOOST_FOREACH(CNode* pnode, vNodes) - if (setSeed.count(pnode->addr.ip)) - pnode->fDisconnect = true; - } - - // Keep setting timestamps to 0 so they won't reconnect - if (GetTime() - nSeedDisconnected < 60 * 60) - { - BOOST_FOREACH(PAIRTYPE(const vector, CAddress)& item, mapAddresses) - { - if (setSeed.count(item.second.ip) && item.second.nTime != 0) - { - item.second.nTime = 0; - CAddrDB().WriteAddress(item.second); - } - } - } } } diff --git a/src/serialize.h b/src/serialize.h index 09e4035..64f67fd 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -60,7 +60,7 @@ class CDataStream; class CAutoFile; static const unsigned int MAX_SIZE = 0x02000000; -static const int VERSION = 32500; +static const int VERSION = 40000; static const char* pszSubVer = ""; static const bool VERSION_IS_BETA = true; diff --git a/src/util.cpp b/src/util.cpp index 3c53771..03b3d73 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -921,16 +921,22 @@ string FormatFullVersion() struct CLockLocation { - std::string mutexName; - std::string sourceFile; - int sourceLine; - CLockLocation(const char* pszName, const char* pszFile, int nLine) { mutexName = pszName; sourceFile = pszFile; sourceLine = nLine; } + + std::string ToString() const + { + return mutexName+" "+sourceFile+":"+itostr(sourceLine); + } + +private: + std::string mutexName; + std::string sourceFile; + int sourceLine; }; typedef std::vector< std::pair > LockStack; @@ -948,14 +954,14 @@ static void potential_deadlock_detected(const std::pairsecond; + printf("Unlocked: %s\n", locklocation.ToString().c_str()); + } + dd_mutex.lock(); (*lockstack).pop_back(); + dd_mutex.unlock(); } void CCriticalSection::Enter(const char* pszName, const char* pszFile, int nLine)