From c1f88cfa9c653c0df9574edb6995a7385543be83 Mon Sep 17 00:00:00 2001 From: brain Date: Mon, 19 Feb 2007 19:57:41 +0000 Subject: Addition of feature request outlined in bug #195, suggested by Bricker git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6602 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/channels.cpp | 12 ++++++------ src/configreader.cpp | 4 ++++ src/inspircd.cpp | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/channels.cpp b/src/channels.cpp index 5383f4aba..366169dd6 100644 --- a/src/channels.cpp +++ b/src/channels.cpp @@ -296,22 +296,22 @@ chanrec* chanrec::JoinUser(InspIRCd* Instance, userrec *user, const char* cn, bo } /* NOTE: If the user is an oper here, we can extend their user->chans by up to - * OPERMAXCHANS. For remote users which are not bound by the channel limits, - * we can extend infinitely. Otherwise, nope, youre restricted to MAXCHANS. + * OperMaxchans. For remote users which are not bound by the channel limits, + * we can extend infinitely. Otherwise, nope, youre restricted to MaxChans. */ - if (!IS_LOCAL(user) || override == true) /* was a check on fd < 0 */ + if (!IS_LOCAL(user) || override == true) { return chanrec::ForceChan(Instance, Ptr, user, privs); } else if (*user->oper) { - /* Oper allows extension up to the OPERMAXCHANS value */ - if (user->chans.size() < OPERMAXCHANS) + /* Oper allows extension up to the OperMaxchans value */ + if (user->chans.size() < Instance->Config->OperMaxChans) { return chanrec::ForceChan(Instance, Ptr, user, privs); } } - else if (user->chans.size() < MAXCHANS) + else if (user->chans.size() < Instance->Config->MaxChans) { return chanrec::ForceChan(Instance, Ptr, user, privs); } diff --git a/src/configreader.cpp b/src/configreader.cpp index 90719afa7..9d920dc8c 100644 --- a/src/configreader.cpp +++ b/src/configreader.cpp @@ -39,6 +39,8 @@ ServerConfig::ServerConfig(InspIRCd* Instance) : ServerInstance(Instance) MaxConn = SOMAXCONN; MaxWhoResults = 100; debugging = 0; + MaxChans = 20; + OperMaxChans = 30; LogLevel = DEFAULT; maxbans.clear(); } @@ -594,6 +596,8 @@ void ServerConfig::Read(bool bail, userrec* user) {"whowas", "maxgroups", "10240", new ValueContainerInt (&this->WhoWasMaxGroups), DT_INTEGER, NoValidation}, {"whowas", "maxkeep", "3600", new ValueContainerChar (maxkeep), DT_CHARPTR, ValidateWhoWas}, {"die", "value", "", new ValueContainerChar (this->DieValue), DT_CHARPTR, NoValidation}, + {"channels", "users", "20", new ValueContainerUInt (&this->MaxChans), DT_INTEGER, NoValidation}, + {"channels", "opers", "60", new ValueContainerUInt (&this->OperMaxChans), DT_INTEGER, NoValidation}, {NULL} }; diff --git a/src/inspircd.cpp b/src/inspircd.cpp index 354befcb3..a259bf349 100644 --- a/src/inspircd.cpp +++ b/src/inspircd.cpp @@ -577,7 +577,7 @@ void InspIRCd::BuildISupport() { // the neatest way to construct the initial 005 numeric, considering the number of configure constants to go in it... std::stringstream v; - v << "WALLCHOPS WALLVOICES MODES=" << MAXMODES << " CHANTYPES=# PREFIX=" << this->Modes->BuildPrefixes() << " MAP MAXCHANNELS=" << MAXCHANS << " MAXBANS=60 VBANLIST NICKLEN=" << NICKMAX-1; + v << "WALLCHOPS WALLVOICES MODES=" << MAXMODES << " CHANTYPES=# PREFIX=" << this->Modes->BuildPrefixes() << " MAP MAXCHANNELS=" << Config->MaxChans << " MAXBANS=60 VBANLIST NICKLEN=" << NICKMAX-1; v << " CASEMAPPING=rfc1459 STATUSMSG=@%+ CHARSET=ascii TOPICLEN=" << MAXTOPIC << " KICKLEN=" << MAXKICK << " MAXTARGETS=" << Config->MaxTargets << " AWAYLEN="; v << MAXAWAY << " CHANMODES=" << this->Modes->ChanModes() << " FNC NETWORK=" << Config->Network << " MAXPARA=32"; Config->data005 = v.str(); -- cgit v1.2.3