From 213bc87131772ae2b808428a6e5ff65a1d963e24 Mon Sep 17 00:00:00 2001 From: Sree Harsha Totakura Date: Thu, 3 Jan 2013 14:58:20 +0000 Subject: [PATCH] fix #2720 --- src/testbed/testbed_api_testbed.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/testbed/testbed_api_testbed.c b/src/testbed/testbed_api_testbed.c index e11739df8..42bc4d606 100644 --- a/src/testbed/testbed_api_testbed.c +++ b/src/testbed/testbed_api_testbed.c @@ -217,6 +217,11 @@ struct RunContext */ enum GNUNET_TESTBED_TopologyOption topology; + /** + * Have we already shutdown + */ + int shutdown; + /** * Number of hosts in the given host file */ @@ -316,7 +321,7 @@ peer_create_cb (void *cls, struct GNUNET_TESTBED_Peer *peer, const char *emsg) rc->peer_count++; if (rc->peer_count < rc->num_peers) return; - LOG (GNUNET_ERROR_TYPE_DEBUG, "Required peers created successfully\n"); + LOG (GNUNET_ERROR_TYPE_DEBUG, "%u peers created successfully\n", rc->num_peers); GNUNET_SCHEDULER_add_now (&start_peers_task, rc); } @@ -382,6 +387,8 @@ shutdown_run (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc); static void shutdown_now (struct RunContext *rc) { + if (GNUNET_YES == rc->shutdown) + return; if (GNUNET_SCHEDULER_NO_TASK != rc->shutdown_run_task) GNUNET_SCHEDULER_cancel (rc->shutdown_run_task); rc->shutdown_run_task = GNUNET_SCHEDULER_add_now (&shutdown_run, rc); @@ -405,6 +412,8 @@ shutdown_run (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) GNUNET_assert (GNUNET_SCHEDULER_NO_TASK != rc->shutdown_run_task); rc->shutdown_run_task = GNUNET_SCHEDULER_NO_TASK; + GNUNET_assert (GNUNET_NO == rc->shutdown); + rc->shutdown = GNUNET_YES; if (NULL != rc->hc_handles) { for (nhost = 0; nhost < rc->num_hosts; nhost++) @@ -470,6 +479,7 @@ shutdown_run (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) rc->peer_count++; continue; } + LOG (GNUNET_ERROR_TYPE_DEBUG, "Stopping peer %u\n", peer); dll_op = GNUNET_malloc (sizeof (struct DLLOperation)); dll_op->op = GNUNET_TESTBED_peer_stop (rc->peers[peer], NULL, NULL); dll_op->cls = rc->peers[peer]; -- 2.25.1