- std::string *webirc_hostname, *webirc_ip;
- if(user->GetExt("cgiirc_webirc_hostname", webirc_hostname))
- {
- user->host.assign(*webirc_hostname, 0, 64);
- user->dhost.assign(*webirc_hostname, 0, 64);
- delete webirc_hostname;
- user->InvalidateCache();
- user->Shrink("cgiirc_webirc_hostname");
- }
- if(user->GetExt("cgiirc_webirc_ip", webirc_ip))
- {
- bool valid=false;
- ServerInstance->Users->RemoveCloneCounts(user);
-#ifdef IPV6
- valid = (inet_pton(AF_INET6, webirc_ip->c_str(), &((sockaddr_in6*)user->ip)->sin6_addr) > 0);
-
- if(!valid)
- valid = (inet_aton(webirc_ip->c_str(), &((sockaddr_in*)user->ip)->sin_addr));
-#else
- if (inet_aton(webirc_ip->c_str(), &((sockaddr_in*)user->ip)->sin_addr))
- valid = true;
-#endif
-
- delete webirc_ip;
- user->InvalidateCache();
- user->Shrink("cgiirc_webirc_ip");
- ServerInstance->Users->AddLocalClone(user);
- ServerInstance->Users->AddGlobalClone(user);
- user->CheckClass();
- user->CheckLines();
- }