From 4208885e368286930f8c8762d4b7032b14f79e66 Mon Sep 17 00:00:00 2001
From: shortcutme <tamas@zeronet.io>
Date: Tue, 10 Jul 2018 03:39:33 +0200
Subject: [PATCH] Store pending configuration values

---
 src/Config.py         |  4 ++++
 src/Ui/UiWebsocket.py | 13 ++++++++++---
 2 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/src/Config.py b/src/Config.py
index 32d48d65..cb4ae2a7 100644
--- a/src/Config.py
+++ b/src/Config.py
@@ -13,6 +13,10 @@ class Config(object):
         self.rev = 3504
         self.argv = argv
         self.action = None
+        self.pending_changes = {}
+        self.need_restart = False
+        self.keys_restart_need = set(["tor", "fileserver_port"])
+
         self.config_file = "zeronet.conf"
         self.createParser()
         self.createArguments()
diff --git a/src/Ui/UiWebsocket.py b/src/Ui/UiWebsocket.py
index 3240b30f..24f5faee 100644
--- a/src/Ui/UiWebsocket.py
+++ b/src/Ui/UiWebsocket.py
@@ -994,9 +994,16 @@ class UiWebsocket(object):
 
         config.saveValue(key, value)
 
-        instant_change_keys = ["language", "tor_use_bridges", "trackers_proxy"]
-        if key in instant_change_keys:
-            setattr(config, key, value)
+        if key not in config.keys_restart_need:
+            if value is None:  # Default value
+                setattr(config, key, config.parser.get_default(key))
+                setattr(config.arguments, key, config.parser.get_default(key))
+            else:
+                setattr(config, key, value)
+                setattr(config.arguments, key, value)
+        else:
+            config.need_restart = True
+            config.pending_changes[key] = value
 
         if key == "language":
             import Translate