[Top][All Lists]
[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);
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r9047 - in gnunet/src: include transport util,
gnunet <=