aboutsummaryrefslogtreecommitdiff
path: root/src/transport
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2011-10-26 14:50:21 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2011-10-26 14:50:21 +0000
commit3c2468374a5b85e27b18bebed000cbb130ad8b79 (patch)
tree23a54dd07a405b6a309e260d646fe26293079d41 /src/transport
parent9fc62424d678316bba99280dfb5b07a993a6f355 (diff)
downloadgnunet-3c2468374a5b85e27b18bebed000cbb130ad8b79.tar.gz
gnunet-3c2468374a5b85e27b18bebed000cbb130ad8b79.zip
test_transport_api_tcp passes!
Diffstat (limited to 'src/transport')
-rw-r--r--src/transport/gnunet-service-transport_neighbours_fsm.c96
1 files changed, 48 insertions, 48 deletions
diff --git a/src/transport/gnunet-service-transport_neighbours_fsm.c b/src/transport/gnunet-service-transport_neighbours_fsm.c
index bf264468d..16a321e40 100644
--- a/src/transport/gnunet-service-transport_neighbours_fsm.c
+++ b/src/transport/gnunet-service-transport_neighbours_fsm.c
@@ -946,6 +946,7 @@ send_connect_continuation (void *cls,
946 GNUNET_ATS_suggest_address(GST_ats, &n->id); 946 GNUNET_ATS_suggest_address(GST_ats, &n->id);
947 return; 947 return;
948 } 948 }
949 change_state(n, S_CONNECT_SENT);
949} 950}
950 951
951 952
@@ -973,7 +974,7 @@ GST_neighbours_switch_to_address (const struct GNUNET_PeerIdentity *peer,
973{ 974{
974 struct NeighbourMapEntry *n; 975 struct NeighbourMapEntry *n;
975 struct SessionConnectMessage connect_msg; 976 struct SessionConnectMessage connect_msg;
976 size_t len; 977 size_t msg_len;
977 size_t ret; 978 size_t ret;
978 979
979 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 980 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
@@ -996,9 +997,6 @@ GST_neighbours_switch_to_address (const struct GNUNET_PeerIdentity *peer,
996 return GNUNET_NO; 997 return GNUNET_NO;
997 } 998 }
998 999
999 // FIXME state transition when peer is connected?
1000 if (!is_connected(n))
1001 change_state (n, S_CONNECT_SENT);
1002 1000
1003#if DEBUG_TRANSPORT 1001#if DEBUG_TRANSPORT
1004 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 1002 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
@@ -1021,23 +1019,53 @@ GST_neighbours_switch_to_address (const struct GNUNET_PeerIdentity *peer,
1021 GNUNET_SCHEDULER_add_delayed (GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT, 1019 GNUNET_SCHEDULER_add_delayed (GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT,
1022 &neighbour_timeout_task, n); 1020 &neighbour_timeout_task, n);
1023 1021
1024 len = sizeof (struct SessionConnectMessage); 1022 /* We are not connected/connecting and initiate a fresh connect */
1025 connect_msg.header.size = htons (len); 1023 if (n->state == S_NOT_CONNECTED)
1026 connect_msg.header.type = 1024 {
1027 htons (GNUNET_MESSAGE_TYPE_TRANSPORT_SESSION_CONNECT); 1025 msg_len = sizeof (struct SessionConnectMessage);
1028 connect_msg.reserved = htonl (0); 1026 connect_msg.header.size = htons (msg_len);
1029 connect_msg.timestamp = 1027 connect_msg.header.type =
1030 GNUNET_TIME_absolute_hton (GNUNET_TIME_absolute_get ()); 1028 htons (GNUNET_MESSAGE_TYPE_TRANSPORT_SESSION_CONNECT);
1029 connect_msg.reserved = htonl (0);
1030 connect_msg.timestamp =
1031 GNUNET_TIME_absolute_hton (GNUNET_TIME_absolute_get ());
1032
1033 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);
1034 if (ret == GNUNET_SYSERR)
1035 {
1036 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1037 "Failed to send CONNECT_MESSAGE to `%4s' using plugin `%s' address '%s' session %X\n",
1038 GNUNET_i2s (peer), plugin_name,
1039 (address_len == 0) ? "<inbound>" : GST_plugins_a2s (plugin_name,
1040 address,
1041 address_len),
1042 session);
1043 }
1044 }
1045 else if (n->state == S_CONNECT_RECV)
1046 {
1047 msg_len = sizeof (struct SessionConnectMessage);
1048 connect_msg.header.size = htons (msg_len);
1049 connect_msg.header.type =
1050 htons (GNUNET_MESSAGE_TYPE_TRANSPORT_SESSION_CONNECT_ACK);
1051 connect_msg.reserved = htonl (0);
1052 connect_msg.timestamp = GNUNET_TIME_absolute_hton (GNUNET_TIME_absolute_get ());
1053
1054 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);
1055
1056 if (ret == GNUNET_SYSERR)
1057 {
1058 change_state (n, S_NOT_CONNECTED);
1059 GNUNET_break (0);
1060 return GNUNET_NO;
1061 }
1062 }
1063 else
1064 {
1065 GNUNET_break (0);
1066 }
1067
1031 1068
1032 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);
1033 if (ret == GNUNET_SYSERR)
1034 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1035 "Failed to send CONNECT_MESSAGE to `%4s' using plugin `%s' address '%s' session %X\n",
1036 GNUNET_i2s (peer), plugin_name,
1037 (address_len == 0) ? "<inbound>" : GST_plugins_a2s (plugin_name,
1038 address,
1039 address_len),
1040 session);
1041 1069
1042 1070
1043 return GNUNET_NO; 1071 return GNUNET_NO;
@@ -1785,34 +1813,6 @@ handle_connect_blacklist_cont (void *cls,
1785 1813
1786 /* Ask ATS for an address to connect via that address */ 1814 /* Ask ATS for an address to connect via that address */
1787 GNUNET_ATS_suggest_address(GST_ats, peer); 1815 GNUNET_ATS_suggest_address(GST_ats, peer);
1788
1789#if 0
1790
1791
1792
1793 /* send CONNECT_ACK (SYN_ACK)*/
1794 msg_len = sizeof (struct SessionConnectMessage);
1795 connect_msg.header.size = htons (msg_len);
1796 connect_msg.header.type =
1797 htons (GNUNET_MESSAGE_TYPE_TRANSPORT_SESSION_CONNECT_ACK);
1798 connect_msg.reserved = htonl (0);
1799 connect_msg.timestamp =
1800 GNUNET_TIME_absolute_hton (GNUNET_TIME_absolute_get ());
1801
1802 ret = send_with_plugin(NULL, &n->id, (const void *) &connect_msg,
1803 msg_len,
1804 0,
1805 GNUNET_TIME_UNIT_FOREVER_REL,
1806 session, plugin_name, sender_address, sender_address_len,
1807 GNUNET_YES, NULL, NULL);
1808
1809 if (ret == GNUNET_SYSERR)
1810 {
1811 change_state (n, S_NOT_CONNECTED);
1812 GNUNET_break (0);
1813 return;
1814 }
1815#endif
1816} 1816}
1817 1817
1818/** 1818/**