[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r25813 - gnunet/src/transport
From: |
gnunet |
Subject: |
[GNUnet-SVN] r25813 - gnunet/src/transport |
Date: |
Thu, 17 Jan 2013 14:03:16 +0100 |
Author: wachs
Date: 2013-01-17 14:03:16 +0100 (Thu, 17 Jan 2013)
New Revision: 25813
Modified:
gnunet/src/transport/gnunet-transport.c
Log:
improved timeout handling for address listing
Modified: gnunet/src/transport/gnunet-transport.c
===================================================================
--- gnunet/src/transport/gnunet-transport.c 2013-01-17 12:25:33 UTC (rev
25812)
+++ gnunet/src/transport/gnunet-transport.c 2013-01-17 13:03:16 UTC (rev
25813)
@@ -39,9 +39,9 @@
* How long do we wait for the NAT test to report success?
* Should match NAT_SERVER_TIMEOUT in 'nat_test.c'.
*/
-#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 30)
-#define RESOLUTION_TIMEOUT GNUNET_TIME_relative_multiply
(GNUNET_TIME_UNIT_SECONDS, 10)
-#define OP_TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 5)
+#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 60)
+#define RESOLUTION_TIMEOUT GNUNET_TIME_relative_multiply
(GNUNET_TIME_UNIT_SECONDS, 30)
+#define OP_TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 30)
/**
* Benchmarking block size in KB
@@ -273,12 +273,25 @@
}
}
+struct ResolutionContext *rc_head;
+struct ResolutionContext *rc_tail;
+struct ResolutionContext
+{
+ struct ResolutionContext *next;
+ struct ResolutionContext *prev;
+ struct GNUNET_HELLO_Address *addrcp;
+ struct GNUNET_TRANSPORT_AddressToStringContext *asc;
+ int printed;
+};
+
static void
operation_timeout (void *cls,
const struct GNUNET_SCHEDULER_TaskContext *tc)
{
+ struct ResolutionContext *cur;
+ struct ResolutionContext *next;
op_timeout = GNUNET_SCHEDULER_NO_TASK;
if ((try_connect) || (benchmark_send) ||
(benchmark_receive))
@@ -292,7 +305,20 @@
}
if (iterate_connections)
{
- FPRINTF (stdout, _("Failed to list connections, timeout occured\n"));
+ next = rc_head;
+ while (NULL != (cur = next))
+ {
+ next = cur->next;
+ FPRINTF (stdout, _("Failed to resolve address
for peer `%s'\n"),
+ GNUNET_i2s
(&cur->addrcp->peer));
+
+ GNUNET_CONTAINER_DLL_remove (rc_head, rc_tail,
cur);
+ GNUNET_TRANSPORT_address_to_string_cancel
(cur->asc);
+ GNUNET_free (cur->addrcp);
+ GNUNET_free (cur);
+
+ }
+ FPRINTF (stdout, _("Failed to list connections, timeout
occured\n"));
if (GNUNET_SCHEDULER_NO_TASK != end)
GNUNET_SCHEDULER_cancel (end);
end = GNUNET_SCHEDULER_add_now (&shutdown_task, NULL);
@@ -641,14 +667,7 @@
}
}
-struct ResolutionContext
-{
- struct GNUNET_HELLO_Address *addrcp;
- int printed;
-};
-
-
static void
process_string (void *cls, const char *address)
{
@@ -668,6 +687,7 @@
if (GNUNET_NO == rc->printed)
FPRINTF (stdout, _("Peer `%s': %s <unable to resolve address>\n"),
GNUNET_i2s (&addrcp->peer), addrcp->transport_name);
GNUNET_free (rc->addrcp);
+ GNUNET_CONTAINER_DLL_remove (rc_head, rc_tail, rc);
GNUNET_free (rc);
if ((0 == address_resolutions) && (iterate_connections))
{
@@ -685,6 +705,7 @@
end = GNUNET_SCHEDULER_add_now (&shutdown_task, NULL);
}
}
+
}
/**
@@ -720,15 +741,17 @@
&operation_timeout, NULL);
rc = GNUNET_malloc(sizeof (struct ResolutionContext));
+ GNUNET_assert (NULL != rc);
+ GNUNET_CONTAINER_DLL_insert (rc_head, rc_tail, rc);
+ address_resolutions ++;
+
rc->addrcp = GNUNET_HELLO_address_copy(address);
rc->printed = GNUNET_NO;
-
- GNUNET_assert (NULL != rc);
- address_resolutions ++;
/* Resolve address to string */
- GNUNET_TRANSPORT_address_to_string (cfg, address, numeric,
+ rc->asc = GNUNET_TRANSPORT_address_to_string (cfg, address, numeric,
RESOLUTION_TIMEOUT, &process_string,
rc);
+
}
void try_connect_cb (void *cls,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r25813 - gnunet/src/transport,
gnunet <=