View | Details | Raw Unified | Return to bug 967 | Differences between
and this patch

Collapse All | Expand All

(-)serverloop.c (-1 / +7 lines)
Lines 502-507 server_loop(pid_t pid, int fdin_arg, int Link Here
502
	child_terminated = 0;
502
	child_terminated = 0;
503
	mysignal(SIGCHLD, sigchld_handler);
503
	mysignal(SIGCHLD, sigchld_handler);
504
504
505
	/* XXX */
506
	if ((wait_pid = waitpid(-1, &wait_status, WNOHANG)) > 0)
507
		waiting_termination = 1;
508
505
	/* Initialize our global variables. */
509
	/* Initialize our global variables. */
506
	fdin = fdin_arg;
510
	fdin = fdin_arg;
507
	fdout = fdout_arg;
511
	fdout = fdout_arg;
Lines 674-682 server_loop(pid_t pid, int fdin_arg, int Link Here
674
	/* We no longer want our SIGCHLD handler to be called. */
678
	/* We no longer want our SIGCHLD handler to be called. */
675
	mysignal(SIGCHLD, SIG_DFL);
679
	mysignal(SIGCHLD, SIG_DFL);
676
680
677
	while ((wait_pid = waitpid(-1, &wait_status, 0)) < 0)
681
	while (wait_pid < 0) {
682
		wait_pid = waitpid(-1, &wait_status, 0);
678
		if (errno != EINTR)
683
		if (errno != EINTR)
679
			packet_disconnect("wait: %.100s", strerror(errno));
684
			packet_disconnect("wait: %.100s", strerror(errno));
685
	}
680
	if (wait_pid != pid)
686
	if (wait_pid != pid)
681
		error("Strange, wait returned pid %ld, expected %ld",
687
		error("Strange, wait returned pid %ld, expected %ld",
682
		    (long)wait_pid, (long)pid);
688
		    (long)wait_pid, (long)pid);

Return to bug 967