From 07cfe12a0266c84fe0679e0e8908f4d8d9fa3caf Mon Sep 17 00:00:00 2001 From: Matthias Wachs Date: Tue, 8 May 2012 09:45:08 +0000 Subject: - fix for 601 assertion --- src/ats/gnunet-service-ats_addresses.c | 15 +++++++-------- src/ats/gnunet-service-ats_addresses.h | 2 +- src/ats/gnunet-service-ats_scheduling.c | 13 +++++++++---- 3 files changed, 17 insertions(+), 13 deletions(-) (limited to 'src/ats') diff --git a/src/ats/gnunet-service-ats_addresses.c b/src/ats/gnunet-service-ats_addresses.c index ca7251fec..aff7cede1 100644 --- a/src/ats/gnunet-service-ats_addresses.c +++ b/src/ats/gnunet-service-ats_addresses.c @@ -576,7 +576,7 @@ find_address_it (void *cls, const GNUNET_HashCode * key, void *value) } -void +int GAS_addresses_in_use (const struct GNUNET_PeerIdentity *peer, const char *plugin_name, const void *plugin_addr, size_t plugin_addr_len, uint32_t session_id, int in_use) @@ -591,7 +591,7 @@ GAS_addresses_in_use (const struct GNUNET_PeerIdentity *peer, struct ATS_Address *old; if (GNUNET_NO == running) - return; + return GNUNET_SYSERR; aa = create_address (peer, plugin_name, plugin_addr, plugin_addr_len, session_id); old = find_exact_address (peer, aa); @@ -599,26 +599,25 @@ GAS_addresses_in_use (const struct GNUNET_PeerIdentity *peer, if (NULL == old) { - GNUNET_break_op (0); - return; + GNUNET_break (0); + return GNUNET_SYSERR; } if (old->used == in_use) { - GNUNET_break_op (0); + GNUNET_break (0); GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Address in use called multiple times for peer `%s': %s -> %s \n", GNUNET_i2s (peer), (GNUNET_NO == old->used) ? "NO" : "YES", (GNUNET_NO == in_use) ? "NO" : "YES"); - return; + return GNUNET_SYSERR; } - old->used = in_use; - #if HAVE_LIBGLPK if (ats_mode == MLP) GAS_mlp_address_update (mlp, addresses, old); #endif + return GNUNET_OK; } diff --git a/src/ats/gnunet-service-ats_addresses.h b/src/ats/gnunet-service-ats_addresses.h index 33ff5869d..0ef977b5d 100644 --- a/src/ats/gnunet-service-ats_addresses.h +++ b/src/ats/gnunet-service-ats_addresses.h @@ -105,7 +105,7 @@ GAS_addresses_done (void); /** * This address is now used or not used anymore */ -void +int GAS_addresses_in_use (const struct GNUNET_PeerIdentity *peer, const char *plugin_name, const void *plugin_addr, size_t plugin_addr_len, uint32_t session_id, int in_use); diff --git a/src/ats/gnunet-service-ats_scheduling.c b/src/ats/gnunet-service-ats_scheduling.c index ba14637b0..d8ab0c927 100644 --- a/src/ats/gnunet-service-ats_scheduling.c +++ b/src/ats/gnunet-service-ats_scheduling.c @@ -274,6 +274,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 +310,14 @@ 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); - - GNUNET_SERVER_receive_done (client, GNUNET_OK); + res = GAS_addresses_in_use (&m->peer, + plugin_name, + address, + address_length, + ntohl (m->session_id), + in_use); + + GNUNET_SERVER_receive_done (client, res); } /** -- cgit v1.2.3