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()
#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;
}
void InspIRCd::DoOneIteration(bool process_module_sockets)
{
- /*bool expire_run = false;
int activefds[MAX_DESCRIPTORS];
int incomingSockfd;
int in_port;
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.
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;
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
case X_ESTAB_MODULE:
if (!process_module_sockets)
- return;
+ break;
/* Process module-owned sockets.
* Modules are encouraged to inherit their sockets from