On Wed, Mar 13, 2019 at 4:44 PM Kristian Evensen <[email protected]> wrote: > > procd currently does not support deleting a stopped instance. The reason > is that we return in instance_stop(), if pending is set to false. This > patch adds a new function, instance_delete(), which does the necessary > clean-up of an instance. instance_delete() is called before we return in > instance_stop(), as well as when a process that should not be restarted > has exited in instance_exit(). > > Signed-off-by: Kristian Evensen <[email protected]> > --- > service/instance.c | 23 +++++++++++++++-------- > 1 file changed, 15 insertions(+), 8 deletions(-) > > diff --git a/service/instance.c b/service/instance.c > index a5742b7..78ac540 100644 > --- a/service/instance.c > +++ b/service/instance.c > @@ -518,6 +518,16 @@ instance_timeout(struct uloop_timeout *t) > instance_start(in); > } > > +static void > +instance_delete(struct service_instance *in) > +{ > + struct service *s = in->srv; > + > + avl_delete(&s->instances.avl, &in->node.avl); > + instance_free(in); > + service_stopped(s); > +} > + > static void > instance_exit(struct uloop_process *p, int ret) > { > @@ -539,13 +549,8 @@ instance_exit(struct uloop_process *p, int ret) > instance_removepid(in); > if (in->restart) > instance_start(in); > - else { > - struct service *s = in->srv; > - > - avl_delete(&s->instances.avl, &in->node.avl); > - instance_free(in); > - service_stopped(s); > - } > + else > + instance_delete(in); > } else if (in->restart) { > instance_start(in); > } else if (in->respawn) { > @@ -569,8 +574,10 @@ instance_exit(struct uloop_process *p, int ret) > void > instance_stop(struct service_instance *in, bool halt) > { > - if (!in->proc.pending) > + if (!in->proc.pending) { > + instance_delete(in); instance_delete should only be called when halt is set to true similar as in instance_exit
Hans > return; > + } > in->halt = halt; > in->restart = in->respawn = false; > kill(in->proc.pid, SIGTERM); > -- > 2.19.1 > > > _______________________________________________ > openwrt-devel mailing list > [email protected] > https://lists.openwrt.org/mailman/listinfo/openwrt-devel _______________________________________________ openwrt-devel mailing list [email protected] https://lists.openwrt.org/mailman/listinfo/openwrt-devel
