+ }
+
+ virtual void OnRehash(User *user)
+ {
+ ConfigReader Conf(ServerInstance);
+
+ MatchOnNickChange = Conf.ReadFlag("rline", "matchonnickchange", 0);
+ std::string newrxengine = Conf.ReadValue("rline", "engine", 0);
+
+ if (!RegexEngine.empty())
+ {
+ if (RegexEngine == newrxengine)
+ return;
+
+ ServerInstance->SNO->WriteToSnoMask('x', "Dumping all R-Lines due to regex engine change (was '%s', now '%s')", RegexEngine.c_str(), newrxengine.c_str());
+ ServerInstance->XLines->DelAll("R");
+ }
+ rxengine = 0;
+ RegexEngine = newrxengine;
+ modulelist* ml = ServerInstance->Modules->FindInterface("RegularExpression");
+ if (ml)
+ {
+ for (modulelist::iterator i = ml->begin(); i != ml->end(); ++i)
+ {
+ if (RegexNameRequest(this, *i).Send() == newrxengine)
+ {
+ ServerInstance->SNO->WriteToSnoMask('x', "R-Line now using engine '%s'", RegexEngine.c_str());
+ rxengine = *i;
+ }
+ }
+ }
+ if (!rxengine)