X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Ftestbed%2Fgnunet-service-testbed_links.c;h=7b0006d1fbf22e34cae44ad808de543fce8e5d49;hb=a900b29ddaa9ea46c731b054b5e3ef3e725b95a8;hp=bcf8d91c8ca38d9ef47facfa058b6a4841fea98d;hpb=ad25eef39dc8c15b85bd70c6585af95d7e687fd5;p=oweals%2Fgnunet.git diff --git a/src/testbed/gnunet-service-testbed_links.c b/src/testbed/gnunet-service-testbed_links.c index bcf8d91c8..7b0006d1f 100644 --- a/src/testbed/gnunet-service-testbed_links.c +++ b/src/testbed/gnunet-service-testbed_links.c @@ -425,32 +425,47 @@ reghost_free_iterator (void *cls, const struct GNUNET_HashCode *key, void GST_slave_list_clear () { - unsigned int id; struct HostRegistration *hr_entry; + struct GNUNET_TESTBED_ControllerProc *cproc; + unsigned int id; for (id = 0; id < GST_slave_list_size; id++) - if (NULL != GST_slave_list[id]) + { + if (NULL == GST_slave_list[id]) + continue; + while (NULL != (hr_entry = GST_slave_list[id]->hr_dll_head)) { - while (NULL != (hr_entry = GST_slave_list[id]->hr_dll_head)) - { - GNUNET_CONTAINER_DLL_remove (GST_slave_list[id]->hr_dll_head, - GST_slave_list[id]->hr_dll_tail, hr_entry); - GNUNET_free (hr_entry); - } - if (NULL != GST_slave_list[id]->rhandle) - GNUNET_TESTBED_cancel_registration (GST_slave_list[id]->rhandle); - (void) - GNUNET_CONTAINER_multihashmap_iterate (GST_slave_list - [id]->reghost_map, - reghost_free_iterator, - GST_slave_list[id]); - GNUNET_CONTAINER_multihashmap_destroy (GST_slave_list[id]->reghost_map); - if (NULL != GST_slave_list[id]->controller) - GNUNET_TESTBED_controller_disconnect (GST_slave_list[id]->controller); - if (NULL != GST_slave_list[id]->controller_proc) - GNUNET_TESTBED_controller_stop (GST_slave_list[id]->controller_proc); - GNUNET_free (GST_slave_list[id]); + GNUNET_CONTAINER_DLL_remove (GST_slave_list[id]->hr_dll_head, + GST_slave_list[id]->hr_dll_tail, hr_entry); + GNUNET_free (hr_entry); + } + if (NULL != GST_slave_list[id]->rhandle) + GNUNET_TESTBED_cancel_registration (GST_slave_list[id]->rhandle); + (void) + GNUNET_CONTAINER_multihashmap_iterate (GST_slave_list + [id]->reghost_map, + reghost_free_iterator, + GST_slave_list[id]); + GNUNET_CONTAINER_multihashmap_destroy (GST_slave_list[id]->reghost_map); + if (NULL != GST_slave_list[id]->controller) + GNUNET_TESTBED_controller_disconnect (GST_slave_list[id]->controller); + if (NULL != (cproc = GST_slave_list[id]->controller_proc)) + { + LOG_DEBUG ("Stopping a slave\n"); + GNUNET_TESTBED_controller_kill_ (cproc); } + } + for (id = 0; id < GST_slave_list_size; id++) + { + if (NULL == GST_slave_list[id]) + continue; + if (NULL != (cproc = GST_slave_list[id]->controller_proc)) + { + GNUNET_TESTBED_controller_destroy_ (cproc); + LOG_DEBUG ("Slave stopped\n"); + } + GNUNET_free (GST_slave_list[id]); + } GNUNET_free_non_null (GST_slave_list); GST_slave_list = NULL; }