Hello,

Am 19.06.2017 um 11:27 schrieb Philipp Kolmann:
> This config works in 1.5.8 but fails to tcp-check in 1.7.5.
>
> The errors in the logfile look like this:
>
> Jun 19 10:52:57 testha2 haproxy[5042]: Server mail-exchtest-smtp/mbx13a is 
> DOWN, reason: Socket error, info: "No port available for the TCP connection", 
> check duration: 0ms. 3 active and 0 backup servers left. 0 sessions active, 0 
> requeued, 0 remaining in queue.
>

Bug introduced  in 95db2bcfee ("MAJOR: check: find out which port to use
for health check at run time"), the AF check in line 1521 does not trigger
in this case ("tcp-check connect port" configuration).

Partially reverting the check to the old one appears to work, but that's
probably not the correct fix.


diff --git a/src/checks.c b/src/checks.c
index 1af862e..5a34609 100644
--- a/src/checks.c
+++ b/src/checks.c
@@ -1518,7 +1518,7 @@ static int connect_conn_chk(struct task *t)
         conn->addr.to = s->addr;
     }
 
-       if ((conn->addr.to.ss_family == AF_INET) || (conn->addr.to.ss_family == 
AF_INET6)) {
+       if (check->port) {
         int i = 0;
 
         i = srv_check_healthcheck_port(check);



A quick config workaround, that reduces the check to a single port consist
in adding "port 25" to each server configuration (after the check keyword).



cheers,
lukas


Reply via email to