aboutsummaryrefslogtreecommitdiff
path: root/src/modules/m_spanningtree/protocolinterface.cpp
diff options
context:
space:
mode:
authorGravatar Daniel De Graaf2010-02-09 12:43:13 -0600
committerGravatar Daniel De Graaf2010-08-03 17:32:34 -0400
commitd439bfcb17ccaf3d8e9366ce8d3922d3b83326b9 (patch)
tree4d7341ebe0413e8f741d4ab11f0a1d592aa324a7 /src/modules/m_spanningtree/protocolinterface.cpp
parentUpdate InspIRCd::SendMode to take a modestacker (diff)
Fixups for s2s sync (currently limited to lettered modes)
Diffstat (limited to 'src/modules/m_spanningtree/protocolinterface.cpp')
-rw-r--r--src/modules/m_spanningtree/protocolinterface.cpp36
1 files changed, 17 insertions, 19 deletions
diff --git a/src/modules/m_spanningtree/protocolinterface.cpp b/src/modules/m_spanningtree/protocolinterface.cpp
index 7434400a0..c72318a10 100644
--- a/src/modules/m_spanningtree/protocolinterface.cpp
+++ b/src/modules/m_spanningtree/protocolinterface.cpp
@@ -67,33 +67,31 @@ void SpanningTreeProtocolInterface::SendTopic(Channel* channel, std::string &top
Utils->DoOneToMany(ServerInstance->Config->GetSID(),"FTOPIC", params);
}
-void SpanningTreeProtocolInterface::SendMode(const std::string &target, const parameterlist &modedata, const std::vector<TranslateType> &translate)
+void SpanningTreeProtocolInterface::SendMode(User* src, Extensible* dest, irc::modestacker& cmodes)
{
- if (modedata.empty())
- return;
-
- std::string outdata;
- ServerInstance->Parser->TranslateUIDs(translate, modedata, outdata);
-
- std::string uidtarget;
- ServerInstance->Parser->TranslateUIDs(TR_NICK, target, uidtarget);
-
+ irc::modestacker modes(cmodes);
parameterlist outlist;
- outlist.push_back(uidtarget);
- outlist.push_back(outdata);
- User* a = ServerInstance->FindNick(uidtarget);
+ User* a = dynamic_cast<User*>(dest);
+ Channel* c = dynamic_cast<Channel*>(dest);
if (a)
{
- Utils->DoOneToMany(ServerInstance->Config->GetSID(),"MODE",outlist);
- return;
+ outlist.push_back(a->uuid);
+ outlist.push_back("");
+ while (!modes.empty())
+ {
+ outlist[1] = modes.popModeLine(true);
+ Utils->DoOneToMany(ServerInstance->Config->GetSID(),"MODE",outlist);
+ }
}
- else
+ else if (c)
{
- Channel* c = ServerInstance->FindChan(target);
- if (c)
+ outlist.push_back(c->name);
+ outlist.push_back(ConvToStr(c->age));
+ outlist.push_back("");
+ while (!modes.empty())
{
- outlist.insert(outlist.begin() + 1, ConvToStr(c->age));
+ outlist[2] = modes.popModeLine(true);
Utils->DoOneToMany(ServerInstance->Config->GetSID(),"FMODE",outlist);
}
}