X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fprocd.git;a=blobdiff_plain;f=service%2Fservice.c;h=9675ba25eeb4b14342eb2586ef09768d08420282;hp=0584ee04524cbcfa28c6b0bad8c977232760bb3f;hb=8f218f5626a3cb3900dbe9801ee8ace236b0e4a5;hpb=35209a01f2df708546d5aecca05cdcf11c0e7332 diff --git a/service/service.c b/service/service.c index 0584ee0..9675ba2 100644 --- a/service/service.c +++ b/service/service.c @@ -140,6 +140,8 @@ service_update(struct service *s, struct blob_attr **tb, bool add) vlist_flush(&s->instances); } + s->deleted = false; + rc(s->name, "running"); return 0; @@ -149,6 +151,7 @@ static void service_delete(struct service *s) { vlist_flush_all(&s->instances); + s->deleted = true; service_stopped(s); } @@ -602,7 +605,7 @@ service_start_early(char *name, char *cmdline) void service_stopped(struct service *s) { - if (avl_is_empty(&s->instances.avl)) { + if (s->deleted && avl_is_empty(&s->instances.avl)) { service_event("service.stop", s->name, NULL); avl_delete(&services, &s->avl); trigger_del(s);