-
- detached_client->router = NULL;
-
- /* Delete this client entry since we're resuming to old one. */
- server->stat.my_clients--;
- server->stat.clients--;
- if (server->stat.cell_clients)
- server->stat.cell_clients--;
- silc_server_remove_from_channels(server, NULL, client, FALSE,
- NULL, FALSE, FALSE);
- silc_server_del_from_watcher_list(server, client);
- if (!silc_idlist_del_client(server->local_list, client))
- silc_idlist_del_client(server->global_list, client);
- client = detached_client;
- silc_free(client->servername);
- client->servername = strdup(server->server_name);
-
- /* If the ID is not based in our ID then change it */
- if (!SILC_ID_COMPARE(client->id, server->id, server->id->ip.data_len)) {
- silc_free(client_id);
- while (!silc_id_create_client_id(server, server->id, server->rng,
- server->md5hash, client->nickname,
- &client_id)) {
- nickfail++;
- if (nickfail > 9) {
- silc_server_disconnect_remote(server, sock,
- SILC_STATUS_ERR_BAD_NICKNAME, NULL);
- if (sock->user_data)
- silc_server_free_sock_user_data(server, sock, NULL);
- return;
- }
- snprintf(&client->nickname[strlen(client->nickname) - 1], 1,
- "%d", nickfail);
- }
- nick_change = TRUE;
- }