X-Git-Url: http://git.openwrt.org/?p=project%2Fprocd.git;a=blobdiff_plain;f=service%2Finstance.c;fp=service%2Finstance.c;h=74c47fac36cabc4b1e762c6f2c099a112920eb8c;hp=ecbb6ea41e78523d288d4d38db38885011c671d0;hb=3db4e6d21ef85c3fbf1d7e0ae36bd1f039fec255;hpb=c3faabeb635ce515b831afb2e87d9bb241991907 diff --git a/service/instance.c b/service/instance.c index ecbb6ea..74c47fa 100644 --- a/service/instance.c +++ b/service/instance.c @@ -587,6 +587,11 @@ instance_restart(struct service_instance *in) uloop_timeout_set(&in->timeout, in->term_timeout * 1000); } +static bool string_changed(const char *a, const char *b) +{ + return !((!a && !b) || (a && b && !strcmp(a, b))); +} + static bool instance_config_changed(struct service_instance *in, struct service_instance *in_new) { @@ -614,14 +619,7 @@ instance_config_changed(struct service_instance *in, struct service_instance *in if (in->gid != in_new->gid) return true; - if (in->pidfile && in_new->pidfile) - if (strcmp(in->pidfile, in_new->pidfile)) - return true; - - if (in->pidfile && !in_new->pidfile) - return true; - - if (!in->pidfile && in_new->pidfile) + if (string_changed(in->pidfile, in_new->pidfile)) return true; if (in->respawn_retry != in_new->respawn_retry)