about summary refs log tree commit diff stats
path: root/src/event/client_events.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/event/client_events.c')
-rw-r--r--src/event/client_events.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/event/client_events.c b/src/event/client_events.c
index 88776fd5..b2efd491 100644
--- a/src/event/client_events.c
+++ b/src/event/client_events.c
@@ -41,6 +41,8 @@
 #include "ui/ui.h"
 #include "window_list.h"
 #include "xmpp/xmpp.h"
+#include "roster_list.h"
+#include "chat_session.h"
 #ifdef HAVE_LIBOTR
 #include "otr/otr.h"
 #endif
@@ -66,6 +68,24 @@ cl_ev_connect_account(ProfAccount *account)
 }
 
 void
+cl_ev_disconnect(void)
+{
+    const char *jid = jabber_get_fulljid();
+    cons_show("%s logged out successfully.", jid);
+
+    jabber_disconnect();
+    roster_clear();
+    muc_invites_clear();
+    chat_sessions_clear();
+    tlscerts_clear_current();
+    ui_disconnected();
+    ui_close_all_wins();
+#ifdef HAVE_LIBGPGME
+    p_gpg_on_disconnect();
+#endif
+}
+
+void
 cl_ev_presence_send(const resource_presence_t presence_type, const char *const msg, const int idle_secs)
 {
     char *signed_status = NULL;