summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Crispin <blogic@openwrt.org>2013-11-08 22:25:20 +0100
committerJohn Crispin <blogic@openwrt.org>2013-11-08 22:40:03 +0100
commit315f04d8b823adda96041c17f6672b7790376ccb (patch)
tree0016c7a4304595a3f453dbe12f3a0ef1e433db42
parent8fd40e8352bac9992ca4ebd50998d4e961f5404b (diff)
downloadunitd-315f04d8b823adda96041c17f6672b7790376ccb.tar
unitd-315f04d8b823adda96041c17f6672b7790376ccb.zip
the automatic service restart should not happen during sysupgrade
Signed-off-by: John Crispin <blogic@openwrt.org>
-rw-r--r--instance.c3
-rw-r--r--procd.h1
-rw-r--r--system.c4
3 files changed, 8 insertions, 0 deletions
diff --git a/instance.c b/instance.c
index 7895a04..05b0f99 100644
--- a/instance.c
+++ b/instance.c
@@ -149,6 +149,9 @@ instance_exit(struct uloop_process *p, int ret)
runtime = tp.tv_sec - in->start.tv_sec;
DEBUG(1, "Instance %s::%s exit with error code %d after %ld seconds\n", in->srv->name, in->name, ret, runtime);
+ if (upgrade_running)
+ return;
+
uloop_timeout_cancel(&in->timeout);
if (in->halt) {
/* no action */
diff --git a/procd.h b/procd.h
index 34cc9a1..a0c7a99 100644
--- a/procd.h
+++ b/procd.h
@@ -42,6 +42,7 @@
} while (0)
extern char *ubus_socket;
+extern int upgrade_running;
extern unsigned int debug;
void debug_init(void);
diff --git a/system.c b/system.c
index 0b3c466..54a84b4 100644
--- a/system.c
+++ b/system.c
@@ -29,6 +29,8 @@
static struct blob_buf b;
+int upgrade_running = 0;
+
static int system_board(struct ubus_context *ctx, struct ubus_object *obj,
struct ubus_request_data *req, const char *method,
struct blob_attr *msg)
@@ -191,6 +193,8 @@ static int system_upgrade(struct ubus_context *ctx, struct ubus_object *obj,
log_shutdown();
hotplug_shutdown();
+ upgrade_running = 1;
+
return 0;
}