silc_server_remove_from_channels(server, NULL, client, TRUE,
NULL, TRUE, FALSE);
+ silc_dlist_del(server->expired_clients, client);
silc_idlist_del_data(client);
silc_idlist_del_client(server->global_list, client);
}
client = silc_idlist_find_client_by_id(server->global_list, client->id,
FALSE, &cache);
if (client && !silc_hash_table_count(client->channels)) {
+ client->data.created = silc_time();
silc_dlist_del(server->expired_clients, client);
silc_dlist_add(server->expired_clients, client);
}
client->mode = 0;
client->router = NULL;
client->connection = NULL;
+ client->data.created = silc_time();
silc_dlist_del(server->expired_clients, client);
silc_dlist_add(server->expired_clients, client);
break;
silc_server_del_from_watcher_list(server, client);
/* Remove the client */
+ silc_dlist_del(server->expired_clients, client);
silc_idlist_del_data(client);
silc_idlist_del_client(local ? server->local_list :
server->global_list, client);
client->mode = 0;
client->router = NULL;
client->connection = NULL;
+ client->data.created = silc_time();
silc_dlist_del(server->expired_clients, client);
silc_dlist_add(server->expired_clients, client);
break;
silc_server_remove_from_channels(server, NULL, client, TRUE,
NULL, TRUE, FALSE);
+ silc_dlist_del(server->expired_clients, client);
silc_idlist_del_data(client);
silc_idlist_del_client(server->global_list, client);
}
detached_client->data.status &= ~SILC_IDLIST_STATUS_RESUME_RES;
detached_client->mode &= ~SILC_UMODE_DETACHED;
server->stat.my_detached--;
+ silc_dlist_del(server->expired_clients, detached_client);
/* We are finished - reset resuming client */
detached_client->resuming_client = NULL;
silc_server_remove_from_channels(server, NULL, client, FALSE,
NULL, FALSE, FALSE);
silc_server_del_from_watcher_list(server, client);
+ silc_dlist_del(server->expired_clients, client);
if (!silc_idlist_del_client(server->local_list, client))
silc_idlist_del_client(server->global_list, client);
client = detached_client;
detached_client->data.status |= SILC_IDLIST_STATUS_RESUMED;
detached_client->data.status &= ~SILC_IDLIST_STATUS_LOCAL;
silc_dlist_del(server->expired_clients, detached_client);
- silc_dlist_del(server->expired_clients, detached_client);
/* Check if anyone is watching this client */
if (server->server_type == SILC_ROUTER)
client->mode = 0;
client->router = NULL;
client->connection = NULL;
+ client->data.created = silc_time();
silc_dlist_del(server->expired_clients, client);
silc_dlist_add(server->expired_clients, client);
} else {
client->mode = 0;
client->router = NULL;
client->connection = NULL;
+ client->data.created = silc_time();
silc_dlist_del(server->expired_clients, client);
silc_dlist_add(server->expired_clients, client);
} else {
}
/* Remove remote client */
+ silc_dlist_del(server->expired_clients, remote_client);
silc_idlist_del_data(remote_client);
if (!silc_idlist_del_client(server->global_list, remote_client)) {
/* Remove this client from watcher list if it is */