extern time_t TIME;
extern time_t OLDTIME;
extern std::vector<userrec*> local_users;
+extern InspSocket* socket_ref[MAX_DESCRIPTORS];
char LOG_FILE[MAXBUF];
extern InspIRCd* ServerInstance;
for (std::vector<InspSocket*>::iterator a = module_sockets.begin(); a < module_sockets.end(); a++)
{
InspSocket* s = (InspSocket*)*a;
- if (s->Timeout(TIME))
+ if ((s) && (socket_ref[s->GetFd()] != NULL) && (s->Timeout(TIME)))
{
- log(DEBUG,"Socket poll returned false, close and bail");
+ log(DEBUG,"userprocess.cpp: Socket poll returned false, close and bail");
+ socket_ref[s->GetFd()] = NULL;
SE->DelFd(s->GetFd());
- s->Close();
module_sockets.erase(a);
+ s->Close();
delete s;
break;
}
*/
void DoBackgroundUserStuff(time_t TIME)
{
- CullList* GlobalGoners = new CullList();
+ CullList GlobalGoners;
for (std::vector<userrec*>::iterator count2 = local_users.begin(); count2 != local_users.end(); count2++)
{
if (((unsigned)TIME > (unsigned)curr->timeout) && (curr->registered != 7))
{
log(DEBUG,"InspIRCd: registration timeout: %s",curr->nick);
- GlobalGoners->AddItem(curr,"Registration timeout");
+ GlobalGoners.AddItem(curr,"Registration timeout");
continue;
}
{
curr->dns_done = true;
ServerInstance->stats->statsDnsBad++;
- FullConnectUser(curr,GlobalGoners);
+ FullConnectUser(curr,&GlobalGoners);
continue;
}
if ((curr->dns_done) && (curr->registered == 3) && (AllModulesReportReady(curr)))
{
log(DEBUG,"dns done, registered=3, and modules ready, OK");
- FullConnectUser(curr,GlobalGoners);
+ FullConnectUser(curr,&GlobalGoners);
continue;
}
// This user didn't answer the last ping, remove them
if (!curr->lastping)
{
- GlobalGoners->AddItem(curr,"Ping timeout");
+ GlobalGoners.AddItem(curr,"Ping timeout");
continue;
}
*/
curr->FlushWriteBuf();
- if (curr->GetWriteError() != "")
+ if (*curr->GetWriteError())
{
- GlobalGoners->AddItem(curr,curr->GetWriteError());
+ GlobalGoners.AddItem(curr,curr->GetWriteError());
continue;
}
}
}
/* Remove all the queued users who are due to be quit, free memory used. */
- GlobalGoners->Apply();
- delete GlobalGoners;
- return;
+ GlobalGoners.Apply();
}
void OpenLog(char** argv, int argc)
void LoadAllModules(InspIRCd* ServerInstance)
{
char configToken[MAXBUF];
+ Config->module_names.clear();
MODCOUNT = -1;