From b0dd8b18ed91704e174f94f6fd8d6590217c26b9 Mon Sep 17 00:00:00 2001 From: asofold Date: Sat, 12 Dec 2015 13:58:59 +0100 Subject: [PATCH] Update time for stored entries, in case time ran backwards. --- .../checks/net/model/TeleportQueue.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/NCPCore/src/main/java/fr/neatmonster/nocheatplus/checks/net/model/TeleportQueue.java b/NCPCore/src/main/java/fr/neatmonster/nocheatplus/checks/net/model/TeleportQueue.java index 4756e9fd..171cef3b 100644 --- a/NCPCore/src/main/java/fr/neatmonster/nocheatplus/checks/net/model/TeleportQueue.java +++ b/NCPCore/src/main/java/fr/neatmonster/nocheatplus/checks/net/model/TeleportQueue.java @@ -70,7 +70,12 @@ public class TeleportQueue { // Lazy expiration check. final Iterator it = expectIncoming.iterator(); while (it.hasNext()) { - if (time - maxAge > it.next().time) { + final CountableLocation ref = it.next(); + if (time < ref.time) { + // Time ran backwards. Force keep entries. + ref.time = time; + } + else if (time - maxAge > ref.time) { it.remove(); } else { break; @@ -155,9 +160,14 @@ public class TeleportQueue { expectIncoming.removeFirst(); // Do not use the iterator here. } return AckResolution.ACK; - } else { + } + else { // Skip until match or none found. // TODO: Consider settings like maxSkipCount or strictly return WAITING. + if (packetData.time < ref.time) { + // Time ran backwards, update to now. + ref.time = packetData.time; + } } } // No match.