gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r9047 - in gnunet/src: include transport util


From: gnunet
Subject: [GNUnet-SVN] r9047 - in gnunet/src: include transport util
Date: Wed, 30 Sep 2009 17:40:33 -0600

Author: grothoff
Date: 2009-09-30 17:40:32 -0600 (Wed, 30 Sep 2009)
New Revision: 9047

Modified:
   gnunet/src/include/gnunet_connection_lib.h
   gnunet/src/transport/test_transport_api.c
   gnunet/src/util/client.c
   gnunet/src/util/connection.c
   gnunet/src/util/service.c
Log:
better diagnostics

Modified: gnunet/src/include/gnunet_connection_lib.h
===================================================================
--- gnunet/src/include/gnunet_connection_lib.h  2009-09-30 21:31:03 UTC (rev 
9046)
+++ gnunet/src/include/gnunet_connection_lib.h  2009-09-30 23:40:32 UTC (rev 
9047)
@@ -40,7 +40,9 @@
 
 /**
  * Timeout we use on TCP connect before trying another
- * result from the DNS resolver. 5s.
+ * result from the DNS resolver.  Actual value used
+ * is this value divided by the number of address families.
+ * Default is 5s.
  */
 #define GNUNET_CONNECTION_CONNECT_RETRY_TIMEOUT GNUNET_TIME_relative_multiply 
(GNUNET_TIME_UNIT_SECONDS, 5)
 

Modified: gnunet/src/transport/test_transport_api.c
===================================================================
--- gnunet/src/transport/test_transport_api.c   2009-09-30 21:31:03 UTC (rev 
9046)
+++ gnunet/src/transport/test_transport_api.c   2009-09-30 23:40:32 UTC (rev 
9047)
@@ -31,7 +31,7 @@
 #include "gnunet_transport_service.h"
 #include "transport.h"
 
-#define VERBOSE GNUNET_NO
+#define VERBOSE GNUNET_YES
 
 #define START_ARM GNUNET_YES
 

Modified: gnunet/src/util/client.c
===================================================================
--- gnunet/src/util/client.c    2009-09-30 21:31:03 UTC (rev 9046)
+++ gnunet/src/util/client.c    2009-09-30 23:40:32 UTC (rev 9047)
@@ -143,14 +143,22 @@
                                               "HOSTNAME", &hostname)))
     {
       GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                  "Could not determine valid hostname and port for service 
`%s' from configuration.\n",
+                  _("Could not determine valid hostname and port for service 
`%s' from configuration.\n"),
                   service_name);
       return NULL;
     }
+  if (0 == strlen (hostname))
+    {
+      GNUNET_free (hostname);
+      GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+                  _("Need a non-empty hostname for service `%s'.\n"),
+                 service_name);
+      return NULL;
+    }
   sock = GNUNET_CONNECTION_create_from_connect (sched,
-                                                    hostname,
-                                                    port,
-                                                    
GNUNET_SERVER_MAX_MESSAGE_SIZE);
+                                               hostname,
+                                               port,
+                                               GNUNET_SERVER_MAX_MESSAGE_SIZE);
   GNUNET_free (hostname);
   if (sock == NULL)
     return NULL;

Modified: gnunet/src/util/connection.c
===================================================================
--- gnunet/src/util/connection.c        2009-09-30 21:31:03 UTC (rev 9046)
+++ gnunet/src/util/connection.c        2009-09-30 23:40:32 UTC (rev 9047)
@@ -349,10 +349,13 @@
   return GNUNET_OK;
 }
 
+
 /**
  * Perform a DNS lookup for the hostname associated
  * with the current socket, iterating over the address
  * families as specified in the "address_families" array.
+ *
+ * @param sock the socket for which to do the lookup
  */
 static void
 try_lookup (struct GNUNET_CONNECTION_Handle *sock)
@@ -360,6 +363,7 @@
   struct addrinfo hints;
   int ec;
 
+  GNUNET_assert (0 < strlen (sock->hostname)); /* sanity check */
   while ( (sock->ai_pos == NULL) &&
          (sock->af_fam_offset > 0) )
     {
@@ -368,11 +372,32 @@
       memset (&hints, 0, sizeof (hints));
       hints.ai_family = address_families[--sock->af_fam_offset];
       hints.ai_socktype = SOCK_STREAM;
-      if (0 != (ec = getaddrinfo (sock->hostname, NULL, &hints, &sock->ai)))
+#if 0
+      GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+                 _("`%s' tries to resolve address family %d and hostname 
`%s:%u'\n"),
+                 "getaddrinfo", 
+                 address_families[sock->af_fam_offset],
+                 sock->hostname,
+                 sock->port);
+#endif
+      ec = getaddrinfo (sock->hostname, NULL, &hints, &sock->ai);
+#if 0
+      GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+                 _("`%s' returned from resolving address family %d and 
hostname `%s:%u'\n"),
+                 "getaddrinfo", 
+                 address_families[sock->af_fam_offset],
+                 sock->hostname,
+                 sock->port);
+#endif
+      if (0 != ec)
        {
          GNUNET_log (GNUNET_ERROR_TYPE_INFO | GNUNET_ERROR_TYPE_BULK,
-                     "`%s' failed for hostname `%s': %s\n",
-                     "getaddrinfo", sock->hostname, gai_strerror (ec));
+                     _("`%s' failed for address family %d and hostname 
`%s:%u': %s\n"),
+                     "getaddrinfo", 
+                     address_families[sock->af_fam_offset],
+                     sock->hostname,
+                     sock->port,
+                     gai_strerror (ec));
          sock->ai = NULL;
        }
       sock->ai_pos = sock->ai;
@@ -477,10 +502,12 @@
                       const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
   struct GNUNET_CONNECTION_Handle *sock = cls;
+  struct GNUNET_TIME_Relative delay;
   unsigned int len;
   int error;
 
-  /* nobody needs to wait for us anymore... */
+  GNUNET_assert (0 < strlen (sock->hostname)); /* sanity check */
+   /* nobody needs to wait for us anymore... */
   sock->connect_task = GNUNET_SCHEDULER_NO_TASK;
   /* Note: write-ready does NOT mean connect succeeded,
      we need to use getsockopt to be sure */
@@ -493,8 +520,9 @@
     {
 #if DEBUG_CONNECTION
       GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                 "Failed to establish TCP connection to `%s'\n",
-                 GNUNET_a2s(sock->addr, sock->addrlen));
+                 "Failed to establish TCP connection to `%s:%u': %s\n",
+                 GNUNET_a2s(sock->addr, sock->addrlen),
+                 STRERROR (GNUNET_MAX (error, errno)));
 #endif
       /* connect failed / timed out */
       GNUNET_break (GNUNET_OK == GNUNET_NETWORK_socket_close (sock->sock));
