[Top][All Lists]
[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
}
/**
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r17797 - gnunet/src/transport,
gnunet <=