X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Fsilcd%2Fserver_util.c;h=274bd0f58b483bbefbbe4bd2baf06740056f30f3;hb=a939f27e19b8084ef2acd25156b19d26d1440ace;hp=1f61876fad7a3ccee4a8e446ce3bd42761f25921;hpb=2a65d397034737650cec5171f03918294ab89c7c;p=silc.git diff --git a/apps/silcd/server_util.c b/apps/silcd/server_util.c index 1f61876f..274bd0f5 100644 --- a/apps/silcd/server_util.c +++ b/apps/silcd/server_util.c @@ -228,6 +228,7 @@ SilcBool silc_server_remove_clients_by_server(SilcServer server, client->mode = 0; client->router = NULL; client->connection = NULL; + silc_dlist_del(server->expired_clients, client); silc_dlist_add(server->expired_clients, client); } else { silc_idlist_del_data(client); @@ -289,6 +290,7 @@ SilcBool silc_server_remove_clients_by_server(SilcServer server, client->mode = 0; client->router = NULL; client->connection = NULL; + silc_dlist_del(server->expired_clients, client); silc_dlist_add(server->expired_clients, client); } else { silc_idlist_del_data(client); @@ -1195,6 +1197,7 @@ SilcBool silc_server_connection_allowed(SilcServer server, silc_server_disconnect_remote(server, sock, SILC_STATUS_ERR_BAD_VERSION, "You support too old protocol version"); + silc_server_free_sock_user_data(server, sock, NULL); return FALSE; } @@ -1206,6 +1209,7 @@ SilcBool silc_server_connection_allowed(SilcServer server, silc_server_disconnect_remote(server, sock, SILC_STATUS_ERR_BAD_VERSION, "You support too old software version"); + silc_server_free_sock_user_data(server, sock, NULL); return FALSE; } @@ -1217,6 +1221,7 @@ SilcBool silc_server_connection_allowed(SilcServer server, silc_server_disconnect_remote(server, sock, SILC_STATUS_ERR_BAD_VERSION, "Your software is not supported"); + silc_server_free_sock_user_data(server, sock, NULL); return FALSE; } } @@ -1236,6 +1241,7 @@ SilcBool silc_server_connection_allowed(SilcServer server, silc_server_disconnect_remote(server, sock, SILC_STATUS_ERR_RESOURCE_LIMIT, "Server is full, try again later"); + silc_server_free_sock_user_data(server, sock, NULL); return FALSE; } @@ -1247,6 +1253,7 @@ SilcBool silc_server_connection_allowed(SilcServer server, silc_server_disconnect_remote(server, sock, SILC_STATUS_ERR_RESOURCE_LIMIT, "Too many connections from your host"); + silc_server_free_sock_user_data(server, sock, NULL); return FALSE; } @@ -1538,7 +1545,7 @@ void silc_server_kill_client(SilcServer server, if (remote_client->connection) { /* Remove locally conneted client */ SilcPacketStream sock = remote_client->connection; - silc_server_free_client_data(server, sock, remote_client, FALSE, NULL); + silc_server_free_sock_user_data(server, sock, NULL); silc_server_close_connection(server, sock); } else { /* Update statistics */ @@ -2102,6 +2109,8 @@ SilcBuffer silc_server_get_channel_pk_list(SilcServer server, silc_hash_table_list(channel->channel_pubkeys, &htl); while (silc_hash_table_get(&htl, NULL, (void *)&pk)) { pkp = silc_public_key_payload_encode(pk); + if (!pkp) + continue; list = silc_argument_payload_encode_one(list, pkp->data, silc_buffer_len(pkp), announce ? 0x03 :