From 0e8d7233e38357457ef015bc0d1f4e3ee2a6b2ba Mon Sep 17 00:00:00 2001 From: paco Date: Mon, 18 Jun 2018 17:25:20 +0200 Subject: ldpd: redundant condition (cppcheck) Signed-off-by: F. Aragon --- ldpd/ldpd.c | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) (limited to 'ldpd') diff --git a/ldpd/ldpd.c b/ldpd/ldpd.c index 255febeb6..b265c98da 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); -- cgit v1.2.3