123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- From dd18f945c26fc30872a52c66b06b5a0a86b10060 Mon Sep 17 00:00:00 2001
- From: Willy Tarreau <w@1wt.eu>
- Date: Mon, 24 Jul 2017 17:35:27 +0200
- Subject: [PATCH 18/18] BUG/MINOR: lua: always detach the tcp/http tasks before
- freeing them
- In hlua_{http,tcp}_applet_release(), a call to task_free() is performed
- to release the task, but no task_delete() is made on these tasks. Till
- now it wasn't much of a problem because this was normally not done with
- the task in the run queue, and the task was never put into the wait queue
- since it doesn't have any timer. But with threading it will become an
- issue. And not having this already prevents another bug from being fixed.
- Thanks to Christopher for spotting this one. A backport to 1.7 and 1.6 is
- preferred for safety.
- (cherry picked from commit bd7fc95edbce821f1d7b745a7b75deef4d6b1e27)
- Signed-off-by: William Lallemand <wlallemand@haproxy.org>
- ---
- src/hlua.c | 2 ++
- 1 file changed, 2 insertions(+)
- diff --git a/src/hlua.c b/src/hlua.c
- index a998860e..67b9458c 100644
- --- a/src/hlua.c
- +++ b/src/hlua.c
- @@ -5948,6 +5948,7 @@ error:
-
- static void hlua_applet_tcp_release(struct appctx *ctx)
- {
- + task_delete(ctx->ctx.hlua_apptcp.task);
- task_free(ctx->ctx.hlua_apptcp.task);
- ctx->ctx.hlua_apptcp.task = NULL;
- hlua_ctx_destroy(&ctx->ctx.hlua_apptcp.hlua);
- @@ -6226,6 +6227,7 @@ error:
-
- static void hlua_applet_http_release(struct appctx *ctx)
- {
- + task_delete(ctx->ctx.hlua_apphttp.task);
- task_free(ctx->ctx.hlua_apphttp.task);
- ctx->ctx.hlua_apphttp.task = NULL;
- hlua_ctx_destroy(&ctx->ctx.hlua_apphttp.hlua);
- --
- 2.13.0
|