diff --git a/modules/protocol/hybrid.cpp b/modules/protocol/hybrid.cpp index 708e66849..965624264 100644 --- a/modules/protocol/hybrid.cpp +++ b/modules/protocol/hybrid.cpp @@ -233,21 +233,7 @@ class HybridProto : public IRCDProto void SendTopic(const MessageSource &source, Channel *c) anope_override { - BotInfo *bi = source.GetBot(); - bool needjoin = c->FindUser(bi) == NULL; - - if (needjoin) - { - ChannelStatus status; - - status.AddMode('o'); - bi->Join(c, &status); - } - - IRCDProto::SendTopic(source, c); - - if (needjoin) - bi->Part(c); + UplinkSocket::Message(source) << "TBURST " << c->creation_time << " " << c->name << " " << c->topic_ts << " " << c->topic_setter << " :" << c->topic; } void SendForceNickChange(User *u, const Anope::string &newnick, time_t when) anope_override diff --git a/modules/protocol/ratbox.cpp b/modules/protocol/ratbox.cpp index 0cb8a6df2..3c3079ae2 100644 --- a/modules/protocol/ratbox.cpp +++ b/modules/protocol/ratbox.cpp @@ -41,7 +41,6 @@ class RatboxProto : public IRCDProto void SendServer(const Server *server) anope_override { hybrid->SendServer(server); } void SendModeInternal(const MessageSource &source, User *u, const Anope::string &buf) anope_override { hybrid->SendModeInternal(source, u, buf); } void SendChannel(Channel *c) anope_override { hybrid->SendChannel(c); } - void SendTopic(const MessageSource &source, Channel *c) anope_override { hybrid->SendTopic(source, c); } bool IsIdentValid(const Anope::string &ident) anope_override { return hybrid->IsIdentValid(ident); } void SendGlobopsInternal(const MessageSource &source, const Anope::string &buf) anope_override @@ -94,6 +93,25 @@ class RatboxProto : public IRCDProto { UplinkSocket::Message(Me) << "ENCAP * SU " << u->GetUID(); } + + void SendTopic(const MessageSource &source, Channel *c) anope_override + { + BotInfo *bi = source.GetBot(); + bool needjoin = c->FindUser(bi) == NULL; + + if (needjoin) + { + ChannelStatus status; + + status.AddMode('o'); + bi->Join(c, &status); + } + + IRCDProto::SendTopic(source, c); + + if (needjoin) + bi->Part(c); + } }; struct IRCDMessageEncap : IRCDMessage