silcd: IDENTIFY command reply didn't save userinfo correctly
[silc.git] / apps / silcd / command_reply.c
index b54126cfcd7c48645ed73957f65a642ca61ad606..47c7a3f5315aad7e49dfb9c552d44e14077072b2 100644 (file)
@@ -236,6 +236,10 @@ silc_server_command_reply_whois_save(SilcServerCommandReplyContext cmd)
     client->data.status &= ~SILC_IDLIST_STATUS_RESOLVING;
     client->mode = mode;
     client->servername = servername[0] ? strdup(servername) : NULL;
+
+    SILC_LOG_DEBUG(("stat.clients %d->%d", server->stat.clients,
+                   server->stat.clients + 1));
+    server->stat.clients++;
   } else {
     /* We have the client already, update the data */
 
@@ -648,7 +652,8 @@ silc_server_command_reply_identify_save(SilcServerCommandReplyContext cmd)
         to global list since server didn't have it in the lists so it must be
         global. */
       client = silc_idlist_add_client(server->global_list,
-                                     nick[0] ? nick : NULL, info, NULL,
+                                     nick[0] ? strdup(nick) : NULL, 
+                                     info ? strdup(info) : NULL, NULL,
                                      silc_id_dup(&client_id, SILC_ID_CLIENT),
                                      silc_packet_get_context(cmd->sock),
                                      NULL);
@@ -660,6 +665,10 @@ silc_server_command_reply_identify_save(SilcServerCommandReplyContext cmd)
       client->data.status |= SILC_IDLIST_STATUS_REGISTERED;
       client->data.status |= SILC_IDLIST_STATUS_RESOLVED;
       client->data.status &= ~SILC_IDLIST_STATUS_RESOLVING;
+
+      SILC_LOG_DEBUG(("stat.clients %d->%d", server->stat.clients,
+                     server->stat.clients + 1));
+      server->stat.clients++;
     } else {
       /* We have the client already, update the data */
 
@@ -1242,7 +1251,7 @@ SILC_SERVER_CMD_REPLY_FUNC(stats)
                         SILC_STR_END);
   }
 
-  SILC_LOG_DEBUG(("stat.clients = %d\n", server->stat.clients));
+  SILC_LOG_DEBUG(("stat.clients = %d", server->stat.clients));
 
  out:
   SILC_SERVER_PENDING_EXEC(cmd, SILC_COMMAND_STATS);