about summary refs log tree commit diff stats
path: root/src/config/accounts.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/config/accounts.c')
-rw-r--r--src/config/accounts.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/config/accounts.c b/src/config/accounts.c
index 2270e874..178f726f 100644
--- a/src/config/accounts.c
+++ b/src/config/accounts.c
@@ -43,6 +43,7 @@ static Autocomplete enabled_ac;
 static gchar *string_keys[] = {
     "jid",
     "server",
+    "port",
     "resource",
     "password",
     "presence.last",
@@ -118,7 +119,7 @@ _accounts_reset_enabled_search(void)
 }
 
 static void
-_accounts_add(const char *account_name, const char *altdomain)
+_accounts_add(const char *account_name, const char *altdomain, int port)
 {
     // set account name and resource
     const char *barejid = account_name;
@@ -139,6 +140,9 @@ _accounts_add(const char *account_name, const char *altdomain)
         if (altdomain != NULL) {
             g_key_file_set_string(accounts, account_name, "server", altdomain);
         }
+        if (port != 0) {
+            g_key_file_set_integer(accounts, account_name, "port", port);
+        }
 
         Jid *jidp = jid_create(barejid);
         GString *muc_service = g_string_new("conference.");
@@ -211,6 +215,9 @@ _accounts_get_account(const char * const name)
             account->server = NULL;
         }
 
+        int port = g_key_file_get_integer(accounts, name, "port", NULL);
+        account->port = port;
+
         gchar *resource = g_key_file_get_string(accounts, name, "resource", NULL);
         if (resource != NULL) {
             account->resource = strdup(resource);
@@ -436,6 +443,15 @@ _accounts_set_server(const char * const account_name, const char * const value)
 }
 
 static void
+_accounts_set_port(const char * const account_name, const int value)
+{
+    if (value != 0) {
+        g_key_file_set_integer(accounts, account_name, "port", value);
+        _save_accounts();
+    }
+}
+
+static void
 _accounts_set_resource(const char * const account_name, const char * const value)
 {
     if (accounts_account_exists(account_name)) {
@@ -736,6 +752,7 @@ accounts_init_module(void)
     accounts_account_exists = _accounts_account_exists;
     accounts_set_jid = _accounts_set_jid;
     accounts_set_server = _accounts_set_server;
+    accounts_set_port = _accounts_set_port;
     accounts_set_resource = _accounts_set_resource;
     accounts_set_password = _accounts_set_password;
     accounts_set_muc_service = _accounts_set_muc_service;