X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Fsilcd%2Fserver.c;h=b622ed877185d31d0eb2eb623ad63222c8c66ab9;hb=a93321c8c98c4a84f5b3aefbb4f013d8978ec9b8;hp=ee5765eeb5fe2143aa5d82c5aae7b88ac033d1cd;hpb=d56ab2d482dd7f21ceb3b18a1f4fe833bc0a9c3f;p=silc.git diff --git a/apps/silcd/server.c b/apps/silcd/server.c index ee5765ee..b622ed87 100644 --- a/apps/silcd/server.c +++ b/apps/silcd/server.c @@ -1573,6 +1573,7 @@ SILC_TASK_CALLBACK(silc_server_accept_new_connection_final) server->stat.auth_failures++; goto out; } + entry->data.status |= SILC_IDLIST_STATUS_LOCAL; /* Statistics */ server->stat.my_clients++; @@ -1677,6 +1678,7 @@ SILC_TASK_CALLBACK(silc_server_accept_new_connection_final) server->stat.auth_failures++; goto out; } + entry->data.status |= SILC_IDLIST_STATUS_LOCAL; /* Statistics */ if (ctx->conn_type == SILC_SOCKET_TYPE_SERVER) { @@ -1875,8 +1877,6 @@ SILC_TASK_CALLBACK(silc_server_packet_process) return; } - server->stat.packets_received++; - /* Get keys and stuff from ID entry */ idata = (SilcIDListData)sock->user_data; if (idata) { @@ -1917,6 +1917,8 @@ SILC_TASK_CALLBACK(silc_server_packet_parse_real) SilcIDListData idata = (SilcIDListData)sock->user_data; int ret; + server->stat.packets_received++; + /* Parse the packet */ if (parse_ctx->normal) ret = silc_packet_parse(packet, idata ? idata->receive_key : NULL); @@ -2924,7 +2926,7 @@ void silc_server_remove_from_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--; @@ -3022,7 +3024,7 @@ bool silc_server_remove_from_one_channel(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--; @@ -3992,6 +3994,20 @@ void silc_server_announce_channels(SilcServer server, silc_buffer_free(channels); } + if (channel_users) { + silc_buffer_push(channel_users, channel_users->data - channel_users->head); + SILC_LOG_HEXDUMP(("channel users"), channel_users->data, + channel_users->len); + + /* Send the packet */ + silc_server_packet_send(server, remote, + SILC_PACKET_NOTIFY, SILC_PACKET_FLAG_LIST, + channel_users->data, channel_users->len, + FALSE); + + silc_buffer_free(channel_users); + } + if (channel_modes) { int i; @@ -4014,20 +4030,6 @@ void silc_server_announce_channels(SilcServer server, silc_free(channel_modes); } - if (channel_users) { - silc_buffer_push(channel_users, channel_users->data - channel_users->head); - SILC_LOG_HEXDUMP(("channel users"), channel_users->data, - channel_users->len); - - /* Send the packet */ - silc_server_packet_send(server, remote, - SILC_PACKET_NOTIFY, SILC_PACKET_FLAG_LIST, - channel_users->data, channel_users->len, - FALSE); - - silc_buffer_free(channel_users); - } - if (channel_users_modes) { int i;