Skip to content

Commit f0401ac

Browse files
authored
Improve async packet processing logic (#2503)
* fix: enqueue async packet event after processing delay is zero * fix: async packet processing
1 parent 2686c9f commit f0401ac

File tree

2 files changed

+17
-15
lines changed

2 files changed

+17
-15
lines changed

src/main/java/com/comphenix/protocol/async/AsyncFilterManager.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -413,6 +413,23 @@ private void signalPacketTransmission(PacketEvent packet, boolean onMainThread)
413413

414414
// Only send if the packet is ready
415415
if (marker.decrementProcessingDelay() == 0) {
416+
417+
// Now, get the next non-cancelled listener
418+
if (!marker.hasExpired()) {
419+
for (; marker.getListenerTraversal().hasNext(); ) {
420+
AsyncListenerHandler handler = marker.getListenerTraversal().next().getListener();
421+
422+
if (!handler.isCancelled()) {
423+
marker.incrementProcessingDelay();
424+
handler.enqueuePacket(packet);
425+
return;
426+
}
427+
}
428+
}
429+
430+
// There are no more listeners - queue the packet for transmission
431+
signalFreeProcessingSlot(packet);
432+
416433
PacketSendingQueue queue = getSendingQueue(packet, false);
417434

418435
// No need to create a new queue if the player has logged out

src/main/java/com/comphenix/protocol/async/AsyncListenerHandler.java

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -632,21 +632,6 @@ private void processPacket(int workerID, PacketEvent packet, String methodName)
632632
filterManager.getErrorReporter().reportMinimal(listener.getPlugin(), methodName, e);
633633
}
634634

635-
// Now, get the next non-cancelled listener
636-
if (!marker.hasExpired()) {
637-
for (; marker.getListenerTraversal().hasNext(); ) {
638-
AsyncListenerHandler handler = marker.getListenerTraversal().next().getListener();
639-
640-
if (!handler.isCancelled()) {
641-
handler.enqueuePacket(packet);
642-
return;
643-
}
644-
}
645-
}
646-
647-
// There are no more listeners - queue the packet for transmission
648-
filterManager.signalFreeProcessingSlot(packet);
649-
650635
// Note that listeners can opt to delay the packet transmission
651636
filterManager.signalPacketTransmission(packet);
652637
}

0 commit comments

Comments
 (0)