2
In order to send a NetMsgType::PING message to a node pnode, we simply invoke the function pnode->PushMessage(NetMsgType::PING) in src/main.cpp
This translates into following logic in src/net.h:
void PushMessage(const char* pszCommand)
{
try
{
BeginMessage(pszCommand);
EndMessage(pszCommand);
}
catch (...)
{
AbortMessage();
throw;
}
}
If we look carefully, the BeginMessage and EndMessage are just for acquiring and releasing the lock. Where exactly is the PING getting passed to the other node? I think the working is similar for other message types but the overloaded function PushMessage may use a Datastream which I guess does the passing to requested node. But I am particularly clueless about cases like NetMsgType::GETADDR, NetMsgType::VERACK and old version without nonce of NetMsgType::PING where there is only the command string pszCommand being passed
@Jannes - True! But the forum allows me to mark my own post as answer only after two days. – Paarth – 2015-12-22T04:05:49.687