X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=client.c;h=c8e4a4dcff728935859270d720d1bb6e062e8080;hp=d538e8ab95cdecb6dabde63dbf7469c1416fef80;hb=c2c9458515bda1f77e25f95122ef6ec8d8cc3ec7;hpb=802ad4a83e92a30b5fdccf117d59fbb69068c054 diff --git a/client.c b/client.c index d538e8ab..c8e4a4dc 100644 --- a/client.c +++ b/client.c @@ -87,31 +87,38 @@ static void remove_client(struct fio_client *client) free(client); } -static void __fio_client_add_cmd_option(struct fio_client *client, - const char *opt) +static int __fio_client_add_cmd_option(struct fio_client *client, + const char *opt) { int index; + if (client->argc == FIO_NET_CMD_JOBLINE_ARGV) { + log_err("fio: max cmd line number reached.\n"); + log_err("fio: cmd line <%s> has been ignored.\n", opt); + return 1; + } + index = client->argc++; client->argv = realloc(client->argv, sizeof(char *) * client->argc); client->argv[index] = strdup(opt); dprint(FD_NET, "client: add cmd %d: %s\n", index, opt); + return 0; } -void fio_client_add_cmd_option(const char *hostname, const char *opt) +int fio_client_add_cmd_option(const char *hostname, const char *opt) { struct fio_client *client; if (!hostname || !opt) - return; + return 0; client = find_client_by_name(hostname); if (!client) { log_err("fio: unknown client %s\n", hostname); - return; + return 1; } - __fio_client_add_cmd_option(client, opt); + return __fio_client_add_cmd_option(client, opt); } void fio_client_add(const char *hostname) @@ -475,13 +482,15 @@ static void handle_probe(struct fio_net_cmd *cmd) static int handle_client(struct fio_client *client, int one) { struct fio_net_cmd *cmd; - int done = 0; + int done = 0, did_cmd = 0; dprint(FD_NET, "client: handle %s\n", client->hostname); while ((cmd = fio_net_recv_cmd(client->fd, 1)) != NULL) { - dprint(FD_NET, "%s: got cmd op %d\n", client->hostname, - cmd->opcode); + did_cmd++; + + dprint(FD_NET, "client: got cmd op %d from %s\n", + cmd->opcode, client->hostname); switch (cmd->opcode) { case FIO_NET_CMD_QUIT: @@ -491,10 +500,11 @@ static int handle_client(struct fio_client *client, int one) break; case FIO_NET_CMD_TEXT: { const char *buf = (const char *) cmd->payload; + int fio_unused ret; if (!client->skip_newline) - fprintf(f_out, "Client <%s>: ", client->hostname); - fwrite(buf, cmd->pdu_len, 1, f_out); + fprintf(f_out, "<%s> ", client->hostname); + ret = fwrite(buf, cmd->pdu_len, 1, f_out); fflush(f_out); client->skip_newline = strchr(buf, '\n') == NULL; free(cmd); @@ -534,7 +544,7 @@ static int handle_client(struct fio_client *client, int one) break; } - return 0; + return did_cmd; } int fio_handle_clients(void)