From: Pekka Pessi <[email protected]>
---
src/task.c | 8 +++++++-
1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/src/task.c b/src/task.c
index d895a86..46231c9 100644
--- a/src/task.c
+++ b/src/task.c
@@ -39,6 +39,7 @@ struct notify_data {
struct connman_task {
char *path;
pid_t pid;
+ guint child_watch;
GPtrArray *argv;
GPtrArray *envp;
connman_task_exit_t exit_func;
@@ -69,6 +70,9 @@ static void free_task(gpointer data)
if (task->pid > 0)
kill(task->pid, SIGTERM);
+ if (task->child_watch)
+ g_source_remove(task->child_watch);
+
g_ptr_array_foreach(task->envp, free_pointer, NULL);
g_ptr_array_free(task->envp, TRUE);
@@ -251,6 +255,8 @@ static void task_died(GPid pid, gint status, gpointer
user_data)
g_spawn_close_pid(pid);
task->pid = -1;
+ task->child_watch = 0;
+
if (task->exit_func)
task->exit_func(task, task->exit_data);
}
@@ -328,7 +334,7 @@ int connman_task_run(struct connman_task *task,
return -EIO;
}
- g_child_watch_add(task->pid, task_died, task);
+ task->child_watch = g_child_watch_add(task->pid, task_died, task);
return 0;
}
--
1.7.0.4
_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman