diff --git a/router/java/src/net/i2p/router/transport/tcp/TCPConnection.java b/router/java/src/net/i2p/router/transport/tcp/TCPConnection.java index 72c27cf373175fdb4df234964187b4fddc3e162f..4162fb58a579821045f7fd8ac61780dc751b3dba 100644 --- a/router/java/src/net/i2p/router/transport/tcp/TCPConnection.java +++ b/router/java/src/net/i2p/router/transport/tcp/TCPConnection.java @@ -432,6 +432,13 @@ class TCPConnection implements I2NPMessageReader.I2NPMessageEventListener { _log.warn("Error reading from stream to " + _remoteIdentity.getHash().toBase64(), error); } + /** + * If we are taking an absurdly long time to send out a message, drop it + * since we're overloaded. + * + */ + private static final long MAX_LIFETIME_BEFORE_OUTBOUND_EXPIRE = 15*1000; + class ConnectionRunner implements Runnable { private boolean _running; public void run() { @@ -494,7 +501,7 @@ class TCPConnection implements I2NPMessageReader.I2NPMessageEventListener { long lifetime = cur.timestamp("TCPConnection.runner.locked_expireOldMessages still ok with " + (i) + " ahead and " + (_toBeSent.size()-i-1) + " behind on the queue"); - if (lifetime > 5*1000) { + if (lifetime > MAX_LIFETIME_BEFORE_OUTBOUND_EXPIRE) { cur.timestamp("TCPConnection.runner.locked_expireOldMessages lifetime too long - " + lifetime); if (timedOut == null) timedOut = new ArrayList(2);