diff options
Diffstat (limited to 'modules/protocol/inspircd3.cpp')
-rw-r--r-- | modules/protocol/inspircd3.cpp | 25 |
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> ¶ms) 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) { } |