From 6b3658245ff0d56bda7ace4fe36b157c2bfda059 Mon Sep 17 00:00:00 2001 From: Sree Harsha Totakura Date: Sat, 1 Sep 2012 16:08:48 +0000 Subject: [PATCH] repect event mask before calling event callback --- src/testbed/test_testbed_api_testbed_run.c | 3 +- src/testbed/testbed_api_testbed.c | 51 +++++++++++----------- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/src/testbed/test_testbed_api_testbed_run.c b/src/testbed/test_testbed_api_testbed_run.c index 8aee8d6cc..b8bca508d 100644 --- a/src/testbed/test_testbed_api_testbed_run.c +++ b/src/testbed/test_testbed_api_testbed_run.c @@ -31,7 +31,7 @@ /** * Number of peers we want to start */ -#define NUM_PEERS 50 +#define NUM_PEERS 13 /** * The array of peers; we fill this as the peers are given to us by the testbed @@ -155,7 +155,6 @@ run (void *cls, char *const *args, const char *cfgfile, event_mask |= (1LL << GNUNET_TESTBED_ET_PEER_STOP); event_mask |= (1LL << GNUNET_TESTBED_ET_CONNECT); event_mask |= (1LL << GNUNET_TESTBED_ET_DISCONNECT); - event_mask |= (1LL << GNUNET_TESTBED_ET_OPERATION_FINISHED); GNUNET_TESTBED_run (NULL, config, NUM_PEERS, event_mask, &controller_event_cb, NULL, &master_task, NULL); abort_task = diff --git a/src/testbed/testbed_api_testbed.c b/src/testbed/testbed_api_testbed.c index 06cba2850..6fa5d6dd4 100644 --- a/src/testbed/testbed_api_testbed.c +++ b/src/testbed/testbed_api_testbed.c @@ -1,22 +1,22 @@ /* - This file is part of GNUnet - (C) 2008--2012 Christian Grothoff (and other contributing authors) - - GNUnet is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published - by the Free Software Foundation; either version 3, or (at your - option) any later version. - - GNUnet is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GNUnet; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. - */ + This file is part of GNUnet + (C) 2008--2012 Christian Grothoff (and other contributing authors) + + GNUnet is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GNUnet is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNUnet; see the file COPYING. If not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ /** * @file testbed/testbed_api_testbed.c @@ -32,7 +32,7 @@ /** * Generic loggins shorthand */ -#define LOG(kind,...) \ +#define LOG(kind,...) \ GNUNET_log_from (kind, "testbed-api-testbed", __VA_ARGS__) /** @@ -343,7 +343,7 @@ event_cb (void *cls, const struct GNUNET_TESTBED_EventInformation *event) } call_cc: - if (NULL != rc->cc) + if ((0 != (rc->event_mask && (1LL << event->type))) && (NULL != rc->cc)) rc->cc (rc->cc_cls, event); if (GNUNET_TESTBED_ET_PEER_START != event->type) return; @@ -382,6 +382,7 @@ controller_status_cb (void *cls, const struct GNUNET_CONFIGURATION_Handle *cfg, { struct RunContext *rc = cls; struct DLLOperation *dll_op; + uint64_t event_mask; unsigned int peer; if (status != GNUNET_OK) @@ -389,9 +390,11 @@ controller_status_cb (void *cls, const struct GNUNET_CONFIGURATION_Handle *cfg, GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Testbed startup failed\n"); return; } + event_mask = rc->event_mask; + event_mask |= (1LL << GNUNET_TESTBED_ET_PEER_STOP); + event_mask |= (1LL << GNUNET_TESTBED_ET_OPERATION_FINISHED); rc->c = - GNUNET_TESTBED_controller_connect (cfg, rc->h, rc->event_mask, &event_cb, - rc); + GNUNET_TESTBED_controller_connect (cfg, rc->h, event_mask, &event_cb, rc); rc->peers = GNUNET_malloc (sizeof (struct GNUNET_TESTBED_Peer *) * rc->num_peers); GNUNET_assert (NULL != rc->c); @@ -480,9 +483,6 @@ GNUNET_TESTBED_run (const char *host_filename, { struct RunContext *rc; - event_mask |= (1LL << GNUNET_TESTBED_ET_PEER_START); - event_mask |= (1LL << GNUNET_TESTBED_ET_PEER_STOP); - event_mask |= (1LL << GNUNET_TESTBED_ET_OPERATION_FINISHED); rc = GNUNET_malloc (sizeof (struct RunContext)); GNUNET_break (NULL == host_filename); /* Currently we do not support host * files */ @@ -496,6 +496,7 @@ GNUNET_TESTBED_run (const char *host_filename, GNUNET_assert (NULL != rc->cproc); rc->num_peers = num_peers; rc->event_mask = event_mask; + rc->event_mask |= (1LL << GNUNET_TESTBED_ET_PEER_START); rc->cc = cc; rc->cc_cls = cc_cls; rc->master = master; -- 2.25.1