From 005569fdda030934ce9e2a8e8439e0d3b98ebd70 Mon Sep 17 00:00:00 2001 From: brain Date: Tue, 6 Feb 2007 19:00:22 +0000 Subject: Fix to work with mixed protocol environment git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6524 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/modules/m_cloaking.cpp | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/modules/m_cloaking.cpp b/src/modules/m_cloaking.cpp index 707085b14..cbff25593 100644 --- a/src/modules/m_cloaking.cpp +++ b/src/modules/m_cloaking.cpp @@ -98,16 +98,26 @@ class CloakUser : public ModeHandler * Their ISP shouldnt go to town on subdomains, or they shouldnt have a kiddie * vhost. */ - - if ((insp_aton(dest->host,&testaddr) < 1) && (hostcloak.length() <= 64)) - { - // if they have a hostname, make something appropriate +#ifdef IPV6 + in6_addr testaddr; + if ((dest->GetProtocolFamily() == AF_INET6) && (insp_pton(AF_INET6,dest->host,&testaddr) < 1) && (hostcloak.length() <= 64)) + /* Invalid ipv6 address, and ipv6 user (resolved host) */ + b = hostcloak; + else if ((dest->GetProtocolFamily() == AF_INET6) && (inet_aton(dest->host,&testaddr) < 1) && (hostcloak.length() <= 64)) + /* Invalid ipv4 address, and ipv4 user (resolved host) */ b = hostcloak; - } else - { + /* Valid ipv6 or ipv4 address (not resolved) ipv4 or ipv6 user */ b = ((b.find(':') == std::string::npos) ? Cloak4(dest->host) : Cloak6(dest->host)); - } +#else + if ((inet_aton(dest->host,&testaddr) < 1) && (hostcloak.length() <= 64)) + /* Invalid ipv4 address, and ipv4 user (resolved host) */ + b = hostcloak; + else + /* Valid ipv4 address (not resolved) ipv4 user */ + b = Cloak4(dest->host); +#endif + dest->ChangeDisplayedHost(b.c_str()); } -- cgit v1.2.3