]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_spanningtree/main.cpp
Send HALFOP= line in CAPAB CAPABILITIES for 1201 compat (anope relies on this)
[user/henk/code/inspircd.git] / src / modules / m_spanningtree / main.cpp
index 11b309557277eb912a272473b4324e3f6223c9cb..68367cee0142eb8cb4eebba65a3271c90f9cd240 100644 (file)
@@ -31,6 +31,7 @@ ModuleSpanningTree::ModuleSpanningTree()
 {
        Utils = new SpanningTreeUtilities(this);
        commands = new SpanningTreeCommands(this);
+       RefreshTimer = NULL;
 }
 
 SpanningTreeCommands::SpanningTreeCommands(ModuleSpanningTree* module)
@@ -43,7 +44,6 @@ SpanningTreeCommands::SpanningTreeCommands(ModuleSpanningTree* module)
 
 void ModuleSpanningTree::init()
 {
-       RefreshTimer = new CacheRefreshTimer(Utils);
        ServerInstance->Modules->AddService(commands->rconnect);
        ServerInstance->Modules->AddService(commands->rsquit);
        ServerInstance->Modules->AddService(commands->svsjoin);
@@ -58,6 +58,7 @@ void ModuleSpanningTree::init()
        ServerInstance->Modules->AddService(commands->fhost);
        ServerInstance->Modules->AddService(commands->fident);
        ServerInstance->Modules->AddService(commands->fname);
+       RefreshTimer = new CacheRefreshTimer(Utils);
        ServerInstance->Timers->AddTimer(RefreshTimer);
 
        Implementation eventlist[] =
@@ -332,7 +333,7 @@ void ModuleSpanningTree::DoConnectTimeout(time_t curtime)
                        Utils->timeoutlist.erase(me);
                        s->Close();
                }
-               if (curtime > s->age + p.second)
+               else if (curtime > s->age + p.second)
                {
                        ServerInstance->SNO->WriteToSnoMask('l',"CONNECT: Error connecting \002%s\002 (timeout of %d seconds)",p.first.c_str(),p.second);
                        Utils->timeoutlist.erase(me);
@@ -581,6 +582,13 @@ void ModuleSpanningTree::OnUserConnect(LocalUser* user)
        params.push_back(":"+std::string(user->fullname));
        Utils->DoOneToMany(ServerInstance->Config->GetSID(), "UID", params);
 
+       if (IS_OPER(user))
+       {
+               params.clear();
+               params.push_back(user->oper->name);
+               Utils->DoOneToMany(user->uuid,"OPERTYPE",params);
+       }
+
        for(Extensible::ExtensibleStore::const_iterator i = user->GetExtList().begin(); i != user->GetExtList().end(); i++)
        {
                ExtensionItem* item = i->first;
@@ -790,12 +798,11 @@ void ModuleSpanningTree::RedoConfig(Module* mod)
 // locally.
 void ModuleSpanningTree::OnOper(User* user, const std::string &opertype)
 {
-       if (IS_LOCAL(user))
-       {
-               parameterlist params;
-               params.push_back(opertype);
-               Utils->DoOneToMany(user->uuid,"OPERTYPE",params);
-       }
+       if (user->registered != REG_ALL || !IS_LOCAL(user))
+               return;
+       parameterlist params;
+       params.push_back(opertype);
+       Utils->DoOneToMany(user->uuid,"OPERTYPE",params);
 }
 
 void ModuleSpanningTree::OnAddLine(User* user, XLine *x)