- firedns.c: fixes to ipv6 support
authormichael <michael@82007160-df01-0410-b94d-b575c5fd34c7>
Sun, 28 Dec 2014 23:52:32 +0000 (23:52 +0000)
committermichael <michael@82007160-df01-0410-b94d-b575c5fd34c7>
Sun, 28 Dec 2014 23:52:32 +0000 (23:52 +0000)
git-svn-id: svn://svn.ircd-hybrid.org/svnroot/hopm/branches/1.0.x@5184 82007160-df01-0410-b94d-b575c5fd34c7

src/firedns.c

index 90bed49f258d5c6f49eedd1acd3fdd70fd13d799..df26056893c6d9989dc0212544e3ea3bbff0ddb6 100644 (file)
@@ -195,7 +195,6 @@ firedns_init(void)
         while (buf[i] == ' ' || buf[i] == '\t')
           ++i;
 
-        /* glibc /etc/resolv.conf seems to allow ipv6 server names */
         if (i6 < FDNS_MAX)
         {
           if (inet_pton(AF_INET6, &buf[i], &addr6) > 0)
@@ -239,12 +238,6 @@ firedns_init(void)
   }
 
   fclose(f);
-
-  if (i4 == 0 /* (yuck) */ && i6)
-  {
-    log_printf("FIREDNS -> No nameservers found in %s", file);
-    exit(EXIT_FAILURE);
-  }
 }
 
 /* immediate A query */
@@ -263,6 +256,11 @@ firedns_resolveip4(const char *const name)
 struct in6_addr *
 firedns_resolveip6(const char * const name)
 {
+  static struct in6_addr addr;
+
+  if (inet_pton(AF_INET6, name, &addr) > 0)
+    return &addr;
+
   return (struct in6_addr *)firedns_resolveip(FDNS_QRY_AAAA, name);
 }