summaryrefslogtreecommitdiff
path: root/chanserv.c
diff options
context:
space:
mode:
authordane 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
committerdane 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
commit433f281f5e49ade17dcca6105afdbda6cd60a97f (patch)
tree6800db2c1680e5413f92f189a12d043cf5221b61 /chanserv.c
parent5f799bc2b5016c1cb29fc53cbce0171650192288 (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.c18
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);