From 11b8204d14af3777fe6c4083988ea8681354cb1c Mon Sep 17 00:00:00 2001 From: Michael Vetter Date: Wed, 19 Jun 2019 23:37:54 +0200 Subject: [PATCH] Call iq_handlers_clear() upon disconnect Free id_handlers. Fix memory leaks. --- src/xmpp/iq.c | 8 ++++++++ src/xmpp/session.c | 1 + src/xmpp/xmpp.h | 1 + 3 files changed, 10 insertions(+) diff --git a/src/xmpp/iq.c b/src/xmpp/iq.c index 24208244..91acc212 100644 --- a/src/xmpp/iq.c +++ b/src/xmpp/iq.c @@ -251,6 +251,14 @@ iq_handlers_init(void) rooms_cache = g_hash_table_new_full(g_str_hash, g_str_equal, free, (GDestroyNotify)xmpp_stanza_release); } +void +iq_handlers_clear() +{ + if (id_handlers) { + g_hash_table_remove_all(id_handlers); + } +} + void iq_id_handler_add(const char *const id, ProfIqCallback func, ProfIqFreeCallback free_func, void *userdata) { diff --git a/src/xmpp/session.c b/src/xmpp/session.c index b2b56695..787dc0b3 100644 --- a/src/xmpp/session.c +++ b/src/xmpp/session.c @@ -213,6 +213,7 @@ session_disconnect(void) accounts_set_last_activity(session_get_account_name()); iq_rooms_cache_clear(); + iq_handlers_clear(); connection_disconnect(); diff --git a/src/xmpp/xmpp.h b/src/xmpp/xmpp.h index d04d88fd..ae6df097 100644 --- a/src/xmpp/xmpp.h +++ b/src/xmpp/xmpp.h @@ -169,6 +169,7 @@ void iq_enable_carbons(void); void iq_disable_carbons(void); void iq_send_software_version(const char *const fulljid); void iq_rooms_cache_clear(void); +void iq_handlers_clear(); void iq_room_list_request(gchar *conferencejid, gchar *filter); void iq_disco_info_request(gchar *jid); void iq_disco_items_request(gchar *jid);