Committed WHOIS search by public key patch from pat.
[silc.git] / apps / silcd / server_util.c
index 2cc4907804fabca8ebffc23fe4fb2b43de50d6aa..4002efa17795d0410af03f14c6f4ae846cb3c97b 100644 (file)
@@ -211,6 +211,10 @@ bool silc_server_remove_clients_by_server(SilcServer server,
        SILC_OPER_STATS_UPDATE(client, server, SILC_UMODE_SERVER_OPERATOR);
        SILC_OPER_STATS_UPDATE(client, router, SILC_UMODE_ROUTER_OPERATOR);
 
+       if (client->data.public_key)
+         silc_hash_table_del_by_context(server->pk_hash,
+                                        client->data.public_key,
+                                        client);
        silc_server_remove_clients_channels(server, entry, clients,
                                            client, channels);
        silc_server_del_from_watcher_list(server, client);
@@ -271,6 +275,10 @@ bool silc_server_remove_clients_by_server(SilcServer server,
        SILC_OPER_STATS_UPDATE(client, server, SILC_UMODE_SERVER_OPERATOR);
        SILC_OPER_STATS_UPDATE(client, router, SILC_UMODE_ROUTER_OPERATOR);
 
+       if (client->data.public_key)
+         silc_hash_table_del_by_context(server->pk_hash,
+                                        client->data.public_key,
+                                        client);
        silc_server_remove_clients_channels(server, entry, clients,
                                            client, channels);
        silc_server_del_from_watcher_list(server, client);
@@ -1640,6 +1648,11 @@ void silc_server_kill_client(SilcServer server,
       silc_idlist_del_data(remote_client);
     }
 
+    if (remote_client->data.public_key)
+      silc_hash_table_del_by_context(server->pk_hash,
+                                     remote_client->data.public_key,
+                                     remote_client);
+
     /* Remove remote client */
     silc_idlist_del_data(remote_client);
     if (!silc_idlist_del_client(server->global_list, remote_client)) {