X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fprocd.git;a=blobdiff_plain;f=instance.c;h=df1ea5b22a1e164fb9144564d1002b18cd6b7a43;hp=8c3af4b45c0016b2fe2df07c0a8f65a85343c418;hb=d4ff22c576eff5c362d43036b3788e61b7deef5c;hpb=14447cd46a3c6ad3f5b08e921b39a694b4ad14b0 diff --git a/instance.c b/instance.c index 8c3af4b..df1ea5b 100644 --- a/instance.c +++ b/instance.c @@ -19,6 +19,8 @@ void instance_start(struct service_instance *in) { in->restart = false; + if (!in->valid) + return; } static void @@ -78,6 +80,7 @@ instance_config_parse(struct service_instance *in) blobmsg_parse(instance_attr, __INSTANCE_ATTR_MAX, tb, blobmsg_data(in->config), blobmsg_data_len(in->config)); + if (!tb[INSTANCE_ATTR_COMMAND]) return false; @@ -115,6 +118,7 @@ instance_update(struct service_instance *in, struct service_instance *in_new) if (!changed) return false; + in->restart = true; instance_stop(in, true); instance_config_move(in, in_new); return true; @@ -140,5 +144,3 @@ instance_init(struct service_instance *in, struct blob_attr *config) blobmsg_list_simple_init(&in->data); in->valid = instance_config_parse(in); } - -