diff options
| author | 2006-09-13 17:47:35 +0000 | |
|---|---|---|
| committer | 2006-09-13 17:47:35 +0000 | |
| commit | 5f02706fb0a3db069a2e5a7754c2aad91cbe86e4 (patch) | |
| tree | 7682bffdb4366c119b064a7db4b6cd37bbf4b8bd /src/modules/m_kicknorejoin.cpp | |
| parent | Applied jamie's cmd_gline patch (diff) | |
| download | inspircd++-5f02706fb0a3db069a2e5a7754c2aad91cbe86e4.tar.gz inspircd++-5f02706fb0a3db069a2e5a7754c2aad91cbe86e4.tar.bz2 inspircd++-5f02706fb0a3db069a2e5a7754c2aad91cbe86e4.zip | |
Merge jamies many patches
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5223 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modules/m_kicknorejoin.cpp')
| -rw-r--r-- | src/modules/m_kicknorejoin.cpp | 39 |
1 files changed, 35 insertions, 4 deletions
diff --git a/src/modules/m_kicknorejoin.cpp b/src/modules/m_kicknorejoin.cpp index fddcae288..4845e633e 100644 --- a/src/modules/m_kicknorejoin.cpp +++ b/src/modules/m_kicknorejoin.cpp @@ -55,10 +55,41 @@ class KickRejoin : public ModeHandler } if ((!adding) || (atoi(parameter.c_str()) > 0)) { - parameter = ConvToStr(atoi(parameter.c_str())); - channel->SetModeParam('J', parameter.c_str(), adding); - channel->SetMode('J', adding); - return MODEACTION_ALLOW; + ServerInstance->Log(DEBUG,"Got parameter: '%s'",parameter.c_str()); + + if (!channel->IsModeSet('J')) + { + parameter = ConvToStr(atoi(parameter.c_str())); + channel->SetModeParam('J', parameter.c_str(), adding); + channel->SetMode('J', adding); + return MODEACTION_ALLOW; + } + else + { + std::string cur_param = channel->GetModeParameter('J'); + if (cur_param == parameter) + { + // mode params match, don't change mode + return MODEACTION_DENY; + } + else + { + // new mode param, replace old with new + parameter = ConvToStr(atoi(parameter.c_str())); + cur_param = ConvToStr(atoi(cur_param.c_str())); + if (parameter != "0") + { + channel->SetModeParam('J', cur_param.c_str(), false); + channel->SetModeParam('J', parameter.c_str(), adding); + return MODEACTION_ALLOW; + } + else + { + /* Fix to jamie's fix, dont allow +J 0 on the new value! */ + return MODEACTION_DENY; + } + } + } } else { |
