diff options
author | David Härdeman <david@hardeman.nu> | 2020-06-20 12:53:25 +0200 |
---|---|---|
committer | David Härdeman <david@hardeman.nu> | 2020-06-20 12:53:25 +0200 |
commit | e11014c0443ea687ad65a14b9124aa366da7984a (patch) | |
tree | 8c6642ed187dc71cc672cec9f3459aa75134eaa5 /announce.c | |
parent | fc25e880dfb1f804742006bcdd15ac70d18b4144 (diff) |
Introduce helper for checking if a task is dead
Diffstat (limited to 'announce.c')
-rw-r--r-- | announce.c | 16 |
1 files changed, 12 insertions, 4 deletions
@@ -27,10 +27,20 @@ mcast_free(struct uring_task *task) static void mcast_sent(struct cfg *cfg, struct uring_task *task, int res) { + struct server *server; + if (res < 0) error("failure %i\n", res); else debug(DBG_ANN, "result %i\n", res); + + if (!task || !task->tbuf) { + error("task or task->tbuf not set\n"); + return; + } + + server = container_of(task->tbuf, struct server, mcast_buf); + uring_task_put(cfg, &server->task); } static void @@ -52,6 +62,7 @@ mcast_send(struct cfg *cfg, struct announce *aev, struct server *server) server->mcast_buf.len = len; uring_task_set_buf(&aev->mcast_task, &server->mcast_buf); + uring_task_get(cfg, &server->task); uring_tbuf_sendmsg(cfg, &aev->mcast_task, mcast_sent); } @@ -71,10 +82,7 @@ announce_cb(struct cfg *cfg, struct uring_task *task, int res) { struct announce *aev = container_of(task, struct announce, task); - if (task->dead) { - debug(DBG_ANN, "task is dead\n"); - return; - } + assert_task_alive(DBG_ANN, task); if (res != sizeof(aev->value)) perrordie("timerfd_read"); |