diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java
index 20973b40a..e8912cd11 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java
@@ -1224,7 +1224,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
String s = getTunnel().getClientOptions().getProperty(PROP_SSL_OUTPROXIES);
if (s == null)
return null;
- String[] p = s.split(", ");
+ String[] p = s.split("[,; \r\n\t]");
if (p.length == 0)
return null;
// todo doesn't check for ""
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientBase.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientBase.java
index 37a302360..ae2cf1fbd 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientBase.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientBase.java
@@ -215,11 +215,14 @@ public abstract class I2PTunnelHTTPClientBase extends I2PTunnelClientBase implem
// see TunnelController.setSessionOptions()
String proxies = props.getProperty("proxyList");
if (proxies != null) {
- StringTokenizer tok = new StringTokenizer(proxies, ", ");
+ StringTokenizer tok = new StringTokenizer(proxies, ",; \r\n\t");
synchronized(_proxyList) {
_proxyList.clear();
- while (tok.hasMoreTokens())
- _proxyList.add(tok.nextToken().trim());
+ while (tok.hasMoreTokens()) {
+ String p = tok.nextToken().trim();
+ if (p.length() > 0)
+ _proxyList.add(tok.nextToken().trim());
+ }
}
} else {
synchronized(_proxyList) {
@@ -664,11 +667,14 @@ public abstract class I2PTunnelHTTPClientBase extends I2PTunnelClientBase implem
Writer out = new BufferedWriter(new OutputStreamWriter(outs, "UTF-8"));
out.write(errMessage);
if (targetRequest != null) {
- String uri = targetRequest.replace("&", "&");
+ String uri = DataHelper.escapeHTML(targetRequest);
out.write("");
- out.write(uri);
+ if (targetRequest.length() > 80)
+ out.write(DataHelper.escapeHTML(targetRequest.substring(0, 75)) + "…");
+ else
+ out.write(uri);
out.write("");
if (usingWWWProxy) {
out.write("
");
diff --git a/history.txt b/history.txt
index e6fd8621b..827ce26be 100644
--- a/history.txt
+++ b/history.txt
@@ -1,3 +1,6 @@
+2015-03-31 zzz
+ * i2ptunnel: Fix multiple SSL outproxies in HTTP client
+
2015-03-29 zzz
* I2CP: Prevent NPE (ticket #1503)
diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java
index 59b43357e..affa6f41b 100644
--- a/router/java/src/net/i2p/router/RouterVersion.java
+++ b/router/java/src/net/i2p/router/RouterVersion.java
@@ -18,7 +18,7 @@ public class RouterVersion {
/** deprecated */
public final static String ID = "Monotone";
public final static String VERSION = CoreVersion.VERSION;
- public final static long BUILD = 13;
+ public final static long BUILD = 14;
/** for example "-test" */
public final static String EXTRA = "-rc";