about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorMichael Vetter <jubalh@iodoru.org>2019-06-03 14:11:00 +0200
committerGitHub <noreply@github.com>2019-06-03 14:11:00 +0200
commit48013f8d4368a81596cff42b5697a6f49a29865e (patch)
tree8602c9a25b44e9dad28e48a6da9d11e02b51d8aa /src
parent2052a511c3b2bb47b528cad9e9a597092554ff3d (diff)
parent4344ee2a5a5f4139d45edace5b1d22b159358f25 (diff)
downloadprofani-tty-48013f8d4368a81596cff42b5697a6f49a29865e.tar.gz
Merge pull request #1106 from profanity-im/saved-account
Don't clear saved account data in session_disconnect()
Diffstat (limited to 'src')
-rw-r--r--src/xmpp/session.c35
1 files changed, 7 insertions, 28 deletions
diff --git a/src/xmpp/session.c b/src/xmpp/session.c
index 67cbb17f..b2b56695 100644
--- a/src/xmpp/session.c
+++ b/src/xmpp/session.c
@@ -113,14 +113,11 @@ session_connect_with_account(const ProfAccount *const account)
 
     log_info("Connecting using account: %s", account->name);
 
+    _session_free_saved_account();
+    _session_free_saved_details();
+
     // save account name and password for reconnect
-    if (saved_account.name) {
-        free(saved_account.name);
-    }
     saved_account.name = strdup(account->name);
-    if (saved_account.passwd) {
-        free(saved_account.passwd);
-    }
     saved_account.passwd = strdup(account->password);
 
     char *jid = NULL;
@@ -150,6 +147,9 @@ session_connect_with_details(const char *const jid, const char *const passwd, co
     assert(jid != NULL);
     assert(passwd != NULL);
 
+    _session_free_saved_account();
+    _session_free_saved_details();
+
     // save details for reconnect, remember name for account creating on success
     saved_details.name = strdup(jid);
     saved_details.passwd = strdup(passwd);
@@ -196,20 +196,6 @@ session_connect_with_details(const char *const jid, const char *const passwd, co
 void
 session_autoping_fail(void)
 {
-    if (connection_get_status() == JABBER_CONNECTED) {
-        log_info("Closing connection");
-
-        char *account_name = session_get_account_name();
-        const char *fulljid = connection_get_fulljid();
-        plugins_on_disconnect(account_name, fulljid);
-
-        accounts_set_last_activity(session_get_account_name());
-
-        connection_disconnect();
-    }
-
-    connection_set_disconnected();
-
     session_lost_connection();
 }
 
@@ -230,11 +216,7 @@ session_disconnect(void)
 
         connection_disconnect();
 
-        _session_free_saved_account();
-        _session_free_saved_details();
-
         connection_clear_data();
-
         chat_sessions_clear();
         presence_clear_sub_requests();
     }
@@ -359,6 +341,7 @@ session_login_failed(void)
 void
 session_lost_connection(void)
 {
+    /* this callback also clears all cached data */
     sv_ev_lost_connection();
     if (prefs_get_reconnect() != 0) {
         assert(reconnect_timer == NULL);
@@ -367,10 +350,6 @@ session_lost_connection(void)
         _session_free_saved_account();
         _session_free_saved_details();
     }
-
-    connection_clear_data();
-    chat_sessions_clear();
-    presence_clear_sub_requests();
 }
 
 void