projects
/
oweals
/
gnunet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
update ignore file
[oweals/gnunet.git]
/
src
/
ats
/
gnunet-service-ats_connectivity.c
diff --git
a/src/ats/gnunet-service-ats_connectivity.c
b/src/ats/gnunet-service-ats_connectivity.c
index 7f353c71fe208f5f4f7e8f7f536744b1444ba7ce..c47ee03e66487c1a7ba78d19c5b6c852143ba6d0 100644
(file)
--- a/
src/ats/gnunet-service-ats_connectivity.c
+++ b/
src/ats/gnunet-service-ats_connectivity.c
@@
-1,6
+1,6
@@
/*
This file is part of GNUnet.
/*
This file is part of GNUnet.
- Copyright (C) 2011-2015
Christian Grothoff (and other contributing authors)
+ Copyright (C) 2011-2015
GNUnet e.V.
GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
@@
-14,8
+14,8
@@
You should have received a copy of the GNU General Public License
along with GNUnet; see the file COPYING. If not, write to the
You should have received a copy of the GNU General Public License
along with GNUnet; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 5
9 Temple Place - Suite 330
,
- Boston, MA 0211
1-1307
, USA.
+ Free Software Foundation, Inc., 5
1 Franklin Street, Fifth Floor
,
+ Boston, MA 0211
0-1301
, USA.
*/
/**
*/
/**
@@
-40,7
+40,9
@@
struct ConnectionRequest
/**
* Client that made the request.
*/
/**
* Client that made the request.
*/
- struct GNUNET_SERVER_Client *client;
+ struct GNUNET_SERVICE_Client *client;
+
+ /* TODO: allow client to express a 'strength' for this request */
};
};
@@
-54,37
+56,38
@@
static struct GNUNET_CONTAINER_MultiPeerMap *connection_requests;
* Is the given peer in the list of peers for which we
* have an address request?
*
* Is the given peer in the list of peers for which we
* have an address request?
*
+ * @param cls unused, NULL
* @param peer peer to query for
* @return #GNUNET_YES if so, #GNUNET_NO if not
*/
* @param peer peer to query for
* @return #GNUNET_YES if so, #GNUNET_NO if not
*/
-int
-GAS_connectivity_has_peer (const struct GNUNET_PeerIdentity *peer)
+unsigned int
+GAS_connectivity_has_peer (void *cls,
+ const struct GNUNET_PeerIdentity *peer)
{
{
+ if (NULL == connection_requests)
+ return 0;
+ /* TODO: return sum of 'strength's of connectivity requests */
return GNUNET_CONTAINER_multipeermap_contains (connection_requests,
peer);
}
/**
return GNUNET_CONTAINER_multipeermap_contains (connection_requests,
peer);
}
/**
- * Handle
'request address'
messages from clients.
+ * Handle
#GNUNET_MESSAGE_TYPE_ATS_REQUEST_ADDRESS
messages from clients.
*
*
- * @param cls unused, NULL
* @param client client that sent the request
* @param message the request message
*/
void
* @param client client that sent the request
* @param message the request message
*/
void
-GAS_handle_request_address (void *cls,
- struct GNUNET_SERVER_Client *client,
- const struct GNUNET_MessageHeader *message)
+GAS_handle_request_address (struct GNUNET_SERVICE_Client *client,
+ const struct RequestAddressMessage *msg)
{
{
- const struct RequestAddressMessage *msg =
- (const struct RequestAddressMessage *) message;
struct ConnectionRequest *cr;
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Received `%s' message\n",
struct ConnectionRequest *cr;
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Received `%s' message\n",
- "REQUEST_ADDRESS");
- GNUNET_break (0 == ntohl (msg->reserved));
+ "
GNUNET_MESSAGE_TYPE_ATS_
REQUEST_ADDRESS");
+ /* FIXME: should not ignore "msg->strength" */
cr = GNUNET_new (struct ConnectionRequest);
cr->client = client;
(void) GNUNET_CONTAINER_multipeermap_put (connection_requests,
cr = GNUNET_new (struct ConnectionRequest);
cr->client = client;
(void) GNUNET_CONTAINER_multipeermap_put (connection_requests,
@@
-92,7
+95,6
@@
GAS_handle_request_address (void *cls,
cr,
GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
GAS_plugin_request_connect_start (&msg->peer);
cr,
GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
GAS_plugin_request_connect_start (&msg->peer);
- GNUNET_SERVER_receive_done (client, GNUNET_OK);
}
}
@@
-110,7
+112,7
@@
free_matching_requests (void *cls,
const struct GNUNET_PeerIdentity *pid,
void *value)
{
const struct GNUNET_PeerIdentity *pid,
void *value)
{
- struct GNUNET_SERV
ER
_Client *client = cls;
+ struct GNUNET_SERV
ICE
_Client *client = cls;
struct ConnectionRequest *cr = value;
if (cr->client == client)
struct ConnectionRequest *cr = value;
if (cr->client == client)
@@
-130,29
+132,24
@@
free_matching_requests (void *cls,
/**
/**
- * Handle 'request address cancel' messages from clients.
+ * Handle #GNUNET_MESSAGE_TYPE_ATS_REQUEST_ADDRESS_CANCEL messages
+ * from clients.
*
*
- * @param cls unused, NULL
- * @param client client that sent the request
- * @param message the request message
+ * @param client the client that sent the request
+ * @param msg the request message
*/
void
*/
void
-GAS_handle_request_address_cancel (void *cls,
- struct GNUNET_SERVER_Client *client,
- const struct GNUNET_MessageHeader *message)
+GAS_handle_request_address_cancel (struct GNUNET_SERVICE_Client *client,
+ const struct RequestAddressMessage *msg)
{
{
- const struct RequestAddressMessage *msg =
- (const struct RequestAddressMessage *) message;
-
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Received REQUEST_ADDRESS_CANCEL message for peer %s\n",
+ "Received
GNUNET_MESSAGE_TYPE_ATS_
REQUEST_ADDRESS_CANCEL message for peer %s\n",
GNUNET_i2s (&msg->peer));
GNUNET_i2s (&msg->peer));
- GNUNET_break (0 == ntohl (msg->
reserved
));
+ GNUNET_break (0 == ntohl (msg->
strength
));
GNUNET_CONTAINER_multipeermap_get_multiple (connection_requests,
&msg->peer,
&free_matching_requests,
client);
GNUNET_CONTAINER_multipeermap_get_multiple (connection_requests,
&msg->peer,
&free_matching_requests,
client);
- GNUNET_SERVER_receive_done (client, GNUNET_OK);
}
}
@@
-163,7
+160,7
@@
GAS_handle_request_address_cancel (void *cls,
* @param client handle of the (now dead) client
*/
void
* @param client handle of the (now dead) client
*/
void
-GAS_connectivity_remove_client (struct GNUNET_SERV
ER
_Client *client)
+GAS_connectivity_remove_client (struct GNUNET_SERV
ICE
_Client *client)
{
GNUNET_CONTAINER_multipeermap_iterate (connection_requests,
&free_matching_requests,
{
GNUNET_CONTAINER_multipeermap_iterate (connection_requests,
&free_matching_requests,
@@
-177,7
+174,9
@@
GAS_connectivity_remove_client (struct GNUNET_SERVER_Client *client)
void
GAS_connectivity_init ()
{
void
GAS_connectivity_init ()
{
- connection_requests = GNUNET_CONTAINER_multipeermap_create (32, GNUNET_NO);
+ connection_requests
+ = GNUNET_CONTAINER_multipeermap_create (32,
+ GNUNET_NO);
}
}
@@
-209,10
+208,13
@@
free_request (void *cls,
void
GAS_connectivity_done ()
{
void
GAS_connectivity_done ()
{
+ GAS_plugin_solver_lock ();
GNUNET_CONTAINER_multipeermap_iterate (connection_requests,
&free_request,
NULL);
GNUNET_CONTAINER_multipeermap_iterate (connection_requests,
&free_request,
NULL);
+ GAS_plugin_solver_unlock ();
GNUNET_CONTAINER_multipeermap_destroy (connection_requests);
GNUNET_CONTAINER_multipeermap_destroy (connection_requests);
+ connection_requests = NULL;
}
}