diff options
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 12 |
1 files changed, 10 insertions, 2 deletions
@@ -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; |