X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_ident.cpp;h=ca12a9ba3bf836182c16a55f704555178c338027;hb=a0f7d012791d79b67b56b62415f7901d5e48870f;hp=0e5aa43aea55b74d5c61a94ff4e3ba06b0e5cd8f;hpb=6fe1f4e1136f2ab95a88e68af1894bf6002d03f4;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_ident.cpp b/src/modules/m_ident.cpp index 0e5aa43ae..ca12a9ba3 100644 --- a/src/modules/m_ident.cpp +++ b/src/modules/m_ident.cpp @@ -92,7 +92,7 @@ class IdentRequestSocket : public EventHandler { age = ServerInstance->Time(); - SetFd(socket(user->server_sa.sa.sa_family, SOCK_STREAM, 0)); + SetFd(socket(user->server_sa.family(), SOCK_STREAM, 0)); if (GetFd() == -1) throw ModuleException("Could not create socket"); @@ -105,7 +105,7 @@ class IdentRequestSocket : public EventHandler memcpy(&bindaddr, &user->server_sa, sizeof(bindaddr)); memcpy(&connaddr, &user->client_sa, sizeof(connaddr)); - if (connaddr.sa.sa_family == AF_INET6) + if (connaddr.family() == AF_INET6) { bindaddr.in6.sin6_port = 0; connaddr.in6.sin6_port = htons(113); @@ -126,7 +126,7 @@ class IdentRequestSocket : public EventHandler SocketEngine::NonBlocking(GetFd()); /* Attempt connection (nonblocking) */ - if (SocketEngine::Connect(this, &connaddr.sa, connaddr.sa_size()) == -1 && errno != EINPROGRESS) + if (SocketEngine::Connect(this, connaddr) == -1 && errno != EINPROGRESS) { this->Close(); throw ModuleException("connect() failed"); @@ -148,7 +148,7 @@ class IdentRequestSocket : public EventHandler /* Build request in the form 'localport,remoteport\r\n' */ int req_size; - if (user->client_sa.sa.sa_family == AF_INET6) + if (user->client_sa.family() == AF_INET6) req_size = snprintf(req, sizeof(req), "%d,%d\r\n", ntohs(user->client_sa.in6.sin6_port), ntohs(user->server_sa.in6.sin6_port)); else @@ -271,12 +271,16 @@ class ModuleIdent : public Module void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE { ConfigTag* tag = ServerInstance->Config->ConfValue("ident"); - RequestTimeout = tag->getInt("timeout", 5, 1); + RequestTimeout = tag->getDuration("timeout", 5, 1); NoLookupPrefix = tag->getBool("nolookupprefix", false); } void OnUserInit(LocalUser *user) CXX11_OVERRIDE { + // 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; + ConfigTag* tag = user->MyClass->config; if (!tag->getBool("useident", true)) return;