diff options
| author | 2019-01-24 15:58:57 +0000 | |
|---|---|---|
| committer | 2019-01-24 15:58:57 +0000 | |
| commit | 1799bcff97e8018156df809fd3cae3ed3d663591 (patch) | |
| tree | e8ed9f51b8d52f188c9b3d18abab4ebde915c3d4 /src/modules/m_ident.cpp | |
| parent | Add translation for casemapping between 2.0/3.0 (#1544) (diff) | |
| parent | Add translation for casemapping between 2.0/3.0 (#1544) (diff) | |
| download | inspircd++-1799bcff97e8018156df809fd3cae3ed3d663591.tar.gz inspircd++-1799bcff97e8018156df809fd3cae3ed3d663591.tar.bz2 inspircd++-1799bcff97e8018156df809fd3cae3ed3d663591.zip | |
Merge branch 'insp3' into master
Diffstat (limited to 'src/modules/m_ident.cpp')
| -rw-r--r-- | src/modules/m_ident.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/modules/m_ident.cpp b/src/modules/m_ident.cpp index ca12a9ba3..803c19846 100644 --- a/src/modules/m_ident.cpp +++ b/src/modules/m_ident.cpp @@ -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) |
