len = AWAYLEN;
}
if (away)
- away = (char*) MyRealloc(away, len + 1);
- else
- away = (char*) MyMalloc(len + 1);
+ MyFree(away);
+ away = (char*) MyMalloc(len + 1);
assert(0 != away);
user->away = away;
int m_away(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
{
char* away_message = parv[1];
+ int was_away = cli_user(sptr)->away != 0;
assert(0 != cptr);
assert(cptr == sptr);
- if (user_set_away(cli_user(sptr), away_message)) {
- sendcmdto_serv_butone(sptr, CMD_AWAY, cptr, ":%s", away_message);
+ if (user_set_away(cli_user(sptr), away_message))
+ {
+ if (!was_away)
+ sendcmdto_serv_butone(sptr, CMD_AWAY, cptr, ":%s", away_message);
send_reply(sptr, RPL_NOWAWAY);
}
else {