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

jabber.c: set jabber status in one place in connection handler

This commit is contained in:
Dmitry Podgorny 2013-01-07 21:35:20 +02:00
parent 621832ee4a
commit e0e8110746

View File

@ -202,8 +202,8 @@ jabber_disconnect(void)
// if connected, send end stream and wait for response // if connected, send end stream and wait for response
if (jabber_conn.conn_status == JABBER_CONNECTED) { if (jabber_conn.conn_status == JABBER_CONNECTED) {
log_info("Closing connection"); log_info("Closing connection");
xmpp_disconnect(jabber_conn.conn);
jabber_conn.conn_status = JABBER_DISCONNECTING; jabber_conn.conn_status = JABBER_DISCONNECTING;
xmpp_disconnect(jabber_conn.conn);
while (jabber_get_connection_status() == JABBER_DISCONNECTING) { while (jabber_get_connection_status() == JABBER_DISCONNECTING) {
jabber_process_events(); jabber_process_events();
@ -782,40 +782,33 @@ _connection_handler(xmpp_conn_t * const conn,
} }
} }
} else { } else if (status == XMPP_CONN_DISCONNECT) {
// received close stream response from server after disconnect
if (jabber_conn.conn_status == JABBER_DISCONNECTING) {
jabber_conn.conn_status = JABBER_DISCONNECTED;
jabber_conn.presence = PRESENCE_OFFLINE;
// lost connection for unkown reason // lost connection for unkown reason
} else if (jabber_conn.conn_status == JABBER_CONNECTED) { if (jabber_conn.conn_status == JABBER_CONNECTED) {
prof_handle_lost_connection(); prof_handle_lost_connection();
if (prefs_get_reconnect() != 0) { if (prefs_get_reconnect() != 0) {
assert(reconnect_timer == NULL); assert(reconnect_timer == NULL);
reconnect_timer = g_timer_new(); reconnect_timer = g_timer_new();
} }
xmpp_stop(ctx); xmpp_stop(ctx);
jabber_conn.conn_status = JABBER_DISCONNECTED;
jabber_conn.presence = PRESENCE_OFFLINE;
// login attempt failed // login attempt failed
} else { } else if (jabber_conn.conn_status != JABBER_DISCONNECTING) {
if (reconnect_timer == NULL) { if (reconnect_timer == NULL) {
prof_handle_failed_login(); prof_handle_failed_login();
jabber_conn.conn_status = JABBER_DISCONNECTED;
jabber_conn.presence = PRESENCE_OFFLINE;
jabber_free_resources(); jabber_free_resources();
} else { } else {
xmpp_stop(ctx); xmpp_stop(ctx);
if (prefs_get_reconnect() != 0) { if (prefs_get_reconnect() != 0) {
g_timer_start(reconnect_timer); g_timer_start(reconnect_timer);
} }
jabber_conn.conn_status = JABBER_DISCONNECTED;
jabber_conn.presence = PRESENCE_OFFLINE;
} }
} }
// close stream response from server after disconnect is handled too
jabber_conn.conn_status = JABBER_DISCONNECTED;
jabber_conn.presence = PRESENCE_OFFLINE;
} }
} }