+ ListModeBase::ModeList* list = ec.GetList(chan);
+
+ if (list)
+ {
+ for (ListModeBase::ModeList::iterator i = list->begin(); i != list->end(); ++i)
+ {
+ std::string::size_type pos = (*i).mask.find(':');
+ if (pos == std::string::npos)
+ continue;
+ if ((*i).mask.substr(0,pos) == restriction)
+ minmode = (*i).mask.substr(pos + 1);
+ }
+ }
+
+ ModeHandler* mh = FindMode(minmode);
+ if (mh && mypfx >= mh->GetPrefixRank())
+ return MOD_RES_ALLOW;
+ if (mh || minmode == "*")
+ return MOD_RES_DENY;
+
+ return ServerInstance->HandleOnCheckExemption.Call(user, chan, restriction);