diff options
author | Matthias Wachs <wachs@net.in.tum.de> | 2011-10-26 14:50:21 +0000 |
---|---|---|
committer | Matthias Wachs <wachs@net.in.tum.de> | 2011-10-26 14:50:21 +0000 |
commit | 3c2468374a5b85e27b18bebed000cbb130ad8b79 (patch) | |
tree | 23a54dd07a405b6a309e260d646fe26293079d41 /src | |
parent | 9fc62424d678316bba99280dfb5b07a993a6f355 (diff) | |
download | gnunet-3c2468374a5b85e27b18bebed000cbb130ad8b79.tar.gz gnunet-3c2468374a5b85e27b18bebed000cbb130ad8b79.zip |
test_transport_api_tcp passes!
Diffstat (limited to 'src')
-rw-r--r-- | src/transport/gnunet-service-transport_neighbours_fsm.c | 96 |
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 | /** |