X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvcl%2Fvppcom.c;h=0eaab6cbd6bc5ca87a301a0e00a864184cc171b3;hb=eaec2a6d9ab8b983aaee536be1a95846c07a9d7f;hp=dbb0d657b8dd9861e86d7bec908362aea6044d96;hpb=955bfbbb6968bdc99171bdebcda6dbe605af2004;p=vpp.git diff --git a/src/vcl/vppcom.c b/src/vcl/vppcom.c index dbb0d657b8d..0eaab6cbd6b 100644 --- a/src/vcl/vppcom.c +++ b/src/vcl/vppcom.c @@ -737,14 +737,17 @@ vcl_intercept_sigchld_handler (int signum, siginfo_t * si, void *uc) return; child_wrk = vcl_worker_get_if_valid (wrk->forked_child); - if (si->si_pid != child_wrk->current_pid) + if (!child_wrk) + goto done; + + if (si && si->si_pid != child_wrk->current_pid) { VDBG (0, "unexpected child pid %u", si->si_pid); - return; + goto done; } - if (child_wrk) - vcl_cleanup_forked_child (wrk, child_wrk); + vcl_cleanup_forked_child (wrk, child_wrk); +done: if (old_sa.sa_flags & SA_SIGINFO) { void (*fn) (int, siginfo_t *, void *) = old_sa.sa_sigaction; @@ -848,7 +851,7 @@ vppcom_app_exit (void) if (vec_len (vcm->workers) == 1) vl_client_disconnect_from_vlib (); else - vl_client_send_disconnect (); + vl_client_send_disconnect (1 /* vpp should cleanup */ ); } /*