diff options
Diffstat (limited to 'src/event/client_events.c')
-rw-r--r-- | src/event/client_events.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/event/client_events.c b/src/event/client_events.c index 67ffec20..c393ccd4 100644 --- a/src/event/client_events.c +++ b/src/event/client_events.c @@ -47,6 +47,7 @@ #include "plugins/plugins.h" #include "ui/window_list.h" #include "xmpp/chat_session.h" +#include "xmpp/session.h" #include "xmpp/xmpp.h" #ifdef HAVE_LIBOTR @@ -85,9 +86,8 @@ cl_ev_connect_account(ProfAccount* account) void cl_ev_disconnect(void) { - char* mybarejid = connection_get_barejid(); + auto_char char* mybarejid = connection_get_barejid(); cons_show("%s logged out successfully.", mybarejid); - free(mybarejid); ui_close_all_wins(); ev_disconnect_cleanup(); @@ -96,6 +96,18 @@ cl_ev_disconnect(void) } void +cl_ev_reconnect(void) +{ + if (connection_get_status() != JABBER_DISCONNECTED) { + connection_disconnect(); + ev_disconnect_cleanup(); + // on intentional disconnect reset the counter + ev_reset_connection_counter(); + } + session_reconnect_now(); +} + +void cl_ev_presence_send(const resource_presence_t presence_type, const int idle_secs) { char* signed_status = NULL; |