summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--instance.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/instance.c b/instance.c
index 1c2d8ba..a1459b7 100644
--- a/instance.c
+++ b/instance.c
@@ -322,13 +322,20 @@ bool
instance_update(struct service_instance *in, struct service_instance *in_new)
{
bool changed = instance_config_changed(in, in_new);
+ bool running = in->proc.pending;
- if (!changed)
+ if (!changed && running)
return false;
- in->restart = true;
- instance_stop(in, true);
- instance_config_move(in, in_new);
+ if (!running) {
+ if (changed)
+ instance_config_move(in, in_new);
+ instance_start(in);
+ } else {
+ in->restart = true;
+ instance_stop(in, true);
+ instance_config_move(in, in_new);
+ }
return true;
}