summaryrefslogtreecommitdiffstats
path: root/instance.c
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2013-05-31 17:14:50 +0200
committerFelix Fietkau <nbd@openwrt.org>2013-05-31 17:27:40 +0200
commit14afa266e26e878ccdb828c9582e402223c41fcf (patch)
treed4e50e0190a1ef8b0eaefbb8df26797c4bec75bb /instance.c
parentef86e35932ffafb43644169ea33b849f58873256 (diff)
downloadunitd-14afa266e26e878ccdb828c9582e402223c41fcf.tar
unitd-14afa266e26e878ccdb828c9582e402223c41fcf.zip
restart stopped instances on update
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Diffstat (limited to 'instance.c')
-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;
}