From ca57b71266ad2b56d8a5a5359cb449ee2d24a18b Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Thu, 22 Mar 2012 19:40:17 +0000
Subject: [PATCH]   * Router: When removing a config setting, remove from
 context also

---
 router/java/src/net/i2p/router/Router.java        |  6 ++++--
 router/java/src/net/i2p/router/RouterContext.java | 14 ++++++++++++++
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/router/java/src/net/i2p/router/Router.java b/router/java/src/net/i2p/router/Router.java
index b568046f6d..24560b3af9 100644
--- a/router/java/src/net/i2p/router/Router.java
+++ b/router/java/src/net/i2p/router/Router.java
@@ -345,6 +345,8 @@ public class Router implements RouterClock.ClockShiftListener {
      */
     public void removeConfigSetting(String name) { 
             _config.remove(name); 
+            // remove the backing default also
+            _context.removeProperty(name);
     }
 
     /**
@@ -1279,7 +1281,7 @@ public class Router implements RouterClock.ClockShiftListener {
         if (value != null)
             _config.put(name, value);
         else
-            _config.remove(name);
+            removeConfigSetting(name);
         return saveConfig();
     }
 
@@ -1298,7 +1300,7 @@ public class Router implements RouterClock.ClockShiftListener {
             _config.putAll(toAdd);
         if (toRemove != null) {
             for (String s : toRemove) {
-                _config.remove(s);
+                removeConfigSetting(s);
             }
         }
         return saveConfig();
diff --git a/router/java/src/net/i2p/router/RouterContext.java b/router/java/src/net/i2p/router/RouterContext.java
index 5c5b4a2cab..0debc4ff11 100644
--- a/router/java/src/net/i2p/router/RouterContext.java
+++ b/router/java/src/net/i2p/router/RouterContext.java
@@ -113,12 +113,26 @@ public class RouterContext extends I2PAppContext {
     /**
      * Modify the configuration attributes of this context, changing
      * one of the properties provided during the context construction.
+     *
      * @param propName The name of the property.
      * @param value The new value for the property.
+     * @since 0.8.4
+     * @deprecated Use Router.saveConfig()
      */
     public void setProperty(String propName, String value) {
     		_overrideProps.setProperty(propName, value);
     }
+    
+    /**
+     * Remove a property provided during the context construction.
+     * Only for use by the router. Others use Router.saveConfig()
+     *
+     * @param propName The name of the property.
+     * @since 0.9
+     */
+    void removeProperty(String propName) {
+        _overrideProps.remove(propName);
+    }
 
     
     public void addPropertyCallback(I2PPropertyCallback callback) {
-- 
GitLab