summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgeniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b <geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>2008-01-26 10:07:07 +0000
committergeniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b <geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>2008-01-26 10:07:07 +0000
commitd7c0230e7809377fd9490f403caab8e0bfeddd6f (patch)
treee5301024555fcbd7d97a2922fd6596195066cdd9 /src
parent721a24ae219f0b062c63ce4f77a2c6ef34f08b94 (diff)
BUILD : 1.7.21 (1355) BUGS : 834 NOTES : Fixed various oddities in ChanServ suspend code
git-svn-id: svn://svn.anope.org/anope/trunk@1355 31f1291d-b8d6-0310-a050-a5561fc1590b git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@1070 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src')
-rw-r--r--src/core/cs_suspend.c29
1 files changed, 26 insertions, 3 deletions
diff --git a/src/core/cs_suspend.c b/src/core/cs_suspend.c
index 69e236a33..674861578 100644
--- a/src/core/cs_suspend.c
+++ b/src/core/cs_suspend.c
@@ -88,6 +88,11 @@ int do_suspend(User * u)
return MOD_CONT;
}
+ if (chan[0] != '#') {
+ notice_lang(s_ChanServ, u, CHAN_UNSUSPEND_ERROR);
+ 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);
@@ -163,12 +168,30 @@ int do_unsuspend(User * u)
if (readonly)
notice_lang(s_ChanServ, u, READ_ONLY_MODE);
- ci = cs_findchan(chan);
+ /* Only UNSUSPEND already suspended channels */
+ if ((ci = cs_findchan(chan)) == NULL) {
+ notice_lang(s_ChanServ, u, CHAN_X_NOT_REGISTERED, chan);
+ return MOD_CONT;
+ }
+
+ if (!(ci->flags & CI_SUSPENDED))
+ {
+ notice_lang(s_ChanServ, u, CHAN_UNSUSPEND_FAILED, chan);
+ return MOD_CONT;
+ }
if (ci) {
ci->flags &= ~CI_SUSPENDED;
- ci->forbidreason = NULL;
- ci->forbidby = NULL;
+ if (ci->forbidreason)
+ {
+ free(ci->forbidreason);
+ ci->forbidreason = NULL;
+ }
+ if (ci->forbidby)
+ {
+ free(ci->forbidby);
+ ci->forbidby = NULL;
+ }
if (WallForbid)
anope_cmd_global(s_ChanServ,