try
{
bool cached = false;
- const char* sip = this->GetIPString(false);
+ const char* sip = this->GetIPString();
UserResolver *res_reverse;
- /* Special case for 4in6 (Have i mentioned i HATE 4in6?) */
- if (!strncmp(sip, "0::ffff:", 8))
- res_reverse = new UserResolver(this->ServerInstance, this, sip + 8, DNS_QUERY_PTR4, cached);
- else
- res_reverse = new UserResolver(this->ServerInstance, this, sip, this->GetProtocolFamily() == AF_INET ? DNS_QUERY_PTR4 : DNS_QUERY_PTR6, cached);
+ QueryType resolvtype = strchr(sip, ':') ? DNS_QUERY_PTR6 : DNS_QUERY_PTR4;
+ // when GetProtocolFamily() works correctly with 4in6, this can be replaced by
+ // this->GetProtocolFamily() == AF_INET ? DNS_QUERY_PTR4 : DNS_QUERY_PTR6;
+ res_reverse = new UserResolver(this->ServerInstance, this, sip, resolvtype, cached);
this->ServerInstance->AddResolver(res_reverse, cached);
}
return ""; // unused, but oh well
}
-const char* User::GetIPString(bool translate4in6)
+const char* User::GetIPString()
{
static char buf[40];
{
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;
}
FOREACH_RESULT(I_OnChangeLocalUserHost,OnChangeLocalUserHost(this,shost));
if (MOD_RESULT)
return false;
- FOREACH_MOD(I_OnChangeHost,OnChangeHost(this,shost));
}
+ FOREACH_MOD(I_OnChangeHost, OnChangeHost(this,shost));
+
int MOD_RESULT = 0;
FOREACH_RESULT(I_OnHostCycle, OnHostCycle(this));