aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/unapplied/server/0112-Cache-user-authenticator-threads.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/unapplied/server/0112-Cache-user-authenticator-threads.patch')
-rw-r--r--patches/unapplied/server/0112-Cache-user-authenticator-threads.patch63
1 files changed, 63 insertions, 0 deletions
diff --git a/patches/unapplied/server/0112-Cache-user-authenticator-threads.patch b/patches/unapplied/server/0112-Cache-user-authenticator-threads.patch
new file mode 100644
index 0000000000..fb564e652d
--- /dev/null
+++ b/patches/unapplied/server/0112-Cache-user-authenticator-threads.patch
@@ -0,0 +1,63 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Alfie Cleveland <[email protected]>
+Date: Fri, 25 Nov 2016 13:22:40 +0000
+Subject: [PATCH] Cache user authenticator threads
+
+
+diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
+index 0d1102e1b98235b8e7124321a65483a5e923d4a5..7a9094e69684c2d963411525a09872024c6f62e3 100644
+--- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
++++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
+@@ -139,8 +139,8 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
+ this.connection.send(new ClientboundHelloPacket("", this.server.getKeyPair().getPublic().getEncoded(), this.challenge));
+ } else {
+ // Spigot start
+- new Thread("User Authenticator #" + ServerLoginPacketListenerImpl.UNIQUE_THREAD_ID.incrementAndGet()) {
+-
++ // Paper start - Cache authenticator threads
++ authenticatorPool.execute(new Runnable() {
+ @Override
+ public void run() {
+ try {
+@@ -150,7 +150,8 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
+ ServerLoginPacketListenerImpl.this.server.server.getLogger().log(java.util.logging.Level.WARNING, "Exception verifying " + ServerLoginPacketListenerImpl.this.requestedUsername, ex);
+ }
+ }
+- }.start();
++ });
++ // Paper end
+ // Spigot end
+ }
+
+@@ -223,7 +224,8 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
+ throw new IllegalStateException("Protocol error", cryptographyexception);
+ }
+
+- Thread thread = new Thread("User Authenticator #" + ServerLoginPacketListenerImpl.UNIQUE_THREAD_ID.incrementAndGet()) {
++ // Paper start - Cache authenticator threads
++ authenticatorPool.execute(new Runnable() {
+ public void run() {
+ String s1 = (String) Objects.requireNonNull(ServerLoginPacketListenerImpl.this.requestedUsername, "Player name not initialized");
+
+@@ -269,10 +271,8 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
+
+ return ServerLoginPacketListenerImpl.this.server.getPreventProxyConnections() && socketaddress instanceof InetSocketAddress ? ((InetSocketAddress) socketaddress).getAddress() : null;
+ }
+- };
+-
+- thread.setUncaughtExceptionHandler(new DefaultUncaughtExceptionHandler(ServerLoginPacketListenerImpl.LOGGER));
+- thread.start();
++ });
++ // Paper end
+ }
+
+ // Spigot start
+@@ -333,6 +333,8 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
+ this.state = ServerLoginPacketListenerImpl.State.ACCEPTED;
+ }
+
++ private static final java.util.concurrent.ExecutorService authenticatorPool = java.util.concurrent.Executors.newCachedThreadPool(new com.google.common.util.concurrent.ThreadFactoryBuilder().setNameFormat("User Authenticator #%d").setUncaughtExceptionHandler(new DefaultUncaughtExceptionHandler(LOGGER)).build()); // Paper - Cache authenticator threads
++
+ // Spigot start
+ protected GameProfile createOfflineProfile(String name) {
+ UUID uuid;