diff options
author | David Härdeman <david@hardeman.nu> | 2020-06-10 22:53:42 +0200 |
---|---|---|
committer | David Härdeman <david@hardeman.nu> | 2020-06-10 22:53:42 +0200 |
commit | fd80ac9b3ea3c6e213236e27ae8b73856d2a5158 (patch) | |
tree | 427ab05ca9d0e50099787d89aedb98a374f2d217 /server.c | |
parent | 5e314fd0ebe500d3ba396a09c8984627beff2f37 (diff) |
Improve refcounting
Diffstat (limited to 'server.c')
-rw-r--r-- | server.c | 9 |
1 files changed, 5 insertions, 4 deletions
@@ -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); |