mirror of
https://github.com/systemd/systemd.git
synced 2025-03-29 06:50:16 +03:00
core: simplify how we parse TimeoutSec=, TimeoutStartSec= and TimeoutStopSec=
Let's make things more obvious by placing the parse_usec() invocation directly in config_parse_service_timeout().
This commit is contained in:
parent
2f1a7412b2
commit
aad41f0814
@ -215,9 +215,9 @@ Service.ExecReload, config_parse_exec, SERVICE_EXE
|
||||
Service.ExecStop, config_parse_exec, SERVICE_EXEC_STOP, offsetof(Service, exec_command)
|
||||
Service.ExecStopPost, config_parse_exec, SERVICE_EXEC_STOP_POST, offsetof(Service, exec_command)
|
||||
Service.RestartSec, config_parse_sec, 0, offsetof(Service, restart_usec)
|
||||
Service.TimeoutSec, config_parse_service_timeout, 0, offsetof(Service, timeout_start_usec)
|
||||
Service.TimeoutStartSec, config_parse_service_timeout, 0, offsetof(Service, timeout_start_usec)
|
||||
Service.TimeoutStopSec, config_parse_service_timeout, 0, offsetof(Service, timeout_stop_usec)
|
||||
Service.TimeoutSec, config_parse_service_timeout, 0, 0
|
||||
Service.TimeoutStartSec, config_parse_service_timeout, 0, 0
|
||||
Service.TimeoutStopSec, config_parse_service_timeout, 0, 0
|
||||
Service.RuntimeMaxSec, config_parse_sec, 0, offsetof(Service, runtime_max_usec)
|
||||
Service.WatchdogSec, config_parse_sec, 0, offsetof(Service, watchdog_usec)
|
||||
Service.StartLimitInterval, config_parse_sec, 0, offsetof(Unit, start_limit.interval)
|
||||
|
@ -1711,18 +1711,20 @@ int config_parse_bus_name(
|
||||
return config_parse_string(unit, filename, line, section, section_line, lvalue, ltype, k, data, userdata);
|
||||
}
|
||||
|
||||
int config_parse_service_timeout(const char *unit,
|
||||
const char *filename,
|
||||
unsigned line,
|
||||
const char *section,
|
||||
unsigned section_line,
|
||||
const char *lvalue,
|
||||
int ltype,
|
||||
const char *rvalue,
|
||||
void *data,
|
||||
void *userdata) {
|
||||
int config_parse_service_timeout(
|
||||
const char *unit,
|
||||
const char *filename,
|
||||
unsigned line,
|
||||
const char *section,
|
||||
unsigned section_line,
|
||||
const char *lvalue,
|
||||
int ltype,
|
||||
const char *rvalue,
|
||||
void *data,
|
||||
void *userdata) {
|
||||
|
||||
Service *s = userdata;
|
||||
usec_t usec;
|
||||
int r;
|
||||
|
||||
assert(filename);
|
||||
@ -1730,25 +1732,27 @@ int config_parse_service_timeout(const char *unit,
|
||||
assert(rvalue);
|
||||
assert(s);
|
||||
|
||||
r = config_parse_sec(unit, filename, line, section, section_line, lvalue, ltype,
|
||||
rvalue, data, userdata);
|
||||
if (r < 0)
|
||||
return r;
|
||||
/* This is called for three cases: TimeoutSec=, TimeoutStopSec= and TimeoutStartSec=. */
|
||||
|
||||
if (streq(lvalue, "TimeoutSec")) {
|
||||
s->start_timeout_defined = true;
|
||||
s->timeout_stop_usec = s->timeout_start_usec;
|
||||
} else if (streq(lvalue, "TimeoutStartSec"))
|
||||
s->start_timeout_defined = true;
|
||||
r = parse_sec(rvalue, &usec);
|
||||
if (r < 0) {
|
||||
log_syntax(unit, LOG_ERR, filename, line, r, "Failed to parse %s= parameter, ignoring: %s", lvalue, rvalue);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Traditionally, these options accepted 0 to disable the timeouts. However, a timeout of 0 suggests it happens
|
||||
* immediately, hence fix this to become USEC_INFINITY instead. This is in-line with how we internally handle
|
||||
* all other timeouts. */
|
||||
if (usec <= 0)
|
||||
usec = USEC_INFINITY;
|
||||
|
||||
if (s->timeout_start_usec <= 0)
|
||||
s->timeout_start_usec = USEC_INFINITY;
|
||||
if (s->timeout_stop_usec <= 0)
|
||||
s->timeout_stop_usec = USEC_INFINITY;
|
||||
if (!streq(lvalue, "TimeoutStopSec")) {
|
||||
s->start_timeout_defined = true;
|
||||
s->timeout_start_usec = usec;
|
||||
}
|
||||
|
||||
if (!streq(lvalue, "TimeoutStartSec"))
|
||||
s->timeout_stop_usec = usec;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user