diff options
-rw-r--r-- | modules/pseudoclients/chanserv.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/modules/pseudoclients/chanserv.cpp b/modules/pseudoclients/chanserv.cpp index 3efc23711..0beb610ee 100644 --- a/modules/pseudoclients/chanserv.cpp +++ b/modules/pseudoclients/chanserv.cpp @@ -30,8 +30,18 @@ class ExpireCallback : public CallBack bool expire = false; - if (!ci->c && Anope::CurTime - ci->last_used >= Config->CSExpire) - expire = true; + if (Anope::CurTime - ci->last_used >= Config->CSExpire) + { + if (ci->c) + { + time_t last_used = ci->last_used; + for (User::ChanUserList::const_iterator cit = ci->c->users.begin(), cit_end = ci->c->users.end(); cit != cit_end && last_used == ci->last_used; ++cit) + ci->AccessFor((*cit)->user); + expire = last_used == ci->last_used; + } + else + expire = true; + } if (ci->HasFlag(CI_NO_EXPIRE)) expire = false; |