X-Git-Url: https://jfr.im/git/solanum.git/blobdiff_plain/d42e6915cf1002f5d5df2677d8f2a9225a0857c0..b2c208be091670e3c5259eba77187bae6ac6eece:/modules/m_away.c diff --git a/modules/m_away.c b/modules/m_away.c index d7ca8fc7..5a0fdced 100644 --- a/modules/m_away.c +++ b/modules/m_away.c @@ -68,7 +68,8 @@ DECLARE_MODULE_AV1(away, NULL, NULL, away_clist, NULL, NULL, "$Revision: 3370 $" static int m_away(struct Client *client_p, struct Client *source_p, int parc, const char *parv[]) { - if(MyClient(source_p) && !IsFloodDone(source_p)) + if(MyClient(source_p) && source_p->localClient->next_away && + !IsFloodDone(source_p)) flood_endgrace(source_p); if(!IsClient(source_p)) @@ -93,19 +94,22 @@ m_away(struct Client *client_p, struct Client *source_p, int parc, const char *p } /* Rate limit this because it is sent to common channels. */ - if(!IsOper(source_p) && - source_p->localClient->next_away > rb_current_time()) + if (MyClient(source_p)) { - sendto_one(source_p, form_str(RPL_LOAD2HI), - me.name, source_p->name, "AWAY"); - return; + if(!IsOper(source_p) && + source_p->localClient->next_away > rb_current_time()) + { + sendto_one(source_p, form_str(RPL_LOAD2HI), + me.name, source_p->name, "AWAY"); + return 0; + } + if(source_p->localClient->next_away < rb_current_time() - + ConfigFileEntry.away_interval) + source_p->localClient->next_away = rb_current_time(); + else + source_p->localClient->next_away = rb_current_time() + + ConfigFileEntry.away_interval; } - if(source_p->localClient->next_away < rb_current_time() - - ConfigFileEntry.away_interval) - source_p->localClient->next_away = rb_current_time(); - else - source_p->localClient->next_away = rb_current_time() + - ConfigFileEntry.away_interval; if(source_p->user->away == NULL) allocate_away(source_p); @@ -122,10 +126,9 @@ m_away(struct Client *client_p, struct Client *source_p, int parc, const char *p source_p->host, source_p->user->away); } - + if(MyConnect(source_p)) sendto_one_numeric(source_p, RPL_NOWAWAY, form_str(RPL_NOWAWAY)); - return 0; }