diff --git a/src/xmpp/connection.c b/src/xmpp/connection.c index 59412718..0f71ca2f 100644 --- a/src/xmpp/connection.c +++ b/src/xmpp/connection.c @@ -312,6 +312,7 @@ iq_reg2_cb(xmpp_conn_t* xmpp_conn, xmpp_stanza_t* stanza, void* userdata) goto quit; quit: + log_debug("[CONNDBG] iq_reg2_cb: disconnecting after registration completion"); xmpp_disconnect(xmpp_conn); return 0; @@ -550,6 +551,7 @@ connection_disconnect(void) // don't disconnect already disconnected connection, // or we get infinite loop otherwise if (conn.conn_last_event == XMPP_CONN_CONNECT) { + log_debug("[CONNDBG] connection_disconnect: user-initiated disconnect (status=%d)", (int)conn.conn_status); conn.conn_status = JABBER_DISCONNECTING; xmpp_disconnect(conn.xmpp_conn); @@ -557,6 +559,7 @@ connection_disconnect(void) session_process_events(); } } else { + log_debug("[CONNDBG] connection_disconnect: already disconnected (last_event=%d)", (int)conn.conn_last_event); conn.conn_status = JABBER_DISCONNECTED; } @@ -1019,6 +1022,9 @@ _connection_handler(xmpp_conn_t* const xmpp_conn, const xmpp_conn_event_t status // disconnected case XMPP_CONN_DISCONNECT: log_debug("Connection handler: XMPP_CONN_DISCONNECT"); + log_debug("[CONNDBG] disconnect: previous_status=%d error=%d has_stream_error=%s", + (int)conn.conn_status, error, + (stream_error && stream_error->stanza) ? "yes" : "no"); // lost connection for unknown reason if (conn.conn_status == JABBER_CONNECTED || conn.conn_status == JABBER_DISCONNECTING) { diff --git a/src/xmpp/session.c b/src/xmpp/session.c index 75fa891a..4d0a64b9 100644 --- a/src/xmpp/session.c +++ b/src/xmpp/session.c @@ -218,6 +218,7 @@ session_connect_with_details(const char* const jid, const char* const passwd, co void session_autoping_fail(void) { + log_debug("[CONNDBG] session_autoping_fail: autoping timeout, triggering lost connection"); session_lost_connection(); } @@ -264,11 +265,14 @@ session_process_events(void) if ((reconnect_sec != 0) && reconnect_timer) { int elapsed_sec = g_timer_elapsed(reconnect_timer, NULL); if (elapsed_sec > reconnect_sec) { + log_debug("[CONNDBG] session_process_events: auto-reconnect triggered after %d seconds (threshold=%d)", + elapsed_sec, reconnect_sec); session_reconnect_now(); } } break; case JABBER_RECONNECT: + log_debug("[CONNDBG] session_process_events: JABBER_RECONNECT state, calling session_reconnect_now"); session_reconnect_now(); break; default: @@ -327,12 +331,12 @@ session_login_success(gboolean secured) // logged in with account if (saved_account.name) { - log_debug("Connection handler: logged in with account name: %s", saved_account.name); + log_debug("[CONNDBG] Connection handler: logged in with account name: %s", saved_account.name); sv_ev_login_account_success(saved_account.name, secured); // logged in without account, use details to create new account } else { - log_debug("Connection handler: logged in with jid: %s", saved_details.name); + log_debug("[CONNDBG] Connection handler: logged in with jid: %s", saved_details.name); accounts_add(saved_details.name, saved_details.altdomain, saved_details.port, saved_details.tls_policy, saved_details.auth_policy); accounts_set_jid(saved_details.name, saved_details.jid); @@ -371,11 +375,11 @@ void session_login_failed(void) { if (reconnect_timer == NULL) { - log_debug("Connection handler: No reconnect timer"); + log_debug("[CONNDBG] Connection handler: No reconnect timer"); sv_ev_failed_login(); _session_free_internals(); } else { - log_debug("Connection handler: Restarting reconnect timer"); + log_debug("[CONNDBG] Connection handler: Restarting reconnect timer"); if (prefs_get_reconnect() != 0) { g_timer_start(reconnect_timer); } @@ -389,12 +393,16 @@ session_login_failed(void) void session_lost_connection(void) { + log_debug("[CONNDBG] session_lost_connection: connection lost, reconnect_interval=%d", + prefs_get_reconnect()); /* this callback also clears all cached data */ sv_ev_lost_connection(); if (prefs_get_reconnect() != 0) { assert(reconnect_timer == NULL); reconnect_timer = g_timer_new(); + log_debug("[CONNDBG] session_lost_connection: reconnect timer started"); } else { + log_debug("[CONNDBG] session_lost_connection: auto-reconnect disabled, cleaning up"); _session_free_internals(); } }