if (conn->internal->sha1hash)
silc_hash_free(conn->internal->sha1hash);
silc_atomic_uninit16(&conn->internal->cmd_ident);
+ silc_free(conn->internal->away_message);
+ if (conn->internal->rekey)
+ silc_ske_free_rekey_material(conn->internal->rekey);
+ if (conn->internal->cop)
+ silc_async_free(conn->internal->cop);
silc_free(conn->internal);
memset(conn, 'F', sizeof(*conn));
{
SILC_LOG_DEBUG(("Closing connection %p", conn));
- /* If connection machine is not running, we just delete the connection */
- if (!silc_fsm_is_started(&conn->internal->fsm)) {
- silc_packet_stream_destroy(conn->stream);
- silc_client_del_connection(conn->client, conn);
- return;
- }
-
/* Signal to close connection */
conn->internal->status = SILC_CLIENT_CONN_DISCONNECTED;
if (!conn->internal->disconnected) {
silc_hmac_unregister_all();
}
+ silc_packet_engine_stop(client->internal->packet_engine);
+ silc_dlist_uninit(client->internal->ftp_sessions);
silc_atomic_uninit16(&client->internal->conns);
+ silc_mutex_free(client->internal->lock);
silc_free(client->username);
silc_free(client->hostname);
silc_free(client->realname);