We have been seeing the following error when trying to use the
external-check command option.
[ALERT] 246/120705 (25012) : parsing [/etc/haproxy/haproxy.cfg:31] :
'external-check' cannot handle unexpected argument
'/var/lib/loadbalancer.org/check/http_ntlm_proxy_check.sh'.
[ALERT] 246/120705 (25012) : Error(s) found in configuration file :
/etc/haproxy/haproxy.cfg
[ALERT] 246/120705 (25012) : Proxy 'VIP_Name' : 'option
external-check' unable to find required 'external-check command'.
[ALERT] 246/120705 (25012) : Fatal errors found in configuration.
Also the same "cannot handle unexpected argument" error occurs for
"external-check path".
I have tried with the latest build haproxy-ss-20150904 and can
reproduce the problem. I believe it is because it is checking for an
invalid number of arguments but may be completely wrong.
Here is my suggested fix.
--- src/cfgparse.org 2015-09-04 13:26:36.070579303 +0100
+++ src/cfgparse.c 2015-09-04 13:36:31.194587549 +0100
@@ -3349,9 +3349,9 @@
}
if (!strcmp(args[1], "command")) {
- if (alertif_too_many_args(1, file, linenum, args, &err_code))
+ if (alertif_too_many_args(2, file, linenum, args, &err_code))
goto out;
- if (*(args[1]) == 0) {
+ if (*(args[2]) == 0) {
Alert("parsing [%s:%d] : missing argument after '%s'.\n",
file, linenum, args[1]);
err_code |= ERR_ALERT | ERR_FATAL;
@@ -3361,9 +3361,9 @@
curproxy->check_command = strdup(args[2]);
}
else if (!strcmp(args[1], "path")) {
- if (alertif_too_many_args(1, file, linenum, args, &err_code))
+ if (alertif_too_many_args(2, file, linenum, args, &err_code))
goto out;
- if (*(args[1]) == 0) {
+ if (*(args[2]) == 0) {
Alert("parsing [%s:%d] : missing argument after '%s'.\n",
file, linenum, args[1]);
err_code |= ERR_ALERT | ERR_FATAL;
Test config:
global
daemon
stats socket /var/run/haproxy.stat mode 600 level admin
pidfile /var/run/haproxy.pid
log /dev/log local4
maxconn 40000
tune.bufsize 16384
tune.maxrewrite 1024
external-check
defaults
mode http
balance roundrobin
timeout connect 4000
timeout client 42000
timeout server 43000
log global
peers loadbalancer_replication
peer lbmaster localhost:7778
peer lbslave localhost:7778
listen VIP_Name
bind 192.168.63.122:80 transparent
mode http
balance leastconn
cookie SERVERID insert nocache indirect
server backup 127.0.0.1:9081 backup non-stick
option external-check
external-check command
/var/lib/loadbalancer.org/check/http_ntlm_proxy_check.sh
option accept-invalid-http-request
option http-keep-alive
option forwardfor
option redispatch
option abortonclose
maxconn 40000
option httplog
server RIP_Name 192.168.63.100 weight 100 cookie RIP_Name
check inter 4000 rise 2 fall 2 minconn 0 maxconn 0
on-marked-down shutdown-sessions
thanks,
Ben
--
LOADBALANCER.ORG LTD.
www.loadbalancer.org
support@loadbalancer.org
external-check command option.
[ALERT] 246/120705 (25012) : parsing [/etc/haproxy/haproxy.cfg:31] :
'external-check' cannot handle unexpected argument
'/var/lib/loadbalancer.org/check/http_ntlm_proxy_check.sh'.
[ALERT] 246/120705 (25012) : Error(s) found in configuration file :
/etc/haproxy/haproxy.cfg
[ALERT] 246/120705 (25012) : Proxy 'VIP_Name' : 'option
external-check' unable to find required 'external-check command'.
[ALERT] 246/120705 (25012) : Fatal errors found in configuration.
Also the same "cannot handle unexpected argument" error occurs for
"external-check path".
I have tried with the latest build haproxy-ss-20150904 and can
reproduce the problem. I believe it is because it is checking for an
invalid number of arguments but may be completely wrong.
Here is my suggested fix.
--- src/cfgparse.org 2015-09-04 13:26:36.070579303 +0100
+++ src/cfgparse.c 2015-09-04 13:36:31.194587549 +0100
@@ -3349,9 +3349,9 @@
}
if (!strcmp(args[1], "command")) {
- if (alertif_too_many_args(1, file, linenum, args, &err_code))
+ if (alertif_too_many_args(2, file, linenum, args, &err_code))
goto out;
- if (*(args[1]) == 0) {
+ if (*(args[2]) == 0) {
Alert("parsing [%s:%d] : missing argument after '%s'.\n",
file, linenum, args[1]);
err_code |= ERR_ALERT | ERR_FATAL;
@@ -3361,9 +3361,9 @@
curproxy->check_command = strdup(args[2]);
}
else if (!strcmp(args[1], "path")) {
- if (alertif_too_many_args(1, file, linenum, args, &err_code))
+ if (alertif_too_many_args(2, file, linenum, args, &err_code))
goto out;
- if (*(args[1]) == 0) {
+ if (*(args[2]) == 0) {
Alert("parsing [%s:%d] : missing argument after '%s'.\n",
file, linenum, args[1]);
err_code |= ERR_ALERT | ERR_FATAL;
Test config:
global
daemon
stats socket /var/run/haproxy.stat mode 600 level admin
pidfile /var/run/haproxy.pid
log /dev/log local4
maxconn 40000
tune.bufsize 16384
tune.maxrewrite 1024
external-check
defaults
mode http
balance roundrobin
timeout connect 4000
timeout client 42000
timeout server 43000
log global
peers loadbalancer_replication
peer lbmaster localhost:7778
peer lbslave localhost:7778
listen VIP_Name
bind 192.168.63.122:80 transparent
mode http
balance leastconn
cookie SERVERID insert nocache indirect
server backup 127.0.0.1:9081 backup non-stick
option external-check
external-check command
/var/lib/loadbalancer.org/check/http_ntlm_proxy_check.sh
option accept-invalid-http-request
option http-keep-alive
option forwardfor
option redispatch
option abortonclose
maxconn 40000
option httplog
server RIP_Name 192.168.63.100 weight 100 cookie RIP_Name
check inter 4000 rise 2 fall 2 minconn 0 maxconn 0
on-marked-down shutdown-sessions
thanks,
Ben
--
LOADBALANCER.ORG LTD.
www.loadbalancer.org
support@loadbalancer.org