From ac923b9393651fa65c79ee1e4d3fc5cc870373f5 Mon Sep 17 00:00:00 2001 From: Matthias Wachs Date: Thu, 26 Sep 2013 09:16:26 +0000 Subject: [PATCH] additional check to prevent double free --- src/ats/test_ats_api_performance_monitor.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/ats/test_ats_api_performance_monitor.c b/src/ats/test_ats_api_performance_monitor.c index facb97917..d13f8b80c 100644 --- a/src/ats/test_ats_api_performance_monitor.c +++ b/src/ats/test_ats_api_performance_monitor.c @@ -29,6 +29,7 @@ #include "ats.h" #define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 10) +#define WAIT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 5) static GNUNET_SCHEDULER_TaskIdentifier die_task; @@ -104,6 +105,7 @@ ats_perf_cb (void *cls, { static int peer0 = GNUNET_NO; static int peer1 = GNUNET_NO; + static int done = GNUNET_NO; if ((GNUNET_NO == peer0) && (0 == memcmp (address, &p[0].id, sizeof (p[0].id)))) { peer0 = GNUNET_YES; @@ -112,11 +114,13 @@ ats_perf_cb (void *cls, { peer1 = GNUNET_YES; } - if ((peer0 == GNUNET_YES) && (peer1 = GNUNET_YES)) + if ((peer0 == GNUNET_YES) && (peer1 = GNUNET_YES) && (GNUNET_NO == done)) { GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Done\n"); + done = GNUNET_YES; GNUNET_SCHEDULER_add_now (&end, NULL); + } } @@ -199,8 +203,6 @@ end (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) ret = 0; } - - static void run (void *cls, const struct GNUNET_CONFIGURATION_Handle *mycfg, struct GNUNET_TESTING_Peer *peer) @@ -216,6 +218,7 @@ run (void *cls, const struct GNUNET_CONFIGURATION_Handle *mycfg, GNUNET_SCHEDULER_add_now (end_badly, NULL); } + stats = GNUNET_STATISTICS_create ("ats", cfg); GNUNET_STATISTICS_watch (stats, "ats", "# addresses", &stat_cb, NULL); -- 2.25.1