gnunet-svn
[Top][All Lists]
Advanced

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

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


From: gnunet
Subject: [GNUnet-SVN] r17797 - gnunet/src/transport
Date: Wed, 26 Oct 2011 16:50:21 +0200

Author: wachs
Date: 2011-10-26 16:50:21 +0200 (Wed, 26 Oct 2011)
New Revision: 17797

Modified:
   gnunet/src/transport/gnunet-service-transport_neighbours_fsm.c
Log:
test_transport_api_tcp passes!


Modified: gnunet/src/transport/gnunet-service-transport_neighbours_fsm.c
===================================================================
--- gnunet/src/transport/gnunet-service-transport_neighbours_fsm.c      
2011-10-26 14:35:08 UTC (rev 17796)
+++ gnunet/src/transport/gnunet-service-transport_neighbours_fsm.c      
2011-10-26 14:50:21 UTC (rev 17797)
@@ -946,6 +946,7 @@
     GNUNET_ATS_suggest_address(GST_ats, &n->id);
     return;
   }
+  change_state(n, S_CONNECT_SENT);
 }
 
 
@@ -973,7 +974,7 @@
 {
   struct NeighbourMapEntry *n;
   struct SessionConnectMessage connect_msg;
-  size_t len;
+  size_t msg_len;
   size_t ret;
 
   GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
@@ -996,9 +997,6 @@
     return GNUNET_NO;
   }
 
-  // FIXME state transition when peer is connected?
-  if (!is_connected(n))
-    change_state (n, S_CONNECT_SENT);
 
 #if DEBUG_TRANSPORT
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
@@ -1021,25 +1019,55 @@
       GNUNET_SCHEDULER_add_delayed (GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT,
                                     &neighbour_timeout_task, n);
 
-  len = sizeof (struct SessionConnectMessage);
-  connect_msg.header.size = htons (len);
-  connect_msg.header.type =
-      htons (GNUNET_MESSAGE_TYPE_TRANSPORT_SESSION_CONNECT);
-  connect_msg.reserved = htonl (0);
-  connect_msg.timestamp =
-      GNUNET_TIME_absolute_hton (GNUNET_TIME_absolute_get ());
+  /* We are not connected/connecting and initiate a fresh connect */
+  if (n->state == S_NOT_CONNECTED)
+  {
+    msg_len = sizeof (struct SessionConnectMessage);
+    connect_msg.header.size = htons (msg_len);
+    connect_msg.header.type =
+        htons (GNUNET_MESSAGE_TYPE_TRANSPORT_SESSION_CONNECT);
+    connect_msg.reserved = htonl (0);
+    connect_msg.timestamp =
+        GNUNET_TIME_absolute_hton (GNUNET_TIME_absolute_get ());
 
-  ret =send_with_plugin (NULL, peer, (const char *) &connect_msg, len, 0, 
GNUNET_TIME_UNIT_FOREVER_REL, session, plugin_name, address, address_len, 
GNUNET_YES, &send_connect_continuation, n);
-  if (ret == GNUNET_SYSERR)
-    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "Failed to send CONNECT_MESSAGE to `%4s' using plugin `%s' 
address '%s' session %X\n",
-              GNUNET_i2s (peer), plugin_name,
-              (address_len == 0) ? "<inbound>" : GST_plugins_a2s (plugin_name,
-                                                                  address,
-                                                                  address_len),
-              session);
+    ret =send_with_plugin (NULL, peer, (const char *) &connect_msg, msg_len, 
0, GNUNET_TIME_UNIT_FOREVER_REL, session, plugin_name, address, address_len, 
GNUNET_YES, &send_connect_continuation, n);
+    if (ret == GNUNET_SYSERR)
+    {
+      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                "Failed to send CONNECT_MESSAGE to `%4s' using plugin `%s' 
address '%s' session %X\n",
+                GNUNET_i2s (peer), plugin_name,
+                (address_len == 0) ? "<inbound>" : GST_plugins_a2s 
(plugin_name,
+                                                                    address,
+                                                                    
address_len),
+                session);
+    }
+  }
+  else if (n->state == S_CONNECT_RECV)
+  {
+    msg_len = sizeof (struct SessionConnectMessage);
+    connect_msg.header.size = htons (msg_len);
+    connect_msg.header.type =
+      htons (GNUNET_MESSAGE_TYPE_TRANSPORT_SESSION_CONNECT_ACK);
+    connect_msg.reserved = htonl (0);
+    connect_msg.timestamp = GNUNET_TIME_absolute_hton 
(GNUNET_TIME_absolute_get ());
 
+    ret = send_with_plugin(NULL, &n->id, (const void *) &connect_msg, msg_len, 
0, GNUNET_TIME_UNIT_FOREVER_REL, session, plugin_name, address, address_len, 
GNUNET_YES, NULL, NULL);
 
+    if (ret == GNUNET_SYSERR)
+    {
+      change_state (n, S_NOT_CONNECTED);
+      GNUNET_break (0);
+      return GNUNET_NO;
+    }
+  }
+  else
+  {
+    GNUNET_break (0);
+  }
+
+
+
+
   return GNUNET_NO;
 }
 
@@ -1785,34 +1813,6 @@
 
   /* Ask ATS for an address to connect via that address */
   GNUNET_ATS_suggest_address(GST_ats, peer);
-
-#if 0
-
-
-
-  /* send CONNECT_ACK (SYN_ACK)*/
-  msg_len = sizeof (struct SessionConnectMessage);
-  connect_msg.header.size = htons (msg_len);
-  connect_msg.header.type =
-      htons (GNUNET_MESSAGE_TYPE_TRANSPORT_SESSION_CONNECT_ACK);
-  connect_msg.reserved = htonl (0);
-  connect_msg.timestamp =
-      GNUNET_TIME_absolute_hton (GNUNET_TIME_absolute_get ());
-
-  ret = send_with_plugin(NULL, &n->id, (const void *) &connect_msg,
-                   msg_len,
-                   0,
-                   GNUNET_TIME_UNIT_FOREVER_REL,
-                   session, plugin_name, sender_address, sender_address_len,
-                   GNUNET_YES, NULL, NULL);
-
-  if (ret == GNUNET_SYSERR)
-  {
-    change_state (n, S_NOT_CONNECTED);
-    GNUNET_break (0);
-    return;
-  }
-#endif
 }
 
 /**




reply via email to

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