diff options
-rw-r--r-- | include/inspircd.h | 16 | ||||
-rw-r--r-- | src/helperfuncs.cpp | 2 | ||||
-rw-r--r-- | src/inspircd.cpp | 2 | ||||
-rw-r--r-- | src/modules/m_channames.cpp | 9 |
4 files changed, 15 insertions, 14 deletions
diff --git a/include/inspircd.h b/include/inspircd.h index 528092499..cbd43da43 100644 --- a/include/inspircd.h +++ b/include/inspircd.h @@ -166,7 +166,6 @@ class serverstats }; DEFINE_HANDLER2(GenRandomHandler, void, char*, size_t); -DEFINE_HANDLER1(IsChannelHandler, bool, const std::string&); /** The main class of the irc server. * This class contains instances of all the other classes in this software. @@ -211,7 +210,6 @@ class CoreExport InspIRCd ActionList AtomicActions; /**** Functors ****/ - IsChannelHandler HandleIsChannel; GenRandomHandler HandleGenRandom; /** Globally accessible fake user record. This is used to force mode changes etc across s2s, etc.. bit ugly, but.. better than how this was done in 1.1 @@ -370,11 +368,15 @@ class CoreExport InspIRCd */ chan_hash& GetChans() { return chanlist; } - /** Return true if a channel name is valid - * @param chname A channel name to verify - * @return True if the name is valid - */ - caller1<bool, const std::string&> IsChannel; + /** Determines whether an channel name is valid. */ + TR1NS::function<bool(const std::string&)> IsChannel; + + /** Determines whether a channel name is valid according to the RFC 1459 rules. + * This is the default function for InspIRCd::IsChannel. + * @param nick The channel name to validate. + * @return True if the channel name is valid according to RFC 1459 rules; otherwise, false. + */ + static bool DefaultIsChannel(const std::string& channel); /** Return true if str looks like a server ID * @param sid string to check against diff --git a/src/helperfuncs.cpp b/src/helperfuncs.cpp index 719454742..a24401542 100644 --- a/src/helperfuncs.cpp +++ b/src/helperfuncs.cpp @@ -193,7 +193,7 @@ void InspIRCd::ProcessColors(file_cache& input) } /* true for valid channel name, false else */ -bool IsChannelHandler::Call(const std::string& chname) +bool InspIRCd::DefaultIsChannel(const std::string& chname) { if (chname.empty() || chname.length() > ServerInstance->Config->Limits.ChanMax) return false; diff --git a/src/inspircd.cpp b/src/inspircd.cpp index 542789c7e..5f7dfd06f 100644 --- a/src/inspircd.cpp +++ b/src/inspircd.cpp @@ -227,7 +227,7 @@ InspIRCd::InspIRCd(int argc, char** argv) : * themselves within the class. */ GenRandom(&HandleGenRandom), - IsChannel(&HandleIsChannel), + IsChannel(&DefaultIsChannel), IsNick(&DefaultIsNick), IsIdent(&DefaultIsIdent) { diff --git a/src/modules/m_channames.cpp b/src/modules/m_channames.cpp index b23148b44..d0d122b43 100644 --- a/src/modules/m_channames.cpp +++ b/src/modules/m_channames.cpp @@ -21,10 +21,10 @@ static std::bitset<256> allowedmap; -class NewIsChannelHandler : public HandlerBase1<bool, const std::string&> +class NewIsChannelHandler { public: - bool Call(const std::string&) CXX11_OVERRIDE; + static bool Call(const std::string&); }; bool NewIsChannelHandler::Call(const std::string& channame) @@ -44,8 +44,7 @@ bool NewIsChannelHandler::Call(const std::string& channame) class ModuleChannelNames : public Module { - NewIsChannelHandler myhandler; - caller1<bool, const std::string&> rememberer; + TR1NS::function<bool(const std::string&)> rememberer; bool badchan; ChanModeReference permchannelmode; @@ -59,7 +58,7 @@ class ModuleChannelNames : public Module void init() CXX11_OVERRIDE { - ServerInstance->IsChannel = &myhandler; + ServerInstance->IsChannel = NewIsChannelHandler::Call; } void ValidateChans() |