From d0f635e30cb2b9236e82c4fd7fb3485ba615af37 Mon Sep 17 00:00:00 2001
From: zab2 <zab2@mail.i2p>
Date: Sun, 13 Oct 2013 17:05:59 +0000
Subject: [PATCH] ticket #1062 - count duplicate packets towards RTT if we have
 	never sampled it

---
 .../java/src/net/i2p/client/streaming/ConnectionOptions.java  | 4 ++++
 .../src/net/i2p/client/streaming/ConnectionPacketHandler.java | 3 ++-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/apps/streaming/java/src/net/i2p/client/streaming/ConnectionOptions.java b/apps/streaming/java/src/net/i2p/client/streaming/ConnectionOptions.java
index a556c95ffd..b14b4a223c 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/ConnectionOptions.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/ConnectionOptions.java
@@ -629,6 +629,10 @@ class ConnectionOptions extends I2PSocketOptionsImpl {
         computeRTO();
     }
     
+    public synchronized boolean receivedAck() {
+        return _initState != AckInit.INIT;
+    }
+    
     /** How long after sending a packet will we wait before resending?
      * @return delay for a retransmission in ms
      */
diff --git a/apps/streaming/java/src/net/i2p/client/streaming/ConnectionPacketHandler.java b/apps/streaming/java/src/net/i2p/client/streaming/ConnectionPacketHandler.java
index 2ac2ba96e5..74aa4da5df 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/ConnectionPacketHandler.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/ConnectionPacketHandler.java
@@ -299,6 +299,7 @@ class ConnectionPacketHandler {
             return false;
         
         boolean lastPacketAcked = false;
+        final boolean receivedAck = con.getOptions().receivedAck();
         if ( (acked != null) && (!acked.isEmpty()) ) {
             if (_log.shouldLog(Log.DEBUG))
                 _log.debug(acked.size() + " of our packets acked with " + packet);
@@ -312,7 +313,7 @@ class ConnectionPacketHandler {
                 final int numSends = p.getNumSends();
                 final int ackTime = p.getAckTime();
                 
-                if (numSends > 1)
+                if (numSends > 1 && receivedAck)
                     numResends++;
                 else if (ackTime > highestRTT) 
                     highestRTT = ackTime;
-- 
GitLab