CommandWebirc cmd;
LocalIntExt waiting;
- static void RecheckElineAndClass(LocalUser* user)
+ static void RecheckClass(LocalUser* user)
{
- user->exempt = (ServerInstance->XLines->MatchesLine("E", user) != NULL);
+ user->MyClass = NULL;
user->SetClass();
user->CheckClass();
}
ChangeIP(user, newip);
user->host = user->dhost = user->GetIPString();
user->InvalidateCache();
- RecheckElineAndClass(user);
+ RecheckClass(user);
// Don't create the resolver if the core couldn't put the user in a connect class or when dns is disabled
if (user->quitting || ServerInstance->Config->NoUserDns)
return;
{
bool cached;
CGIResolver* r = new CGIResolver(this, cmd.notify, newip, user, (was_pass ? "PASS" : "IDENT"), cached, waiting);
- ServerInstance->AddResolver(r, cached);
waiting.set(user, waiting.get(user) + 1);
+ ServerInstance->AddResolver(r, cached);
}
catch (...)
{
void init()
{
OnRehash(NULL);
- ServerInstance->AddCommand(&cmd);
- ServerInstance->Extensions.Register(&cmd.realhost);
- ServerInstance->Extensions.Register(&cmd.realip);
- ServerInstance->Extensions.Register(&cmd.webirc_hostname);
- ServerInstance->Extensions.Register(&cmd.webirc_ip);
- ServerInstance->Extensions.Register(&waiting);
+ ServiceProvider* providerlist[] = { &cmd, &cmd.realhost, &cmd.realip, &cmd.webirc_hostname, &cmd.webirc_ip, &waiting };
+ ServerInstance->Modules->AddServices(providerlist, sizeof(providerlist)/sizeof(ServiceProvider*));
Implementation eventlist[] = { I_OnRehash, I_OnUserRegister, I_OnCheckReady };
- ServerInstance->Modules->Attach(eventlist, this, 3);
+ ServerInstance->Modules->Attach(eventlist, this, sizeof(eventlist)/sizeof(Implementation));
}
void OnRehash(User* user)
std::string* webirc_hostname = cmd.webirc_hostname.get(user);
user->host = user->dhost = (webirc_hostname ? *webirc_hostname : user->GetIPString());
+ user->InvalidateCache();
- RecheckElineAndClass(user);
+ RecheckClass(user);
if (user->quitting)
return MOD_RES_DENY;