From 3270ba840ee7c6d1e858479ca0a887d46a6749d7 Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Sun, 11 Jan 2015 17:36:39 +0000
Subject: [PATCH] I2PTunnel: Add option for multihoming optimization

---
 .../java/src/net/i2p/i2ptunnel/web/EditBean.java   |  5 +++++
 .../java/src/net/i2p/i2ptunnel/web/IndexBean.java  | 14 +++++++++++---
 apps/i2ptunnel/jsp/editServer.jsp                  | 13 +++++++++++++
 3 files changed, 29 insertions(+), 3 deletions(-)

diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java
index 985cc749dd..cd4c406c25 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java
@@ -318,6 +318,11 @@ public class EditBean extends IndexBean {
         return getBooleanProperty(tunnel, I2PTunnelHTTPClient.PROP_INTERNAL_SSL);
     }
 
+    /** @since 0.9.18 */
+    public boolean getMultihome(int tunnel) {
+        return getBooleanProperty(tunnel, "shouldBundleReplyInfo");
+    }
+
     /** all proxy auth @since 0.8.2 */
     public boolean getProxyAuth(int tunnel) {
         return getProperty(tunnel, I2PTunnelHTTPClientBase.PROP_AUTH, "false") != "false";
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java
index a3bec064ea..3b6e7cdb95 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java
@@ -969,6 +969,11 @@ public class IndexBean {
         _booleanOptions.add(I2PTunnelHTTPClient.PROP_INTERNAL_SSL);
     }
 
+    /** @since 0.9.18 */
+    public void setMultihome(String moo) {
+        _booleanOptions.add("shouldBundleReplyInfo");
+    }
+
     /** all proxy auth @since 0.8.2 */
     public void setProxyAuth(String s) {
         if (s != null)
@@ -1261,18 +1266,20 @@ public class IndexBean {
             config.setProperty(TunnelController.PROP_SHARED, _sharedClient + "");
             for (String p : _booleanClientOpts)
                 config.setProperty(OPT + p, "" + _booleanOptions.contains(p));
-            for (String p : _otherClientOpts)
+            for (String p : _otherClientOpts) {
                 if (_otherOptions.containsKey(p))
                     config.setProperty(OPT + p, _otherOptions.get(p));
+            }
         } else {
             // generic server stuff
             if (_targetPort != null)
                 config.setProperty(TunnelController.PROP_TARGET_PORT, _targetPort);
             for (String p : _booleanServerOpts)
                 config.setProperty(OPT + p, "" + _booleanOptions.contains(p));
-            for (String p : _otherServerOpts)
+            for (String p : _otherServerOpts) {
                 if (_otherOptions.containsKey(p))
                     config.setProperty(OPT + p, _otherOptions.get(p));
+            }
         }
 
         // generic proxy stuff
@@ -1414,7 +1421,8 @@ public class IndexBean {
         "i2cp.reduceOnIdle", "i2cp.encryptLeaseSet", PROP_ENABLE_ACCESS_LIST, PROP_ENABLE_BLACKLIST,
         I2PTunnelServer.PROP_USE_SSL,
         I2PTunnelHTTPServer.OPT_REJECT_INPROXY,
-        I2PTunnelServer.PROP_UNIQUE_LOCAL
+        I2PTunnelServer.PROP_UNIQUE_LOCAL,
+        "shouldBundleReplyInfo"
         };
     private static final String _otherClientOpts[] = {
         "i2cp.reduceIdleTime", "i2cp.reduceQuantity", "i2cp.closeIdleTime",
diff --git a/apps/i2ptunnel/jsp/editServer.jsp b/apps/i2ptunnel/jsp/editServer.jsp
index fa752e00f0..0d7c050937 100644
--- a/apps/i2ptunnel/jsp/editServer.jsp
+++ b/apps/i2ptunnel/jsp/editServer.jsp
@@ -435,6 +435,19 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
                     <input value="1" type="checkbox" id="startOnLoad" name="uniqueLocal" title="Use unique IP addresses for each connecting client (local non-SSL servers only)"<%=(editBean.getUniqueLocal(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />                
                 </div>
             </div>
+            <div class="rowItem">
+                <div id="optionsField" class="rowItem">
+                    <label>
+                        <%=intl._("Optimize for Multihoming")%>:
+                    </label>
+                </div>
+                <div id="portField" class="rowItem">
+                    <label for="access" accesskey="d">
+                        <%=intl._("Enable")%>:
+                    </label>
+                    <input value="1" type="checkbox" id="startOnLoad" name="multihome" title="Only enable if you are hosting this service on multiple routers"<%=(editBean.getMultihome(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />                
+                </div>
+            </div>
             <div class="subdivider">
                 <hr />
             </div>
-- 
GitLab