Archiviert
13
0

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.
Dieser Commit ist enthalten in:
Kristian S. Stangeland 2014-03-13 03:02:41 +01:00
Ursprung 4259a86740
Commit 38c62c4cfd
2 geänderte Dateien mit 7 neuen und 6 gelöschten Zeilen

Datei anzeigen

@ -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);
}
}
/**

Datei anzeigen

@ -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.