server->SQuitInternal(num_lost_servers);
const std::string quitreason = GetName() + " " + server->GetName();
-
- ModuleSpanningTree* st = Utils->Creator;
- st->SplitInProgress = true;
unsigned int num_lost_users = QuitUsers(quitreason);
- st->SplitInProgress = false;
ServerInstance->SNO->WriteToSnoMask(IsRoot() ? 'l' : 'L', "Netsplit complete, lost \002%u\002 user%s on \002%u\002 server%s.",
num_lost_users, num_lost_users != 1 ? "s" : "", num_lost_servers, num_lost_servers != 1 ? "s" : "");
bool TreeServer::DelChild(TreeServer* Child)
{
- std::vector<TreeServer*>::iterator it = std::find(Children.begin(), Children.end(), Child);
- if (it != Children.end())
- {
- Children.erase(it);
- return true;
- }
- return false;
+ return stdalgo::erase(Children, Child);
}
CullResult TreeServer::cull()
void TreeServer::RemoveHash()
{
+ // XXX: Erase server from UserManager::uuidlist now, to allow sid reuse in the current main loop
+ // iteration, before the cull list is applied
+ ServerInstance->Users->uuidlist.erase(sid);
+
Utils->sidlist.erase(sid);
Utils->serverlist.erase(GetName());
}