X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Fsilcd%2Fcommand.c;h=567a0f9228de8c0d11b75f8bd0bc32aeb0e4e286;hb=8d1a8bbf644f67f86e7e1b95cf51d6d49406251f;hp=0125c55e5a10372c82f160d8b61b5eae82aa3217;hpb=5e5526c98cc281231e020220a3a9c3eaa31df68f;p=silc.git diff --git a/apps/silcd/command.c b/apps/silcd/command.c index 0125c55e..567a0f92 100644 --- a/apps/silcd/command.c +++ b/apps/silcd/command.c @@ -678,6 +678,24 @@ silc_server_command_whois_send_reply(SilcServerCommandContext cmd, if (clients[i]->data.status & SILC_IDLIST_STATUS_REGISTERED) len++; + if (len == 0 && clients_count) { + entry = clients[0]; + if (entry->nickname) { + silc_server_command_send_status_data(cmd, SILC_COMMAND_WHOIS, + SILC_STATUS_ERR_NO_SUCH_NICK, + 3, entry->nickname, + strlen(entry->nickname)); + } else { + SilcBuffer idp = silc_id_payload_encode(entry->id, SILC_ID_CLIENT); + silc_server_command_send_status_data(cmd, SILC_COMMAND_WHOIS, + SILC_STATUS_ERR_NO_SUCH_CLIENT_ID, + 2, idp->data, idp->len); + silc_buffer_free(idp); + } + + return; + } + status = SILC_STATUS_OK; if (len > 1) status = SILC_STATUS_LIST_START; @@ -1629,6 +1647,24 @@ silc_server_command_identify_send_reply(SilcServerCommandContext cmd, if (clients[i]->data.status & SILC_IDLIST_STATUS_REGISTERED) len++; + if (len == 0 && clients_count) { + entry = clients[0]; + if (entry->nickname) { + silc_server_command_send_status_data(cmd, SILC_COMMAND_IDENTIFY, + SILC_STATUS_ERR_NO_SUCH_NICK, + 3, entry->nickname, + strlen(entry->nickname)); + } else { + SilcBuffer idp = silc_id_payload_encode(entry->id, SILC_ID_CLIENT); + silc_server_command_send_status_data(cmd, SILC_COMMAND_IDENTIFY, + SILC_STATUS_ERR_NO_SUCH_CLIENT_ID, + 2, idp->data, idp->len); + silc_buffer_free(idp); + } + + return; + } + if (len > 1) status = SILC_STATUS_LIST_START; @@ -1639,7 +1675,7 @@ silc_server_command_identify_send_reply(SilcServerCommandContext cmd, if (clients_count == 1) { SilcBuffer idp = silc_id_payload_encode(entry->id, SILC_ID_CLIENT); silc_server_command_send_status_data(cmd, SILC_COMMAND_IDENTIFY, - SILC_STATUS_ERR_NO_SUCH_CLIENT_ID, + SILC_STATUS_ERR_NO_SUCH_CLIENT_ID, 2, idp->data, idp->len); silc_buffer_free(idp); }