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.
This commit is contained in:
parent
f6a7dd2b45
commit
34735fab66
68
src/client.c
68
src/client.c
@ -476,50 +476,44 @@ int client_manager_io(void)
|
|||||||
fd_set efds;
|
fd_set efds;
|
||||||
struct client *client, *n;
|
struct client *client, *n;
|
||||||
int selret;
|
int selret;
|
||||||
int fdmax;
|
int fdmax = 0;
|
||||||
|
|
||||||
while (1) {
|
FD_ZERO( &efds );
|
||||||
fdmax = 0;
|
client_manager_register_read_fd(&rfds, &fdmax);
|
||||||
|
client_manager_register_write_fd(&wfds, &fdmax);
|
||||||
|
|
||||||
FD_ZERO( &efds );
|
registered_IO_add_fds(&fdmax, &rfds, &wfds, &efds);
|
||||||
client_manager_register_read_fd(&rfds, &fdmax);
|
|
||||||
client_manager_register_write_fd(&wfds, &fdmax);
|
|
||||||
|
|
||||||
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();
|
if (selret < 0) {
|
||||||
selret = select(fdmax + 1, &rfds, &wfds, &efds, NULL);
|
if (errno == EINTR)
|
||||||
main_notify_unlock();
|
return 0;
|
||||||
|
|
||||||
if (selret < 0) {
|
FATAL("select() failed: %s\n", strerror(errno));
|
||||||
if (errno == EINTR)
|
|
||||||
break;
|
|
||||||
|
|
||||||
FATAL("select() failed: %s\n", strerror(errno));
|
|
||||||
}
|
|
||||||
|
|
||||||
registered_IO_consume_fds(&selret, &rfds, &wfds, &efds);
|
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
registered_IO_consume_fds(&selret, &rfds, &wfds, &efds);
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void client_manager_init(void)
|
void client_manager_init(void)
|
||||||
|
Loading…
Reference in New Issue
Block a user