From d7627ca9aaad7b3625fc6b32d5a7208f7aca7889 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 89c8f48f..9756c09c 100644 --- a/proxy/src/main/java/net/md_5/bungee/BungeeServerInfo.java +++ b/proxy/src/main/java/net/md_5/bungee/BungeeServerInfo.java @@ -101,19 +101,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; } @Override -- 2.18.0