@@ -504,7 +532,9 @@
           /* failed for good */
 #if DEBUG_CONNECTION
          GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                     "Failed to establish TCP connection, no further addresses 
to try.\n");
+                     "Failed to establish TCP connection to `%s:%u', no 
further addresses to try.\n",
+                     sock->hostname,
+                     sock->port);
 #endif
          /* connect failed / timed out */
           GNUNET_break (sock->ai_pos == NULL);
@@ -512,13 +542,28 @@
           sock->ai = NULL;
           return;
         }
+      delay = GNUNET_CONNECTION_CONNECT_RETRY_TIMEOUT;
+      if (sock->nth.notify_ready != NULL)
+       delay = GNUNET_TIME_relative_min (delay,
+                                         GNUNET_TIME_absolute_get_remaining 
(sock->nth.transmit_timeout));
+      if (sock->receiver != NULL)
+       delay = GNUNET_TIME_relative_min (delay,
+                                         GNUNET_TIME_absolute_get_remaining 
(sock->receive_timeout));
+      delay.value /= (1 + sock->af_fam_offset);
+#if DEBUG_CONNECTION
+      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                 "Will try to connect to `%s' for %llu ms\n",
+                 GNUNET_a2s (sock->addr,
+                             sock->addrlen),
+                 delay.value);
+#endif
       sock->connect_task = GNUNET_SCHEDULER_add_write_net (tc->sched, 
GNUNET_NO,    /* abort on shutdown */
-                                                       
GNUNET_SCHEDULER_PRIORITY_KEEP,
-                                                       
GNUNET_SCHEDULER_NO_TASK,
-                                                       
GNUNET_CONNECTION_CONNECT_RETRY_TIMEOUT,
-                                                       sock->sock,
-                                                       &connect_continuation,
-                                                       sock);
+                                                          
GNUNET_SCHEDULER_PRIORITY_KEEP,
+                                                          
GNUNET_SCHEDULER_NO_TASK,
+                                                          delay,
+                                                          sock->sock,
+                                                          
&connect_continuation,
+                                                          sock);
       return;
     }
   /* connect succeeded! clean up "ai" */
@@ -552,6 +597,7 @@
 {
   struct GNUNET_CONNECTION_Handle *ret;
 
+  GNUNET_assert (0 < strlen (hostname)); /* sanity check */
   ret = GNUNET_malloc (sizeof (struct GNUNET_CONNECTION_Handle) + maxbuf);
   ret->sock = NULL;
   ret->sched = sched;
@@ -788,7 +834,9 @@
     {
 #if DEBUG_CONNECTION
       GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                  "Receive encounters error: time out...\n");
+                  "Receive from %s encounters error: time out by %llums...\n",
+                 GNUNET_a2s (sh->addr, sh->addrlen),
+                 now.value - sh->receive_timeout.value);
 #endif
       signal_timeout (sh);
       return;
@@ -1014,7 +1062,9 @@
   GNUNET_CONNECTION_TransmitReadyNotify notify;
 
 #if DEBUG_CONNECTION
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Transmit fails, time out reached.\n");
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 
+             "Transmit to `%s' fails, time out reached.\n",
+             GNUNET_a2s (sock->addr, sock->addrlen));
 #endif
   notify = sock->nth.notify_ready;
   sock->nth.notify_ready = NULL;

Modified: gnunet/src/util/service.c
===================================================================
--- gnunet/src/util/service.c   2009-09-30 21:31:03 UTC (rev 9046)
+++ gnunet/src/util/service.c   2009-09-30 23:40:32 UTC (rev 9047)
@@ -1104,7 +1104,11 @@
       sctx->ready_confirm_fd = -1;
       write_pid_file (sctx, getpid ());
     }
-
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+             _("Service `%s' runs at %s\n"),
+             sctx->serviceName,
+             GNUNET_a2s (sctx->addr,
+                         sctx->addrlen));
   sctx->task (sctx->task_cls, tc->sched, sctx->server, sctx->cfg);
 }
 





reply via email to

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