changeset 341:2eb5a8514905

Make flow of execution clearer for getting process exit status
author Matt Johnston <matt@ucc.asn.au>
date Fri, 07 Jul 2006 09:18:05 +0000 (2006-07-07)
parents 454a34b2dfd1
children 3e098639b05f
files svr-chansession.c
diffstat 1 files changed, 3 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/svr-chansession.c	Fri Jul 07 09:17:18 2006 +0000
+++ b/svr-chansession.c	Fri Jul 07 09:18:05 2006 +0000
@@ -88,6 +88,8 @@
 
 	TRACE(("enter sigchld handler"))
 	while ((pid = waitpid(-1, &status, WNOHANG)) > 0) {
+
+		exit = NULL;
 		/* find the corresponding chansess */
 		for (i = 0; i < svr_ses.childpidsize; i++) {
 			if (svr_ses.childpids[i].pid == pid) {
@@ -99,7 +101,7 @@
 
 		/* If the pid wasn't matched, then we might have hit the race mentioned
 		 * above. So we just store the info for the parent to deal with */
-		if (i == svr_ses.childpidsize) {
+		if (!exit) {
 			exit = &svr_ses.lastexit;
 		}
 
@@ -118,7 +120,6 @@
 			/* we use this to determine how pid exited */
 			exit->exitsignal = -1;
 		}
-		exit = NULL;
 	}