/* Close logging */
this->Logs->CloseLogs();
DeleteZero(this->Logs);
-
- delete RehashFinishMutex;
}
void InspIRCd::Restart(const std::string &reason)
FailedPortList pl;
int do_version = 0, do_nofork = 0, do_debug = 0,
do_nolog = 0, do_root = 0, do_testsuite = 0; /* flag variables */
- char c = 0;
+ int c = 0;
// Initialize so that if we exit before proper initialization they're not deleted
this->Logs = 0;
SE = SEF->Create(this);
delete SEF;
- ThreadEngineFactory* tef = new ThreadEngineFactory();
- this->Threads = tef->Create(this);
- delete tef;
- this->Mutexes = new MutexFactory(this);
+ this->Threads = new ThreadEngine(this);
/* Default implementation does nothing */
this->PI = new ProtocolInterface(this);
{ 0, 0, 0, 0 }
};
- while ((c = getopt_long_only(argc, argv, ":f:", longopts, NULL)) != -1)
+ int index;
+ while ((c = getopt_long_only(argc, argv, ":f:", longopts, &index)) != -1)
{
switch (c)
{
case 0:
/* getopt_long_only() set an int variable, just keep going */
break;
+ case '?':
+ /* Unknown parameter */
default:
- /* Unknown parameter! DANGER, INTRUDER.... err.... yeah. */
+ /* Fall through to handle other weird values too */
+ printf("Unknown parameter '%s'\n", argv[index]);
printf("Usage: %s [--nofork] [--nolog] [--debug] [--logfile <filename>]\n\
[--runasroot] [--version] [--config <config>] [--testsuite]\n", argv[0]);
Exit(EXIT_STATUS_ARGV);
Exit(0);
}
- RehashFinishMutex = Mutexes->CreateMutex();
-
while (true)
{
#ifndef WIN32
#endif
/* Check if there is a config thread which has finished executing but has not yet been freed */
- RehashFinishMutex->Lock();
- if (this->ConfigThread && this->ConfigThread->GetExitFlag())
+ if (this->ConfigThread && this->ConfigThread->IsDone())
{
/* Rehash has completed */
delete ConfigThread;
ConfigThread = NULL;
}
- RehashFinishMutex->Unlock();
/* time() seems to be a pretty expensive syscall, so avoid calling it too much.
* Once per loop iteration is pleanty.