X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcclient%2Fcommand.c;h=13d7fabda690fcddc0f0287295ef7be60cabcbd6;hb=167f333f9382922ef617147de238339c98792844;hp=0eed6981311cea8bcaea107d35515439af62e3b8;hpb=9f58e46226c1d1b8772fd1fb9b7c137c1c8f12e0;p=silc.git diff --git a/lib/silcclient/command.c b/lib/silcclient/command.c index 0eed6981..13d7fabd 100644 --- a/lib/silcclient/command.c +++ b/lib/silcclient/command.c @@ -238,6 +238,9 @@ silc_client_command_add_pending(SilcClientConnection conn, silc_list_add(cmd->reply_callbacks, cb); } + SILC_LOG_DEBUG(("pending: cmd %p, command %d, ident %d", cmd, cmd->cmd, + cmd->cmd_ident)); + /* Add pending reply */ silc_list_add(conn->internal->pending_commands, cmd); @@ -410,10 +413,10 @@ SilcUInt16 silc_client_command_call(SilcClient client, argv_lens = silc_realloc(argv_lens, sizeof(*argv_lens) * (argc + 1)); argv_types = silc_realloc(argv_types, sizeof(*argv_types) * (argc + 1)); if (!argv || !argv_lens || !argv_types) - return FALSE; + return 0; argv[argc] = silc_memdup(arg, strlen(arg)); if (!argv[argc]) - return FALSE; + return 0; argv_lens[argc] = strlen(arg); argv_types[argc] = argc; argc++; @@ -588,10 +591,16 @@ SILC_FSM_STATE(silc_client_command_whois) /* Given without arguments fetches client's own information */ if (cmd->argc < 2) { - silc_client_command_send(conn->client, conn, SILC_COMMAND_WHOIS, - NULL, NULL, 1, 4, - silc_buffer_datalen(conn->internal->local_idp)); - goto out; + silc_client_command_send_va(conn, cmd, cmd->cmd, NULL, NULL, 1, 4, + silc_buffer_data(conn->internal->local_idp), + silc_buffer_len(conn->internal->local_idp)); + + /* Notify application */ + COMMAND(SILC_STATUS_OK); + + /** Wait for command reply */ + silc_fsm_next(fsm, silc_client_command_reply_wait); + return SILC_FSM_CONTINUE; } for (i = 1; i < cmd->argc; i++) {