X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=client.c;h=c080c17d03fadaf36466398bb7c062c0bb15b5d0;hp=054043d4eb423f913009644434c062fe77b0959b;hb=82a4be1bcef4228233e61b0b034ad6eb78a7558c;hpb=337d75a81c40aef6d693fc0d18e78b0c2444a1be diff --git a/client.c b/client.c index 054043d4..c080c17d 100644 --- a/client.c +++ b/client.c @@ -61,7 +61,6 @@ static struct fio_client *find_client_by_name(const char *name) static void remove_client(struct fio_client *client) { - printf("remove client %s\n", client->hostname); flist_del(&client->list); nr_clients--; free(client->hostname); @@ -231,19 +230,22 @@ int fio_handle_clients(void) struct fio_client *client; struct flist_head *entry; struct pollfd *pfds; - int i = 0, ret = 0; + int i, ret = 0; pfds = malloc(nr_clients * sizeof(struct pollfd)); - flist_for_each(entry, &client_list) { - client = flist_entry(entry, struct fio_client, list); + while (!exit_backend && nr_clients) { + i = 0; + flist_for_each(entry, &client_list) { + client = flist_entry(entry, struct fio_client, list); - pfds[i].fd = client->fd; - pfds[i].events = POLLIN; - i++; - } + pfds[i].fd = client->fd; + pfds[i].events = POLLIN; + i++; + } + + assert(i == nr_clients); - while (!exit_backend && nr_clients) { ret = poll(pfds, nr_clients, 100); if (ret < 0) { if (errno == EINTR)