aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2008-08-28 20:20:10 +0200
committerMax Kellermann <max@duempel.org>2008-08-28 20:20:10 +0200
commit34735fab66eb5f8a4cd65413f09e1ba60f5872a3 (patch)
treee421ec74f560ff38e1c8d32da73a568136701383 /src
parentf6a7dd2b455cc1f08c1c00085ce1801870d6b41e (diff)
client: no while loop in client_manager_io()
The last patch removed the "continue" directive, and now the while loop is without function. Remove it. Also make client_manager_io() return 0.
Diffstat (limited to 'src')
-rw-r--r--src/client.c58
1 files changed, 26 insertions, 32 deletions
diff --git a/src/client.c b/src/client.c
index 15b8ecf7..7ae00088 100644
--- a/src/client.c
+++ b/src/client.c
@@ -476,50 +476,44 @@ int client_manager_io(void)
fd_set efds;
struct client *client, *n;
int selret;
- int fdmax;
+ int fdmax = 0;
- while (1) {
- fdmax = 0;
+ FD_ZERO( &efds );
+ client_manager_register_read_fd(&rfds, &fdmax);
+ client_manager_register_write_fd(&wfds, &fdmax);
- FD_ZERO( &efds );
- client_manager_register_read_fd(&rfds, &fdmax);
- client_manager_register_write_fd(&wfds, &fdmax);
+ registered_IO_add_fds(&fdmax, &rfds, &wfds, &efds);
- registered_IO_add_fds(&fdmax, &rfds, &wfds, &efds);
+ main_notify_lock();
+ selret = select(fdmax + 1, &rfds, &wfds, &efds, NULL);
+ main_notify_unlock();
- main_notify_lock();
- selret = select(fdmax + 1, &rfds, &wfds, &efds, NULL);
- main_notify_unlock();
+ if (selret < 0) {
+ if (errno == EINTR)
+ return 0;
- if (selret < 0) {
- if (errno == EINTR)
- break;
-
- FATAL("select() failed: %s\n", strerror(errno));
- }
+ FATAL("select() failed: %s\n", strerror(errno));
+ }
- registered_IO_consume_fds(&selret, &rfds, &wfds, &efds);
+ registered_IO_consume_fds(&selret, &rfds, &wfds, &efds);
- getConnections(&rfds);
+ getConnections(&rfds);
- list_for_each_entry_safe(client, n, &clients, siblings) {
- if (FD_ISSET(client->fd, &rfds)) {
- if (COMMAND_RETURN_KILL ==
- client_read(client)) {
- return COMMAND_RETURN_KILL;
- }
- client->lastTime = time(NULL);
- }
- if (FD_ISSET(client->fd, &wfds)) {
- client_write_deferred(client);
- client->lastTime = time(NULL);
+ list_for_each_entry_safe(client, n, &clients, siblings) {
+ if (FD_ISSET(client->fd, &rfds)) {
+ if (COMMAND_RETURN_KILL ==
+ client_read(client)) {
+ return COMMAND_RETURN_KILL;
}
+ client->lastTime = time(NULL);
+ }
+ if (FD_ISSET(client->fd, &wfds)) {
+ client_write_deferred(client);
+ client->lastTime = time(NULL);
}
-
- break;
}
- return 1;
+ return 0;
}
void client_manager_init(void)