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 a556c95ffd9c27f17cdb9399a2a96739693508c3..b14b4a223cb5d2120a422b15a7d241b1347d3392 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 2ac2ba96e5cc3586e3cfba321c224447826ec868..74aa4da5df7327a719dbdef3c5ebb432be39f111 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;