summaryrefslogtreecommitdiff
path: root/src/modules/m_spanningtree/ping.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/m_spanningtree/ping.cpp')
-rw-r--r--src/modules/m_spanningtree/ping.cpp30
1 files changed, 13 insertions, 17 deletions
diff --git a/src/modules/m_spanningtree/ping.cpp b/src/modules/m_spanningtree/ping.cpp
index 951673964..badcc3401 100644
--- a/src/modules/m_spanningtree/ping.cpp
+++ b/src/modules/m_spanningtree/ping.cpp
@@ -28,28 +28,24 @@ bool TreeSocket::LocalPing(const std::string &prefix, parameterlist &params)
{
if (params.size() < 1)
return true;
- if (params.size() == 1)
+
+ const std::string& forwardto = params[0];
+ if (forwardto == ServerInstance->Config->GetSID())
{
- this->WriteLine(":"+ServerInstance->Config->GetSID()+" PONG "+params[0]);
- return true;
+ // PING for us, reply with a PONG
+ std::string reply = ":" + forwardto + " PONG " + prefix;
+ if (params.size() >= 2)
+ // If there is a second parameter, append it
+ reply.append(" :").append(params[1]);
+
+ this->WriteLine(reply);
}
else
{
- const std::string& forwardto = params[1];
- if (forwardto == ServerInstance->Config->ServerName || forwardto == ServerInstance->Config->GetSID())
- {
- // this is a ping for us, send back PONG to the requesting server
- params[1] = params[0];
- params[0] = forwardto;
- Utils->DoOneToOne(ServerInstance->Config->GetSID(),"PONG",params,params[1]);
- }
- else
- {
- // not for us, pass it on :)
- Utils->DoOneToOne(prefix,"PING",params,forwardto);
- }
- return true;
+ // not for us, pass it on :)
+ Utils->DoOneToOne(prefix,"PING",params,forwardto);
}
+ return true;
}