aboutsummaryrefslogtreecommitdiffstats
path: root/pseudo_server.c
diff options
context:
space:
mode:
Diffstat (limited to 'pseudo_server.c')
-rw-r--r--pseudo_server.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/pseudo_server.c b/pseudo_server.c
index c12ba9b..d4428cf 100644
--- a/pseudo_server.c
+++ b/pseudo_server.c
@@ -449,7 +449,7 @@ close_client(int client) {
pseudo_debug(PDBGF_SERVER, "lost client %d [%d], closing fd %d\n", client,
clients[client].pid, clients[client].fd);
/* client went away... */
- if (client > highest_client || client < 0) {
+ if (client > highest_client || client <= 0) {
pseudo_diag("tried to close client %d (highest is %d)\n",
client, highest_client);
return;
@@ -700,7 +700,8 @@ static void pseudo_server_loop_epoll(void)
} else if (rc > 0) {
loop_timeout = pseudo_server_timeout;
for (i = 0; i < rc; ++i) {
- if (clients[events[i].data.u64].fd == listen_fd) {
+ int client_id = events[i].data.u64;
+ if (clients[client_id].fd == listen_fd) {
if (!die_forcefully) {
len = sizeof(client);
if ((fd = accept(listen_fd, (struct sockaddr *) &client, &len)) != -1) {
@@ -733,11 +734,11 @@ static void pseudo_server_loop_epoll(void)
}
} else {
int n = 0;
- ioctl(clients[i].fd, FIONREAD, &n);
+ ioctl(clients[client_id].fd, FIONREAD, &n);
if (n == 0) {
- close_client(i);
+ close_client(client_id);
} else {
- serve_client(i);
+ serve_client(client_id);
}
}
if (die_forcefully)