about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/command/command.c1
-rw-r--r--src/command/commands.c4
-rw-r--r--src/config/accounts.c10
-rw-r--r--src/config/accounts.h1
4 files changed, 16 insertions, 0 deletions
diff --git a/src/command/command.c b/src/command/command.c
index 5726b49f..b8daa7eb 100644
--- a/src/command/command.c
+++ b/src/command/command.c
@@ -1194,6 +1194,7 @@ cmd_init(void)
 
     account_clear_ac = autocomplete_new();
     autocomplete_add(account_clear_ac, "password");
+    autocomplete_add(account_clear_ac, "server");
     autocomplete_add(account_clear_ac, "otr");
 
     close_ac = autocomplete_new();
diff --git a/src/command/commands.c b/src/command/commands.c
index 40640485..eb361b3e 100644
--- a/src/command/commands.c
+++ b/src/command/commands.c
@@ -362,6 +362,10 @@ cmd_account(gchar **args, struct cmd_help_t help)
                     accounts_clear_password(account_name);
                     cons_show("Removed password for account %s", account_name);
                     cons_show("");
+                } else if (strcmp(property, "server") == 0) {
+                    accounts_clear_server(account_name);
+                    cons_show("Removed server for account %s", account_name);
+                    cons_show("");
                 } else if (strcmp(property, "otr") == 0) {
                     accounts_clear_otr(account_name);
                     cons_show("OTR policy removed for account %s", account_name);
diff --git a/src/config/accounts.c b/src/config/accounts.c
index 0bea55b4..fffb45e1 100644
--- a/src/config/accounts.c
+++ b/src/config/accounts.c
@@ -441,6 +441,15 @@ _accounts_clear_password(const char * const account_name)
 }
 
 static void
+_accounts_clear_server(const char * const account_name)
+{
+    if (accounts_account_exists(account_name)) {
+        g_key_file_remove_key(accounts, account_name, "server", NULL);
+        _save_accounts();
+    }
+}
+
+static void
 _accounts_clear_otr(const char * const account_name)
 {
     if (accounts_account_exists(account_name)) {
@@ -862,6 +871,7 @@ accounts_init_module(void)
     accounts_set_priority_all = _accounts_set_priority_all;
     accounts_get_priority_for_presence_type = _accounts_get_priority_for_presence_type;
     accounts_clear_password = _accounts_clear_password;
+    accounts_clear_server = _accounts_clear_server;
     accounts_clear_otr = _accounts_clear_otr;
     accounts_add_otr_policy = _accounts_add_otr_policy;
 }
diff --git a/src/config/accounts.h b/src/config/accounts.h
index 299fdf0b..a16c0cfb 100644
--- a/src/config/accounts.h
+++ b/src/config/accounts.h
@@ -78,6 +78,7 @@ void (*accounts_set_priority_all)(const char * const account_name, const gint va
 gint (*accounts_get_priority_for_presence_type)(const char * const account_name,
     resource_presence_t presence_type);
 void (*accounts_clear_password)(const char * const account_name);
+void (*accounts_clear_server)(const char * const account_name);
 void (*accounts_clear_otr)(const char * const account_name);
 void (*accounts_add_otr_policy)(const char * const account_name, const char * const contact_jid, const char * const policy);