From 392db93175fb0897e876663d60222df57596018b Mon Sep 17 00:00:00 2001 From: Pekka Riikonen Date: Thu, 7 Jun 2007 18:29:14 +0000 Subject: [PATCH] Check server name in nick@server string. Return matching clients. --- CHANGES | 6 ++++++ lib/silcclient/client_entry.c | 11 ++++++++++- lib/silcclient/command_reply.c | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index cb943124..c175c0c5 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,9 @@ +Thu Jun 7 21:25:31 EEST 2007 Pekka Riikonen + + * Fixed silc_client_get_clients_local to check the nick's + server also if nick@server nickname string is given to the + function. Affected file is lib/silcclient/client_entry.c. + Wed Jun 6 18:33:05 EEST 2007 Pekka Riikonen * Added notify callback to silc_schedule_init which can be used to diff --git a/lib/silcclient/client_entry.c b/lib/silcclient/client_entry.c index 705e1cd1..6a92210a 100644 --- a/lib/silcclient/client_entry.c +++ b/lib/silcclient/client_entry.c @@ -73,12 +73,13 @@ SilcDList silc_client_get_clients_local_ext(SilcClient client, SilcDList clients; SilcClientEntry entry; char nick[128 + 1], *nicknamec, *parsed = NULL, *format = NULL; + char server[256 + 1]; if (!client || !conn || !nickname) return NULL; /* Get nickname from nickname@server string */ - silc_parse_userfqdn(nickname, nick, sizeof(nick), NULL, 0); + silc_parse_userfqdn(nickname, nick, sizeof(nick), server, sizeof(server)); /* Parse nickname in case it is formatted */ if (!silc_client_nickname_parse(client, conn, (char *)nick, &parsed)) @@ -136,6 +137,14 @@ SilcDList silc_client_get_clients_local_ext(SilcClient client, /* Check multiple cache entries for exact match */ while ((id_cache = silc_list_get(list))) { entry = id_cache->context; + + /* If server was provided, find entries that either have no server + set or have the same server. Ignore those that have different + server. */ + if (server[0] && entry->server && + !silc_utf8_strcasecmp(entry->server, server)) + continue; + if (silc_utf8_strcasecmp(entry->nickname, format ? format : parsed) && (!get_valid || entry->internal.valid)) { diff --git a/lib/silcclient/command_reply.c b/lib/silcclient/command_reply.c index 9dda29d3..4cb7db06 100644 --- a/lib/silcclient/command_reply.c +++ b/lib/silcclient/command_reply.c @@ -221,7 +221,7 @@ SILC_FSM_STATE(silc_client_command_reply_wait) /** Wait for command reply */ silc_fsm_set_state_context(fsm, NULL); silc_fsm_next_later(fsm, silc_client_command_reply_timeout, - cmd->cmd != SILC_COMMAND_PING ? 25 : 60, 0); + cmd->cmd != SILC_COMMAND_PING ? 40 : 60, 0); return SILC_FSM_WAIT; } -- 2.24.0