- std::string line = "";
- for (int i = 1; i < pcnt - 1; i++)
- {
- line = line + std::string(parameters[i]) + " ";
- }
- line = line + std::string(parameters[pcnt-1]);
-
- ServerInstance->WriteOpers(std::string(user->nick)+" used SAQUIT to make "+std::string(dest->nick)+" quit with a reason of "+line);
- userrec::QuitUser(ServerInstance, dest, line);
+
+ irc::stringjoiner reason_join(" ", parameters, 1, pcnt - 1);
+ std::string line = reason_join.GetJoined();
+ ServerInstance->SNO->WriteToSnoMask('A', std::string(user->nick)+" used SAQUIT to make "+std::string(dest->nick)+" quit with a reason of "+line);
+
+ // Pass the command on, so the client's server can quit it properly.
+ if (!IS_LOCAL(dest))
+ return CMD_SUCCESS;
+
+ User::QuitUser(ServerInstance, dest, line);
+ return CMD_SUCCESS;
+ }
+ else
+ {
+ user->WriteServ("NOTICE %s :*** Invalid nickname '%s'", user->nick, parameters[0]);