diff options
author | Bertrand Marc <beberking@gmail.com> | 2012-06-06 20:47:48 +0200 |
---|---|---|
committer | Bertrand Marc <beberking@gmail.com> | 2012-06-06 20:47:48 +0200 |
commit | 740b30688bd745a527f96f9116c19acb3480971a (patch) | |
tree | 2709a3f4dba11c174aa9e1ba3612e30c578e76a9 /src/ats/gnunet-service-ats_scheduling.c | |
parent | 2b81464a43485fcc8ce079fafdee7b7a171835f4 (diff) |
Imported Upstream version 0.9.3upstream/0.9.3
Diffstat (limited to 'src/ats/gnunet-service-ats_scheduling.c')
-rw-r--r-- | src/ats/gnunet-service-ats_scheduling.c | 51 |
1 files changed, 45 insertions, 6 deletions
diff --git a/src/ats/gnunet-service-ats_scheduling.c b/src/ats/gnunet-service-ats_scheduling.c index 72b72cd..0b66ac5 100644 --- a/src/ats/gnunet-service-ats_scheduling.c +++ b/src/ats/gnunet-service-ats_scheduling.c @@ -59,7 +59,6 @@ GAS_scheduling_add_client (struct GNUNET_SERVER_Client *client) } my_client = client; GNUNET_SERVER_notification_context_add (nc, client); - GNUNET_SERVER_client_keep (client); return GNUNET_OK; } @@ -76,7 +75,6 @@ GAS_scheduling_remove_client (struct GNUNET_SERVER_Client *client) if (my_client != client) return; GAS_addresses_destroy_all (); - GNUNET_SERVER_client_drop (client); my_client = NULL; } @@ -114,7 +112,7 @@ GAS_scheduling_transmit_address_suggestion (const struct GNUNET_PeerIdentity sizeof (struct AddressSuggestionMessage) + atsi_count * sizeof (struct GNUNET_ATS_Information) + plugin_addr_len + plugin_name_length; - char buf[msize]; + char buf[msize] GNUNET_ALIGN; struct GNUNET_ATS_Information *atsp; char *addrp; @@ -200,6 +198,30 @@ GAS_handle_request_address_cancel (void *cls, GNUNET_SERVER_receive_done (client, GNUNET_OK); } +/** + * Handle 'reset backoff' messages from clients. + * + * @param cls unused, NULL + * @param client client that sent the request + * @param message the request message + */ +void +GAS_handle_reset_backoff (void *cls, + struct GNUNET_SERVER_Client *client, + const struct GNUNET_MessageHeader *message) +{ + const struct ResetBackoffMessage *msg = + (const struct ResetBackoffMessage *) message; + + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Received `%s' message\n", + "RESET_BACKOFF"); + GNUNET_STATISTICS_update (GSA_stats, "# backoff reset requests received", 1, + GNUNET_NO); + GNUNET_break (0 == ntohl (msg->reserved)); + GAS_addresses_handle_backoff_reset (&msg->peer); + GNUNET_SERVER_receive_done (client, GNUNET_OK); +} + /** * Handle 'address update' messages from clients. @@ -274,6 +296,7 @@ GAS_handle_address_in_use (void *cls, struct GNUNET_SERVER_Client *client, const struct AddressUseMessage *m; const char *address; const char *plugin_name; + int res; uint16_t address_length; uint16_t plugin_name_length; @@ -309,10 +332,21 @@ GAS_handle_address_in_use (void *cls, struct GNUNET_SERVER_Client *client, } in_use = ntohs (m->in_use); - GAS_addresses_in_use (&m->peer, plugin_name, address, address_length, - ntohl (m->session_id), in_use); + res = GAS_addresses_in_use (&m->peer, + plugin_name, + address, + address_length, + ntohl (m->session_id), + in_use); + + if (res == GNUNET_OK) + GNUNET_SERVER_receive_done (client, GNUNET_OK); + else + { + GNUNET_break (0); + GNUNET_SERVER_receive_done (client, GNUNET_SYSERR); + } - GNUNET_SERVER_receive_done (client, GNUNET_OK); } /** @@ -401,8 +435,13 @@ GAS_scheduling_init (struct GNUNET_SERVER_Handle *server) void GAS_scheduling_done () { + if (NULL != my_client) + { + my_client = NULL; + } GNUNET_SERVER_notification_context_destroy (nc); nc = NULL; + } |