summaryrefslogtreecommitdiff
path: root/server.c
diff options
context:
space:
mode:
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);