From d44d8cc53dcfac61dcb5021aecad4ad7953b487a Mon Sep 17 00:00:00 2001
From: jrandom <jrandom>
Date: Sun, 1 Aug 2004 20:41:33 +0000
Subject: [PATCH] penalize peers whose tunnels probably fail, but still dont
 kill those tunnels quite yet logging

---
 .../PoolingTunnelManagerFacade.java             | 17 ++++++++---------
 .../i2p/router/tunnelmanager/TunnelPool.java    |  4 ++--
 2 files changed, 10 insertions(+), 11 deletions(-)

diff --git a/router/java/src/net/i2p/router/tunnelmanager/PoolingTunnelManagerFacade.java b/router/java/src/net/i2p/router/tunnelmanager/PoolingTunnelManagerFacade.java
index cbd989c582..b7cfbc1510 100644
--- a/router/java/src/net/i2p/router/tunnelmanager/PoolingTunnelManagerFacade.java
+++ b/router/java/src/net/i2p/router/tunnelmanager/PoolingTunnelManagerFacade.java
@@ -149,27 +149,26 @@ public class PoolingTunnelManagerFacade implements TunnelManagerFacade {
      *
      */
     public void peerFailed(Hash peer) {
-        if (true) {
-            _log.error("Peer " + peer.toBase64() + " failed, but we're not going to kill their tunnels", new Exception("wtf"));
-            return;
-        }
         int numFailed = 0;
+        boolean shouldKill = false;
         for (Iterator iter = _pool.getManagedTunnelIds().iterator(); iter.hasNext(); ) {
             TunnelId id = (TunnelId)iter.next();
             TunnelInfo info = (TunnelInfo)_pool.getTunnelInfo(id);
             if (isParticipant(info, peer)) {
                 _log.info("Peer " + peer.toBase64() + " failed and they participate in tunnel " 
                           + id.getTunnelId() + ".  Marking the tunnel as not ready!");
-                info.setIsReady(false);
+                if (shouldKill) {
+                    info.setIsReady(false);
+                    long lifetime = _context.clock().now() - info.getCreated();
+                    _context.statManager().addRateData("tunnel.failAfterTime", lifetime, lifetime);
+                }
                 numFailed++;
-		
-                long lifetime = _context.clock().now() - info.getCreated();
-                _context.statManager().addRateData("tunnel.failAfterTime", lifetime, lifetime);
             }
         }
 
         if (_log.shouldLog(Log.INFO))
-            _log.info("On peer " + peer.toBase64() + " failure, " + numFailed + " tunnels were killed");
+            _log.info("On peer " + peer.toBase64() + " failure, " + numFailed + " tunnels were " 
+                      + (shouldKill ? "" : "NOT ") + "killed");
     }
     
     private boolean isParticipant(TunnelInfo info, Hash peer) {
diff --git a/router/java/src/net/i2p/router/tunnelmanager/TunnelPool.java b/router/java/src/net/i2p/router/tunnelmanager/TunnelPool.java
index 809f73ffc3..53149209c4 100644
--- a/router/java/src/net/i2p/router/tunnelmanager/TunnelPool.java
+++ b/router/java/src/net/i2p/router/tunnelmanager/TunnelPool.java
@@ -526,8 +526,8 @@ class TunnelPool {
     
     public void tunnelFailed(TunnelId id) {
         if (!_isLive) return;
-        if (_log.shouldLog(Log.ERROR)) 
-            _log.error("Tunnel " + id + " marked as not ready, since it /failed/", new Exception("Failed tunnel"));
+        if (_log.shouldLog(Log.WARN)) 
+            _log.warn("Tunnel " + id + " marked as not ready, since it /failed/", new Exception("Failed tunnel"));
         TunnelInfo info = getTunnelInfo(id);
         if (info == null)
             return;
-- 
GitLab