[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r32805 - gnunet/src/transport
From: |
gnunet |
Subject: |
[GNUnet-SVN] r32805 - gnunet/src/transport |
Date: |
Wed, 26 Mar 2014 17:29:55 +0100 |
Author: wachs
Date: 2014-03-26 17:29:55 +0100 (Wed, 26 Mar 2014)
New Revision: 32805
Modified:
gnunet/src/transport/gnunet-service-transport_neighbours.c
Log:
error handling for failed CONNECT messages in CONNECT_SWITCHING
Modified: gnunet/src/transport/gnunet-service-transport_neighbours.c
===================================================================
--- gnunet/src/transport/gnunet-service-transport_neighbours.c 2014-03-26
15:04:29 UTC (rev 32804)
+++ gnunet/src/transport/gnunet-service-transport_neighbours.c 2014-03-26
16:29:55 UTC (rev 32805)
@@ -838,7 +838,7 @@
}
/**
- * Clear the primary address of a neighbour since this primary address is not
+ * Clear the primary address of a neighbour since this address is not
* valid anymore and notify monitoring about it
*
* @param n the neighbour
@@ -858,8 +858,19 @@
n->primary_address.bandwidth_out);
}
+/**
+ * Clear the alternative address of a neighbour since this address is not
+ * valid anymore
+ *
+ * @param n the neighbour
+ */
+static void
+unset_alternative_address (struct NeighbourMapEntry *n)
+{
+ /* Unset primary address */
+ free_address (&n->alternative_address);
+}
-
/**
* Free a neighbour map entry.
*
@@ -1640,7 +1651,8 @@
}
if ( (GNUNET_TRANSPORT_PS_CONNECT_SENT != n->state) &&
- (GNUNET_TRANSPORT_PS_RECONNECT_SENT != n->state) )
+ (GNUNET_TRANSPORT_PS_RECONNECT_SENT != n->state) &&
+ (GNUNET_TRANSPORT_PS_CONNECTED_SWITCHING_CONNECT_SENT != n->state))
{
/* CONNECT continuation was called after neighbor changed state,
* for example due to a time out for the state or the session
@@ -1656,34 +1668,40 @@
GST_plugins_a2s (n->primary_address.address),
n->primary_address.session);
- /* Failed to send CONNECT message with this address */
- GNUNET_ATS_address_destroyed (GST_ats, n->primary_address.address,
- n->primary_address.session);
- GNUNET_ATS_address_destroyed (GST_ats, n->primary_address.address,
- NULL);
-
- /* Remove address and request and additional one */
- unset_primary_address (n);
-
- if (n->state == GNUNET_TRANSPORT_PS_RECONNECT_SENT)
- {
+ switch (n->state) {
+ case GNUNET_TRANSPORT_PS_CONNECT_SENT:
+ /* Remove address and request and additional one */
+ GNUNET_ATS_address_destroyed (GST_ats, n->primary_address.address,
+ n->primary_address.session);
+ GNUNET_ATS_address_destroyed (GST_ats, n->primary_address.address, NULL );
+ unset_primary_address (n);
set_state_and_timeout (n, GNUNET_TRANSPORT_PS_RECONNECT_ATS,
- GNUNET_TIME_relative_to_absolute (FAST_RECONNECT_TIMEOUT));
-
- }
- else if (n->state == GNUNET_TRANSPORT_PS_INIT_ATS)
- {
+ GNUNET_TIME_relative_to_absolute (FAST_RECONNECT_TIMEOUT));
+ break;
+ case GNUNET_TRANSPORT_PS_RECONNECT_SENT:
+ /* Remove address and request and additional one */
+ GNUNET_ATS_address_destroyed (GST_ats, n->primary_address.address,
+ n->primary_address.session);
+ GNUNET_ATS_address_destroyed (GST_ats, n->primary_address.address, NULL );
+ unset_primary_address (n);
set_state_and_timeout (n, GNUNET_TRANSPORT_PS_INIT_ATS,
- GNUNET_TIME_relative_to_absolute (ATS_RESPONSE_TIMEOUT));
+ GNUNET_TIME_relative_to_absolute (ATS_RESPONSE_TIMEOUT));
+ break;
+ case GNUNET_TRANSPORT_PS_CONNECTED_SWITCHING_CONNECT_SENT:
+ /* Remove address and request and go back to primary address */
+ GNUNET_ATS_address_destroyed (GST_ats, n->alternative_address.address,
+ n->alternative_address.session);
+ GNUNET_ATS_address_destroyed (GST_ats, n->alternative_address.address,
+ NULL );
+ unset_alternative_address (n);
+ set_state_and_timeout (n, GNUNET_TRANSPORT_PS_CONNECTED,
+ GNUNET_TIME_relative_to_absolute (ATS_RESPONSE_TIMEOUT));
+ break;
+ default:
+ GNUNET_break(0);
+ disconnect_neighbour (n);
+ break;
}
- else
- {
- GNUNET_break (0);
- set_state_and_timeout (n, GNUNET_TRANSPORT_PS_INIT_ATS,
- GNUNET_TIME_relative_to_absolute (ATS_RESPONSE_TIMEOUT));
- }
-
- return;
}
/**
@@ -1740,31 +1758,35 @@
GNUNET_break (0);
return;
}
- /* Hard failure to send the CONNECT message with this address:
- Destroy address and session */
+
+ switch (n->state) {
+ case GNUNET_TRANSPORT_PS_CONNECT_SENT:
+ /* Remove address and request and additional one */
+ unset_primary_address (n);
+ set_state_and_timeout (n, GNUNET_TRANSPORT_PS_RECONNECT_ATS,
+ GNUNET_TIME_relative_to_absolute (FAST_RECONNECT_TIMEOUT));
+ /* Hard failure to send the CONNECT message with this address:
+ Destroy address and session */
+ break;
+ case GNUNET_TRANSPORT_PS_RECONNECT_SENT:
+ /* Remove address and request and additional one */
+ unset_primary_address (n);
+ set_state_and_timeout (n, GNUNET_TRANSPORT_PS_INIT_ATS,
+ GNUNET_TIME_relative_to_absolute (ATS_RESPONSE_TIMEOUT));
+ break;
+ case GNUNET_TRANSPORT_PS_CONNECTED_SWITCHING_CONNECT_SENT:
+ /* Remove address and request and additional one */
+ unset_alternative_address (n);
+ set_state_and_timeout (n, GNUNET_TRANSPORT_PS_CONNECTED,
+ GNUNET_TIME_relative_to_absolute (ATS_RESPONSE_TIMEOUT));
+ break;
+ default:
+ GNUNET_break (0);
+ disconnect_neighbour (n);
+ break;
+ }
GNUNET_ATS_address_destroyed (GST_ats, na->address, na->session);
GNUNET_ATS_address_destroyed (GST_ats, na->address, NULL);
-
- /* Remove address and request and additional one */
- unset_primary_address (n);
- if (n->state == GNUNET_TRANSPORT_PS_RECONNECT_SENT)
- {
- set_state_and_timeout (n, GNUNET_TRANSPORT_PS_RECONNECT_ATS,
- GNUNET_TIME_relative_to_absolute (FAST_RECONNECT_TIMEOUT));
-
- }
- else if (n->state == GNUNET_TRANSPORT_PS_INIT_ATS)
- {
- set_state_and_timeout (n, GNUNET_TRANSPORT_PS_INIT_ATS,
- GNUNET_TIME_relative_to_absolute (ATS_RESPONSE_TIMEOUT));
- }
- else
- {
- GNUNET_break (0);
- set_state_and_timeout (n, GNUNET_TRANSPORT_PS_INIT_ATS,
- GNUNET_TIME_relative_to_absolute (ATS_RESPONSE_TIMEOUT));
- }
- return;
}
GST_neighbours_notify_data_sent (&na->address->peer,
na->address,
@@ -3062,7 +3084,7 @@
case GNUNET_TRANSPORT_PS_CONNECT_RECV_ATS:
if (0 == delay.rel_value_us)
{
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Connection to `%s' timed out waiting ATS to provide address
to use for CONNECT_ACK\n",
GNUNET_i2s (&n->id));
free_neighbour (n, GNUNET_NO);
@@ -3072,7 +3094,7 @@
case GNUNET_TRANSPORT_PS_CONNECT_RECV_ACK:
if (0 == delay.rel_value_us)
{
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Connection to `%s' timed out waiting for other peer to send
SESSION_ACK\n",
GNUNET_i2s (&n->id));
disconnect_neighbour (n);
@@ -3082,7 +3104,7 @@
case GNUNET_TRANSPORT_PS_CONNECTED:
if (0 == delay.rel_value_us)
{
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Connection to `%s' timed out, missing KEEPALIVE_RESPONSEs\n",
GNUNET_i2s (&n->id));
disconnect_neighbour (n);
@@ -3094,7 +3116,7 @@
case GNUNET_TRANSPORT_PS_RECONNECT_ATS:
if (0 == delay.rel_value_us)
{
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Connection to `%s' timed out, waiting for ATS replacement
address\n",
GNUNET_i2s (&n->id));
disconnect_neighbour (n);
@@ -3104,7 +3126,7 @@
case GNUNET_TRANSPORT_PS_RECONNECT_SENT:
if (0 == delay.rel_value_us)
{
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Connection to `%s' timed out, waiting for other peer to
CONNECT_ACK replacement address\n",
GNUNET_i2s (&n->id));
disconnect_neighbour (n);
@@ -3114,7 +3136,7 @@
case GNUNET_TRANSPORT_PS_CONNECTED_SWITCHING_CONNECT_SENT:
if (0 == delay.rel_value_us)
{
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Connection to `%s' timed out, missing KEEPALIVE_RESPONSEs
(after trying to CONNECT on alternative address)\n",
GNUNET_i2s (&n->id));
disconnect_neighbour (n);
@@ -3124,7 +3146,7 @@
send_keepalive (n);
break;
case GNUNET_TRANSPORT_PS_DISCONNECT:
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Cleaning up connection to `%s' after sending DISCONNECT\n",
GNUNET_i2s (&n->id));
free_neighbour (n, GNUNET_NO);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r32805 - gnunet/src/transport,
gnunet <=