diff --git a/qrexec/qrexec-fork-server.c b/qrexec/qrexec-fork-server.c index 43bfd54..6c5eb98 100644 --- a/qrexec/qrexec-fork-server.c +++ b/qrexec/qrexec-fork-server.c @@ -112,12 +112,15 @@ int main(int argc, char **argv) { signal(SIGCHLD, SIG_IGN); register_exec_func(do_exec); - while ((fd = accept(s, (struct sockaddr *) &peer, &addrlen)) >= 0) { + while (1) { + addrlen = sizeof(peer); + fd = accept(s, (struct sockaddr *) &peer, &addrlen); + if (fd < 0) + break; if (read_all(fd, &info, sizeof(info))) { handle_single_command(fd, &info); } close(fd); - addrlen = sizeof(peer); } close(s); unlink(socket_path);