From 8a0602732d645486c9d32c1baa00e062b91c2cd6 Mon Sep 17 00:00:00 2001
From: zab2 <zab2@mail.i2p>
Date: Wed, 19 Dec 2018 10:51:53 +0000
Subject: [PATCH] Get call to system timer out of tight loop when counting
 connections

---
 .../src/net/i2p/router/transport/ntcp/NTCPConnection.java    | 4 ++++
 .../src/net/i2p/router/transport/ntcp/NTCPTransport.java     | 5 +++--
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java b/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java
index de32aace41..44eaa40c74 100644
--- a/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java
+++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java
@@ -415,9 +415,13 @@ public class NTCPConnection implements Closeable {
     
     /** @return milliseconds */
     public long getTimeSinceSend() { return _context.clock().now()-_lastSendTime; }
+    
+    public long getTimeSinceSend(long now) { return now - _lastSendTime; }
 
     /** @return milliseconds */
     public long getTimeSinceReceive() { return _context.clock().now()-_lastReceiveTime; }
+    
+    public long getTimeSinceReceive(long now) { return now - _lastReceiveTime; }
 
     /** @return milliseconds */
     public long getTimeSinceCreated() { return _context.clock().now()-_created; }
diff --git a/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java b/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java
index a77bccbdb4..1ac28c64f5 100644
--- a/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java
+++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java
@@ -707,12 +707,13 @@ public class NTCPTransport extends TransportImpl {
      * As of 0.9.20, actually returns active peer count, not total.
      */
     public int countActivePeers() {
+    	final long now = _context.clock().now();
         int active = 0;
         for (NTCPConnection con : _conByIdent.values()) {
             // con initializes times at construction,
             // so check message count also
-            if ((con.getMessagesSent() > 0 && con.getTimeSinceSend() <= 5*60*1000) ||
-                (con.getMessagesReceived() > 0 && con.getTimeSinceReceive() <= 5*60*1000)) {
+            if ((con.getMessagesSent() > 0 && con.getTimeSinceSend(now) <= 5*60*1000) ||
+                (con.getMessagesReceived() > 0 && con.getTimeSinceReceive(now) <= 5*60*1000)) {
                 active++;
             }
         }
-- 
GitLab