client: don't leak file descriptor on exit
[fio.git] / client.c
index 6230a66e032258f338c55fa8c05e72bf4d6ad833..86ac8f4179a7d488b94001bf53367a7594a9749b 100644 (file)
--- a/client.c
+++ b/client.c
@@ -131,6 +131,9 @@ static void remove_client(struct fio_client *client)
                fio_client_dec_jobs_eta(client->eta_in_flight, client->ops->eta);
        }
 
+       close(client->fd);
+       client->fd = -1;
+
        nr_clients--;
        sum_stat_clients--;
 
@@ -373,7 +376,7 @@ int fio_client_connect(struct fio_client *client)
 
 void fio_client_terminate(struct fio_client *client)
 {
-       fio_net_send_simple_cmd(client->fd, FIO_NET_CMD_QUIT, 0, NULL);
+       fio_net_send_quit(client->fd);
 }
 
 void fio_clients_terminate(void)
@@ -1118,7 +1121,8 @@ int fio_handle_client(struct fio_client *client)
 
                convert_stop(cmd);
                client->state = Client_stopped;
-               client->error = pdu->error;
+               client->error = le32_to_cpu(pdu->error);
+               client->signal = le32_to_cpu(pdu->signal);
                ops->stop(client, cmd);
                free(cmd);
                break;