From 536f5d0c7bbb625cf3edb298f31e1643a7637ba0 Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Sat, 6 Sep 2008 13:48:57 +0000
Subject: [PATCH]     * Shitlist: Fix partial shitlisting (still unused though)

---
 router/java/src/net/i2p/router/Shitlist.java | 24 ++++++++------------
 1 file changed, 10 insertions(+), 14 deletions(-)

diff --git a/router/java/src/net/i2p/router/Shitlist.java b/router/java/src/net/i2p/router/Shitlist.java
index 1a47a94be8..fb26c010bb 100644
--- a/router/java/src/net/i2p/router/Shitlist.java
+++ b/router/java/src/net/i2p/router/Shitlist.java
@@ -47,6 +47,7 @@ public class Shitlist {
     
     public final static long SHITLIST_DURATION_MS = 40*60*1000; // 40 minute shitlist
     public final static long SHITLIST_DURATION_MAX = 60*60*1000;
+    public final static long SHITLIST_DURATION_PARTIAL = 20*60*1000;
     public final static long SHITLIST_DURATION_FOREVER = 181l*24*60*60*1000; // will get rounded down to 180d on console
     
     public Shitlist(RouterContext context) {
@@ -101,7 +102,7 @@ public class Shitlist {
     }
     public boolean shitlistRouter(Hash peer, String reason) { return shitlistRouter(peer, reason, null); }
     public boolean shitlistRouter(Hash peer, String reason, String transport) {
-        return shitlistRouter(peer, reason, null, false);
+        return shitlistRouter(peer, reason, transport, false);
     }
     public boolean shitlistRouterForever(Hash peer, String reason) {
         return shitlistRouter(peer, reason, null, true);
@@ -117,11 +118,14 @@ public class Shitlist {
         }
         boolean wasAlready = false;
         if (_log.shouldLog(Log.INFO))
-            _log.info("Shitlisting router " + peer.toBase64(), new Exception("Shitlist cause: " + reason));
+            _log.info("Shitlisting router " + peer.toBase64() +
+               ((transport != null) ? " on transport " + transport : ""), new Exception("Shitlist cause: " + reason));
         
         Entry e = new Entry();
         if (forever) {
             e.expireOn = _context.clock().now() + SHITLIST_DURATION_FOREVER;
+        else if (transport != null) {
+            e.expireOn = _context.clock().now() + SHITLIST_DURATION_PARTIAL;
         } else {
             long period = SHITLIST_DURATION_MS + _context.random().nextLong(SHITLIST_DURATION_MS);
             PeerProfile prof = _context.profileOrganizer().getProfile(peer);
@@ -153,8 +157,10 @@ public class Shitlist {
                 if (e.transports != null) {
                     if (old.transports != null)
                         e.transports.addAll(old.transports);
-                    else   
+                    else {
                         e.transports = null;
+                        e.cause = reason;
+                    }
                 }
             }
             _entries.put(peer, e);
@@ -270,21 +276,16 @@ public class Shitlist {
         }
         buf.append("<ul>");
         
-        int partial = 0;
         for (Iterator iter = entries.keySet().iterator(); iter.hasNext(); ) {
             Hash key = (Hash)iter.next();
             Entry entry = (Entry)entries.get(key);
-            if ( (entry.transports != null) && (entry.transports.size() > 0) ) {
-                partial++;
-                continue;
-            }
             buf.append("<li><b>").append(key.toBase64()).append("</b>");
             buf.append(" (<a href=\"netdb.jsp#").append(key.toBase64().substring(0, 6)).append("\">netdb</a>)");
             buf.append(" expiring in ");
             buf.append(DataHelper.formatDuration(entry.expireOn-_context.clock().now()));
             Set transports = entry.transports;
             if ( (transports != null) && (transports.size() > 0) )
-                buf.append(" on the following transports: ").append(transports);
+                buf.append(" on the following transport: ").append(transports);
             if (entry.cause != null) {
                 buf.append("<br />\n");
                 buf.append(entry.cause);
@@ -293,11 +294,6 @@ public class Shitlist {
             buf.append("</li>\n");
         }
         buf.append("</ul>\n");
-        if (partial > 0) {
-            buf.append("<i>Partial shitlisted peers (only blocked on some transports): ");
-            buf.append(partial);
-            buf.append("</i>\n");
-        }
         out.write(buf.toString());
         out.flush();
     }
-- 
GitLab