]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_spanningtree/main.cpp
Added ability to send and receive a challenge, dont do anything with it yet
[user/henk/code/inspircd.git] / src / modules / m_spanningtree / main.cpp
index ed2d73efa217df68a441b4dfa6621fb5119b934e..9205077cf8e6ef6a9f147af97c8896eb4334213e 100644 (file)
@@ -50,6 +50,9 @@ ModuleSpanningTree::ModuleSpanningTree(InspIRCd* Me)
        }
        else
                SyncTimer = NULL;
+
+       RefreshTimer = new CacheRefreshTimer(ServerInstance, Utils);
+       ServerInstance->Timers->AddTimer(RefreshTimer);
 }
 
 void ModuleSpanningTree::ShowLinks(TreeServer* Current, userrec* user, int hops)
@@ -160,7 +163,7 @@ const std::string ModuleSpanningTree::MapOperInfo(TreeServer* Current)
 }
 
 // WARNING: NOT THREAD SAFE - DONT GET ANY SMART IDEAS.
-void ModuleSpanningTree::ShowMap(TreeServer* Current, userrec* user, int depth, char matrix[128][80], float &totusers, float &totservers)
+void ModuleSpanningTree::ShowMap(TreeServer* Current, userrec* user, int depth, char matrix[128][128], float &totusers, float &totservers)
 {
        if (line < 128)
        {
@@ -180,7 +183,10 @@ void ModuleSpanningTree::ShowMap(TreeServer* Current, userrec* user, int depth,
                        spacer[5] = '\0';
                }
                float percent;
-               char text[80];
+               char text[128];
+               /* Neat and tidy default values, as we're dealing with a matrix not a simple string */
+               memset(text, 0, 128);
+
                if (ServerInstance->clientlist->size() == 0) {
                        // If there are no users, WHO THE HELL DID THE /MAP?!?!?!
                        percent = 0;
@@ -190,10 +196,10 @@ void ModuleSpanningTree::ShowMap(TreeServer* Current, userrec* user, int depth,
                        percent = ((float)Current->GetUserCount() / (float)ServerInstance->clientlist->size()) * 100;
                }
                const std::string operdata = IS_OPER(user) ? MapOperInfo(Current) : "";
-               snprintf(text, 80, "%s %s%5d [%5.2f%%]%s", Current->GetName().c_str(), spacer, Current->GetUserCount(), percent, operdata.c_str());
+               snprintf(text, 126, "%s %s%5d [%5.2f%%]%s", Current->GetName().c_str(), spacer, Current->GetUserCount(), percent, operdata.c_str());
                totusers += Current->GetUserCount();
                totservers++;
-               strlcpy(&matrix[line][depth],text,80);
+               strlcpy(&matrix[line][depth],text,126);
                line++;
                for (unsigned int q = 0; q < Current->ChildCount(); q++)
                {
@@ -312,7 +318,7 @@ void ModuleSpanningTree::HandleMap(const char** parameters, int pcnt, userrec* u
        // client does not provide for a proper terminal.
        float totusers = 0;
        float totservers = 0;
-       char matrix[128][80];
+       char matrix[128][128];
        for (unsigned int t = 0; t < 128; t++)
        {
                matrix[t][0] = '\0';
@@ -1301,6 +1307,8 @@ ModuleSpanningTree::~ModuleSpanningTree()
        if (SyncTimer)
                ServerInstance->Timers->DelTimer(SyncTimer);
 
+       ServerInstance->Timers->DelTimer(RefreshTimer);
+
        ServerInstance->DoneWithInterface("InspSocketHook");
 }