X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Fsilcd%2Fserver.c;h=fab3d975a72344ea6c0c22dc404a0e3c88f060a1;hb=386c883d8774999c6e74d7c6c37e52e4163a4cb1;hp=c2caa843ab5c8fe977e536bf8e2d3c3d0b264540;hpb=f5655eda8412bc7b03b6162cad01ad612719ad4a;p=silc.git diff --git a/apps/silcd/server.c b/apps/silcd/server.c index c2caa843..fab3d975 100644 --- a/apps/silcd/server.c +++ b/apps/silcd/server.c @@ -1041,9 +1041,9 @@ silc_server_accept_new_connection_lookup(SilcSocketConnection sock, port = server->sockets[server->sock]->port; /* Listenning port */ /* Check whether this connection is denied to connect to us. */ - deny = silc_server_config_find_denied(server, sock->ip, port); + deny = silc_server_config_find_denied(server, sock->ip); if (!deny) - deny = silc_server_config_find_denied(server, sock->hostname, port); + deny = silc_server_config_find_denied(server, sock->hostname); if (deny) { /* The connection is denied */ SILC_LOG_INFO(("Connection %s (%s) is denied", @@ -2642,6 +2642,7 @@ void silc_server_remove_from_channels(SilcServer server, /* Remove client from channel's client list */ silc_hash_table_del(channel->user_list, chl->client); + channel->user_count--; /* If there is no global users on the channel anymore mark the channel as local channel. Do not check if the removed client is local client. */ @@ -2679,6 +2680,7 @@ void silc_server_remove_from_channels(SilcServer server, while (silc_hash_table_get(&htl2, NULL, (void *)&chl2)) { silc_hash_table_del(chl2->client->channels, channel); silc_hash_table_del(channel->user_list, chl2->client); + channel->user_count--; silc_free(chl2); } silc_hash_table_list_reset(&htl2); @@ -2766,6 +2768,7 @@ int silc_server_remove_from_one_channel(SilcServer server, /* Remove client from channel's client list */ silc_hash_table_del(channel->user_list, chl->client); + channel->user_count--; /* If there is no global users on the channel anymore mark the channel as local channel. Do not check if the client is local client. */ @@ -2802,6 +2805,7 @@ int silc_server_remove_from_one_channel(SilcServer server, while (silc_hash_table_get(&htl2, NULL, (void *)&chl2)) { silc_hash_table_del(chl2->client->channels, channel); silc_hash_table_del(channel->user_list, chl2->client); + channel->user_count--; silc_free(chl2); } silc_hash_table_list_reset(&htl2); @@ -3062,8 +3066,7 @@ bool silc_server_create_channel_key(SilcServer server, /* Save the key */ channel->key_len = len * 8; - channel->key = silc_calloc(len, sizeof(*channel->key)); - memcpy(channel->key, channel_key, len); + channel->key = silc_memdup(channel_key, len); memset(channel_key, 0, sizeof(channel_key)); /* Generate HMAC key from the channel key data and set it */ @@ -3174,8 +3177,7 @@ SilcChannelEntry silc_server_save_channel_key(SilcServer server, /* Save the key */ channel->key_len = tmp_len * 8; - channel->key = silc_calloc(tmp_len, sizeof(unsigned char)); - memcpy(channel->key, tmp, tmp_len); + channel->key = silc_memdup(tmp, tmp_len); silc_cipher_set_key(channel->channel_key, tmp, channel->key_len); /* Generate HMAC key from the channel key data and set it */ @@ -3880,6 +3882,7 @@ void silc_server_save_users_on_channel(SilcServer server, chl->channel = channel; silc_hash_table_add(channel->user_list, chl->client, chl); silc_hash_table_add(client->channels, chl->channel, chl); + channel->user_count++; } } }