diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2008-04-10 23:35:35 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2008-04-10 23:35:35 +0000 |
commit | e6de2ea580f3fa25dbe8bdd2ed8267e18144b315 (patch) | |
tree | bfb2cef565bd68f8d64a8d5a6567ec3a88a31c72 /src/users.cpp | |
parent | 20b26ef72a4b2ead2fe23931240098ed10f64a70 (diff) |
Provide an optional param translate4in6 to User::GetIPString() and default it to true. This hides the 0::ffff: on all info about an ipv6 user connecting over ipv4, making glines on them and bans etc work better.
Certain parts such as dns lookup need to set this to false to determine wether to use ipv4 or ipv6 reverse lookup.
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@9454 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/users.cpp')
-rw-r--r-- | src/users.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/users.cpp b/src/users.cpp index 43bf64f1c..cdacdc5c2 100644 --- a/src/users.cpp +++ b/src/users.cpp @@ -98,7 +98,7 @@ void User::StartDNSLookup() try { bool cached; - const char* sip = this->GetIPString(); + const char* sip = this->GetIPString(false); /* Special case for 4in6 (Have i mentioned i HATE 4in6?) */ if (!strncmp(sip, "0::ffff:", 8)) @@ -1072,7 +1072,7 @@ int User::GetProtocolFamily() * XXX the duplication here is horrid.. * do we really need two methods doing essentially the same thing? */ -const char* User::GetIPString() +const char* User::GetIPString(bool translate4in6) { static char buf[1024]; @@ -1096,6 +1096,12 @@ const char* User::GetIPString() { strlcpy(&temp[1], buf, sizeof(temp) - 1); *temp = '0'; + if (translate4in6 && !strncmp(temp, "0::ffff:", 8)) + { + this->cachedip = temp + 8; + return temp + 8; + } + this->cachedip = temp; return temp; } |