* @param u The user to add
* @param r The quit reason of the added user
*/
- CullItem(userrec* u, std::string r);
+ CullItem(userrec* u, std::string &r);
/** Returns a pointer to the user
*/
userrec* GetUser();
* @param user The user to add
* @param reason The quit reason of the user being added
*/
- void AddItem(userrec* user, std::string reason);
+ void AddItem(userrec* user, std::string &reason);
/** Applies the cull list, quitting all the users
* on the list with their quit reasons all at once.
* This is a very fast operation compared to
return false;
}
-CullItem::CullItem(userrec* u, std::string r)
+CullItem::CullItem(userrec* u, std::string &r)
{
this->user = u;
this->reason = r;
exempt.clear();
}
-void CullList::AddItem(userrec* user, std::string reason)
+void CullList::AddItem(userrec* user, std::string &reason)
{
if (exempt.find(user) == exempt.end())
{
*/
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;
}
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)