summaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rw-r--r--main.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/main.c b/main.c
index c8e8a8d..0f41ea0 100644
--- a/main.c
+++ b/main.c
@@ -184,6 +184,11 @@ signalfd_read(struct cfg *cfg, struct uring_task *task, int res)
struct server *server, *stmp;
static int count = 0;
+ if (task->dead) {
+ fprintf(stderr, "%s: task dead\n", __func__);
+ return;
+ }
+
count++;
if (count > 5)
exit(EXIT_FAILURE);
@@ -197,14 +202,17 @@ signalfd_read(struct cfg *cfg, struct uring_task *task, int res)
} else {
fprintf(stderr, "Got a signal to dump tree\n");
dump_tree(cfg);
+ uring_task_put(cfg, &sev->task);
announce_delete(cfg);
cfgdir_delete(cfg);
list_for_each_entry_safe(server, stmp, &cfg->servers, list)
server_delete(cfg, server);
fprintf(stderr, "%s: putting sev task 0x%p\n", __func__, &sev->task);
- uring_task_put(cfg, &sev->task);
- //uring_read(cfg, &sev->task, &sev->buf, sizeof(sev->buf), signalfd_read);
+ uring_delete(cfg);
+ return;
}
+
+ uring_read(cfg, &sev->task, &sev->buf, sizeof(sev->buf), signalfd_read);
}
static int hack_efd = -1;