diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java index 7c911156fa327f5c5d3f1036a2359e49a2e6f514..6f3f2af07f463244f33e9f0ca1b6473d5b0144ab 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java @@ -328,6 +328,10 @@ public class ConfigClientsHandler extends FormHandler { /** @since 0.8.13 */ private void updateAllPlugins() { + if ("true".equals(System.getProperty(UpdateHandler.PROP_UPDATE_IN_PROGRESS))) { + addFormError(_("Plugin or update download already in progress.")); + return; + } addFormNotice(_("Updating all plugins")); PluginStarter.updateAll(_context); // So that update() will post a status to the summary bar before we reload @@ -387,31 +391,34 @@ public class ConfigClientsHandler extends FormHandler { * @since 0.8.3 */ private void saveInterfaceChanges() { + Map<String, String> changes = new HashMap(); String port = getJettyString("port"); if (port != null) - _context.router().setConfigSetting(ClientManagerFacadeImpl.PROP_CLIENT_PORT, port); + changes.put(ClientManagerFacadeImpl.PROP_CLIENT_PORT, port); String intfc = getJettyString("interface"); if (intfc != null) - _context.router().setConfigSetting(ClientManagerFacadeImpl.PROP_CLIENT_HOST, intfc); + changes.put(ClientManagerFacadeImpl.PROP_CLIENT_HOST, intfc); String user = getJettyString("user"); if (user != null) - _context.router().setConfigSetting(ConfigClientsHelper.PROP_USER, user); + changes.put(ConfigClientsHelper.PROP_USER, user); String pw = getJettyString("pw"); if (pw != null) - _context.router().setConfigSetting(ConfigClientsHelper.PROP_PW, pw); + changes.put(ConfigClientsHelper.PROP_PW, pw); String mode = getJettyString("mode"); boolean disabled = "0".equals(mode); boolean ssl = "2".equals(mode); - _context.router().setConfigSetting(ConfigClientsHelper.PROP_DISABLE_EXTERNAL, + changes.put(ConfigClientsHelper.PROP_DISABLE_EXTERNAL, Boolean.toString(disabled)); - _context.router().setConfigSetting(ConfigClientsHelper.PROP_ENABLE_SSL, + changes.put(ConfigClientsHelper.PROP_ENABLE_SSL, Boolean.toString(ssl)); - _context.router().setConfigSetting(ConfigClientsHelper.PROP_AUTH, + changes.put(ConfigClientsHelper.PROP_AUTH, Boolean.toString((_settings.get("auth") != null))); boolean all = "0.0.0.0".equals(intfc) || "0:0:0:0:0:0:0:0".equals(intfc) || "::".equals(intfc); - _context.router().setConfigSetting(ConfigClientsHelper.BIND_ALL_INTERFACES, Boolean.toString(all)); - _context.router().saveConfig(); - addFormNotice(_("Interface configuration saved successfully - restart required to take effect.")); + changes.put(ConfigClientsHelper.BIND_ALL_INTERFACES, Boolean.toString(all)); + if (_context.router().saveConfig(changes, null)) + addFormNotice(_("Interface configuration saved successfully - restart required to take effect.")); + else + addFormError(_("Error saving the configuration (applied but not saved) - please see the error logs")); } }