diff options
| author | 2010-02-09 12:43:13 -0600 | |
|---|---|---|
| committer | 2010-08-03 17:32:34 -0400 | |
| commit | d439bfcb17ccaf3d8e9366ce8d3922d3b83326b9 (patch) | |
| tree | 4d7341ebe0413e8f741d4ab11f0a1d592aa324a7 /src/modules/m_spanningtree/protocolinterface.cpp | |
| parent | Update 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.cpp | 36 |
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); } } |
