* | Inspire Internet Relay Chat Daemon |
* +------------------------------------+
*
- * InspIRCd: (C) 2002-2008 InspIRCd Development Team
- * See: http://www.inspircd.org/wiki/index.php/Credits
+ * InspIRCd: (C) 2002-2009 InspIRCd Development Team
+ * See: http://wiki.inspircd.org/Credits
*
* This program is free but copyrighted software; see
* the file COPYING for details.
this->rr_class = 1;
this->type = qt;
-
+
DNS::EmptyHeader(payload,header,length);
#ifdef IPV6
/* Is the DNS connection down? */
if (this->GetFd() == -1)
return NULL;
-
+
/* Create an id */
id = this->PRNG() & DNS::MAX_REQUEST_ID;
/* DNS::Rehash() sets this to a valid ptr
*/
this->cache = NULL;
-
+
/* Again, DNS::Rehash() sets this to a
* valid value
*/
DNSHeader h;
int id;
int length;
-
+
if ((length = this->MakePayload(name, DNS_QUERY_A, 1, (unsigned char*)&h.payload)) == -1)
return -1;
default:
break;
-
}
/* Build the reply with the id and hostname/ip in it */
/* XXX: We actually initialise 'rr' here including its ttl field */
if (curanswer == result_we_want)
DNS::FillResourceRecord(&rr,&header.payload[i]);
-
+
i += 10;
if (rr.type != this->type)
{
else
return NULL;
}
-
+
void DNS::DelCache(const std::string &source)
{
cache->erase(source.c_str());
res = this->GetResult(resultnum);
ServerInstance->Logs->Log("RESOLVER",DEBUG,"Result %d id %d", resultnum, res.id);
-
+
/* Is there a usable request id? */
if (res.id != -1)
{
{
if (ServerInstance && ServerInstance->stats)
ServerInstance->stats->statsDnsGood++;
-
+
if (!this->GetCache(res.original.c_str()))
this->cache->insert(std::make_pair(res.original.c_str(), CachedQuery(res.result, res.ttl)));
Classes[res.id] = NULL;
}
}
-
+
if (ServerInstance && ServerInstance->stats)
ServerInstance->stats->statsDns++;
}
resultnum++;
}
-
+
/** Add a derived Resolver to the working set */
bool DNS::AddResolverClass(Resolver* r)
{
val += (s->statsConnects ^ (unsigned long)s->statsSent ^ (unsigned long)s->statsRecv) - ServerInstance->Config->ports.size();
return val;
}
-
-