From b4eea47a106a931ada40df3fbde3115f24e4fc40 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Sun, 24 Jun 2012 16:47:47 -0700 Subject: [PATCH] Track peer versions and put in the Json output. --- src/Peer.cpp | 26 +++++++++++++++++++------- src/Peer.h | 1 + 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/Peer.cpp b/src/Peer.cpp index eb9ad2099e..ea677631ca 100644 --- a/src/Peer.cpp +++ b/src/Peer.cpp @@ -590,6 +590,7 @@ void Peer::recvHello(newcoin::TMHello& packet) else { // Successful connection. Log(lsINFO) << "Recv(Hello): Connect: " << mNodePublic.humanNodePublic(); + mHello = packet; if ( (packet.versionmajor() != SERVER_VERSION_MAJ) || (packet.versionminor() != SERVER_VERSION_MIN)) { @@ -1159,13 +1160,24 @@ void Peer::punishPeer(PeerPunish) { } -Json::Value Peer::getJson() { - Json::Value ret(Json::objectValue); +Json::Value Peer::getJson() +{ + Json::Value ret(Json::objectValue); - ret["this"] = ADDRESS(this); - ret["public_key"] = mNodePublic.ToString(); - ret["ip"] = mIpPortConnect.first; - ret["port"] = mIpPortConnect.second; + ret["this"] = ADDRESS(this); + ret["public_key"] = mNodePublic.ToString(); + ret["ip"] = mIpPortConnect.first; + ret["port"] = mIpPortConnect.second; + + if (mHello.has_fullversion()) + ret["version"] = mHello.fullversion(); + else if (mHello.has_versionminor() && mHello.has_versionmajor()) + ret["version"] = boost::lexical_cast(mHello.versionmajor()) + "." + + boost::lexical_cast(mHello.versionminor()); + + if (mHello.has_protoversionminor() && mHello.has_protoversionmajor()) + ret["protocol"] = boost::lexical_cast(mHello.protoversionmajor()) + "." + + boost::lexical_cast(mHello.protoversionminor()); if (!mIpPort.first.empty()) { @@ -1173,7 +1185,7 @@ Json::Value Peer::getJson() { ret["verified_port"] = mIpPort.second; } - return ret; + return ret; } // vim:ts=4 diff --git a/src/Peer.h b/src/Peer.h index 3150532efa..3223632904 100644 --- a/src/Peer.h +++ b/src/Peer.h @@ -55,6 +55,7 @@ protected: std::list mSendQ; PackedMessage::pointer mSendingPacket; newcoin::TMStatusChange mLastStatus; + newcoin::TMHello mHello; Peer(boost::asio::io_service& io_service, boost::asio::ssl::context& ctx);