]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/inspircd.cpp
Optimisation of optimisation :P ty w00tie
[user/henk/code/inspircd.git] / src / inspircd.cpp
index 98418a967c7fd81c012c41fc3b506a6d2876da14..253c2246b88d264943e84a1765ca503184361c26 100644 (file)
@@ -127,21 +127,7 @@ bool FindServerName(std::string servername)
 
 std::string InspIRCd::GetRevision()
 {
-       /* w00t got me to replace a bunch of strtok_r
-        * with something nicer, so i did this. Its the
-        * same thing really, only in C++. It places the
-        * text into a std::stringstream which is a readable
-        * and writeable buffer stream, and then pops two
-        * words off it, space delimited. Because it reads
-        * into the same variable twice, the first word
-        * is discarded, and the second one returned.
-        */
-
-       /* XXX - this revision ID is NOT bumping automatically -- w00t */
-       std::stringstream Revision("$Revision$");
-       std::string single;
-       Revision >> single >> single;
-       return single;
+       return REVISION;
 }
 
 void InspIRCd::MakeLowerMap()
@@ -251,11 +237,11 @@ std::string InspIRCd::GetVersionString()
 #endif
        if (*Config->CustomVersion)
        {
-               snprintf(versiondata,MAXBUF,"%s Rev. %s %s :%s",VERSION,GetRevision().c_str(),Config->ServerName,Config->CustomVersion);
+               snprintf(versiondata,MAXBUF,"%s %s :%s",VERSION,Config->ServerName,Config->CustomVersion);
        }
        else
        {
-               snprintf(versiondata,MAXBUF,"%s Rev. %s %s :%s [FLAGS=%lu,%s,%s]",VERSION,GetRevision().c_str(),Config->ServerName,SYSTEM,(unsigned long)OPTIMISATION,SE->GetName().c_str(),dnsengine);
+               snprintf(versiondata,MAXBUF,"%s %s :%s [FLAGS=%lu,%s,%s]",VERSION,Config->ServerName,SYSTEM,(unsigned long)OPTIMISATION,SE->GetName().c_str(),dnsengine);
        }
        return versiondata;
 }
@@ -606,7 +592,6 @@ bool InspIRCd::LoadModule(const char* filename)
 
 void InspIRCd::DoOneIteration(bool process_module_sockets)
 {
-        /*bool expire_run = false;
         int activefds[MAX_DESCRIPTORS];
         int incomingSockfd;
         int in_port;
@@ -615,7 +600,7 @@ void InspIRCd::DoOneIteration(bool process_module_sockets)
         InspSocket* s_del = NULL;
         unsigned int numberactive;
         sockaddr_in sock_us;     // our port number
-        socklen_t uslen;*/         // length of our port number
+        socklen_t uslen;         // length of our port number
 
         /* time() seems to be a pretty expensive syscall, so avoid calling it too much.
          * Once per loop iteration is pleanty.
@@ -631,7 +616,22 @@ void InspIRCd::DoOneIteration(bool process_module_sockets)
         if (((TIME % 5) == 0) && (!expire_run))
         {
                 expire_lines();
-                FOREACH_MOD(I_OnBackgroundTimer,OnBackgroundTimer(TIME));
+               if (process_module_sockets)
+               {
+                       /* Fix by brain - the addition of DoOneIteration means that this
+                        * can end up getting called recursively in the following pattern:
+                        *
+                        * m_spanningtree DoPingChecks
+                        * (server pings out and is squit)
+                        * (squit causes call to DoOneIteration)
+                        * DoOneIteration enters here
+                        * calls DoBackground timer
+                        * enters m_spanningtree DoPingChecks... see step 1.
+                        *
+                        * This should do the job and fix the bug.
+                        */
+                       FOREACH_MOD(I_OnBackgroundTimer,OnBackgroundTimer(TIME));
+               }
                 TickMissedTimers(TIME);
                 expire_run = true;
                 return;
@@ -648,7 +648,7 @@ void InspIRCd::DoOneIteration(bool process_module_sockets)
                         WriteOpers("*** \002EH?!\002 -- Time is flowing BACKWARDS in this dimension! Clock drifted backwards %d secs.",abs(OLDTIME-TIME));
                 DoBackgroundUserStuff(TIME);
         }
-               
+
         /* Process timeouts on module sockets each time around
          * the loop. There shouldnt be many module sockets, at
          * most, 20 or so, so this won't be much of a performance
@@ -690,7 +690,7 @@ void InspIRCd::DoOneIteration(bool process_module_sockets)
                         case X_ESTAB_MODULE:
 
                                if (!process_module_sockets)
-                                       return;
+                                       break;
 
                                 /* Process module-owned sockets.
                                  * Modules are encouraged to inherit their sockets from