gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r35877 - gnunet/src/util


From: gnunet
Subject: [GNUnet-SVN] r35877 - gnunet/src/util
Date: Sun, 7 Jun 2015 19:57:19 +0200

Author: grothoff
Date: 2015-06-07 19:57:19 +0200 (Sun, 07 Jun 2015)
New Revision: 35877

Modified:
   gnunet/src/util/gnunet-service-resolver.c
   gnunet/src/util/resolver_api.c
Log:
-return IP in dotted decimal if reverse lookup fails

Modified: gnunet/src/util/gnunet-service-resolver.c
===================================================================
--- gnunet/src/util/gnunet-service-resolver.c   2015-06-07 17:55:39 UTC (rev 
35876)
+++ gnunet/src/util/gnunet-service-resolver.c   2015-06-07 17:57:19 UTC (rev 
35877)
@@ -101,6 +101,7 @@
   struct sockaddr_in v4;
   struct sockaddr_in6 v6;
   size_t salen;
+  int ret;
 
   switch (cache->af)
   {
@@ -131,13 +132,19 @@
   }
 
   if (0 ==
-      getnameinfo (sa, salen,
-                   hostname, sizeof (hostname),
-                   NULL,
-                   0, 0))
+      (ret = getnameinfo (sa, salen,
+                          hostname, sizeof (hostname),
+                          NULL,
+                          0, 0)))
   {
     cache->addr = GNUNET_strdup (hostname);
   }
+  else
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+                "getnameinfo failed: %s\n",
+                gai_strerror (ret));
+  }
 }
 #endif
 
@@ -160,6 +167,12 @@
   {
     cache->addr = GNUNET_strdup (ent->h_name);
   }
+  else
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+                "gethostbyaddr failed: %s\n",
+                hstrerror (h_errno));
+  }
 }
 #endif
 
@@ -269,6 +282,9 @@
     GNUNET_SERVER_transmit_context_append_data (tc, pos->addr,
                                                 strlen (pos->addr) + 1,
                                                 
GNUNET_MESSAGE_TYPE_RESOLVER_RESPONSE);
+  else
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                "Reverse lookup failed\n");
   GNUNET_SERVER_transmit_context_append_data (tc, NULL, 0,
                                               
GNUNET_MESSAGE_TYPE_RESOLVER_RESPONSE);
   GNUNET_SERVER_transmit_context_run (tc, GNUNET_TIME_UNIT_FOREVER_REL);
