From 70970d8042c2b64574a07ae0c0dfe077b0650986 Mon Sep 17 00:00:00 2001 From: Arthur Britto Date: Thu, 14 Jun 2012 18:33:31 -0700 Subject: [PATCH 1/4] Fix SQL_FOREACH. --- src/ConnectionPool.cpp | 2 +- src/NetworkOPs.cpp | 2 +- src/UniqueNodeList.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ConnectionPool.cpp b/src/ConnectionPool.cpp index cc42b41a6..dc19481ff 100644 --- a/src/ConnectionPool.cpp +++ b/src/ConnectionPool.cpp @@ -13,7 +13,7 @@ #define SQL_FOREACH(_db, _strQuery) \ if ((_db)->executeSQL(_strQuery)) \ - for (bool _bMore = (db)->startIterRows(); _bMore; _bMore = (_db)->getNextRow()) + for (bool _bMore = (_db)->startIterRows(); _bMore; _bMore = (_db)->getNextRow()) void splitIpPort(const std::string& strIpPort, std::string& strIp, int& iPort) { diff --git a/src/NetworkOPs.cpp b/src/NetworkOPs.cpp index 1492f69c7..312ec1162 100644 --- a/src/NetworkOPs.cpp +++ b/src/NetworkOPs.cpp @@ -537,7 +537,7 @@ void NetworkOPs::setMode(OperatingMode om) #define SQL_FOREACH(_db, _strQuery) \ if ((_db)->executeSQL(_strQuery)) \ - for (bool _bMore = (db)->startIterRows(); _bMore; _bMore = (_db)->getNextRow()) + for (bool _bMore = (_db)->startIterRows(); _bMore; _bMore = (_db)->getNextRow()) std::vector< std::pair > NetworkOPs::getAffectedAccounts(const NewcoinAddress& account, uint32 minLedger, uint32 maxLedger) diff --git a/src/UniqueNodeList.cpp b/src/UniqueNodeList.cpp index be3d39dff..9e69ea985 100644 --- a/src/UniqueNodeList.cpp +++ b/src/UniqueNodeList.cpp @@ -31,7 +31,7 @@ #define SQL_FOREACH(_db, _strQuery) \ if ((_db)->executeSQL(_strQuery)) \ - for (bool _bMore = (db)->startIterRows(); _bMore; _bMore = (_db)->getNextRow()) + for (bool _bMore = (_db)->startIterRows(); _bMore; _bMore = (_db)->getNextRow()) UniqueNodeList::UniqueNodeList(boost::asio::io_service& io_service) : mdtScoreTimer(io_service), From f9637e36bfa9f383b02194be66c005bc70898c0d Mon Sep 17 00:00:00 2001 From: Arthur Britto Date: Thu, 14 Jun 2012 18:42:46 -0700 Subject: [PATCH 2/4] Get rid of redunant SQL_FOREACH declarations. --- src/ConnectionPool.cpp | 4 ---- src/NetworkOPs.cpp | 4 ---- src/UniqueNodeList.cpp | 9 +++------ 3 files changed, 3 insertions(+), 14 deletions(-) diff --git a/src/ConnectionPool.cpp b/src/ConnectionPool.cpp index dc19481ff..b57681452 100644 --- a/src/ConnectionPool.cpp +++ b/src/ConnectionPool.cpp @@ -11,10 +11,6 @@ #include #include -#define SQL_FOREACH(_db, _strQuery) \ - if ((_db)->executeSQL(_strQuery)) \ - for (bool _bMore = (_db)->startIterRows(); _bMore; _bMore = (_db)->getNextRow()) - void splitIpPort(const std::string& strIpPort, std::string& strIp, int& iPort) { std::vector vIpPort; diff --git a/src/NetworkOPs.cpp b/src/NetworkOPs.cpp index 312ec1162..6dd381171 100644 --- a/src/NetworkOPs.cpp +++ b/src/NetworkOPs.cpp @@ -535,10 +535,6 @@ void NetworkOPs::setMode(OperatingMode om) mMode = om; } -#define SQL_FOREACH(_db, _strQuery) \ - if ((_db)->executeSQL(_strQuery)) \ - for (bool _bMore = (_db)->startIterRows(); _bMore; _bMore = (_db)->getNextRow()) - std::vector< std::pair > NetworkOPs::getAffectedAccounts(const NewcoinAddress& account, uint32 minLedger, uint32 maxLedger) { diff --git a/src/UniqueNodeList.cpp b/src/UniqueNodeList.cpp index 9e69ea985..50a73df50 100644 --- a/src/UniqueNodeList.cpp +++ b/src/UniqueNodeList.cpp @@ -29,10 +29,6 @@ #define REFERRAL_VALIDATORS_MAX 50 #define REFERRAL_IPS_MAX 50 -#define SQL_FOREACH(_db, _strQuery) \ - if ((_db)->executeSQL(_strQuery)) \ - for (bool _bMore = (_db)->startIterRows(); _bMore; _bMore = (_db)->getNextRow()) - UniqueNodeList::UniqueNodeList(boost::asio::io_service& io_service) : mdtScoreTimer(io_service), mFetchActive(0), @@ -452,9 +448,10 @@ void UniqueNodeList::scoreCompute() std::string strIpPort = str(boost::format("%s %d") % ipEndpoint.first % ipEndpoint.second); score iPoints = ipScore.second; - vstrValues.push_back(str(boost::format("(%s,%d,'V')") + vstrValues.push_back(str(boost::format("(%s,%d,'%c')") % db->escape(strIpPort) - % iPoints)); + % iPoints + % vsValidator)); } // Set scores for each IP. From a7e4523b6498f06e67b315e0fddc11d4dd5b9b2c Mon Sep 17 00:00:00 2001 From: Arthur Britto Date: Thu, 14 Jun 2012 19:05:32 -0700 Subject: [PATCH 3/4] Add a single SQL_FOREACH. --- database/database.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/database/database.h b/database/database.h index 4babf93fc..8d6bcb8f9 100644 --- a/database/database.h +++ b/database/database.h @@ -5,6 +5,10 @@ #include #include "../src/types.h" +#define SQL_FOREACH(_db, _strQuery) \ + if ((_db)->executeSQL(_strQuery)) \ + for (bool _bMore = (_db)->startIterRows(); _bMore; _bMore = (_db)->getNextRow()) + /* this maintains the connection to the database */ @@ -76,6 +80,6 @@ public: // char* getSingleDBValueStr(const char* sql, std::string& retStr); }; - #endif +// vim:ts=4 From 0b60693c7ad3e733f5f8bc0d571cba96aa6a6349 Mon Sep 17 00:00:00 2001 From: Arthur Britto Date: Thu, 14 Jun 2012 19:06:09 -0700 Subject: [PATCH 4/4] Simply getPeersJson and display connection source. --- src/ConnectionPool.cpp | 16 +++++++--------- src/Peer.h | 9 +++------ 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/src/ConnectionPool.cpp b/src/ConnectionPool.cpp index b57681452..931fe93e2 100644 --- a/src/ConnectionPool.cpp +++ b/src/ConnectionPool.cpp @@ -248,16 +248,12 @@ bool ConnectionPool::connectTo(const std::string& strIp, int iPort) Json::Value ConnectionPool::getPeersJson() { - Json::Value ret(Json::arrayValue); + Json::Value ret(Json::arrayValue); + std::vector vppPeers = getPeerVector(); - boost::mutex::scoped_lock sl(mPeerLock); - - BOOST_FOREACH(naPeer pair, mConnectedMap) + BOOST_FOREACH(Peer::pointer peer, vppPeers) { - Peer::pointer peer = pair.second; - if (!peer) - std::cerr << "CP::GPH null peer" << std::endl; - else ret.append(peer->getJson()); + ret.append(peer->getJson()); } return ret; @@ -285,7 +281,9 @@ bool ConnectionPool::peerConnected(Peer::pointer peer, const NewcoinAddress& na) { bool bSuccess; - std::cerr << "ConnectionPool::peerConnected: " << na.humanNodePublic() << std::endl; + std::cerr << "ConnectionPool::peerConnected: " << na.humanNodePublic() + << " " << peer->getIP() << " " << peer->getPort() + << std::endl; assert(!!peer); if (na == theApp->getWallet().getNodePublic()) { diff --git a/src/Peer.h b/src/Peer.h index 82eb997e7..959876915 100644 --- a/src/Peer.h +++ b/src/Peer.h @@ -14,9 +14,9 @@ enum PeerPunish { - PP_INVALID_REQUEST = 1, // The peer sent a request that makes no sense - PP_UNKNOWN_REQUEST = 2, // The peer sent a request that might be garbage - PP_UNWANTED_DATA = 3, // The peer sent us data we didn't want/need + PP_INVALID_REQUEST = 1, // The peer sent a request that makes no sense + PP_UNKNOWN_REQUEST = 2, // The peer sent a request that might be garbage + PP_UNWANTED_DATA = 3, // The peer sent us data we didn't want/need }; typedef std::pair ipPort; @@ -56,10 +56,7 @@ protected: Peer(boost::asio::io_service& io_service, boost::asio::ssl::context& ctx); - - void handle_write(const boost::system::error_code& error, size_t bytes_transferred); - //void handle_read(const boost::system::error_code& error, size_t bytes_transferred); void handle_read_header(const boost::system::error_code& error); void handle_read_body(const boost::system::error_code& error); void processReadBuffer();