aboutsummaryrefslogtreecommitdiff
path: root/src/ats
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2012-05-08 09:45:08 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2012-05-08 09:45:08 +0000
commit07cfe12a0266c84fe0679e0e8908f4d8d9fa3caf (patch)
tree7c1c2af6475355bc68a685230598d88d1ba96f51 /src/ats
parentdac8fd72165111618d388a934bcb2891cb24fbcb (diff)
downloadgnunet-07cfe12a0266c84fe0679e0e8908f4d8d9fa3caf.tar.gz
gnunet-07cfe12a0266c84fe0679e0e8908f4d8d9fa3caf.zip
- fix for 601 assertion
Diffstat (limited to 'src/ats')
-rw-r--r--src/ats/gnunet-service-ats_addresses.c15
-rw-r--r--src/ats/gnunet-service-ats_addresses.h2
-rw-r--r--src/ats/gnunet-service-ats_scheduling.c13
3 files changed, 17 insertions, 13 deletions
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)
576} 576}
577 577
578 578
579void 579int
580GAS_addresses_in_use (const struct GNUNET_PeerIdentity *peer, 580GAS_addresses_in_use (const struct GNUNET_PeerIdentity *peer,
581 const char *plugin_name, const void *plugin_addr, 581 const char *plugin_name, const void *plugin_addr,
582 size_t plugin_addr_len, uint32_t session_id, int in_use) 582 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,
591 struct ATS_Address *old; 591 struct ATS_Address *old;
592 592
593 if (GNUNET_NO == running) 593 if (GNUNET_NO == running)
594 return; 594 return GNUNET_SYSERR;
595 595
596 aa = create_address (peer, plugin_name, plugin_addr, plugin_addr_len, session_id); 596 aa = create_address (peer, plugin_name, plugin_addr, plugin_addr_len, session_id);
597 old = find_exact_address (peer, aa); 597 old = find_exact_address (peer, aa);
@@ -599,26 +599,25 @@ GAS_addresses_in_use (const struct GNUNET_PeerIdentity *peer,
599 599
600 if (NULL == old) 600 if (NULL == old)
601 { 601 {
602 GNUNET_break_op (0); 602 GNUNET_break (0);
603 return; 603 return GNUNET_SYSERR;
604 } 604 }
605 if (old->used == in_use) 605 if (old->used == in_use)
606 { 606 {
607 GNUNET_break_op (0); 607 GNUNET_break (0);
608 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 608 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
609 "Address in use called multiple times for peer `%s': %s -> %s \n", 609 "Address in use called multiple times for peer `%s': %s -> %s \n",
610 GNUNET_i2s (peer), 610 GNUNET_i2s (peer),
611 (GNUNET_NO == old->used) ? "NO" : "YES", 611 (GNUNET_NO == old->used) ? "NO" : "YES",
612 (GNUNET_NO == in_use) ? "NO" : "YES"); 612 (GNUNET_NO == in_use) ? "NO" : "YES");
613 return; 613 return GNUNET_SYSERR;
614 } 614 }
615
616 old->used = in_use; 615 old->used = in_use;
617
618#if HAVE_LIBGLPK 616#if HAVE_LIBGLPK
619 if (ats_mode == MLP) 617 if (ats_mode == MLP)
620 GAS_mlp_address_update (mlp, addresses, old); 618 GAS_mlp_address_update (mlp, addresses, old);
621#endif 619#endif
620 return GNUNET_OK;
622} 621}
623 622
624 623
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);
105/** 105/**
106 * This address is now used or not used anymore 106 * This address is now used or not used anymore
107 */ 107 */
108void 108int
109GAS_addresses_in_use (const struct GNUNET_PeerIdentity *peer, 109GAS_addresses_in_use (const struct GNUNET_PeerIdentity *peer,
110 const char *plugin_name, const void *plugin_addr, 110 const char *plugin_name, const void *plugin_addr,
111 size_t plugin_addr_len, uint32_t session_id, int in_use); 111 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,
274 const struct AddressUseMessage *m; 274 const struct AddressUseMessage *m;
275 const char *address; 275 const char *address;
276 const char *plugin_name; 276 const char *plugin_name;
277 int res;
277 uint16_t address_length; 278 uint16_t address_length;
278 uint16_t plugin_name_length; 279 uint16_t plugin_name_length;
279 280
@@ -309,10 +310,14 @@ GAS_handle_address_in_use (void *cls, struct GNUNET_SERVER_Client *client,
309 } 310 }
310 311
311 in_use = ntohs (m->in_use); 312 in_use = ntohs (m->in_use);
312 GAS_addresses_in_use (&m->peer, plugin_name, address, address_length, 313 res = GAS_addresses_in_use (&m->peer,
313 ntohl (m->session_id), in_use); 314 plugin_name,
314 315 address,
315 GNUNET_SERVER_receive_done (client, GNUNET_OK); 316 address_length,
317 ntohl (m->session_id),
318 in_use);
319
320 GNUNET_SERVER_receive_done (client, res);
316} 321}
317 322
318/** 323/**