@@ -307,7 +323,8 @@
 
   if (0 != (s = getaddrinfo (hostname, NULL, &hints, &result)))
   {
-    GNUNET_log (GNUNET_ERROR_TYPE_INFO, _("Could not resolve `%s' (%s): %s\n"),
+    GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+                _("Could not resolve `%s' (%s): %s\n"),
                 hostname,
                 (af ==
                  AF_INET) ? "IPv4" : ((af == AF_INET6) ? "IPv6" : "any"),
@@ -354,7 +371,8 @@
 #if HAVE_GETHOSTBYNAME2
 static int
 gethostbyname2_resolve (struct GNUNET_SERVER_TransmitContext *tc,
-                        const char *hostname, int af)
+                        const char *hostname,
+                        int af)
 {
   struct hostent *hp;
   int ret1;
@@ -417,10 +435,11 @@
   struct hostent *hp;
 
   hp = GETHOSTBYNAME (hostname);
-  if (hp == NULL)
+  if (NULL == hp)
   {
     GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-                _("Could not find IP of host `%s': %s\n"), hostname,
+                _("Could not find IP of host `%s': %s\n"),
+                hostname,
                 hstrerror (h_errno));
     return GNUNET_SYSERR;
   }
@@ -497,7 +516,8 @@
   if (msize < sizeof (struct GNUNET_RESOLVER_GetMessage))
   {
     GNUNET_break (0);
-    GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
+    GNUNET_SERVER_receive_done (client,
+                                GNUNET_SYSERR);
     return;
   }
   msg = (const struct GNUNET_RESOLVER_GetMessage *) message;
@@ -504,7 +524,7 @@
   size = msize - sizeof (struct GNUNET_RESOLVER_GetMessage);
   direction = ntohl (msg->direction);
   af = ntohl (msg->af);
-  if (direction == GNUNET_NO)
+  if (GNUNET_NO == direction)
   {
     /* IP from hostname */
     const char *hostname;
@@ -513,10 +533,12 @@
     if (hostname[size - 1] != '\0')
     {
       GNUNET_break (0);
-      GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
+      GNUNET_SERVER_receive_done (client,
+                                  GNUNET_SYSERR);
       return;
     }
-    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Resolver asked to look up `%s'.\n",
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                "Resolver asked to look up `%s'.\n",
                 hostname);
     get_ip_from_hostname (client, hostname, af);
     return;
@@ -528,7 +550,8 @@
     if (size != sizeof (struct in_addr))
     {
       GNUNET_break (0);
-      GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
+      GNUNET_SERVER_receive_done (client,
+                                  GNUNET_SYSERR);
       return;
     }
     break;
@@ -536,13 +559,15 @@
     if (size != sizeof (struct in6_addr))
     {
       GNUNET_break (0);
-      GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
+      GNUNET_SERVER_receive_done (client,
+                                  GNUNET_SYSERR);
       return;
     }
     break;
   default:
     GNUNET_break (0);
-    GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
+    GNUNET_SERVER_receive_done (client,
+                                GNUNET_SYSERR);
     return;
   }
   {
@@ -590,7 +615,9 @@
 
   ret =
       (GNUNET_OK ==
-       GNUNET_SERVICE_run (argc, argv, "resolver", GNUNET_SERVICE_OPTION_NONE,
+       GNUNET_SERVICE_run (argc, argv,
+                           "resolver",
+                           GNUNET_SERVICE_OPTION_NONE,
                            &run, NULL)) ? 0 : 1;
   while (NULL != (pos = cache_head))
   {

Modified: gnunet/src/util/resolver_api.c
===================================================================
--- gnunet/src/util/resolver_api.c      2015-06-07 17:55:39 UTC (rev 35876)
+++ gnunet/src/util/resolver_api.c      2015-06-07 17:57:19 UTC (rev 35877)
@@ -1,6 +1,6 @@
 /*
      This file is part of GNUnet.
-     Copyright (C) 2009-2014 Christian Grothoff (and other contributing 
authors)
+     Copyright (C) 2009-2015 Christian Grothoff (and other contributing 
authors)
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -78,13 +78,13 @@
 /**
  * Task for reconnecting.
  */
-static struct GNUNET_SCHEDULER_Task * r_task;
+static struct GNUNET_SCHEDULER_Task *r_task;
 
 /**
  * Task ID of shutdown task; only present while we have a
  * connection to the resolver service.
  */
-static struct GNUNET_SCHEDULER_Task * s_task;
+static struct GNUNET_SCHEDULER_Task *s_task;
 
 
 /**
@@ -401,13 +401,27 @@
   size = ntohs (msg->size);
   if (size == sizeof (struct GNUNET_MessageHeader))
   {
+    LOG (GNUNET_ERROR_TYPE_DEBUG,
+         "Received empty response from DNS service\n");
     /* message contains not data, just header; end of replies */
     /* check if request was canceled */
     if (GNUNET_SYSERR != rh->was_transmitted)
     {
+      /* no reverse lookup was successful, return IP as string */
       if (NULL != rh->name_callback)
+      {
+        if (GNUNET_NO == rh->received_response)
+        {
+          nret = no_resolve (rh->af,
+                             &rh[1],
+                             rh->data_len);
+          rh->name_callback (rh->cls, nret);
+          GNUNET_free (nret);
+        }
+        /* finally, make termination call */
         rh->name_callback (rh->cls,
                            NULL);
+      }
       if (NULL != rh->addr_callback)
         rh->addr_callback (rh->cls,
                            NULL,
@@ -495,6 +509,8 @@
       reconnect ();
       return;
     }
+    LOG (GNUNET_ERROR_TYPE_DEBUG,
+         "Received IP from DNS service\n");
     if (GNUNET_SYSERR != rh->was_transmitted)
       rh->addr_callback (rh->cls,
                          sa,
@@ -810,7 +826,8 @@
  * @return handle that can be used to cancel the request, NULL on error
  */
 struct GNUNET_RESOLVER_RequestHandle *
-GNUNET_RESOLVER_ip_get (const char *hostname, int af,
+GNUNET_RESOLVER_ip_get (const char *hostname,
+                        int af,
                         struct GNUNET_TIME_Relative timeout,
                         GNUNET_RESOLVER_AddressCallback callback,
                         void *callback_cls)
@@ -938,10 +955,12 @@
   switch (sa->sa_family)
   {
   case AF_INET:
+    GNUNET_assert (salen == sizeof (struct sockaddr_in));
     ip_len = sizeof (struct in_addr);
     ip = &((const struct sockaddr_in*)sa)->sin_addr;
     break;
   case AF_INET6:
+    GNUNET_assert (salen == sizeof (struct sockaddr_in6));
     ip_len = sizeof (struct in6_addr);
     ip = &((const struct sockaddr_in6*)sa)->sin6_addr;
     break;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]