aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Garzik <jgarzik@exmulti.com>2012-10-08 15:12:25 -0700
committerJeff Garzik <jgarzik@exmulti.com>2012-10-08 15:12:25 -0700
commit56caa38a6719e133a2f1c17275eb596ab8f1c463 (patch)
treedaf6c20dfd7187255c8f82ba7df5fa6b191ab6be
parentc2bb42168ba19bb8be4d330238080cb4233cd390 (diff)
parent22f9b069035c9ba0416a62714db167eea5ba762f (diff)
Merge pull request #1833 from jgarzik/mempool-query
Send 'mempool' P2P command at the start of each P2P session
-rw-r--r--src/init.cpp5
-rw-r--r--src/main.cpp14
2 files changed, 18 insertions, 1 deletions
diff --git a/src/init.cpp b/src/init.cpp
index d271893644..b910c2dd76 100644
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -25,6 +25,7 @@ using namespace boost;
CWallet* pwalletMain;
CClientUIInterface uiInterface;
+int64 nTimeNodeStart;
//////////////////////////////////////////////////////////////////////////////
//
@@ -470,8 +471,10 @@ bool AppInit2()
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
printf("Bitcoin version %s (%s)\n", FormatFullVersion().c_str(), CLIENT_DATE.c_str());
printf("Using OpenSSL version %s\n", SSLeay_version(SSLEAY_VERSION));
+
+ nTimeNodeStart = GetTime();
if (!fLogTimestamps)
- printf("Startup time: %s\n", DateTimeStrFormat("%x %H:%M:%S", GetTime()).c_str());
+ printf("Startup time: %s\n", DateTimeStrFormat("%x %H:%M:%S", nTimeNodeStart).c_str());
printf("Default data directory %s\n", GetDefaultDataDir().string().c_str());
printf("Used data directory %s\n", pszDataDir);
std::ostringstream strErrors;
diff --git a/src/main.cpp b/src/main.cpp
index da1072970c..0e22a4c36c 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -2404,6 +2404,14 @@ bool static AlreadyHave(CTxDB& txdb, const CInv& inv)
+static bool NodeRecentlyStarted()
+{
+ extern int64 nTimeNodeStart;
+ int64 timediff = GetTime() - nTimeNodeStart;
+
+ return (timediff < (2 * 60 * 60));
+}
+
// The message start string is designed to be unlikely to occur in normal data.
// The characters are rarely used upper ASCII, not valid as UTF-8, and produce
@@ -2510,6 +2518,12 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
}
}
+ // Trigger download of remote node's memory pool
+ if (!IsInitialBlockDownload() && !pfrom->fInbound &&
+ !pfrom->fClient && NodeRecentlyStarted() &&
+ pfrom->nVersion >= MEMPOOL_GD_VERSION)
+ pfrom->PushMessage("mempool");
+
// Ask the first connected node for block updates
static int nAskedForBlocks = 0;
if (!pfrom->fClient && !pfrom->fOneShot &&