Op 23 jan. 2020, om 14:15 heeft ondrej.vot...@cvut.cz het volgende geschreven:
> 
> +static int
> +instance_exit_code(int ret)
> +{
> +     if(WIFEXITED(ret)) {
> +             return WEXITSTATUS(ret);
> +     }
> +     else if (WIFSIGNALED(ret)) {
The else should be omitted because, when the previous if condition is met, the 
program flow unconditionally returns from the function.
So just use: if (WIFSIGNALED(ret)) {
> +             return 128 + WTERMSIG(ret);
> +     }
> +     return 1;
> +}
> +
> static void
> instance_exit(struct uloop_process *p, int ret)
> {
> @@ -574,6 +586,7 @@ instance_exit(struct uloop_process *p, int ret)
> 
>       DEBUG(2, "Instance %s::%s exit with error code %d after %ld seconds\n", 
> in->srv->name, in->name, ret, runtime);
> 
> +     in->exit_code = instance_exit_code(ret);
>       uloop_timeout_cancel(&in->timeout);
>       service_event("instance.stop", in->srv->name, in->name);
> 
> @@ -1091,6 +1104,7 @@ instance_init(struct service_instance *in, struct 
> service *s, struct blob_attr *
>       in->proc.cb = instance_exit;
>       in->term_timeout = 5;
>       in->syslog_facility = LOG_DAEMON;
> +     in->exit_code = 0;
> 
>       in->_stdout.fd.fd = -2;
>       in->_stdout.stream.string_data = true;
> @@ -1124,6 +1138,8 @@ void instance_dump(struct blob_buf *b, struct 
> service_instance *in, int verbose)
>       if (in->command)
>               blobmsg_add_blob(b, in->command);
>       blobmsg_add_u32(b, "term_timeout", in->term_timeout);
> +     if (!in->proc.pending)
> +             blobmsg_add_u32(b, "exit_code", in->exit_code);
> 
>       if (!avl_is_empty(&in->errors.avl)) {
>               struct blobmsg_list_node *var;
> diff --git a/service/instance.h b/service/instance.h
> index 42cc4be..05a2fc3 100644
> --- a/service/instance.h
> +++ b/service/instance.h
> @@ -62,6 +62,7 @@ struct service_instance {
>       char *seccomp;
>       char *pidfile;
>       int syslog_facility;
> +     int exit_code;
> 
>       uint32_t term_timeout;
>       uint32_t respawn_timeout;
> -- 
> 2.21.0 (Apple Git-122.2)
> 
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel@lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel


_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to