From fd80ac9b3ea3c6e213236e27ae8b73856d2a5158 Mon Sep 17 00:00:00 2001 From: David Härdeman Date: Wed, 10 Jun 2020 22:53:42 +0200 Subject: Improve refcounting --- server.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'server.c') diff --git a/server.c b/server.c index f317d36..7a0dc5b 100644 --- a/server.c +++ b/server.c @@ -89,7 +89,7 @@ server_delete(struct cfg *cfg, struct server *scfg) rcon_delete(cfg, scfg); list_for_each_entry_safe(local, ltmp, &scfg->locals, list) - uring_cancel(cfg, &local->task); + uring_task_destroy(cfg, &local->task); list_for_each_entry_safe(proxy, ptmp, &scfg->proxys, list) proxy_delete(cfg, proxy); @@ -106,7 +106,7 @@ server_delete(struct cfg *cfg, struct server *scfg) uring_poll_cancel(cfg, &scfg->exec_task); uring_task_put(cfg, &scfg->exec_task); - uring_task_put(cfg, &scfg->task); + uring_task_destroy(cfg, &scfg->task); } void @@ -183,7 +183,6 @@ server_local_accept(struct cfg *cfg, struct uring_task *task, int res) if (task->dead) { fprintf(stderr, "Task dead!\n"); - uring_task_put(cfg, task); return; } @@ -269,8 +268,10 @@ server_exec_done(struct cfg *cfg, struct uring_task *task, int res) int r; siginfo_t info; - if (task->dead) + if (task->dead) { + /* Should we leave child processes running? */ goto out; + } if (!(res & POLLIN)) { fprintf(stderr, "%s: unexpected result: %i\n", __func__, res); -- cgit v1.2.3