* UDP: Mark only first fragment as a duplicate

This commit is contained in:
zzz
2011-10-25 21:31:23 +00:00
parent 1a6e9257f3
commit 1fc6d0ad54

View File

@@ -103,14 +103,18 @@ class InboundMessageFragments /*implements UDPTransport.PartialACKSource */{
Long messageId = Long.valueOf(mid); Long messageId = Long.valueOf(mid);
if (_recentlyCompletedMessages.isKnown(mid)) { if (_recentlyCompletedMessages.isKnown(mid)) {
_context.statManager().addRateData("udp.ignoreRecentDuplicate", 1, 0); // Only update stats for the first fragment,
from.messageFullyReceived(messageId, -1); // otherwise it wildly overstates things
_ackSender.ackPeer(from); if (data.readMessageFragmentNum(i) == 0) {
if (_log.shouldLog(Log.INFO)) _context.statManager().addRateData("udp.ignoreRecentDuplicate", 1);
_log.info("Message received is a dup: " + mid + " dups: " from.messageFullyReceived(messageId, -1);
+ _recentlyCompletedMessages.getCurrentDuplicateCount() + " out of " _ackSender.ackPeer(from);
+ _recentlyCompletedMessages.getInsertedCount()); if (_log.shouldLog(Log.INFO))
_context.messageHistory().droppedInboundMessage(mid, from.getRemotePeer(), "dup"); _log.info("Message received is a dup: " + mid + " dups: "
+ _recentlyCompletedMessages.getCurrentDuplicateCount() + " out of "
+ _recentlyCompletedMessages.getInsertedCount());
_context.messageHistory().droppedInboundMessage(mid, from.getRemotePeer(), "dup");
}
continue; continue;
} }