Browse Source

the automatic service restart should not happen during sysupgrade

Signed-off-by: John Crispin <blogic@openwrt.org>
John Crispin 10 years ago
parent
commit
315f04d8b8
3 changed files with 8 additions and 0 deletions
  1. 3 0
      instance.c
  2. 1 0
      procd.h
  3. 4 0
      system.c

+ 3 - 0
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 */

+ 1 - 0
procd.h

@@ -42,6 +42,7 @@
 	} while (0)
 
 extern char *ubus_socket;
+extern int upgrade_running;
 
 extern unsigned int debug;
 void debug_init(void);

+ 4 - 0
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;
 }