diff options
author | Dmitry Podgorny <pasis.ua@gmail.com> | 2013-01-07 21:35:20 +0200 |
---|---|---|
committer | Dmitry Podgorny <pasis.ua@gmail.com> | 2013-01-07 22:00:13 +0200 |
commit | e0e8110746a1dfeeff6bf03aae00d7d0c9a56517 (patch) | |
tree | 6a8e8c597364c1e1622e17727cdb9b1de0d75f53 | |
parent | 621832ee4a621f82f4bd693e7c7bf52944c3671a (diff) | |
download | profani-tty-e0e8110746a1dfeeff6bf03aae00d7d0c9a56517.tar.gz |
jabber.c: set jabber status in one place in connection handler
-rw-r--r-- | src/jabber.c | 23 |
1 files changed, 8 insertions, 15 deletions
diff --git a/src/jabber.c b/src/jabber.c index 8d2dc572..a13feea8 100644 --- a/src/jabber.c +++ b/src/jabber.c @@ -202,8 +202,8 @@ jabber_disconnect(void) // if connected, send end stream and wait for response if (jabber_conn.conn_status == JABBER_CONNECTED) { log_info("Closing connection"); - xmpp_disconnect(jabber_conn.conn); jabber_conn.conn_status = JABBER_DISCONNECTING; + xmpp_disconnect(jabber_conn.conn); while (jabber_get_connection_status() == JABBER_DISCONNECTING) { jabber_process_events(); @@ -782,40 +782,33 @@ _connection_handler(xmpp_conn_t * const conn, } } - } else { - - // 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; + } else if (status == XMPP_CONN_DISCONNECT) { // lost connection for unkown reason - } else if (jabber_conn.conn_status == JABBER_CONNECTED) { + if (jabber_conn.conn_status == JABBER_CONNECTED) { prof_handle_lost_connection(); if (prefs_get_reconnect() != 0) { assert(reconnect_timer == NULL); reconnect_timer = g_timer_new(); } xmpp_stop(ctx); - jabber_conn.conn_status = JABBER_DISCONNECTED; - jabber_conn.presence = PRESENCE_OFFLINE; // login attempt failed - } else { + } else if (jabber_conn.conn_status != JABBER_DISCONNECTING) { if (reconnect_timer == NULL) { prof_handle_failed_login(); - jabber_conn.conn_status = JABBER_DISCONNECTED; - jabber_conn.presence = PRESENCE_OFFLINE; jabber_free_resources(); } else { xmpp_stop(ctx); if (prefs_get_reconnect() != 0) { 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; } } |