diff --git a/doc/configuration.txt b/doc/configuration.txt index 391e074a7..5034b45ee 100644 --- a/doc/configuration.txt +++ b/doc/configuration.txt @@ -9720,13 +9720,17 @@ server
[:[port]] [param*] See also: "default-server", "http-send-name-header" and section 5 about server options -server-state-file-name [] +server-state-file-name [ { use-backend-name | } ] Set the server state file to read, load and apply to servers available in - this backend. It only applies when the directive "load-server-state-from-file" - is set to "local". When is not provided or if this directive is not - set, then backend name is used. If starts with a slash '/', then it is - considered as an absolute path. Otherwise, is concatenated to the - global directive "server-state-file-base". + this backend. + May be used in sections: defaults | frontend | listen | backend + no | no | yes | yes + + It only applies when the directive "load-server-state-from-file" is set to + "local". When is not provided, if "use-backend-name" is used or if + this directive is not set, then backend name is used. If starts with a + slash '/', then it is considered as an absolute path. Otherwise, is + concatenated to the global directive "server-state-base". Example: the minimal configuration below would make HAProxy look for the state server file '/etc/haproxy/states/bk': @@ -9737,7 +9741,7 @@ server-state-file-name [] backend bk load-server-state-from-file - See also: "server-state-file-base", "load-server-state-from-file", and + See also: "server-state-base", "load-server-state-from-file", and "show servers state" server-template [:] [params*] diff --git a/src/cfgparse-listen.c b/src/cfgparse-listen.c index 689a28eb3..3c66e619b 100644 --- a/src/cfgparse-listen.c +++ b/src/cfgparse-listen.c @@ -1204,13 +1204,13 @@ int cfg_parse_listen(const char *file, int linenum, char **args, int kwm) else if (strcmp(args[0], "server-state-file-name") == 0) { if (warnifnotcap(curproxy, PR_CAP_BE, file, linenum, args[0], NULL)) err_code |= ERR_WARN; - if (*(args[1]) == 0) { - ha_alert("parsing [%s:%d] : '%s' expects 'use-backend-name' or a string. Got no argument\n", - file, linenum, args[0]); - err_code |= ERR_ALERT | ERR_FATAL; + if (alertif_too_many_args(1, file, linenum, args, &err_code)) goto out; - } - else if (strcmp(args[1], "use-backend-name") == 0) + + free(curproxy->server_state_file_name); + curproxy->server_state_file_name = NULL; + + if (*(args[1]) == 0 || strcmp(args[1], "use-backend-name") == 0) curproxy->server_state_file_name = strdup(curproxy->id); else curproxy->server_state_file_name = strdup(args[1]);