]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_cloaking.cpp
Test stuff to fix remote stats brokage
[user/henk/code/inspircd.git] / src / modules / m_cloaking.cpp
index e1aec5d384b95998ccef25ed0c292291d7b2db8b..ae28075c00bb2e0867719aae2b8c89c007380e8a 100644 (file)
@@ -108,7 +108,7 @@ class CloakUser : public ModeHandler
                                                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));
+                                               b = ((!strchr(dest->host,':')) ? Cloak4(dest->host) : Cloak6(dest->host));
 #else
                                        in_addr testaddr;
                                        if ((inet_aton(dest->host,&testaddr) < 1) && (hostcloak.length() <= 64))
@@ -176,6 +176,11 @@ class CloakUser : public ModeHandler
 
        std::string Cloak6(const char* ip)
        {
+               /* Theyre using 4in6 (YUCK). Translate as ipv4 cloak */
+               if (!strncmp(ip, "0::ffff:", 8))
+                       return Cloak4(ip + 8);
+
+               /* If we get here, yes it really is an ipv6 ip */
                unsigned int iv[] = { key1, key2, key3, key4 };
                std::vector<std::string> hashies;
                std::string item = "";