From: paco Date: Mon, 18 Jun 2018 15:25:20 +0000 (+0200) Subject: ldpd: redundant condition (cppcheck) X-Git-Tag: frr-6.1-dev~281^2 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=0e8d7233e38357457ef015bc0d1f4e3ee2a6b2ba;p=matthieu%2Ffrr.git ldpd: redundant condition (cppcheck) Signed-off-by: F. Aragon --- diff --git a/ldpd/ldpd.c b/ldpd/ldpd.c index 255febeb60..b265c98dae 100644 --- a/ldpd/ldpd.c +++ b/ldpd/ldpd.c @@ -406,16 +406,32 @@ ldpd_shutdown(void) free(vty_conf); log_debug("waiting for children to terminate"); - do { + + while (true) { + /* Wait for child process. */ pid = wait(&status); if (pid == -1) { - if (errno != EINTR && errno != ECHILD) - fatal("wait"); - } else if (WIFSIGNALED(status)) + /* We got interrupted, try again. */ + if (errno == EINTR) + continue; + /* No more processes were found. */ + if (errno != ECHILD) + break; + + /* Unhandled errno condition. */ + fatal("wait"); + /* UNREACHABLE */ + } + + /* We found something, lets announce it. */ + if (WIFSIGNALED(status)) log_warnx("%s terminated; signal %d", - (pid == lde_pid) ? "label decision engine" : - "ldp engine", WTERMSIG(status)); - } while (pid != -1 || (pid == -1 && errno == EINTR)); + (pid == lde_pid ? "label decision engine" + : "ldp engine"), + WTERMSIG(status)); + + /* Repeat until there are no more child processes. */ + } free(iev_ldpe); free(iev_lde);