client: Fix another memory leak in an error path
[fio.git] / client.c
index ac246514bfeb3512413fa9ee2adfd53ab3af6718..a3554638e67c09758f462e0d090e20e4de9081ca 100644 (file)
--- a/client.c
+++ b/client.c
@@ -390,8 +390,6 @@ struct fio_client *fio_client_add_explicit(struct client_ops *ops,
 
        client = get_new_client();
 
-       client->hostname = strdup(hostname);
-
        if (type == Fio_client_socket)
                client->is_sock = true;
        else {
@@ -410,6 +408,7 @@ struct fio_client *fio_client_add_explicit(struct client_ops *ops,
        client->ops = ops;
        client->refs = 1;
        client->type = ops->client_type;
+       client->hostname = strdup(hostname);
 
        __fio_client_add_cmd_option(client, "fio");
 
@@ -471,8 +470,10 @@ int fio_client_add(struct client_ops *ops, const char *hostname, void **cookie)
                                        &client->is_sock, &client->port,
                                        &client->addr.sin_addr,
                                        &client->addr6.sin6_addr,
-                                       &client->ipv6))
+                                       &client->ipv6)) {
+               fio_put_client(client);
                return -1;
+       }
 
        client->fd = -1;
        client->ops = ops;
@@ -969,6 +970,7 @@ static void convert_ts(struct thread_stat *dst, struct thread_stat *src)
        dst->majf               = le64_to_cpu(src->majf);
        dst->clat_percentiles   = le32_to_cpu(src->clat_percentiles);
        dst->lat_percentiles    = le32_to_cpu(src->lat_percentiles);
+       dst->slat_percentiles   = le32_to_cpu(src->slat_percentiles);
        dst->percentile_precision = le64_to_cpu(src->percentile_precision);
 
        for (i = 0; i < FIO_IO_U_LIST_MAX_LEN; i++) {
@@ -1036,10 +1038,10 @@ static void convert_ts(struct thread_stat *dst, struct thread_stat *src)
        for (i = 0; i < DDIR_RWDIR_CNT; i++) {
                for (j = 0; j < FIO_IO_U_PLAT_NR; j++) {
                        dst->io_u_plat_high_prio[i][j] = le64_to_cpu(src->io_u_plat_high_prio[i][j]);
-                       dst->io_u_plat_prio[i][j] = le64_to_cpu(src->io_u_plat_prio[i][j]);
+                       dst->io_u_plat_low_prio[i][j] = le64_to_cpu(src->io_u_plat_low_prio[i][j]);
                }
                convert_io_stat(&dst->clat_high_prio_stat[i], &src->clat_high_prio_stat[i]);
-               convert_io_stat(&dst->clat_prio_stat[i], &src->clat_prio_stat[i]);
+               convert_io_stat(&dst->clat_low_prio_stat[i], &src->clat_low_prio_stat[i]);
        }
 
        dst->ss_dur             = le64_to_cpu(src->ss_dur);