|
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); |