1
0
mirror of https://github.com/profanity-im/profanity.git synced 2024-12-04 14:46:46 -05:00

Add connection_clear_data()

This commit is contained in:
James Booth 2016-05-10 23:53:44 +01:00
parent a7fa27df01
commit 7e079f3684
3 changed files with 21 additions and 32 deletions

View File

@ -81,10 +81,10 @@ void
connection_init(void)
{
xmpp_initialize();
conn.conn_status = JABBER_DISCONNECTED;
conn.presence_message = NULL;
conn.xmpp_conn = NULL;
conn.xmpp_ctx = NULL;
conn.conn_status = JABBER_DISCONNECTED;
conn.presence_message = NULL;
conn.domain = NULL;
conn.features_by_jid = NULL;
conn.available_resources = g_hash_table_new_full(g_str_hash, g_str_equal, free, (GDestroyNotify)resource_destroy);
@ -93,8 +93,7 @@ connection_init(void)
void
connection_shutdown(void)
{
connection_disco_items_free();
connection_remove_all_available_resources();
connection_clear_data();
xmpp_shutdown();
free(conn.xmpp_log);
@ -206,6 +205,15 @@ connection_disconnect(void)
}
}
void
connection_clear_data(void)
{
g_hash_table_destroy(conn.features_by_jid);
conn.features_by_jid = NULL;
g_hash_table_remove_all(conn.available_resources);
}
#ifdef HAVE_LIBMESODE
TLSCertificate*
connection_get_tls_peer_cert(void)
@ -350,12 +358,6 @@ connection_remove_available_resource(const char *const resource)
g_hash_table_remove(conn.available_resources, resource);
}
void
connection_remove_all_available_resources(void)
{
g_hash_table_remove_all(conn.available_resources);
}
char*
connection_create_uuid(void)
{
@ -409,13 +411,6 @@ connection_set_priority(const int priority)
conn.priority = priority;
}
void
connection_disco_items_free(void)
{
g_hash_table_destroy(conn.features_by_jid);
conn.features_by_jid = NULL;
}
static void
_connection_handler(xmpp_conn_t *const xmpp_conn, const xmpp_conn_event_t status, const int error,
xmpp_stream_error_t *const stream_error, void *const userdata)

View File

@ -58,10 +58,10 @@ xmpp_ctx_t* connection_get_ctx(void);
char *connection_get_domain(void);
char* connection_jid_for_feature(const char *const feature);
GHashTable* connection_get_features(const char *const jid);
void connection_disco_items_free(void);
void connection_clear_data(void);
void connection_add_available_resource(Resource *resource);
void connection_remove_available_resource(const char *const resource);
void connection_remove_all_available_resources(void);
#endif

View File

@ -208,8 +208,7 @@ session_disconnect(void)
connection_disconnect();
_session_free_saved_account();
_session_free_saved_details();
connection_disco_items_free();
connection_remove_all_available_resources();
connection_clear_data();
chat_sessions_clear();
presence_clear_sub_requests();
}
@ -317,21 +316,16 @@ session_login_failed(void)
sv_ev_failed_login();
_session_free_saved_account();
_session_free_saved_details();
connection_disco_items_free();
connection_remove_all_available_resources();
chat_sessions_clear();
presence_clear_sub_requests();
} else {
log_debug("Connection handler: Restarting reconnect timer");
if (prefs_get_reconnect() != 0) {
g_timer_start(reconnect_timer);
}
// free resources but leave saved_user untouched
connection_disco_items_free();
connection_remove_all_available_resources();
chat_sessions_clear();
presence_clear_sub_requests();
}
connection_clear_data();
chat_sessions_clear();
presence_clear_sub_requests();
}
void
@ -345,8 +339,8 @@ session_lost_connection(void)
_session_free_saved_account();
_session_free_saved_details();
}
connection_disco_items_free();
connection_remove_all_available_resources();
connection_clear_data();
chat_sessions_clear();
presence_clear_sub_requests();
}