summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/exchange-lib/test_exchange_api.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/exchange-lib/test_exchange_api.c b/src/exchange-lib/test_exchange_api.c
index 102c37b08..34e9da83b 100644
--- a/src/exchange-lib/test_exchange_api.c
+++ b/src/exchange-lib/test_exchange_api.c
@@ -585,6 +585,11 @@ struct Command
*/
struct GNUNET_OS_Process *aggregator_proc;
+ /**
+ * ID of task called whenever we get a SIGCHILD.
+ */
+ struct GNUNET_SCHEDULER_Task *child_death_task;
+
} run_aggregator;
struct {
@@ -681,12 +686,6 @@ struct InterpreterState
*/
static struct GNUNET_DISK_PipeHandle *sigpipe;
-/**
- * ID of task called whenever we get a SIGCHILD.
- */
-static struct GNUNET_SCHEDULER_Task *child_death_task;
-
-
/**
* The testcase failed, return with an error code.
@@ -1266,7 +1265,7 @@ maint_child_death (void *cls)
const struct GNUNET_DISK_FileHandle *pr;
char c[16];
- child_death_task = NULL;
+ cmd->details.run_aggregator.child_death_task = NULL;
pr = GNUNET_DISK_pipe_handle (sigpipe, GNUNET_DISK_PIPE_END_READ);
GNUNET_break (0 < GNUNET_DISK_file_read (pr, &c, sizeof (c)));
GNUNET_OS_process_wait (cmd->details.run_aggregator.aggregator_proc);
@@ -2233,9 +2232,10 @@ interpreter_run (void *cls)
return;
}
pr = GNUNET_DISK_pipe_handle (sigpipe, GNUNET_DISK_PIPE_END_READ);
- child_death_task = GNUNET_SCHEDULER_add_read_file (GNUNET_TIME_UNIT_FOREVER_REL,
- pr,
- &maint_child_death, is);
+ cmd->details.run_aggregator.child_death_task
+ = GNUNET_SCHEDULER_add_read_file (GNUNET_TIME_UNIT_FOREVER_REL,
+ pr,
+ &maint_child_death, is);
return;
}
case OC_CHECK_BANK_TRANSFER:
@@ -2547,6 +2547,11 @@ do_shutdown (void *cls)
GNUNET_OS_process_destroy (cmd->details.run_aggregator.aggregator_proc);
cmd->details.run_aggregator.aggregator_proc = NULL;
}
+ if (NULL != cmd->details.run_aggregator.child_death_task)
+ {
+ GNUNET_SCHEDULER_cancel (cmd->details.run_aggregator.child_death_task);
+ cmd->details.run_aggregator.child_death_task = NULL;
+ }
break;
case OC_CHECK_BANK_TRANSFER:
break;