From bc43bcb3f3d2366bf219df39d735a89622a6b620 Mon Sep 17 00:00:00 2001 From: Tux Date: Fri, 12 Feb 2016 23:55:53 -0500 Subject: [PATCH] Resolve sendData() deadlocks diff --git a/proxy/src/main/java/net/md_5/bungee/BungeeServerInfo.java b/proxy/src/main/java/net/md_5/bungee/BungeeServerInfo.java index 0874544f..7d7e5a7f 100644 --- a/proxy/src/main/java/net/md_5/bungee/BungeeServerInfo.java +++ b/proxy/src/main/java/net/md_5/bungee/BungeeServerInfo.java @@ -110,19 +110,22 @@ public class BungeeServerInfo implements ServerInfo Preconditions.checkNotNull( channel, "channel" ); Preconditions.checkNotNull( data, "data" ); - synchronized ( packetQueue ) - { - Server server = ( players.isEmpty() ) ? null : players.iterator().next().getServer(); - if ( server != null ) - { - server.sendData( channel, data ); - return true; - } else if ( queue ) - { - packetQueue.add( new PluginMessage( channel, data, false ) ); + Server server; + + synchronized (players) { + server = players.isEmpty() ? null : players.iterator().next().getServer(); + } + + if (server != null) { + server.sendData(channel, data); + return true; + } else if (queue) { + synchronized (packetQueue) { + packetQueue.add(new PluginMessage(channel, data, false)); } - return false; } + + return false; } private long lastPing; -- 2.25.0