]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Move ident lookups to the OnSetUserIP hook.
authorPeter Powell <petpow@saberuk.com>
Sun, 20 Jan 2019 09:51:12 +0000 (09:51 +0000)
committerPeter Powell <petpow@saberuk.com>
Sun, 20 Jan 2019 09:51:12 +0000 (09:51 +0000)
src/modules/m_ident.cpp

index ca12a9ba3bf836182c16a55f704555178c338027..803c19846288e67dd93be7f5fac9a8ce6570a860 100644 (file)
@@ -275,12 +275,24 @@ class ModuleIdent : public Module
                NoLookupPrefix = tag->getBool("nolookupprefix", false);
        }
 
-       void OnUserInit(LocalUser *user) CXX11_OVERRIDE
+       void OnSetUserIP(LocalUser* user) CXX11_OVERRIDE
        {
+               IdentRequestSocket* isock = ext.get(user);
+               if (isock)
+               {
+                       // If an ident lookup request was in progress then cancel it.
+                       isock->Close();
+                       ext.unset(user);
+               }
+
                // The ident protocol requires that clients are connecting over a protocol with ports.
                if (user->client_sa.family() != AF_INET && user->client_sa.family() != AF_INET6)
                        return;
 
+               // We don't want to look this up once the user has connected.
+               if (user->registered == REG_ALL)
+                       return;
+
                ConfigTag* tag = user->MyClass->config;
                if (!tag->getBool("useident", true))
                        return;
@@ -289,7 +301,7 @@ class ModuleIdent : public Module
 
                try
                {
-                       IdentRequestSocket *isock = new IdentRequestSocket(user);
+                       isock = new IdentRequestSocket(user);
                        ext.set(user, isock);
                }
                catch (ModuleException &e)