CLEANUP: task: remove unneeded tests before task_destroy()

Since previous commit it's not needed anymore to test a task pointer
before calling task_destory() so let's just remove these tests from
the various callers before they become confusing. The function's
arguments were also documented. The same should probably be done
with tasklet_free() which involves a test in roughly half of the
call places.
This commit is contained in:
Willy Tarreau 2019-05-07 19:05:35 +02:00
parent 75bc6d3e59
commit f656279347
7 changed files with 13 additions and 22 deletions

View File

@ -329,6 +329,10 @@ static inline void __task_free(struct task *t)
_HA_ATOMIC_SUB(&nb_tasks, 1);
}
/* Destroys a task : it's unlinked from the wait queues and is freed if it's
* the current task or not queued otherwise it's marked to be freed by the
* scheduler. It does nothing if <t> is NULL.
*/
static inline void task_destroy(struct task *t)
{
if (!t)

View File

@ -3303,10 +3303,7 @@ int init_email_alert(struct mailers *mls, struct proxy *p, char **err)
struct email_alertq *q = &queues[i];
struct check *check = &q->check;
if (check->task) {
task_destroy(check->task);
check->task = NULL;
}
task_destroy(check->task);
free_check(check);
}
free(queues);

View File

@ -1275,9 +1275,7 @@ spoe_release_appctx(struct appctx *appctx)
}
/* Destroy the task attached to this applet */
if (spoe_appctx->task) {
task_destroy(spoe_appctx->task);
}
task_destroy(spoe_appctx->task);
/* Notify all waiting streams */
list_for_each_entry_safe(ctx, back, &spoe_appctx->waiting_queue, list) {

View File

@ -2290,18 +2290,15 @@ void deinit(void)
while (s) {
s_next = s->next;
if (s->check.task)
task_destroy(s->check.task);
if (s->agent.task)
task_destroy(s->agent.task);
task_destroy(s->check.task);
task_destroy(s->agent.task);
if (s->check.wait_list.task)
tasklet_free(s->check.wait_list.task);
if (s->agent.wait_list.task)
tasklet_free(s->agent.wait_list.task);
if (s->warmup)
task_destroy(s->warmup);
task_destroy(s->warmup);
free(s->id);
free(s->cookie);

View File

@ -431,8 +431,7 @@ static int h1_init(struct connection *conn, struct proxy *proxy, struct session
return 0;
fail:
if (t)
task_destroy(t);
task_destroy(t);
if (h1c->wait_event.task)
tasklet_free(h1c->wait_event.task);
pool_free(pool_head_h1c, h1c);

View File

@ -575,8 +575,7 @@ static int h2_init(struct connection *conn, struct proxy *prx, struct session *s
fail_stream:
hpack_dht_free(h2c->ddht);
fail:
if (t)
task_destroy(t);
task_destroy(t);
if (h2c->wait_event.task)
tasklet_free(h2c->wait_event.task);
pool_free(pool_head_h2c, h2c);

View File

@ -448,11 +448,8 @@ static int conn_complete_session(struct connection *conn)
goto fail;
/* the embryonic session's task is not needed anymore */
if (sess->task) {
task_destroy(sess->task);
sess->task = NULL;
}
task_destroy(sess->task);
sess->task = NULL;
conn_set_owner(conn, sess, conn_session_free);
return 0;