summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/modules/m_ident.cpp19
1 files changed, 8 insertions, 11 deletions
diff --git a/src/modules/m_ident.cpp b/src/modules/m_ident.cpp
index 04ad7ba4a..6db584753 100644
--- a/src/modules/m_ident.cpp
+++ b/src/modules/m_ident.cpp
@@ -372,25 +372,22 @@ class ModuleIdent : public Module
user->WriteServ("NOTICE Auth :*** Looking up your ident...");
// Get the IP that the user is connected to, and bind to that for the outgoing connection
- #ifndef IPV6
- sockaddr_in laddr;
- #else
- sockaddr_in6 laddr;
- #endif
+ irc::sockets::sockaddrs laddr;
socklen_t laddrsz = sizeof(laddr);
- if (getsockname(user->GetFd(), (sockaddr*) &laddr, &laddrsz) != 0)
+ if (getsockname(user->GetFd(), &laddr.sa, &laddrsz) != 0)
{
user->WriteServ("NOTICE Auth :*** Could not find your ident, using %s instead.", user->ident.c_str());
return 0;
}
- #ifndef IPV6
- const char *ip = inet_ntoa(laddr.sin_addr);
- #else
char ip[INET6_ADDRSTRLEN + 1];
- inet_ntop(laddr.sin6_family, &laddr.sin6_addr, ip, INET6_ADDRSTRLEN);
- #endif
+#ifdef IPV6
+ if (laddr.sa.sa_family == AF_INET6)
+ inet_ntop(laddr.in6.sin6_family, &laddr.in6.sin6_addr, ip, INET6_ADDRSTRLEN);
+ else
+#endif
+ inet_ntop(laddr.in4.sin_family, &laddr.in4.sin_addr, ip, INET6_ADDRSTRLEN);
IdentRequestSocket *isock = NULL;
try