summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/core')
-rw-r--r--src/core/cs_xop.c25
1 files changed, 19 insertions, 6 deletions
diff --git a/src/core/cs_xop.c b/src/core/cs_xop.c
index 0f5f863dc..2fe9daf30 100644
--- a/src/core/cs_xop.c
+++ b/src/core/cs_xop.c
@@ -541,17 +541,30 @@ class CSXOP : public Module
this->SetVersion("$Id$");
this->SetType(CORE);
- if (ModeManager::FindChannelModeByName(CMODE_OWNER))
- this->AddCommand(CHANSERV, new CommandCSQOP());
- if (ModeManager::FindChannelModeByName(CMODE_PROTECT))
- this->AddCommand(CHANSERV, new CommandCSAOP());
- if (ModeManager::FindChannelModeByName(CMODE_HALFOP))
- this->AddCommand(CHANSERV, new CommandCSHOP());
this->AddCommand(CHANSERV, new CommandCSSOP());
+ this->AddCommand(CHANSERV, new CommandCSAOP());
this->AddCommand(CHANSERV, new CommandCSVOP());
+ if (serv_uplink && is_sync(serv_uplink))
+ OnUplinkSync();
+ else
+ {
+ /* We don't want to add some commands until we are synced, so we know what modes
+ * exist and what dont
+ */
+ ModuleManager::Attach(I_OnUplinkSync, this);
+ }
ModuleManager::Attach(I_OnChanServHelp, this);
}
+
+ void OnUplinkSync()
+ {
+ if (ModeManager::FindChannelModeByName(CMODE_OWNER))
+ this->AddCommand(CHANSERV, new CommandCSQOP());
+ if (ModeManager::FindChannelModeByName(CMODE_HALFOP))
+ this->AddCommand(CHANSERV, new CommandCSHOP());
+ }
+
void OnChanServHelp(User *u)
{
if (ModeManager::FindChannelModeByName(CMODE_OWNER))