- strlcpy(reason, parameters[0],MAXQUIT-1);
-
- /* We should only prefix the quit for a local user. Remote users have
- * already been prefixed, where neccessary, by the upstream server.
- */
- if (IS_LOCAL(user))
- {
- user->Write("ERROR :Closing link (%s@%s) [%s%s]",user->ident,user->host,ServerInstance->Config->PrefixQuit,parameters[0]);
- ServerInstance->SNO->WriteToSnoMask('q',"Client exiting: %s!%s@%s [%s%s]",user->nick,user->ident,user->host,ServerInstance->Config->PrefixQuit,parameters[0]);
- user->WriteCommonExcept("QUIT :%s%s",ServerInstance->Config->PrefixQuit,parameters[0]);
- }
- else
- {
- ServerInstance->SNO->WriteToSnoMask('q',"Client exiting at %s: %s!%s@%s [%s]",user->server,user->nick,user->ident,user->host,parameters[0]);
- user->WriteCommonExcept("QUIT :%s",parameters[0]);
- }
- FOREACH_MOD(I_OnUserQuit,OnUserQuit(user,std::string(ServerInstance->Config->PrefixQuit)+std::string(parameters[0])));
-
- }
- else
- {
- if (IS_LOCAL(user))
- {
- user->Write("ERROR :Closing link (%s@%s) [QUIT]",user->ident,user->host);
- ServerInstance->SNO->WriteToSnoMask('q',"Client exiting: %s!%s@%s [Client exited]",user->nick,user->ident,user->host);
- }
- else
- {
- ServerInstance->SNO->WriteToSnoMask('q',"Client exiting at %s: %s!%s@%s [Client exited]",user->server,user->nick,user->ident,user->host);
- }
- user->WriteCommonExcept("QUIT :Client exited");
- FOREACH_MOD(I_OnUserQuit,OnUserQuit(user,"Client exited"));
-
- }
- user->AddToWhoWas();
- }
-
- FOREACH_MOD(I_OnUserDisconnect,OnUserDisconnect(user));
-
- /* push the socket on a stack of sockets due to be closed at the next opportunity */