diff options
author | James Booth <boothj5@gmail.com> | 2016-05-08 03:14:22 +0100 |
---|---|---|
committer | James Booth <boothj5@gmail.com> | 2016-05-08 03:14:22 +0100 |
commit | ec51ae689c0e1e6a2fa3be2280a03d21fa252289 (patch) | |
tree | b3c7c0990545b8f1ae857d5b7518b18e8fc75634 | |
parent | ac3ab39e233f4a0eb4c4b08086d3d17bea860248 (diff) | |
download | profani-tty-ec51ae689c0e1e6a2fa3be2280a03d21fa252289.tar.gz |
Free features on disconnect
-rw-r--r-- | src/xmpp/connection.c | 3 | ||||
-rw-r--r-- | src/xmpp/connection.h | 1 | ||||
-rw-r--r-- | src/xmpp/session.c | 1 |
3 files changed, 4 insertions, 1 deletions
diff --git a/src/xmpp/connection.c b/src/xmpp/connection.c index 0d456102..abc9f6a4 100644 --- a/src/xmpp/connection.c +++ b/src/xmpp/connection.c @@ -85,7 +85,7 @@ void connection_init(void) conn.xmpp_conn = NULL; conn.xmpp_ctx = NULL; conn.domain = NULL; - conn.features_by_jid = g_hash_table_new_full(g_str_hash, g_str_equal, free, (GDestroyNotify)g_hash_table_destroy); + conn.features_by_jid = NULL; conn.available_resources = g_hash_table_new_full(g_str_hash, g_str_equal, free, (GDestroyNotify)resource_destroy); } @@ -434,6 +434,7 @@ _connection_handler(xmpp_conn_t *const xmpp_conn, const xmpp_conn_event_t status conn.domain = strdup(my_jid->domainpart); jid_destroy(my_jid); + conn.features_by_jid = g_hash_table_new_full(g_str_hash, g_str_equal, free, (GDestroyNotify)g_hash_table_destroy); g_hash_table_insert(conn.features_by_jid, strdup(conn.domain), g_hash_table_new_full(g_str_hash, g_str_equal, free, NULL)); session_login_success(connection_is_secured()); diff --git a/src/xmpp/connection.h b/src/xmpp/connection.h index 75022975..f4d0e387 100644 --- a/src/xmpp/connection.h +++ b/src/xmpp/connection.h @@ -59,6 +59,7 @@ 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_add_available_resource(Resource *resource); void connection_remove_available_resource(const char *const resource); diff --git a/src/xmpp/session.c b/src/xmpp/session.c index a1a223ff..06b3cb57 100644 --- a/src/xmpp/session.c +++ b/src/xmpp/session.c @@ -388,6 +388,7 @@ _session_free_saved_details(void) static void _session_free_session_data(void) { + connection_disco_items_free(); connection_remove_all_available_resources(); chat_sessions_clear(); presence_clear_sub_requests(); |