/*
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
/**
* 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 */
};
/**
- * 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
-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",
- "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_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
GAS_plugin_request_connect_start (&msg->peer);
- GNUNET_SERVER_receive_done (client, GNUNET_OK);
}
const struct GNUNET_PeerIdentity *pid,
void *value)
{
- struct GNUNET_SERVER_Client *client = cls;
+ struct GNUNET_SERVICE_Client *client = cls;
struct ConnectionRequest *cr = value;
if (cr->client == client)
/**
- * 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
-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,
- "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_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_SERVER_receive_done (client, GNUNET_OK);
}
* @param client handle of the (now dead) client
*/
void
-GAS_connectivity_remove_client (struct GNUNET_SERVER_Client *client)
+GAS_connectivity_remove_client (struct GNUNET_SERVICE_Client *client)
{
GNUNET_CONTAINER_multipeermap_iterate (connection_requests,
&free_matching_requests,
void
GAS_connectivity_init ()
{
- connection_requests = GNUNET_CONTAINER_multipeermap_create (32, GNUNET_NO);
+ connection_requests
+ = GNUNET_CONTAINER_multipeermap_create (32,
+ GNUNET_NO);
}
void
GAS_connectivity_done ()
{
+ GAS_plugin_solver_lock ();
GNUNET_CONTAINER_multipeermap_iterate (connection_requests,
&free_request,
NULL);
+ GAS_plugin_solver_unlock ();
GNUNET_CONTAINER_multipeermap_destroy (connection_requests);
connection_requests = NULL;
}