diff options
author | Matthias Wachs <wachs@net.in.tum.de> | 2012-08-28 14:51:06 +0000 |
---|---|---|
committer | Matthias Wachs <wachs@net.in.tum.de> | 2012-08-28 14:51:06 +0000 |
commit | f86ab42b1eaded9bd31da5229eed461d65a982dc (patch) | |
tree | 080879d4ba6d1ec4ba6ab1e94a14052fe3081da3 /src/transport/plugin_transport_http_client.c | |
parent | a48e0f4257bd82dd3df148c1a6d5123e314ed08e (diff) | |
download | gnunet-f86ab42b1eaded9bd31da5229eed461d65a982dc.tar.gz gnunet-f86ab42b1eaded9bd31da5229eed461d65a982dc.zip |
changes
Diffstat (limited to 'src/transport/plugin_transport_http_client.c')
-rw-r--r-- | src/transport/plugin_transport_http_client.c | 47 |
1 files changed, 45 insertions, 2 deletions
diff --git a/src/transport/plugin_transport_http_client.c b/src/transport/plugin_transport_http_client.c index ebb4f9402..f9863c2e9 100644 --- a/src/transport/plugin_transport_http_client.c +++ b/src/transport/plugin_transport_http_client.c | |||
@@ -935,6 +935,11 @@ client_connect (struct Session *s) | |||
935 | GNUNET_i2s (&s->target)); | 935 | GNUNET_i2s (&s->target)); |
936 | return GNUNET_SYSERR; | 936 | return GNUNET_SYSERR; |
937 | } | 937 | } |
938 | else | ||
939 | GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, plugin->name, | ||
940 | "address peer `%s'\n", | ||
941 | http_common_plugin_address_to_string (plugin, s->addr, s->addrlen)); | ||
942 | |||
938 | 943 | ||
939 | GNUNET_asprintf (&url, "%s/%s;%u", | 944 | GNUNET_asprintf (&url, "%s/%s;%u", |
940 | http_common_plugin_address_to_string (plugin, s->addr, s->addrlen), | 945 | http_common_plugin_address_to_string (plugin, s->addr, s->addrlen), |
@@ -1061,6 +1066,10 @@ http_client_plugin_get_session (void *cls, | |||
1061 | { | 1066 | { |
1062 | struct HTTP_Client_Plugin *plugin = cls; | 1067 | struct HTTP_Client_Plugin *plugin = cls; |
1063 | struct Session * s = NULL; | 1068 | struct Session * s = NULL; |
1069 | struct sockaddr *sa; | ||
1070 | struct GNUNET_ATS_Information ats; | ||
1071 | size_t salen = 0; | ||
1072 | int res; | ||
1064 | 1073 | ||
1065 | GNUNET_assert (plugin != NULL); | 1074 | GNUNET_assert (plugin != NULL); |
1066 | GNUNET_assert (address != NULL); | 1075 | GNUNET_assert (address != NULL); |
@@ -1082,14 +1091,48 @@ http_client_plugin_get_session (void *cls, | |||
1082 | return NULL; | 1091 | return NULL; |
1083 | } | 1092 | } |
1084 | 1093 | ||
1094 | ats.type = htonl (GNUNET_ATS_NETWORK_TYPE); | ||
1095 | ats.value = htonl (GNUNET_ATS_NET_UNSPECIFIED); | ||
1096 | sa = http_common_socket_from_address (address->address, address->address_length, &res); | ||
1097 | |||
1098 | |||
1099 | |||
1100 | if (GNUNET_SYSERR == res) | ||
1101 | { | ||
1102 | return NULL; | ||
1103 | } | ||
1104 | else if (GNUNET_YES == res) | ||
1105 | { | ||
1106 | GNUNET_assert (NULL != sa); | ||
1107 | if (AF_INET == sa->sa_family) | ||
1108 | { | ||
1109 | salen = sizeof (struct sockaddr_in); | ||
1110 | } | ||
1111 | else if (AF_INET == sa->sa_family) | ||
1112 | { | ||
1113 | salen = sizeof (struct sockaddr_in6); | ||
1114 | } | ||
1115 | ats = plugin->env->get_address_type (plugin->env->cls, sa, salen); | ||
1116 | GNUNET_free (sa); | ||
1117 | } | ||
1118 | else if (GNUNET_NO == res) | ||
1119 | { | ||
1120 | ats.value = htonl (GNUNET_ATS_COST_WAN); | ||
1121 | } | ||
1122 | |||
1123 | if (GNUNET_ATS_NET_UNSPECIFIED == ntohl(ats.value)) | ||
1124 | { | ||
1125 | GNUNET_break (0); | ||
1126 | return NULL; | ||
1127 | } | ||
1128 | |||
1085 | s = GNUNET_malloc (sizeof (struct Session)); | 1129 | s = GNUNET_malloc (sizeof (struct Session)); |
1086 | memcpy (&s->target, &address->peer, sizeof (struct GNUNET_PeerIdentity)); | 1130 | memcpy (&s->target, &address->peer, sizeof (struct GNUNET_PeerIdentity)); |
1087 | s->plugin = plugin; | 1131 | s->plugin = plugin; |
1088 | s->addr = GNUNET_malloc (address->address_length); | 1132 | s->addr = GNUNET_malloc (address->address_length); |
1089 | memcpy (s->addr, address->address, address->address_length); | 1133 | memcpy (s->addr, address->address, address->address_length); |
1090 | s->addrlen = address->address_length; | 1134 | s->addrlen = address->address_length; |
1091 | //s->ats_address_network_type = ats.value; | 1135 | s->ats_address_network_type = ats.value; |
1092 | GNUNET_break (0); | ||
1093 | 1136 | ||
1094 | client_start_session_timeout (s); | 1137 | client_start_session_timeout (s); |
1095 | 1138 | ||