diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java
index d84bc9f98..458d0ccf7 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java
@@ -122,6 +122,15 @@ public class I2PTunnelHTTPClient extends I2PTunnelClientBase implements Runnable
"The I2P HTTP Proxy supports http:// requests ONLY. Other protocols such as https:// and ftp:// are not allowed.
")
.getBytes();
+ private final static byte[] ERR_LOCALHOST =
+ ("HTTP/1.1 403 Access Denied\r\n"+
+ "Content-Type: text/html; charset=iso-8859-1\r\n"+
+ "Cache-control: no-cache\r\n"+
+ "\r\n"+
+ "
I2P ERROR: REQUEST DENIED
"+
+ "Your browser is misconfigured. Do not use the proxy to access the router console or other localhost destinations.
")
+ .getBytes();
+
/** used to assign unique IDs to the threads / clients. no logic or functionality */
private static volatile long __clientId = 0;
@@ -394,6 +403,16 @@ public class I2PTunnelHTTPClient extends I2PTunnelClientBase implements Runnable
usingWWWProxy = true;
if (_log.shouldLog(Log.DEBUG))
_log.debug(getPrefix(requestId) + "Host doesnt end with .i2p and it contains a period [" + host + "]: wwwProxy!");
+ } else if (host.toLowerCase().startsWith("localhost:")) {
+ if (out != null) {
+ out.write(ERR_LOCALHOST);
+ out.write("Generated on: ".getBytes());
+ out.write(new Date().toString().getBytes());
+ out.write("\n".getBytes());
+ out.flush();
+ }
+ s.close();
+ return;
} else {
request = request.substring(pos + 1);
pos = request.indexOf("/");
diff --git a/core/java/src/net/i2p/util/EepGet.java b/core/java/src/net/i2p/util/EepGet.java
index b00decfc1..ee0ea575d 100644
--- a/core/java/src/net/i2p/util/EepGet.java
+++ b/core/java/src/net/i2p/util/EepGet.java
@@ -119,7 +119,7 @@ public class EepGet {
_transferFailed = false;
_headersRead = false;
_aborted = false;
- _fetchHeaderTimeout = 30*1000;
+ _fetchHeaderTimeout = 45*1000;
_listeners = new ArrayList(1);
_etag = etag;
_lastModified = lastModified;
diff --git a/history.txt b/history.txt
index c7b81c4b9..371f4e4ef 100644
--- a/history.txt
+++ b/history.txt
@@ -1,4 +1,9 @@
-$Id: history.txt,v 1.585 2007-09-08 15:21:16 zzz Exp $
+$Id: history.txt,v 1.586 2007-09-09 12:38:54 zzz Exp $
+
+2007-09-14 zzz
+ * eepget: Increase header timeout to 45s
+ * HTTP proxy: Return a better error message for localhost requests
+ * tunnels: Fix PooledTunnelCreatorConfig memory leak
2007-09-09 zzz
* eepget: Add support for Last-Modified and If-Modified-Since
diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java
index 0a539fade..4e005bb44 100644
--- a/router/java/src/net/i2p/router/RouterVersion.java
+++ b/router/java/src/net/i2p/router/RouterVersion.java
@@ -15,9 +15,9 @@ import net.i2p.CoreVersion;
*
*/
public class RouterVersion {
- public final static String ID = "$Revision: 1.521 $ $Date: 2007-09-08 15:21:15 $";
+ public final static String ID = "$Revision: 1.522 $ $Date: 2007-09-09 12:38:53 $";
public final static String VERSION = "0.6.1.29";
- public final static long BUILD = 3;
+ public final static long BUILD = 4;
public static void main(String args[]) {
System.out.println("I2P Router version: " + VERSION + "-" + BUILD);
System.out.println("Router ID: " + RouterVersion.ID);
diff --git a/router/java/src/net/i2p/router/tunnel/pool/PooledTunnelCreatorConfig.java b/router/java/src/net/i2p/router/tunnel/pool/PooledTunnelCreatorConfig.java
index b8c3df1d0..c3ae88e47 100644
--- a/router/java/src/net/i2p/router/tunnel/pool/PooledTunnelCreatorConfig.java
+++ b/router/java/src/net/i2p/router/tunnel/pool/PooledTunnelCreatorConfig.java
@@ -14,8 +14,8 @@ import net.i2p.util.Log;
public class PooledTunnelCreatorConfig extends TunnelCreatorConfig {
private TunnelPool _pool;
private TestJob _testJob;
- private Job _expireJob;
- private TunnelInfo _pairedTunnel;
+ // private Job _expireJob;
+ // private TunnelInfo _pairedTunnel;
private boolean _live;
/** Creates a new instance of PooledTunnelCreatorConfig */
@@ -68,8 +68,9 @@ public class PooledTunnelCreatorConfig extends TunnelCreatorConfig {
public TunnelPool getTunnelPool() { return _pool; }
public void setTestJob(TestJob job) { _testJob = job; }
- public void setExpireJob(Job job) { _expireJob = job; }
+ public void setExpireJob(Job job) { /* _expireJob = job; */ }
- public void setPairedTunnel(TunnelInfo tunnel) { _pairedTunnel = tunnel; }
- public TunnelInfo getPairedTunnel() { return _pairedTunnel; }
+ // Fix memory leaks caused by references if you need to use pairedTunnel
+ public void setPairedTunnel(TunnelInfo tunnel) { /* _pairedTunnel = tunnel; */}
+ // public TunnelInfo getPairedTunnel() { return _pairedTunnel; }
}