summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/protocol/inspircd3.cpp25
1 files changed, 22 insertions, 3 deletions
diff --git a/modules/protocol/inspircd3.cpp b/modules/protocol/inspircd3.cpp
index 6d156a3b0..aab3300b5 100644
--- a/modules/protocol/inspircd3.cpp
+++ b/modules/protocol/inspircd3.cpp
@@ -102,6 +102,15 @@ class InspIRCd3Proto : public IRCDProto
UplinkSocket::Message(bi) << "PRIVMSG $" << dest->GetName() << " :" << msg;
}
+ void SendPong(const Anope::string &servname, const Anope::string &who) anope_override
+ {
+ Server *serv = servname.empty() ? NULL : Server::Find(servname);
+ if (!serv)
+ serv = Me;
+
+ UplinkSocket::Message(serv) << "PONG " << who;
+ }
+
void SendAkillDel(const XLine *x) anope_override
{
{
@@ -1634,6 +1643,16 @@ struct IRCDMessageOperType : IRCDMessage
}
};
+struct IRCDMessagePing : IRCDMessage
+{
+ IRCDMessagePing(Module *creator) : IRCDMessage(creator, "PING", 1) { SetFlag(IRCDMESSAGE_SOFT_LIMIT); SetFlag(IRCDMESSAGE_REQUIRE_SERVER); }
+
+ void Run(MessageSource &source, const std::vector<Anope::string> &params) anope_override
+ {
+ if (params[0] == Me->GetSID())
+ IRCD->SendPong(params[0], source.GetServer()->GetSID());
+ }
+};
struct IRCDMessageRSQuit : IRCDMessage
{
@@ -1775,7 +1794,6 @@ class ProtoInspIRCd3 : public Module
Message::MOTD message_motd;
Message::Notice message_notice;
Message::Part message_part;
- Message::Ping message_ping;
Message::Privmsg message_privmsg;
Message::Quit message_quit;
Message::Stats message_stats;
@@ -1798,6 +1816,7 @@ class ProtoInspIRCd3 : public Module
IRCDMessageMode message_mode;
IRCDMessageNick message_nick;
IRCDMessageOperType message_opertype;
+ IRCDMessagePing message_ping;
IRCDMessageRSQuit message_rsquit;
IRCDMessageServer message_server;
IRCDMessageSQuit message_squit;
@@ -1815,12 +1834,12 @@ class ProtoInspIRCd3 : public Module
ProtoInspIRCd3(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, PROTOCOL | VENDOR),
ircd_proto(this),
message_error(this), message_invite(this), message_kill(this),
- message_motd(this), message_notice(this), message_part(this), message_ping(this), message_privmsg(this),
+ message_motd(this), message_notice(this), message_part(this), message_privmsg(this),
message_quit(this), message_stats(this), message_away(this), message_capab(this),
message_encap(this), message_fhost(this), message_fident(this), message_kick(this),
message_metadata(this, use_server_side_topiclock, use_server_side_mlock), message_save(this),
message_endburst(this), message_fjoin(this), message_fmode(this), message_ftopic(this), message_idle(this), message_ijoin(this),
- message_mode(this), message_nick(this), message_opertype(this), message_rsquit(this), message_server(this),
+ message_mode(this), message_nick(this), message_opertype(this), message_ping(this), message_rsquit(this), message_server(this),
message_squit(this), message_time(this), message_uid(this)
{
}