aboutsummaryrefslogtreecommitdiff
path: root/src/transport/plugin_transport_http_client.c
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2012-08-28 14:51:06 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2012-08-28 14:51:06 +0000
commitf86ab42b1eaded9bd31da5229eed461d65a982dc (patch)
tree080879d4ba6d1ec4ba6ab1e94a14052fe3081da3 /src/transport/plugin_transport_http_client.c
parenta48e0f4257bd82dd3df148c1a6d5123e314ed08e (diff)
downloadgnunet-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.c47
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