Otherwise, the subsequent call to wait will block, when the child
process exits abnormally. Checked with the following script:
for i in $(git grep -l socketpair); do
if ! grep -q 'close.*\[' $i; then echo $i; fi
done
Signed-off-by: Daiki Ueno <ueno@gnu.org>
if (child) {
int status;
/* parent */
+ close(sockets[1]);
server(sockets[0], prio);
wait(&status);
check_wait_status(status);
} else {
+ close(sockets[0]);
client(sockets[1], prio);
exit(0);
}
if (child) {
int status;
+ close(sockets[1]);
server(sockets[0], prio);
wait(&status);
check_wait_status(status);
} else {
+ close(sockets[0]);
client(sockets[1], prio);
exit(0);
}
if (child) {
int status;
+ close(sockets[0]);
client(sockets[1]);
wait(&status);
check_wait_status(status);
} else {
+ close(sockets[1]);
server(sockets[0]);
_exit(0);
}
if (child) {
int status;
/* parent */
+ close(sockets[1]);
server(sockets[0]);
wait(&status);
check_wait_status(status);
} else {
+ close(sockets[0]);
client(sockets[1]);
exit(0);
}
if (child) {
int status;
+ close(sockets[1]);
server(sockets[0]);
wait(&status);
check_wait_status(status);
} else {
+ close(sockets[0]);
client(sockets[1]);
exit(0);
}
if (child) {
int status;
+ close(sockets[0]);
client(sockets[1]);
wait(&status);
check_wait_status(status);
} else {
+ close(sockets[1]);
server(sockets[0]);
_exit(0);
}
if (child) {
int status;
+ close(sockets[1]);
server(sockets[0]);
wait(&status);
check_wait_status(status);
} else {
+ close(sockets[0]);
client(sockets[1]);
exit(0);
}
if (child) {
int status;
+ close(sockets[0]);
client(sockets[1]);
wait(&status);
check_wait_status(status);
} else {
+ close(sockets[1]);
server(sockets[0]);
_exit(0);
}
if (child) {
int status;
/* parent */
+ close(fd[0]);
client(fd[1], prio, user, pass, exp_err);
if (exp_err < 0) {
kill(child, SIGTERM);
check_wait_status(status);
}
} else {
+ close(fd[1]);
server(fd[0], prio);
exit(0);
}
if (child) {
int status;
/* parent */
+ close(sockets[1]);
server(sockets[0], prio, server_only);
wait(&status);
check_wait_status(status);
} else {
+ close(sockets[0]);
client(sockets[1], prio, server_only);
exit(0);
}