- strlcpy(user->awaymsg,parameters[0],MAXAWAY);
- user->WriteServ("306 %s :You have been marked as being away",user->nick);
- FOREACH_MOD(I_OnSetAway,OnSetAway(user));
+ FOREACH_RESULT(I_OnSetAway, OnSetAway(user, parameters[0]));
+
+ if (MOD_RESULT != 0 && !IS_LOCAL(user))
+ return CMD_FAILURE;
+
+ user->awaytime = ServerInstance->Time();
+ user->awaymsg.assign(parameters[0], 0, ServerInstance->Config->Limits.MaxAway);
+
+ user->WriteNumeric(RPL_NOWAWAY, "%s :You have been marked as being away",user->nick.c_str());