Waterfall/BungeeCord-Patches/0018-Resolve-sendData-deadlocks.patch
2019-01-03 06:07:41 +00:00

48 lines
1.6 KiB
Diff

From 5084ea690834f6ccf37c28f927d4345560b0896a Mon Sep 17 00:00:00 2001
From: Tux <write@imaginarycode.com>
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 3ff3446b..f4c17cf4 100644
--- a/proxy/src/main/java/net/md_5/bungee/BungeeServerInfo.java
+++ b/proxy/src/main/java/net/md_5/bungee/BungeeServerInfo.java
@@ -107,19 +107,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.20.1