diff options
Diffstat (limited to 'contrib/Anope/0009-ngircd-Update-protocol-module-for-current-Anope-1.9.patch')
| -rw-r--r-- | contrib/Anope/0009-ngircd-Update-protocol-module-for-current-Anope-1.9.patch | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/contrib/Anope/0009-ngircd-Update-protocol-module-for-current-Anope-1.9.patch b/contrib/Anope/0009-ngircd-Update-protocol-module-for-current-Anope-1.9.patch new file mode 100644 index 00000000..b6a003ab --- /dev/null +++ b/contrib/Anope/0009-ngircd-Update-protocol-module-for-current-Anope-1.9.patch @@ -0,0 +1,143 @@ +From e74a5303f2357f4a9915bb91038a2e326323db3c Mon Sep 17 00:00:00 2001 +From: Alexander Barton <alex@barton.de> +Date: Fri, 25 Nov 2011 19:16:37 +0100 +Subject: [PATCH 09/16] ngircd: Update protocol module for current Anope 1.9 + GIT + +This changes are rquired by: + + - b14f5ea88: Fixed accidentally clearing botmodes when joins are sent + - cef3eb78d: Remove send_cmd and replace it with a stringstream + - ddc3c2f38: Added options:nonicknameownership config option +--- + modules/protocol/ngircd.cpp | 54 ++++++++++++++++++++++-------------------- + 1 files changed, 28 insertions(+), 26 deletions(-) + +diff --git a/modules/protocol/ngircd.cpp b/modules/protocol/ngircd.cpp +index 2774168..55cb8d7 100644 +--- a/modules/protocol/ngircd.cpp ++++ b/modules/protocol/ngircd.cpp +@@ -54,16 +54,22 @@ class ngIRCdProto : public IRCDProto + + void SendGlobopsInternal(const BotInfo *source, const Anope::string &buf) + { +- send_cmd(source ? source->nick : Config->ServerName, "WALLOPS :%s", buf.c_str()); ++ UplinkSocket::Message(source ? source->nick : Config->ServerName) << "WALLOPS :" << buf; + } + +- void SendJoin(User *user, Channel *c, ChannelStatus *status) ++ void SendJoin(User *user, Channel *c, const ChannelStatus *status) + { +- send_cmd(user->nick, "JOIN %s", c->name.c_str()); ++ UplinkSocket::Message(user->nick) << "JOIN " << c->name; + if (status) + { ++ /* First save the channel status incase uc->Status == status */ + ChannelStatus cs = *status; +- status->ClearFlags(); ++ /* If the user is internally on the channel with flags, kill them so that ++ * the stacker will allow this. ++ */ ++ UserContainer *uc = c->FindUser(user); ++ if (uc != NULL) ++ uc->Status->ClearFlags(); + + BotInfo *setter = findbot(user->nick); + for (unsigned i = 0; i < ModeManager::ChannelModes.size(); ++i) +@@ -74,18 +80,18 @@ class ngIRCdProto : public IRCDProto + + void SendSVSKillInternal(const BotInfo *source, const User *user, const Anope::string &buf) + { +- send_cmd(source ? source->nick : Config->ServerName, "KILL %s :%s", user->nick.c_str(), buf.c_str()); ++ UplinkSocket::Message(source ? source->nick : Config->ServerName) << "KILL " << user->nick << " :" << buf; + } + + /* SERVER name hop descript */ + void SendServer(const Server *server) + { +- send_cmd("", "SERVER %s %d :%s", server->GetName().c_str(), server->GetHops(), server->GetDescription().c_str()); ++ UplinkSocket::Message() << "SERVER " << server->GetName() << " " << server->GetHops() << " :" << server->GetDescription(); + } + + void SendConnect() + { +- send_cmd("", "PASS %s 0210-IRC+ Anope|%s:CLHSo P", Config->Uplinks[CurrentUplink]->password.c_str(), Anope::VersionShort().c_str()); ++ UplinkSocket::Message() << "PASS " << Config->Uplinks[CurrentUplink]->password << " 0210-IRC+ Anope|" << Anope::VersionShort() << ":CLHSo P"; + /* Make myself known to myself in the serverlist */ + SendServer(Me); + /* finish the enhanced server handshake and register the connection */ +@@ -98,56 +104,52 @@ class ngIRCdProto : public IRCDProto + Anope::string modes = "+" + u->GetModes(); + XLine x(u->nick, "Reserved for services"); + ircdproto->SendSQLine(NULL, &x); +- send_cmd(Config->ServerName, "NICK %s 1 %s %s 1 %s :%s", u->nick.c_str(), u->GetIdent().c_str(), u->host.c_str(), modes.c_str(), u->realname.c_str()); ++ UplinkSocket::Message(Config->ServerName) << "NICK " << u->nick << " 1 " << u->GetIdent() << " " << u->host << " 1 " << modes << " :" << u->realname; + } + + void SendPartInternal(const BotInfo *bi, const Channel *chan, const Anope::string &buf) + { + if (!buf.empty()) +- send_cmd(bi->nick, "PART %s :%s", chan->name.c_str(), buf.c_str()); ++ UplinkSocket::Message(bi->nick) << "PART " << chan->name << " :" << buf; + else +- send_cmd(bi->nick, "PART %s", chan->name.c_str()); ++ UplinkSocket::Message(bi->nick) << "PART " << chan->name; + } + + void SendModeInternal(const BotInfo *bi, const Channel *dest, const Anope::string &buf) + { +-Log(LOG_DEBUG) << "SendModeInternal 1"; +- send_cmd(bi ? bi->nick : Config->ServerName, "MODE %s %s", dest->name.c_str(), buf.c_str()); ++ UplinkSocket::Message(bi ? bi->nick : Config->ServerName) << "MODE " << dest->name << " " << buf; + } + + void SendModeInternal(const BotInfo *bi, const User *u, const Anope::string &buf) + { +-Log(LOG_DEBUG) << "SendModeInternal 2"; +- send_cmd(bi ? bi->nick : Config->ServerName, "MODE %s %s", u->nick.c_str(), buf.c_str()); ++ UplinkSocket::Message(bi ? bi->nick : Config->ServerName) << "MODE " << u->nick << " " << buf; + } + + void SendKickInternal(const BotInfo *bi, const Channel *chan, const User *user, const Anope::string &buf) + { + if (!buf.empty()) +- send_cmd(bi->nick, "KICK %s %s :%s", chan->name.c_str(), user->nick.c_str(), buf.c_str()); ++ UplinkSocket::Message(bi->nick) << "KICK " << chan->name << " " << user->nick << " :" << buf; + else +- send_cmd(bi->nick, "KICK %s %s", chan->name.c_str(), user->nick.c_str()); ++ UplinkSocket::Message(bi->nick) << "KICK " << chan->name << " " << user->nick; + } + +- void SendNoticeChanopsInternal(const BotInfo *source, const Channel *dest, const Anope::string &buf) ++ void SendChannel(Channel *c) + { +- send_cmd(source->nick, "NOTICE @%s :%s", dest->name.c_str(), buf.c_str()); ++ Anope::string modes = c->GetModes(true, true); ++ UplinkSocket::Message(Config->ServerName) << "CHANINFO " << c->name << " +" << modes; + } + +- /* INVITE */ +- void SendInvite(BotInfo *source, const Anope::string &chan, const Anope::string &nick) ++ void SendTopic(BotInfo *bi, Channel *c) + { +- send_cmd(source->nick, "INVITE %s %s", nick.c_str(), chan.c_str()); ++ UplinkSocket::Message(bi->nick) << "TOPIC " << c->name << " :" << c->topic; + } + +- void SendChannel(Channel *c) ++ void SendLogin(User *u) + { +- Anope::string modes = c->GetModes(true, true); +- send_cmd(Config->ServerName, "CHANINFO %s +%s", c->name.c_str(), modes.c_str()); + } +- void SendTopic(BotInfo *bi, Channel *c) ++ ++ void SendLogout(User *u) + { +- send_cmd(bi->nick, "TOPIC %s :%s", c->name.c_str(), c->topic.c_str()); + } + }; + +-- +1.7.8.3 + |