Hi,

When checks were modified to dynamically allocate a connection, in case
connect_conn_chk() fails, the connection was never free'd, which made the
check unable to run again.

The attached patch addresses this.

Regards,

Olivier
>From 5267b95d7f196d1893d73035abe850226601284c Mon Sep 17 00:00:00 2001
From: Olivier Houchard <[email protected]>
Date: Tue, 24 Oct 2017 19:03:30 +0200
Subject: [PATCH 2/2] BUG/MINOR: checks: Don't forget to release the connection
 on error case.

When switching the check code to a non-permanent connection, the new code
forgot to free the connection if an error happened and was returned by
connect_conn_chk(), leading to the check never be ran again.
---
 src/checks.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/checks.c b/src/checks.c
index e6cc42a1c..880b47bc1 100644
--- a/src/checks.c
+++ b/src/checks.c
@@ -2118,6 +2118,10 @@ static struct task *process_chk_conn(struct task *t)
                }
 
                /* here, we have seen a synchronous error, no fd was allocated 
*/
+               if (conn) {
+                       conn_free(conn);
+                       check->conn = conn = NULL;
+               }
 
                check->state &= ~CHK_ST_INPROGRESS;
                check_notify_failure(check);
-- 
2.13.5

Reply via email to