updates.
authorPekka Riikonen <priikone@silcnet.org>
Mon, 4 Jun 2001 14:55:20 +0000 (14:55 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Mon, 4 Jun 2001 14:55:20 +0000 (14:55 +0000)
CHANGES
apps/silcd/packet_receive.c
lib/silcclient/command_reply.c

diff --git a/CHANGES b/CHANGES
index b92a6beae58ce885dc9999adf9c39c265b07565f..2d3e39bca9940fb4ca0d8455c2ba11fad5de050c 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -9,7 +9,10 @@ Mon Jun  4 17:57:16 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
 
        * Resolve the client in USERS command reply if the entry does
          not have username resolved.  The affected file is
-         lib/silcclient/command_reply.c.
+         lib/silcclient/command_reply.c.  Also, changed the IDENTIFY
+         command to WHOIS command to really resolve stuff.  The USERS
+         is not used any more in any critical section so WHOIS can
+         be used even though it might be slower than IDENTIFY.
 
 Sun Jun  3 14:21:32 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
 
index fe420c61f635e38d5e9fb6557c004556fd55ce0b..5a378df872df397d85a68f4e37ef819f5f634c92 100644 (file)
@@ -278,6 +278,9 @@ void silc_server_notify(SilcServer server,
 
     client->data.registered = FALSE;
     cache->expire = SILC_ID_CACHE_EXPIRE_DEF;
+    server->stat.clients--;
+    if (server->server_type == SILC_ROUTER)
+      server->stat.cell_clients--;
     break;
 
   case SILC_NOTIFY_TYPE_TOPIC_SET:
index 676e9a2553673406633a577d112b4c0608131b9e..17d0b3301c9eb9deeba88572870afa4490079763 100644 (file)
@@ -1635,13 +1635,17 @@ SILC_CLIENT_CMD_REPLY_FUNC(users)
     SILC_GET32_MSB(mode, client_mode_list->data);
 
     /* Check if we have this client cached already. */
-    if (!silc_idcache_find_by_id_one_ext(conn->client_cache, 
-                                        (void *)client_id, 
-                                        NULL, NULL, 
-                                        silc_hash_client_id_compare, NULL,
-                                        &id_cache)) {
-      /* No we don't have it, query it from the server. Assemble argument
-        table that will be sent fr the IDENTIFY command later. */
+    id_cache = NULL;
+    silc_idcache_find_by_id_one_ext(conn->client_cache, 
+                                   (void *)client_id, 
+                                   NULL, NULL, 
+                                   silc_hash_client_id_compare, NULL,
+                                   &id_cache);
+
+    if (!id_cache || !((SilcClientEntry)id_cache->context)->username) {
+      /* No we don't have it (or it is incomplete in information), query
+        it from the server. Assemble argument table that will be sent
+        for the IDENTIFY command later. */
       res_argv = silc_realloc(res_argv, sizeof(*res_argv) *
                              (res_argc + 1));
       res_argv_lens = silc_realloc(res_argv_lens, sizeof(*res_argv_lens) *