diff options
author | dane dane@31f1291d-b8d6-0310-a050-a5561fc1590b <dane dane@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2004-05-21 14:33:06 +0000 |
---|---|---|
committer | dane dane@31f1291d-b8d6-0310-a050-a5561fc1590b <dane dane@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2004-05-21 14:33:06 +0000 |
commit | 433f281f5e49ade17dcca6105afdbda6cd60a97f (patch) | |
tree | 6800db2c1680e5413f92f189a12d043cf5221b61 /chanserv.c | |
parent | 5f799bc2b5016c1cb29fc53cbce0171650192288 (diff) |
BUILD : 1.7.3 (119) BUGS : 54 NOTES : Allow /CS SUSPEND on registered non-forbidden channels only
git-svn-id: svn://svn.anope.org/anope/trunk@119 31f1291d-b8d6-0310-a050-a5561fc1590b
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@93 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'chanserv.c')
-rw-r--r-- | chanserv.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/chanserv.c b/chanserv.c index c70bf2362..fcb24d590 100644 --- a/chanserv.c +++ b/chanserv.c @@ -6093,7 +6093,7 @@ static int do_forbid(User * u) return MOD_CONT; } -/*************************************************************************/ + /*************************************************************************/ static int do_suspend(User * u) { @@ -6110,10 +6110,22 @@ static int do_suspend(User * u) CHAN_SUSPEND_SYNTAX)); return MOD_CONT; } + + /* Only SUSPEND existing channels, otherwise use FORBID (bug #54) */ + if ((ci = cs_findchan(chan)) == NULL) { + notice_lang(s_ChanServ, u, CHAN_X_NOT_REGISTERED, chan); + return MOD_CONT; + } + + /* You should not SUSPEND a FORBIDEN channel */ + if (ci->flags & CI_VERBOTEN) { + notice_lang(s_ChanServ, u, CHAN_MAY_NOT_BE_REGISTERED, chan); + return MOD_CONT; + } + if (readonly) notice_lang(s_ChanServ, u, READ_ONLY_MODE); - if ((ci = cs_findchan(chan)) == NULL) - ci = makechan(chan); + if (ci) { ci->flags |= CI_SUSPENDED; ci->forbidby = sstrdup(u->nick); |