summaryrefslogtreecommitdiff
path: root/server.c
diff options
context:
space:
mode:
authorDavid Härdeman <david@hardeman.nu>2020-06-10 22:53:42 +0200
committerDavid Härdeman <david@hardeman.nu>2020-06-10 22:53:42 +0200
commitfd80ac9b3ea3c6e213236e27ae8b73856d2a5158 (patch)
tree427ab05ca9d0e50099787d89aedb98a374f2d217 /server.c
parent5e314fd0ebe500d3ba396a09c8984627beff2f37 (diff)
Improve refcounting
Diffstat (limited to 'server.c')
-rw-r--r--server.c9
1 files changed, 5 insertions, 4 deletions
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);