mirror of
https://github.com/anope/anope.git
synced 2026-07-08 02:43:13 +02:00
Set pending mode changes immediately when an object is removed from the mode stacker. And fix mlock creator from cs set persist on.
This commit is contained in:
+18
-2
@@ -570,14 +570,30 @@ void ModeManager::ProcessModes()
|
||||
}
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
static void StackerDel(std::map<T *, StackerInfo *> &map, T *obj)
|
||||
{
|
||||
typename std::map<T *, StackerInfo *>::iterator it = map.find(obj);
|
||||
if (it != map.end())
|
||||
{
|
||||
StackerInfo *si = it->second;
|
||||
std::list<Anope::string> ModeStrings = BuildModeStrings(si);
|
||||
for (std::list<Anope::string>::iterator lit = ModeStrings.begin(), lit_end = ModeStrings.end(); lit != lit_end; ++lit)
|
||||
IRCD->SendMode(si->bi, obj, lit->c_str());
|
||||
|
||||
delete si;
|
||||
map.erase(it);
|
||||
}
|
||||
}
|
||||
|
||||
void ModeManager::StackerDel(User *u)
|
||||
{
|
||||
UserStackerObjects.erase(u);
|
||||
::StackerDel(UserStackerObjects, u);
|
||||
}
|
||||
|
||||
void ModeManager::StackerDel(Channel *c)
|
||||
{
|
||||
ChannelStackerObjects.erase(c);
|
||||
::StackerDel(ChannelStackerObjects, c);
|
||||
}
|
||||
|
||||
void ModeManager::StackerDel(Mode *m)
|
||||
|
||||
Reference in New Issue
Block a user