summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2009-03-07 04:54:50 +0000
committerdanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2009-03-07 04:54:50 +0000
commit2d004034febfecf9ba0662406df7ecec67efbacf (patch)
treefe6bfa2b6d1dec88b671fd633c01a3cfef3f6e1f
parentacb72fdf2d66d71e5b70ec5d3c3dcf9f8d8df655 (diff)
Let's try that +k fix again, this time with more testing
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11184 e03df62e-2008-0410-955e-edbf42e46eb7
-rw-r--r--src/modes/cmode_k.cpp13
1 files changed, 6 insertions, 7 deletions
diff --git a/src/modes/cmode_k.cpp b/src/modes/cmode_k.cpp
index 092f69fca..a09131354 100644
--- a/src/modes/cmode_k.cpp
+++ b/src/modes/cmode_k.cpp
@@ -91,12 +91,11 @@ ModeAction ModeChannelKey::OnModeChange(User* source, User*, Channel* channel, s
if (parameter.rfind(' ') != std::string::npos)
return MODEACTION_DENY;
- channel->SetMode('k', adding);
- if (adding) {
- std::string ckey;
- ckey.assign(parameter, 0, 32);
- channel->SetModeParam('k', ckey.c_str(), adding);
- parameter = ckey;
- }
+ std::string ckey;
+ ckey.assign(parameter, 0, 32);
+ parameter = ckey;
+ if (adding && exists)
+ channel->SetMode('k', false);
+ channel->SetModeParam('k', parameter.c_str(), adding);
return MODEACTION_ALLOW;
}