From d439bfcb17ccaf3d8e9366ce8d3922d3b83326b9 Mon Sep 17 00:00:00 2001 From: Daniel De Graaf Date: Tue, 9 Feb 2010 12:43:13 -0600 Subject: Fixups for s2s sync (currently limited to lettered modes) --- src/modules/m_spanningtree/protocolinterface.cpp | 36 +++++++++++------------- 1 file changed, 17 insertions(+), 19 deletions(-) (limited to 'src/modules/m_spanningtree/protocolinterface.cpp') 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 &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(dest); + Channel* c = dynamic_cast(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); } } -- cgit v1.3.1-10-gc9f91