gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r33351 - gnunet/src/transport


From: gnunet
Subject: [GNUnet-SVN] r33351 - gnunet/src/transport
Date: Wed, 21 May 2014 11:28:04 +0200

Author: wachs
Date: 2014-05-21 11:28:03 +0200 (Wed, 21 May 2014)
New Revision: 33351

Modified:
   gnunet/src/transport/gnunet-service-transport_neighbours.c
Log:
fix for address switching when both peers switch at about the same time and an 
additional SESSION_ACK is received


Modified: gnunet/src/transport/gnunet-service-transport_neighbours.c
===================================================================
--- gnunet/src/transport/gnunet-service-transport_neighbours.c  2014-05-21 
08:02:38 UTC (rev 33350)
+++ gnunet/src/transport/gnunet-service-transport_neighbours.c  2014-05-21 
09:28:03 UTC (rev 33351)
@@ -2338,7 +2338,7 @@
   n->ack_state = ACK_SEND_CONNECT_ACK;
   n->connect_ack_timestamp = ts;
 
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
               "Received CONNECT for peer `%s' in state %s/%s\n",
               GNUNET_i2s (peer),
               GNUNET_TRANSPORT_ps2s (n->state),
@@ -3202,6 +3202,7 @@
         n->alternative_address.session, n->alternative_address.bandwidth_in,
         n->alternative_address.bandwidth_out, GNUNET_YES);
 
+    GNUNET_break (0);
     GNUNET_STATISTICS_update (GST_stats, gettext_noop
         ("# Successful attempts to switch addresses"), 1, GNUNET_NO);
 
@@ -3389,7 +3390,7 @@
 {
   struct NeighbourMapEntry *n;
 
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
              "Received SESSION_ACK message from peer `%s'\n",
               GNUNET_i2s (peer));
   if (ntohs (message->size) != sizeof (struct GNUNET_MessageHeader))
@@ -3406,6 +3407,14 @@
     GNUNET_break_op (0);
     return GNUNET_SYSERR;
   }
+
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+              "Received %s for peer `%s' in state %s/%s\n",
+              "SESSION_ACK",
+              GNUNET_i2s (peer),
+              GNUNET_TRANSPORT_ps2s (n->state),
+              print_ack_state (n->ack_state));
+
   /* Check if we are in a plausible state for having sent
      a CONNECT_ACK.  If not, return, otherwise break.
 
@@ -3446,8 +3455,16 @@
                             GNUNET_NO);
   }
 
+  if (GNUNET_TRANSPORT_PS_CONNECTED_SWITCHING_CONNECT_SENT == n->state)
+  {
+    /* We tried to switch addresses while being connect. We explicitly wait
+     * for a CONNECT_ACK before going to GNUNET_TRANSPORT_PS_CONNECTED,
+     * so we do not want to set the address as in use! */
+    return GNUNET_OK;
+  }
+
   set_state_and_timeout (n, GNUNET_TRANSPORT_PS_CONNECTED,
-      GNUNET_TIME_relative_to_absolute 
(GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT));
+    GNUNET_TIME_relative_to_absolute 
(GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT));
 
   /* Add session to ATS since no session was given (NULL) and we may have
    * obtained a new session */




reply via email to

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