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

Collapse All | Expand All

(-)serverloop.c (-2 / +11 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
		notify_parent();
508
		waiting_termination = 1;
509
	} else
510
		wait_pid = -1;
511
505
	/* Initialize our global variables. */
512
	/* Initialize our global variables. */
506
	fdin = fdin_arg;
513
	fdin = fdin_arg;
507
	fdout = fdout_arg;
514
	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. */
681
	/* We no longer want our SIGCHLD handler to be called. */
675
	mysignal(SIGCHLD, SIG_DFL);
682
	mysignal(SIGCHLD, SIG_DFL);
676
683
677
	while ((wait_pid = waitpid(-1, &wait_status, 0)) < 0)
684
	while (wait_pid < 0) {
678
		if (errno != EINTR)
685
		wait_pid = waitpid(-1, &wait_status, 0);
686
		if (wait_pid < 0 && errno != EINTR)
679
			packet_disconnect("wait: %.100s", strerror(errno));
687
			packet_disconnect("wait: %.100s", strerror(errno));
688
	}
680
	if (wait_pid != pid)
689
	if (wait_pid != pid)
681
		error("Strange, wait returned pid %ld, expected %ld",
690
		error("Strange, wait returned pid %ld, expected %ld",
682
		    (long)wait_pid, (long)pid);
691
		    (long)wait_pid, (long)pid);

Return to bug 967