X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Fsilcd%2Fserver_util.c;h=6e3056c7e49fae5e9fda99e00f31b6b13f3ae7b3;hb=a93321c8c98c4a84f5b3aefbb4f013d8978ec9b8;hp=713b8528bd336120251b811259921e49218ab921;hpb=d56ab2d482dd7f21ceb3b18a1f4fe833bc0a9c3f;p=silc.git diff --git a/apps/silcd/server_util.c b/apps/silcd/server_util.c index 713b8528..6e3056c7 100644 --- a/apps/silcd/server_util.c +++ b/apps/silcd/server_util.c @@ -77,7 +77,7 @@ silc_server_remove_clients_channels(SilcServer server, silc_free(chl); /* Update statistics */ - if (client->connection) + if (SILC_IS_LOCAL(client)) server->stat.my_chanclients--; if (server->server_type == SILC_ROUTER) { server->stat.cell_chanclients--; @@ -762,7 +762,7 @@ bool silc_server_channel_delete(SilcServer server, channel->user_count--; /* Update statistics */ - if (chl->client->connection) + if (SILC_IS_LOCAL(chl->client)) server->stat.my_chanclients--; if (server->server_type == SILC_ROUTER) { server->stat.cell_chanclients--; @@ -1307,12 +1307,17 @@ void silc_server_kill_client(SilcServer server, } else { /* Update statistics */ server->stat.clients--; - server->stat.my_clients--; if (server->stat.cell_clients) server->stat.cell_clients--; SILC_OPER_STATS_UPDATE(remote_client, server, SILC_UMODE_SERVER_OPERATOR); SILC_OPER_STATS_UPDATE(remote_client, router, SILC_UMODE_ROUTER_OPERATOR); + if (SILC_IS_LOCAL(remote_client)) { + server->stat.my_clients--; + silc_schedule_task_del_by_context(server->schedule, remote_client); + silc_idlist_del_data(remote_client); + } + /* Remove remote client */ if (!silc_idlist_del_client(server->global_list, remote_client)) { /* Remove this client from watcher list if it is */