core: split environment block mantained by PID 1's Manager object in two
This splits the "environment" field of Manager into two: transient_environment and client_environment. The former is generated from configuration file, kernel cmdline, environment generators. The latter is the one the user can control with "systemctl set-environment" and similar. Both sets are merged transparently whenever needed. Separating the two sets has the benefit that we can safely flush out the former while keeping the latter during daemon reload cycles, so that env var settings from env generators or configuration files do not accumulate, but dynamic API changes are kept around. Note that this change is not entirely transparent to users: if the user first uses "set-environment" to override a transient variable, and then uses "unset-environment" to unset it again things will revert to the original transient variable now, while previously the variable was fully removed. This change in behaviour should not matter too much though I figure. Fixes: #9972
This commit is contained in:
+3
-1
@@ -1882,7 +1882,9 @@ static int socket_spawn(Socket *s, ExecCommand *c, pid_t *_pid) {
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
unit_set_exec_params(UNIT(s), &exec_params);
|
||||
r = unit_set_exec_params(UNIT(s), &exec_params);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = exec_spawn(UNIT(s),
|
||||
c,
|
||||
|
||||
Reference in New Issue
Block a user