add out-of-order pref
[oweals/gnunet.git] / src / util / test_resolver_api.c
index 77dae50d2301e1f49e25e4ebfa974cb81b787fa7..686301694129f49f86747884bddb29aaac3ddd09 100644 (file)
@@ -1,21 +1,21 @@
 /*
  This file is part of GNUnet.
- (C) 2009 Christian Grothoff (and other contributing authors)
+ Copyright (C) 2009 GNUnet e.V.
 
- GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 3, or (at your
- option) any later version.
+ GNUnet is free software: you can redistribute it and/or modify it
under the terms of the GNU Affero General Public License as published
+ by the Free Software Foundation, either version 3 of the License,
+ or (at your option) any later version.
 
  GNUnet is distributed in the hope that it will be useful, but
  WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- General Public License for more details.
Affero General Public License for more details.
 
- You should have received a copy of the GNU General Public License
- along with GNUnet; see the file COPYING.  If not, write to the
- Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
+ You should have received a copy of the GNU Affero General Public License
+ along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+     SPDX-License-Identifier: AGPL3.0-or-later
  */
 /**
  * @file resolver/test_resolver_api.c
@@ -27,6 +27,9 @@
 #include "resolver.h"
 
 
+static int disable_rootserver_check;
+
+
 /**
  * Using DNS root servers to check gnunet's resolver service
  * a.root-servers.net <-> 198.41.0.4 is a fix 1:1 mapping that should not change over years
@@ -133,45 +136,6 @@ check_127 (void *cls, const struct sockaddr *sa, socklen_t salen)
 }
 
 
-static void
-check_local_fqdn (void *cls, const char *gnunet_fqdn)
-{
-  int result = 0;
-
-  struct hostent *host;
-  char hostname[GNUNET_OS_get_hostname_max_length () + 1];
-
-  if (0 != gethostname (hostname, sizeof (hostname) - 1))
-  {
-    GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
-                         "gethostname");
-    return;
-  }
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "Resolving our FQDN `%s'\n",
-              hostname);
-  host = gethostbyname (hostname);
-  if (NULL == host)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "Could not resolve our FQDN: %s %u\n",
-                hstrerror (h_errno),
-                h_errno);
-    return;
-  }
-
-  GNUNET_assert (0 != host);
-
-  result = strcmp (host->h_name, gnunet_fqdn);
-  if (0 != result)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "Local resolved and resolver resolved fqdns are not equal\n");
-  }
-  GNUNET_assert (0 == result);
-}
-
-
 static void
 check_rootserver_ip (void *cls, const struct sockaddr *sa, socklen_t salen)
 {
@@ -198,7 +162,8 @@ check_rootserver_ip (void *cls, const struct sockaddr *sa, socklen_t salen)
 
 
 static void
-check_rootserver_name (void *cls, const char *hostname)
+check_rootserver_name (void *cls,
+                       const char *hostname)
 {
   int *ok = cls;
 
@@ -214,11 +179,11 @@ check_rootserver_name (void *cls, const char *hostname)
   }
   else
   {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
                 "Received invalid rootserver hostname `%s', expected `%s'\n",
                 hostname,
                 ROOTSERVER_NAME);
-    GNUNET_break (0);
+    GNUNET_break (disable_rootserver_check);
   }
 }
 
@@ -248,7 +213,8 @@ run (void *cls, char *const *args, const char *cfgfile,
    * Looking up our own fqdn
    */
   own_fqdn = GNUNET_RESOLVER_local_fqdn_get ();
-  check_local_fqdn (NULL, own_fqdn);
+  /* can't really check, only thing we can safely
+     compare against is our own identical logic... */
   GNUNET_free_non_null (own_fqdn);
 
   /*
@@ -271,7 +237,7 @@ run (void *cls, char *const *args, const char *cfgfile,
   }
 
   /* Counting returned IP addresses */
-  while (rootserver->h_addr_list[count_ips] != NULL)
+  while (NULL != rootserver->h_addr_list[count_ips])
     count_ips++;
   if (count_ips > 1)
   {
@@ -294,6 +260,8 @@ run (void *cls, char *const *args, const char *cfgfile,
   /* Resolve the same using GNUNET */
   GNUNET_RESOLVER_ip_get (ROOTSERVER_NAME, AF_INET, timeout,
                           &check_rootserver_ip, cls);
+  GNUNET_RESOLVER_ip_get (ROOTSERVER_NAME, AF_INET, timeout,
+                          &check_rootserver_ip, cls);
 
   /*
    * Success: forward lookups work as expected
@@ -309,24 +277,25 @@ run (void *cls, char *const *args, const char *cfgfile,
   }
 
   rootserver =
-      gethostbyaddr (&rootserver_addr,
+      gethostbyaddr ((const void *) &rootserver_addr,
                      sizeof (rootserver_addr),
                      AF_INET);
   if (NULL == rootserver)
   {
     /* Error: resolving IP addresses does not work */
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
                 "gethostbyaddr() could not lookup hostname: %s\n",
                 hstrerror (h_errno));
-    GNUNET_break (0);
+    disable_rootserver_check = GNUNET_YES;
   }
   else
   {
-    if (0 != strcmp (rootserver->h_name, ROOTSERVER_NAME))
+    if (0 != strcmp (rootserver->h_name,
+                     ROOTSERVER_NAME))
     {
-      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+      GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
                   "Received hostname and hostname for root name server differ\n");
-      GNUNET_break (0);
+      disable_rootserver_check = GNUNET_YES;
     }
   }