]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/dns.cpp
Changed to non-conflicting numeric 948 for invalid idle time
[user/henk/code/inspircd.git] / src / dns.cpp
index a1287e49937ab8078b7b702e360e4e9f6108564e..13a80311ad75aa555b9d0d9051c7c5065c6305d7 100644 (file)
@@ -95,6 +95,8 @@ struct s_header { /* DNS query header */
        unsigned char payload[512]; /* DNS question, populated by dns_build_query_payload() */
 };
 
+extern time_t TIME;
+
 void *dns_align(void *inp) {
        char *p = (char*)inp;
        int offby = ((char *)p - (char *)0) % DNS_ALIGN;
@@ -161,7 +163,7 @@ void DNS::dns_init() { /* on first call only: populates servers4 struct with up
        i4 = 0;
 
        initdone = 1;
-       srand((unsigned int) time(NULL));
+       srand((unsigned int) TIME);
        memset(servers4,'\0',sizeof(in_addr) * DNS_MAX);
        f = fopen(DNS_CONFIG_FBCK,"r");
        if (f == NULL)
@@ -186,12 +188,8 @@ void DNS::dns_init_2(const char* dnsserver) { /* populates servers4 struct with
         int i;
         in_addr addr4;
         char buf[1024];
-        if (initdone == 1)
-                return;
         i4 = 0;
-
-        initdone = 1;
-        srand((unsigned int) time(NULL));
+        srand((unsigned int) TIME);
         memset(servers4,'\0',sizeof(in_addr) * DNS_MAX);
         if (dns_aton4_s(dnsserver,&addr4) != NULL)
             memcpy(&servers4[i4++],&addr4,sizeof(in_addr));
@@ -212,7 +210,10 @@ static int dns_send_requests(const s_header *h, const s_connection *s, const int
                memcpy(&addr4.sin_addr,&servers4[i],sizeof(addr4.sin_addr));
                addr4.sin_family = AF_INET;
                addr4.sin_port = htons(DNS_PORT);
-               sendto(s->fd, payload, l + 12, 0, (sockaddr *) &addr4, sizeof(addr4));
+               if (sendto(s->fd, payload, l + 12, 0, (sockaddr *) &addr4, sizeof(addr4)) == -1)
+               {
+                       return -1;
+               }
        }
 
        return 0;
@@ -681,6 +682,11 @@ DNS::DNS(std::string dnsserver)
        dns_init_2(dnsserver.c_str());
 }
 
+void DNS::SetNS(std::string dnsserver)
+{
+       dns_init_2(dnsserver.c_str());
+}
+
 DNS::~DNS()
 {
 }
@@ -689,10 +695,12 @@ bool DNS::ReverseLookup(std::string ip)
 {
         binip = dns_aton4(ip.c_str());
         if (binip == NULL) {
-                fprintf(stderr,"invalid IP address.\n");
-                return 2;
+                return false;
         }
         this->fd = dns_getname4(binip);
+       if (this->fd == -1)
+               return false;
+       return true;
 }
 
 bool DNS::ForwardLookup(std::string host)