diff --git a/src/cpp/ripple/ConnectionPool.cpp b/src/cpp/ripple/ConnectionPool.cpp index 89f0d5548..d17f38885 100644 --- a/src/cpp/ripple/ConnectionPool.cpp +++ b/src/cpp/ripple/ConnectionPool.cpp @@ -209,6 +209,12 @@ void ConnectionPool::policyEnforce() // Enforce policies. policyLowWater(); + if (((++mPhase) % 12) == 0) + { + cLog(lsTRACE) << "Making configured connections"; + makeConfigured(); + } + // Schedule next enforcement. mPolicyTimer.expires_at(boost::posix_time::second_clock::universal_time()+boost::posix_time::seconds(POLICY_INTERVAL_SECONDS)); mPolicyTimer.async_wait(boost::bind(&ConnectionPool::policyHandler, this, _1)); @@ -313,11 +319,11 @@ Peer::pointer ConnectionPool::peerConnect(const std::string& strIp, int iPort) if (ppResult) { ppResult->connect(strIp, iPort); - //cLog(lsINFO) << "Pool: Connecting: " << ADDRESS_SHARED(ppResult) << ": " << strIp << " " << iPort; + cLog(lsTRACE) << "Pool: Connecting: " << ADDRESS_SHARED(ppResult) << ": " << strIp << " " << iPort; } else { - //cLog(lsINFO) << "Pool: Already connected: " << strIp << " " << iPort; + cLog(lsTRACE) << "Pool: Already connected: " << strIp << " " << iPort; } return ppResult; @@ -623,6 +629,20 @@ void ConnectionPool::scanHandler(const boost::system::error_code& ecResult) } } +void ConnectionPool::makeConfigured() +{ + if (theConfig.RUN_STANDALONE) + return; + + BOOST_FOREACH(const std::string& strPeer, theConfig.IPS) + { + std::string strIP; + int iPort; + if (parseIpPort(strPeer, strIP, iPort)) + peerConnect(strIP, iPort); + } +} + // Scan ips as per db entries. void ConnectionPool::scanRefresh() { diff --git a/src/cpp/ripple/ConnectionPool.h b/src/cpp/ripple/ConnectionPool.h index 3d1e3d3a4..45ba2b6e9 100644 --- a/src/cpp/ripple/ConnectionPool.h +++ b/src/cpp/ripple/ConnectionPool.h @@ -18,6 +18,7 @@ class ConnectionPool private: boost::recursive_mutex mPeerLock; uint64 mLastPeer; + int mPhase; typedef std::pair naPeer; typedef std::pair pipPeer; @@ -59,7 +60,7 @@ private: public: ConnectionPool(boost::asio::io_service& io_service) : - mLastPeer(0), mScanTimer(io_service), mPolicyTimer(io_service) + mLastPeer(0), mPhase(0), mScanTimer(io_service), mPolicyTimer(io_service) { ; } // Begin enforcing connection policy. @@ -114,6 +115,8 @@ public: void policyLowWater(); void policyEnforce(); + // configured connections + void makeConfigured(); }; extern void splitIpPort(const std::string& strIpPort, std::string& strIp, int& iPort);