void FloodQuitUserHandler::Call(User* current)
{
- Server->Logs->Log("USERS",DEFAULT,"Excess flood from: %s@%s", current->ident, current->host);
+ Server->Logs->Log("USERS",DEFAULT,"Excess flood from: %s@%s", current->ident.c_str(), current->host.c_str());
Server->SNO->WriteToSnoMask('f',"Excess flood from: %s%s%s@%s",
- current->registered == REG_ALL ? current->nick : "",
- current->registered == REG_ALL ? "!" : "", current->ident, current->host);
- User::QuitUser(Server, current, "Excess flood");
+ current->registered == REG_ALL ? current->nick.c_str() : "",
+ current->registered == REG_ALL ? "!" : "", current->ident.c_str(), current->host.c_str());
+ Server->Users->QuitUser(current, "Excess flood");
if (current->registered != REG_ALL)
{
char* ReadBuffer = Server->GetReadBuffer();
- if (Server->Config->GetIOHook(cu->GetPort()))
+ if (cu->io)
{
int result2 = 0;
int MOD_RESULT = 0;
try
{
- MOD_RESULT = Server->Config->GetIOHook(cu->GetPort())->OnRawSocketRead(cu->GetFd(),ReadBuffer,Server->Config->NetBufferSize,result2);
+ MOD_RESULT = cu->io->OnRawSocketRead(cu->GetFd(),ReadBuffer,Server->Config->NetBufferSize,result2);
}
catch (CoreException& modexcept)
{
Server->FloodQuitUser(current);
else
{
- current->WriteServ("NOTICE %s :Your previous line was too long and was not delivered (Over %d chars) Please shorten it.", current->nick, MAXBUF-2);
+ current->WriteServ("NOTICE %s :Your previous line was too long and was not delivered (Over %d chars) Please shorten it.", current->nick.c_str(), MAXBUF-2);
current->recvq.clear();
}
}
if ((result == -1) && (errno != EAGAIN) && (errno != EINTR))
{
- User::QuitUser(Server, cu, errno ? strerror(errno) : "EOF from client");
+ Server->Users->QuitUser(cu, errno ? strerror(errno) : "EOF from client");
return;
}
}
}
else if (result == 0)
{
- User::QuitUser(Server, cu, "Connection closed");
+ Server->Users->QuitUser(cu, "Connection closed");
return;
}
}
{
User *curr = *count2;
+ if (curr->quitting)
+ continue;
+
if (curr->Penalty)
{
curr->Penalty--;
* registration timeout -- didnt send USER/NICK/HOST
* in the time specified in their connection class.
*/
- User::QuitUser(this, curr, "Registration timeout");
+ this->Users->QuitUser(curr, "Registration timeout");
continue;
}
snprintf(message, MAXBUF, "Ping timeout: %ld second%s", (long)time, time > 1 ? "s" : "");
curr->lastping = 1;
curr->nping = TIME + curr->MyClass->GetPingTime();
- User::QuitUser(this, curr, message);
+ this->Users->QuitUser(curr, message);
continue;
}
+
curr->Write("PING :%s",this->Config->ServerName);
curr->lastping = 0;
curr->nping = TIME +curr->MyClass->GetPingTime();