[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r20863 - gnunet/src/transport
From: |
gnunet |
Subject: |
[GNUnet-SVN] r20863 - gnunet/src/transport |
Date: |
Mon, 2 Apr 2012 16:46:10 +0200 |
Author: wachs
Date: 2012-04-02 16:46:10 +0200 (Mon, 02 Apr 2012)
New Revision: 20863
Modified:
gnunet/src/transport/gnunet-transport.c
Log:
- "fixing" mantis 0002211
Modified: gnunet/src/transport/gnunet-transport.c
===================================================================
--- gnunet/src/transport/gnunet-transport.c 2012-04-02 14:45:38 UTC (rev
20862)
+++ gnunet/src/transport/gnunet-transport.c 2012-04-02 14:46:10 UTC (rev
20863)
@@ -40,6 +40,7 @@
* 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)
/**
* Which peer should we connect to?
@@ -122,6 +123,8 @@
*/
static GNUNET_SCHEDULER_TaskIdentifier end;
+static struct GNUNET_CONTAINER_MultiHashMap *peers;
+
/**
* Selected level of verbosity.
*/
@@ -444,19 +447,31 @@
traffic_received += ntohs (message->size);
}
+struct ResolutionContext
+{
+ struct GNUNET_HELLO_Address *addrcp;
+
+ int printed;
+};
+
void
process_string (void *cls, const char *address)
{
- struct GNUNET_HELLO_Address *addrcp = cls;
+ struct ResolutionContext *rc = cls;
+ struct GNUNET_HELLO_Address *addrcp = rc->addrcp;
- if ((address != NULL))
+ if (address != NULL)
{
FPRINTF (stdout, _("Peer `%s': %s %s\n"), GNUNET_i2s (&addrcp->peer),
addrcp->transport_name, address);
+ rc->printed = GNUNET_YES;
}
else
{
/* done */
- GNUNET_free (addrcp);
+ 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_free (rc);
}
}
@@ -472,6 +487,7 @@
const struct GNUNET_HELLO_Address *address)
{
const struct GNUNET_CONFIGURATION_Handle *cfg = cls;
+ struct ResolutionContext *rc;
if (peer == NULL)
{
@@ -485,10 +501,16 @@
return;
}
+ rc = GNUNET_malloc(sizeof (struct ResolutionContext));
+ rc->addrcp = GNUNET_HELLO_address_copy(address);
+ rc->printed = GNUNET_NO;
+
+ GNUNET_assert (NULL != rc);
+
/* Resolve address to string */
GNUNET_TRANSPORT_address_to_string (cfg, address, numeric,
- GNUNET_TIME_UNIT_MINUTES,
&process_string,
- GNUNET_HELLO_address_copy(address));
+ RESOLUTION_TIMEOUT, &process_string,
+ rc);
}
@@ -505,7 +527,13 @@
{
struct GNUNET_TRANSPORT_PeerIterateContext *pic = cls;
- GNUNET_TRANSPORT_peer_get_active_addresses_cancel (pic);
+ GNUNET_TRANSPORT_peer_get_active_addresses_cancel (pic);
+
+ if (NULL != peers)
+ {
+ GNUNET_CONTAINER_multihashmap_destroy (peers);
+ peers = NULL;
+ }
}
@@ -562,8 +590,9 @@
}
if (iterate_connections)
{
+ peers = GNUNET_CONTAINER_multihashmap_create (20);
GNUNET_TRANSPORT_peer_get_active_addresses (cfg, NULL, GNUNET_YES,
- GNUNET_TIME_UNIT_MINUTES,
+ TIMEOUT,
&process_address, (void *)
cfg);
}
if (monitor_connections)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r20863 - gnunet/src/transport,
gnunet <=