mirror of
https://github.com/dmulloy2/ProtocolLib.git
synced 2024-09-18 10:31:03 +02:00
Ensure sendServerPacket() works in the channel thread as well.
If we're already in the channel event thread, we won't go through the ChannelProxy code, so, check scheduledProcessing in the write method as well.
This commit is contained in:
parent
4259a86740
commit
38c62c4cfd
@ -300,7 +300,7 @@ class ChannelInjector extends ByteToMessageDecoder implements Injector {
|
||||
NetworkMarker marker = null;
|
||||
|
||||
// This packet has not been seen by the main thread
|
||||
if (event == null) {
|
||||
if (event == null && scheduleProcessPackets.get()) {
|
||||
Class<?> clazz = packet.getClass();
|
||||
|
||||
// Schedule the transmission on the main thread instead
|
||||
@ -459,9 +459,12 @@ class ChannelInjector extends ByteToMessageDecoder implements Injector {
|
||||
public void sendServerPacket(Object packet, NetworkMarker marker, boolean filtered) {
|
||||
saveMarker(packet, marker);
|
||||
|
||||
scheduleProcessPackets.set(filtered);
|
||||
invokeSendPacket(packet);
|
||||
scheduleProcessPackets.set(true);
|
||||
try {
|
||||
scheduleProcessPackets.set(filtered);
|
||||
invokeSendPacket(packet);
|
||||
} finally {
|
||||
scheduleProcessPackets.set(true);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -4,8 +4,6 @@ import org.bukkit.entity.Player;
|
||||
|
||||
import com.comphenix.protocol.PacketType.Protocol;
|
||||
import com.comphenix.protocol.events.NetworkMarker;
|
||||
import com.comphenix.protocol.events.PacketEvent;
|
||||
|
||||
|
||||
/**
|
||||
* Represents a closed injector.
|
||||
|
Loading…
Reference in New Issue
Block a user